ALTER PROCEDURE GZTH_DDWFHMXB @FSDate nvarchar(1000), @FEDate nvarchar(1000), @FSaleOrgId nvarchar(1000) AS BEGIN DECLARE @ConvertedDate DATE; SET @ConvertedDate = CONVERT(DATE, @FEDate, 120); -- 在日期上加一天 SET @ConvertedDate = DATEADD(DAY, 1, @ConvertedDate); TRUNCATE TABLE GZ_DDWFHMX_TH SELECT A.FID AS FID, AE.FENTRYID AS FENTRYID, A.FApproveDate AS '日期', B.FNAME AS '制单人', CASE WHEN ISNULL(E.FNAME,'') = '' THEN ACG.区域 ELSE ACE.区域 END AS '区域', CASE WHEN ISNULL(E.FNAME,'') = '' THEN G.FNAME ELSE E.FNAME END AS '业务员', A.F_contractnumber AS '合同号', F.FNAME AS '客户', H.FNAME AS '项目名', WL.FNUMBER AS '物料编码', WL_L.FNAME AS '物料名称', WL_L.FSpecification AS '规格型号', AE.FQTY AS '数量', AE_F.FTaxPrice AS '含税单价', HT_L.FDATAVALUE AS '合同类型', A.F_Deliveryconditions AS '发货条件' INTO #TEMP1 FROM T_SAL_ORDER A INNER JOIN T_SEC_USER B ON A.FCreatorId = B.FUSERID --用户表 INNER JOIN V_BD_SALESMAN_L G ON G.FID = A.FSALERID -- 员工表,销售订单 LEFT JOIN T_PerformanceSharing C ON C.FSOURCEBILLNO = A.FBILLNO AND C.FDOCUMENTSTATUS = 'C' --业绩分摊单 LEFT JOIN T_PerformanceSharingEntry D ON C.FID=D.FID --业绩分摊单明细 LEFT JOIN V_BD_SALESMAN_L E ON E.fid= D.FSaleId --员工表,业绩分摊单 LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACE ON ACE.名称=E.FNAME --业绩分摊单销售员区域 LEFT JOIN ERPTOHR.HYHRV3.dbo.v_erp_empinfo ACG ON ACG.名称=G.FNAME --销售订单业务员区域 INNER JOIN T_BD_CUSTOMER_L F ON F.FCUSTID = A.FCustId --客户表 INNER JOIN T_BAS_PREBDONE_L H ON H.FID = A.F_projectname --工程项目名称表 INNER JOIN T_SAL_ORDERENTRY AE ON AE.FID = A.FID --销售订单明细表 INNER JOIN T_BD_MATERIAL WL ON WL.FMATERIALID = AE.FMaterialId --物料表 INNER JOIN T_BD_MATERIAL_L WL_L ON WL_L.FMATERIALID = WL.FMATERIALID --物料_L表 INNER JOIN T_SAL_ORDERENTRY_F AE_F ON AE_F.FENTRYID = AE.FENTRYID --销售订单明细-财务表 INNER JOIN T_BAS_ASSISTANTDATAENTRY_L HT_L On A.F_Ordercategory = HT_L.FENTRYID --合同类型辅助资料_L表 WHERE A.FDocumentStatus = 'C' AND (ISNULL(@FSaleOrgId,'') = '' OR A.FSaleOrgId = @FSaleOrgId) AND (ISNULL(@FSDate,'') = '' OR A.FAPPROVEDATE >= @FSDate) AND (ISNULL(@FEDate,'') = '' OR A.FAPPROVEDATE < @ConvertedDate) INSERT INTO GZ_DDWFHMX_TH([FId],[FENTRYID],[日期],[制单人],[区域],[业务员],[合同号],[客户],[项目名], [物料编码],[物料名称],[规格型号],[数量],[含税单价],[合同类型],[发货条件]) SELECT * FROM #TEMP1 SELECT E.FID AS FID, D.FENTRYID AS FENTRYID, SUM(B.FQTY) AS '已发货数量', SUM(BF.FAllAmount_LC) AS '已发货金额' INTO #TEMP2 FROM T_SAL_DELIVERYNOTICE A INNER JOIN T_SAL_DELIVERYNOTICEENTRY B ON A.FID = B.FID INNER JOIN T_SAL_DELIVERYNOTICEENTRY_F BF ON BF.FENTRYID = B.FENTRYID INNER JOIN T_SAL_DELIVERYNOTICEENTRY_LK C ON B.FENTRYID = C.FENTRYID AND C.FSTABLENAME = 'T_SAL_ORDERENTRY' INNEr JOIN T_SAL_ORDERENTRY D ON C.FSID = D.FENTRYID INNER JOIN T_SAL_ORDER E ON D.FID = E.FID WHERE A.FDOCUMENTSTATUS = 'C' AND (ISNULL(@FSaleOrgId,'') = '' OR E.FSaleOrgId = @FSaleOrgId) AND(ISNULL(@FSDate,'') = '' OR E.FAPPROVEDATE >= @FSDate) AND (ISNULL(@FEDate,'') = '' OR E.FAPPROVEDATE <= @ConvertedDate) GROUP BY E.FID,D.FENTRYID UPDATE A SET A.[已发货数量] = B.[已发货数量],A.[已发货金额] = B.[已发货金额] FROM GZ_DDWFHMX_TH A INNER JOIN #TEMP2 B ON A.FId = B.FID AND A.FENTRYID = B.FENTRYID UPDATE A SET A.[未发货数量] = ISNULL(A.[数量],0) - ISNULL(A.[已发货数量],0),A.[未发货金额] = B.FALLAMOUNT_LC - ISNULL(A.[已发货金额],0) FROM GZ_DDWFHMX_TH A INNER JOIN T_SAL_ORDERENTRY_F B ON A.FENTRYID = B.FENTRYID DROP TABLE #TEMP1,#TEMP2 END;