zoukankan      html  css  js  c++  java
  • 半成品进销存

    USE [RossERP_R7]
    GO
    /****** Object: StoredProcedure [dbo].[usp_NFSE] Script Date: 2020-09-01 17:21:38 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    ALTER proc [dbo].[usp_NFSE]
    @ProviderNM varchar(30),--加工商
    @MpsID varchar(50),--制单号
    @BeginDate date,
    @EndDate date

    as
    IF OBJECT_ID('Temp2019030305', 'U') IS NOT NULL
    BEGIN
    drop table Temp2019030305
    END
    IF OBJECT_ID('Temp2019030305Re', 'U') IS NOT NULL
    BEGIN
    drop table Temp2019030305Re
    END

    IF OBJECT_ID('Temp2019030305In', 'U') IS NOT NULL
    BEGIN
    drop table Temp2019030305In
    END

    IF OBJECT_ID('NFSE05', 'U') IS NOT NULL
    BEGIN
    drop table NFSE05
    END

    IF OBJECT_ID('NFSE', 'U') IS NOT NULL
    BEGIN
    drop table NFSE
    END

    select ProviderNM,MPSID,WPID,YM into Temp2019030305 from (
    select Provider.Name ProviderNM,WWWPOutList.MPSID,WWWPOutList.WPID,format(WWWPOutList.Filldate,'yyyy-MM')YM
    from WWWPOutList(nolock)
    left join WW(nolock) on WWWPOutList.Matioid = WW.Matioid
    inner join Provider(Nolock) ON Provider.ProviderID=ww.ProviderID
    where WWWPOutList.state = '已审核' and WWWPOutList.WPID not in('001','002','003') --and WWWPOutList.MPSID='1I730810=BD1'
    and CONVERT(varchar(10),WWWPOutList.filldate,120)>'2019-12-01'
    and (WWWPOutList.mpsid like '%'+@MpsID+'%' or isnull(@MpsID,'')='')
    and (Provider.Name like '%'+@ProviderNM+'%' or isnull(@ProviderNM,'')='')
    and (WWWPOutList.Filldate>=@BeginDate or ISNULL(@BeginDate,'')='')
    and (WWWPOutList.Filldate<=@EndDate or ISNULL(@EndDate,'')='')
    group by Provider.Name,WWWPOutList.MPSID,WWWPOutList.WPID,format(WWWPOutList.Filldate,'yyyy-MM')
    union all
    Select
    provider.Name ProviderNM,wwINList.MPSID,wwINList.WPID,format(WWIn.Filldate,'yyyy-MM')YM
    from wwIN(Nolock)
    Inner join wwINList(Nolock) On wwIN.MatIOID=wwINList.MatIOID
    left join MPSList(nolock) on WWInList.MPSID=MPSList.mpsid and WWInList.MatID=MPSList.matid
    left join mmf(nolock) on wwINList.Matid=mmf.Matid
    inner join Provider(Nolock) ON Provider.ProviderID=wwIN.ProviderID
    where WWIn.State='已入帐' and WWInList.WPID not in('001','002','003') --and WWInList.MPSID='1I730810=BD1'
    and CONVERT(varchar(10),WWIn.filldate,120)>'2019-12-01'
    and (wwINList.mpsid like '%'+@MpsID+'%' or isnull(@MpsID,'')='')
    and (Provider.Name like '%'+@ProviderNM+'%' or isnull(@ProviderNM,'')='')
    and (WWIn.Filldate>=@BeginDate or ISNULL(@BeginDate,'')='')
    and (WWIn.Filldate<=@EndDate or ISNULL(@EndDate,'')='')
    group by provider.Name,format(WWIn.Filldate,'yyyy-MM'),wwINList.MPSID,wwINList.WPID
    having sum(isnull(wwINList.GoodQty,0))>0
    )NF
    group by ProviderNM,MPSID,WPID,YM

    select
    Provider.Name ProviderNM,--加工商
    format(WWWPOutList.Filldate,'yyyy-MM')YM, --发货年月
    WWWPOutList.MPSID, --制单号
    WWWPOutList.WPID, --工序名称
    sum(WWPOutListSize.total) sumtotal --数量
    into Temp2019030305Re
    from WWWPOutList(nolock)
    left join WWPOutListSize(nolock) on WWWPOutList.Matioid = WWPOutListSize.WWID AND
    WWWPOutList.MPSID = WWPOutListSize.MPSID AND
    WWWPOutList.MPSMatid = WWPOutListSize.MPSMatid AND
    WWWPOutList.WPID = WWPOutListSize.WPID AND
    WWWPOutList.XH = WWPOutListSize.XH
    left join WW(nolock) on WWWPOutList.Matioid = WW.Matioid
    inner join Provider(Nolock) ON Provider.ProviderID=ww.ProviderID
    where WWpoutlistsize.type = 'A' and WWWPOutList.state = '已审核' and WWWPOutList.WPID not in('001','002','003') --and WWWPOutList.MPSID='1I730810=BD1'
    and (WWWPOutList.mpsid like '%'+@MpsID+'%' or isnull(@MpsID,'')='')
    and (Provider.Name like '%'+@ProviderNM+'%' or isnull(@ProviderNM,'')='')
    and (WWWPOutList.Filldate>=@BeginDate or ISNULL(@BeginDate,'')='')
    and (WWWPOutList.Filldate<=@EndDate or ISNULL(@EndDate,'')='')
    group by format(WWWPOutList.Filldate,'yyyy-MM'),WWWPOutList.MPSID,Provider.Name,WWWPOutList.WPID

    Select
    provider.Name ProviderNM,--加工商
    format(WWIn.Filldate,'yyyy-MM')YM, --入库年月
    wwINList.MPSID, --制单号
    wwINList.WPID,--工序号
    sum(wwINList.GoodQty) sumtotal --数量
    into Temp2019030305In
    from wwIN(Nolock)
    Inner join wwINList(Nolock) On wwIN.MatIOID=wwINList.MatIOID
    left join MPSList(nolock) on WWInList.MPSID=MPSList.mpsid and WWInList.MatID=MPSList.matid
    left join mmf(nolock) on wwINList.Matid=mmf.Matid
    inner join Provider(Nolock) ON Provider.ProviderID=wwIN.ProviderID
    where WWIn.State='已入帐' and WWInList.WPID not in('001','002','003') --and WWInList.MPSID='1I730810=BD1'
    and (wwINList.mpsid like '%'+@MpsID+'%' or isnull(@MpsID,'')='')
    and (Provider.Name like '%'+@ProviderNM+'%' or isnull(@ProviderNM,'')='')
    and (WWIn.Filldate>=@BeginDate or ISNULL(@BeginDate,'')='')
    and (WWIn.Filldate<=@EndDate or ISNULL(@EndDate,'')='')
    group by provider.Name,format(WWIn.Filldate,'yyyy-MM'),wwINList.MPSID,wwINList.WPID
    having sum(isnull(wwINList.GoodQty,0))>0

    create table NFSE05
    (
    ProviderNM varchar(50),YM varchar(20),MpsID varchar(50),WPID varchar(10),BeginQty decimal(12,0),ReQty decimal(12,0),InQty decimal(12,0),EndQty decimal(12,0),rn int
    )
    insert into NFSE05(ProviderNM,YM,MpsID,WPID,rn) select Temp2019030305.ProviderNM,Temp2019030305.YM,Temp2019030305.MPSID,Temp2019030305.WPID,
    ROW_NUMBER() over (partition by providerNM,mpsid,wpid order by ym)rn from Temp2019030305

    if exists (select 1 from NFSE05 where rn=1)
    begin
    update NFSE05 set BeginQty=0,ReQty=isnull(Temp2019030305Re.sumtotal,0),InQty=isnull(Temp2019030305In.sumtotal,0),EndQty=isnull(BeginQty,0)+isnull(Temp2019030305Re.sumtotal,0)-isnull(Temp2019030305In.sumtotal,0)
    from NFSE05
    left join Temp2019030305Re on NFSE05.YM=Temp2019030305Re.YM and NFSE05.MPSID=Temp2019030305Re.MPSID and NFSE05.WPID=Temp2019030305Re.WPID and NFSE05.ProviderNM=Temp2019030305Re.ProviderNM
    left join Temp2019030305In on NFSE05.YM=Temp2019030305In.YM and NFSE05.MPSID=Temp2019030305In.MPSID and NFSE05.WPID=Temp2019030305In.WPID and NFSE05.ProviderNM=Temp2019030305In.ProviderNM
    where NFSE05.rn=1
    end

    if exists (select 1 from NFSE05 where rn=2)
    begin
    update NFSE05 set BeginQty=ISNULL(NFSE01.EndQty,0),ReQty=isnull(Temp2019030305Re.sumtotal,0),InQty=isnull(Temp2019030305In.sumtotal,0),EndQty=isnull(NFSE01.EndQty,0)+isnull(Temp2019030305Re.sumtotal,0)-isnull(Temp2019030305In.sumtotal,0)
    from NFSE05
    left join Temp2019030305Re on NFSE05.YM=Temp2019030305Re.YM and NFSE05.MPSID=Temp2019030305Re.MPSID and NFSE05.WPID=Temp2019030305Re.WPID and NFSE05.ProviderNM=Temp2019030305Re.ProviderNM
    left join Temp2019030305In on NFSE05.YM=Temp2019030305In.YM and NFSE05.MPSID=Temp2019030305In.MPSID and NFSE05.WPID=Temp2019030305In.WPID and NFSE05.ProviderNM=Temp2019030305In.ProviderNM
    left join(
    select * from NFSE05
    ) NFSE01 ON NFSE01.MPSID=NFSE05.MPSID and NFSE01.WPID=NFSE05.WPID and NFSE01.ProviderNM=NFSE05.ProviderNM
    and NFSE01.rn+1=NFSE05.rn
    where NFSE05.rn=2
    end

    if exists (select 1 from NFSE05 where rn=3)
    begin
    update NFSE05 set BeginQty=ISNULL(NFSE01.EndQty,0),ReQty=isnull(Temp2019030305Re.sumtotal,0),InQty=isnull(Temp2019030305In.sumtotal,0),EndQty=isnull(NFSE01.EndQty,0)+isnull(Temp2019030305Re.sumtotal,0)-isnull(Temp2019030305In.sumtotal,0)
    from NFSE05
    left join Temp2019030305Re on NFSE05.YM=Temp2019030305Re.YM and NFSE05.MPSID=Temp2019030305Re.MPSID and NFSE05.WPID=Temp2019030305Re.WPID and NFSE05.ProviderNM=Temp2019030305Re.ProviderNM
    left join Temp2019030305In on NFSE05.YM=Temp2019030305In.YM and NFSE05.MPSID=Temp2019030305In.MPSID and NFSE05.WPID=Temp2019030305In.WPID and NFSE05.ProviderNM=Temp2019030305In.ProviderNM
    left join(
    select * from NFSE05
    ) NFSE01 ON NFSE01.MPSID=NFSE05.MPSID and NFSE01.WPID=NFSE05.WPID and NFSE01.ProviderNM=NFSE05.ProviderNM
    and NFSE01.rn+1=NFSE05.rn
    where NFSE05.rn=3
    end

    if exists (select 1 from NFSE05 where rn=4)
    begin
    update NFSE05 set BeginQty=ISNULL(NFSE01.EndQty,0),ReQty=isnull(Temp2019030305Re.sumtotal,0),InQty=isnull(Temp2019030305In.sumtotal,0),EndQty=isnull(NFSE01.EndQty,0)+isnull(Temp2019030305Re.sumtotal,0)-isnull(Temp2019030305In.sumtotal,0)
    from NFSE05
    left join Temp2019030305Re on NFSE05.YM=Temp2019030305Re.YM and NFSE05.MPSID=Temp2019030305Re.MPSID and NFSE05.WPID=Temp2019030305Re.WPID and NFSE05.ProviderNM=Temp2019030305Re.ProviderNM
    left join Temp2019030305In on NFSE05.YM=Temp2019030305In.YM and NFSE05.MPSID=Temp2019030305In.MPSID and NFSE05.WPID=Temp2019030305In.WPID and NFSE05.ProviderNM=Temp2019030305In.ProviderNM
    left join(
    select * from NFSE05
    ) NFSE01 ON NFSE01.MPSID=NFSE05.MPSID and NFSE01.WPID=NFSE05.WPID and NFSE01.ProviderNM=NFSE05.ProviderNM
    and NFSE01.rn+1=NFSE05.rn
    where NFSE05.rn=4
    end

    if exists (select 1 from NFSE05 where rn=5)
    begin
    update NFSE05 set BeginQty=ISNULL(NFSE01.EndQty,0),ReQty=isnull(Temp2019030305Re.sumtotal,0),InQty=isnull(Temp2019030305In.sumtotal,0),EndQty=isnull(NFSE01.EndQty,0)+isnull(Temp2019030305Re.sumtotal,0)-isnull(Temp2019030305In.sumtotal,0)
    from NFSE05
    left join Temp2019030305Re on NFSE05.YM=Temp2019030305Re.YM and NFSE05.MPSID=Temp2019030305Re.MPSID and NFSE05.WPID=Temp2019030305Re.WPID and NFSE05.ProviderNM=Temp2019030305Re.ProviderNM
    left join Temp2019030305In on NFSE05.YM=Temp2019030305In.YM and NFSE05.MPSID=Temp2019030305In.MPSID and NFSE05.WPID=Temp2019030305In.WPID and NFSE05.ProviderNM=Temp2019030305In.ProviderNM
    left join(
    select * from NFSE05
    ) NFSE01 ON NFSE01.MPSID=NFSE05.MPSID and NFSE01.WPID=NFSE05.WPID and NFSE01.ProviderNM=NFSE05.ProviderNM
    and NFSE01.rn+1=NFSE05.rn
    where NFSE05.rn=5
    end

    if exists (select 1 from NFSE05 where rn=6)
    begin
    update NFSE05 set BeginQty=ISNULL(NFSE01.EndQty,0),ReQty=isnull(Temp2019030305Re.sumtotal,0),InQty=isnull(Temp2019030305In.sumtotal,0),EndQty=isnull(NFSE01.EndQty,0)+isnull(Temp2019030305Re.sumtotal,0)-isnull(Temp2019030305In.sumtotal,0)
    from NFSE05
    left join Temp2019030305Re on NFSE05.YM=Temp2019030305Re.YM and NFSE05.MPSID=Temp2019030305Re.MPSID and NFSE05.WPID=Temp2019030305Re.WPID and NFSE05.ProviderNM=Temp2019030305Re.ProviderNM
    left join Temp2019030305In on NFSE05.YM=Temp2019030305In.YM and NFSE05.MPSID=Temp2019030305In.MPSID and NFSE05.WPID=Temp2019030305In.WPID and NFSE05.ProviderNM=Temp2019030305In.ProviderNM
    left join(
    select * from NFSE05
    ) NFSE01 ON NFSE01.MPSID=NFSE05.MPSID and NFSE01.WPID=NFSE05.WPID and NFSE01.ProviderNM=NFSE05.ProviderNM
    and NFSE01.rn+1=NFSE05.rn
    where NFSE05.rn=6
    end
    select NFSE05.ProviderNM,NFSE05.YM,MPSList.SOID,NFSE05.MpsID,series.BIGTYPE SeriesNM,MPSList.Qty MpsQty,mmf.Unit,
    case when NFSE05.WPID='004' then '车缝' when NFSE05.WPID='005' then '包装' end WPName,Channel.Name ChannelNM,
    NFSE05.WPID,
    NFSE05.BeginQty,NFSE05.ReQty,NFSE05.InQty,NFSE05.EndQty
    from NFSE05
    left join MPSList(nolock) on NFSE05.MpsID=MPSList.mpsid
    left join mps(nolock) on MPSList.mpsid=mps.mpsid
    left join channel(nolock) on mps.ChannelID=Channel.ChannelID
    left join mmf(nolock) on MPSList.matid=mmf.Matid
    left join series(nolock) on mmf.SeriesID=series.seriesid
    order by NFSE05.WPID,NFSE05.YM


    --exec usp_NFSE '永群',''

  • 相关阅读:
    自制电脑红外遥控接收器(PC软解码) 转
    .NET Micro Framework介绍
    如何测试移动web?
    自行开发高效精简的二进制序列化库(支持精简框架集) 转
    35个优秀的电子商务网站界面
    .Net Micro Framework中的线程
    《肖申克的救赎》 阅后小记
    分享 MSDN 下载工具(Word/PDF)
    OEA ORM中的分页支持
    OEA 中的多国语言实现
  • 原文地址:https://www.cnblogs.com/wwwlzp/p/13597344.html
Copyright © 2011-2022 走看看