ALTER PROCEDURE UpdateYSDZBMX_GZTH @FSDATE varchar(1000), @FEDATE varchar(1000), @FSaleOrgId varchar(1000), @FCUSTID varchar(1000), @XSYFID varchar(1000), @ZZHTH varchar(1000) AS BEGIN DECLARE @StartDate DATE = CONVERT(DATE, @FSDATE); DECLARE @EndDate DATE = CONVERT(DATE, @FEDATE); -- 将结束日期增加一天 SET @EndDate = DATEADD(DAY, 1, @EndDate); TRUNCATE TABLE YingShouZhanKuanMX_GZTH; INSERT INTO YingShouZhanKuanMX_GZTH (FID,FENTRYID,FSaleOrgId,FBILLNO,FSalerId,[DATE],CONTRACTNUMBER,ProjectName,SizeModel,FQty,FTaxPrice,FAllAmount,OrderAmount,PaymentAmount,[是否K3数据]) SELECT A.FID AS 销售订单FID ,B.FENTRYID AS 销售订单FENTRYID ,A.FSaleOrgId AS 销售组织 ,A.FBILLNO AS 销售订单编号 ,XS.FNAME AS 销售员FID ,FORMAT( A.FApproveDate,'yyyy-MM-dd') AS 签订日期 ,A.F_contractnumber AS 订单号 ,GC.FNAME AS 项目名称 ,WL_L.FSpecification AS 型号 ,B.FQTY AS 数量台 ,B_F.FTAXPRICE AS 单价 ,B_F.FALLAMOUNT_LC AS 价税合计 ,AF.FBillAllAmount 订单金额 ,A.F_Amount AS 累计核销金额 ,0 AS 是否K3数据 FROM T_SAL_ORDER A INNER JOIN T_SAL_ORDERFIN AF ON A.FID = AF.FID INNER JOIN T_BAS_PREBDONE_L GC ON A.F_projectname = GC.FID INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID INNER JOIN T_BD_MATERIAL_L WL_L ON B.FMATERIALID = WL_L.FMATERIALID INNER JOIN T_SAL_ORDERENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID INNER JOIN V_BD_SALESMAN_L XS ON XS.FID = A.FSALERID WHERE A.FSaleOrgId = @FSaleOrgId AND A.FCUSTID = @FCUSTID AND A.FApproveDate >= @StartDate AND A.FApproveDate <= @EndDate AND (ISNULL(@XSYFID, '') = '' OR A.FSalerId = @XSYFID) AND (ISNULL(@ZZHTH,'') = '' OR A.F_contractnumber = @ZZHTH) --插入K3数据 INSERT INTO YingShouZhanKuanMX_GZTH (FID,FENTRYID,FSaleOrgId,FBILLNO,FSalerId,[DATE],CONTRACTNUMBER,ProjectName,SizeModel,[K3发货数量],[K3发货金额],[K3退货数量],[K3退货金额],[K3普票金额],[K3专票金额],[是否K3数据]) SELECT B.FID AS 销售订单FID ,0 AS 销售订单FENTRYID ,B.FSaleOrgId AS 销售组织 ,B.FBILLNO AS 销售订单编号 ,XS.FNAME AS 销售员FID ,FORMAT( B.FApproveDate,'yyyy-MM-dd') AS 签订日期 ,B.F_contractnumber AS 订单号 ,GC.FNAME AS 项目名称 ,A.规格型号 AS 型号 ,A.发货数量 AS 发货数量 ,A.发货金额 AS 发货金额 ,A.退货数量 AS 退货数量 ,A.退货金额 AS 退货金额 ,A.普票金额 AS 普票金额 ,A.专票金额 AS 专票金额 ,1 AS 是否K3数据 FROM oldk3seorder0701 A INNER JOIN T_SAL_ORDER B ON A.单据编码 = B.FBILLNO INNER JOIN T_BAS_PREBDONE_L GC ON B.F_projectname = GC.FID INNER JOIN V_BD_SALESMAN_L XS ON XS.FID = B.FSALERID WHERE B.FSaleOrgId = @FSaleOrgId AND B.FCUSTID = @FCUSTID AND B.FApproveDate >= @StartDate AND B.FApproveDate <= @EndDate AND (ISNULL(@XSYFID, '') = '' OR B.FSalerId = @XSYFID) AND (ISNULL(@ZZHTH,'') = '' OR B.F_contractnumber = @ZZHTH) --更新发货日期,发货数量和发货金额 SELECT C.FSBILLID AS 销售订单FID ,C.FSID AS 销售订单FENTRYID ,A.FApproveDate AS 发货日期 ,B.FQTY AS 发货数量 ,B_F.FAllAmount_LC AS 发货金额 INTO #TEMP1 FROM T_SAL_DELIVERYNOTICE A INNER JOIN T_SAL_DELIVERYNOTICEENTRY B ON A.FID = B.FID INNER JOIN T_SAL_DELIVERYNOTICEENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK C ON B_F.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' WHERE C.FSBILLID IN (SELECT FID FROM YingShouZhanKuanMX_GZTH) AND C.FSID IN (SELECT FENTRYID FROM YingShouZhanKuanMX_GZTH) ----更新k3发货数据 --update A --SET A.K3发货数量 = C.发货数量,A.K3发货金额 = C.发货金额 --FROM YingShouZhanKuanMX_GZTH A --INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID AND A.FENTRYID = B.FENTRYID --INNER JOIN T_BD_MATERIAL D ON B.FMATERIALID = B.FMaterialId --INNER JOIN oldk3seorder0701 C ON A.FBILLNO = C.单据编码 AND A.CONTRACTNUMBER = C.项目编码 AND D.FOldNumber = C.物料编码 SELECT 销售订单FID, 销售订单FENTRYID, SUM(发货数量) AS 发货数量, SUM(发货金额) AS 发货金额 INTO #FHTEMP1 FROM #TEMP1 GROUP BY 销售订单FID,销售订单FENTRYID UPDATE A SET ShipmentsDate = FORMAT( B.发货日期,'yyyy-MM-dd') FROM YingShouZhanKuanMX_GZTH A INNER JOIN #TEMP1 B ON A.FID = B.销售订单FID AND A.FENTRYID = B.销售订单FENTRYID UPDATE A SET A.星空发货数量 = B.发货数量,A.星空发货金额 = B.发货金额 FROM YingShouZhanKuanMX_GZTH A INNER JOIN #FHTEMP1 B ON A.FID = B.销售订单FID AND A.FENTRYID = B.销售订单FENTRYID --更新发货数量 UPDATE A SET A.ShipmentsNum = ISNULL([星空发货数量],0) + ISNULL([K3发货数量],0),A.ShipmentsAmount = ISNULL([星空发货金额],0) + ISNULL([K3发货金额],0) FROM YingShouZhanKuanMX_GZTH A --更新退货日期,退货数量,退货金额 SELECT C.FSBILLID AS 销售订单FID ,C.FSID AS 销售订单FENTRYID ,A.FDATE AS 退货日期 ,B.FQTY AS 退货数量 ,B_F.FALLAMOUNT_LC AS 退货金额 INTO #TEMP2 FROM T_SAL_RETURNNOTICE A INNER JOIN T_SAL_RETURNNOTICEENTRY B ON A.FID = B.FID INNER JOIN T_SAL_RETURNNOTICEENTRY_F B_F ON B.FENTRYID = B_F.FENTRYID INNER JOIN T_SAL_RETURNNOTICEENTRY_LK C ON B_F.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' ----更新k3退货数据 --update A --SET A.K3退货数量 = C.退货数量,A.K3退货金额 = C.退货金额 --FROM YingShouZhanKuanMX_GZTH A --INNER JOIN T_SAL_ORDERENTRY B ON A.FID = B.FID AND A.FENTRYID = B.FENTRYID --INNER JOIN T_BD_MATERIAL D ON B.FMATERIALID = B.FMaterialId --INNER JOIN oldk3seorder0701 C ON A.FBILLNO = C.单据编码 AND A.CONTRACTNUMBER = C.项目编码 AND D.FOldNumber = C.物料编码 UPDATE A SET ReturnDate = FORMAT( B.退货日期,'yyyy-MM-dd'),A.星空退货数量 = B.退货数量,A.星空退货金额 = B.退货金额 FROM YingShouZhanKuanMX_GZTH A INNER JOIN #TEMP2 B ON A.FID = B.销售订单FID AND A.FENTRYID = B.销售订单FENTRYID update YingShouZhanKuanMX_GZTH SET ReturnNum = K3退货数量 + 星空退货数量, ReturnAmount = K3退货金额 + 星空退货金额 END