IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_INQUIRPLMTMPRTP') DROP PROCEDURE dbo.PROC_INQUIRPLMTMPRTP; GO CREATE PROCEDURE PROC_INQUIRPLMTMPRTP @TableName varchar(100) ,@STARTDATE date ,@ENDDATE date ,@LCID int ,@SeqFld varchar(200) AS BEGIN --生产订单-汇报单start SELECT AE.FSRCBILLNO ,AE.FMATERIALID ,AE.FSALEORDERENTRYID ,AE.FSALEORDERENTRYSEQ ,SUM(AE.FQTY) AS FQTY ,SUM(B.FFINISHQTY) AS FFINISHQTY --已入库数量 into #TMP_MO_INFO FROM T_PRD_MO A LEFT JOIN T_PRD_MOENTRY AE ON A.FID = AE.FID LEFT JOIN T_PRD_MOENTRY_A AE_A ON AE_A.FENTRYID = AE.FENTRYID LEFT JOIN (SELECT A.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 入库汇报 e52b554423704173b7306554708a8b05 生产汇报 ,AE.FMOENTRYID ,FFINISHQTY FROM T_PRD_MORPT A LEFT JOIN T_PRD_MORPTENTRY AE ON AE.FID = A.FID WHERE A.FDOCUMENTSTATUS='C' AND A.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e' ) B on B.FMOENTRYID = AE.FENTRYID WHERE AE.FSRCBILLTYPE ='PLN_PLANORDER' AND AE_A.FSTATUS <> 6 AND AE.FSALEORDERENTRYID <> 0 AND A.FDATE between @STARTDATE and @ENDDATE GROUP BY AE.FSRCBILLNO ,AE.FMATERIALID ,AE.FSALEORDERENTRYID ,AE.FSALEORDERENTRYSEQ --生产订单-汇报单end --计划订单start SELECT A.FID ,A.FBILLNO ,A.FMATERIALID ,A_B.FSALEORDERENTRYID ,SUM(A.FFirmQty) as 'FFirmQty' ,SUM(A.FORDERQTY) as 'FOrderQty' into #TMP_PLN_INFO FROM T_PLN_PLANORDER A LEFT JOIN T_PLN_PLANORDER_B A_B ON A.FID = A_B.FID WHERE A.FRELEASETYPE = 1 --AND (A.FRELEASESTATUS = 1 OR A.FRELEASESTATUS = 2 ) GROUP By A.FID ,A.FBILLNO ,A.FRELEASETYPE ,A.FMATERIALID ,A_B.FSALEORDERENTRYID --计划订单end --查询结果汇总start SELECT A.FID ,A.FBILLNO ,AE.FMATERIALID ,AE.FENTRYID ,C.FNUMBER ,C_L.FNAME ,C_L.FSPECIFICATION ,(CASE CS.FEXPPERIOD WHEN 0 THEN '' ELSE CASE CS.FEXPUNIT WHEN 'Y' THEN CONVERT ( VARCHAR,CAST((CS.FEXPPERIOD * 12) AS INT) ) + '个月' WHEN 'M' THEN CONVERT ( VARCHAR,CAST(CS.FEXPPERIOD AS INT) ) + '个月' WHEN 'D' THEN CONVERT ( VARCHAR, CAST(( CASE CS.FEXPPERIOD % 30 WHEN 0 THEN CS.FEXPPERIOD / 30 ELSE CS.FEXPPERIOD / 365 * 12 END ) AS INT)) + '个月' ELSE '' END END) AS 'SHELFLIFE' ,C.FLotSize AS StandardLot ,CS.FSAFESTOCK AS SAFESTOCK --安全库存 ,CS.FSTOREUNITID --库存单位 ,(PackageValConver(CS.FSAFESTOCK, CP.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT ,CP.FLOTYIELD -- '每批产量' ,CP.FPACKUNITCONVERRATIO -- '包装规格' ,CP.FPACKUNITID -- '单位' ,PackageValConver(AE.M01,CP.FPACKUNITCONVERRATIO) as M01 ,PackageValConver(AE.S01,CP.FPACKUNITCONVERRATIO) as S01 ,PackageValConver(AE.S02,CP.FPACKUNITCONVERRATIO) as S02 ,PackageValConver(AE.S03,CP.FPACKUNITCONVERRATIO) as S03 ,PackageValConver((ISNULL(D.FQTY,0) - ISNULL(D.FFINISHQTY,0)),CP.FPACKUNITCONVERRATIO) AS InProductionQty --在生产数量 ,PackageValConver(ISNULL(E.FQTY,0),CP.FPACKUNITCONVERRATIO) AS InStockQty --已入库数量 ,PackageValConver((ISNULL(D.FQTY,0) + ISNULL(E.FQTY,0)),CP.FPACKUNITCONVERRATIO) AS TotalStockQty --合计入库量 ,PackageValConver(B.FOrderQty,CP.FPACKUNITCONVERRATIO) AS OrderLotQty --计划生产批数 ,B.FFirmQty ,B.FOrderQty into #TMPMPS FROM T_PLN_FORECAST A LEFT JOIN T_PLN_FORECASTENTRY AE ON A.FID = AE.FID RIGHT JOIN #TMP_PLN_INFO B ON B.FSALEORDERENTRYID = AE.FENTRYID LEFT JOIN T_BD_MATERIAL C ON C.FMATERIALID = B.FMATERIALID LEFT JOIN T_BD_MATERIAL_L C_L ON C_L.FMATERIALID = B.FMATERIALID LEFT JOIN T_BD_MATERIALSTOCK CS ON CS.FMATERIALID = B.FMATERIALID LEFT JOIN T_BD_MATERIALPRODUCE CP ON CP.FMATERIALID = B.FMATERIALID LEFT JOIN #TMP_MO_INFO D on D.FSRCBILLNO = B.FBILLNO AND D.FSALEORDERENTRYID = AE.FENTRYID AND D.FSALEORDERENTRYSEQ = AE.FSEQ LEFT JOIN (SELECT A.FMATERIALID ,A.FSTOCKORGID ,SUM(A1.FQTY) AS FQTY FROM T_STK_INVENTORY A LEFT JOIN T_STK_INVINITDETAIL A1 on A.FMATERIALID = A1.FMATERIALID AND A.Fstockid = A1.FSTOCKID group by A.FMATERIALID,A.FSTOCKORGID ) E on E.FMATERIALID = B.FMATERIALID WHERE --A.FDATE BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59' A.FDATE BETWEEN @STARTDATE AND @ENDDATE --更新单位 ALTER TABLE #TMPMPS ADD FSTOREUNITNAME VARCHAR(50) UPDATE #TMPMPS SET #TMPMPS.FSTOREUNITNAME = B_L.FNAME FROM T_BD_UNIT_L B_L WHERE B_L.FUNITID = #TMPMPS.FSTOREUNITID ALTER TABLE #TMPMPS ADD FPACKUNITNAME VARCHAR(50) UPDATE #TMPMPS SET #TMPMPS.FPACKUNITNAME = B_L.FNAME FROM T_BD_UNIT_L B_L WHERE B_L.FUNITID = #TMPMPS.FPACKUNITID ALTER TABLE #TMPMPS ADD FPACKUNITCONVT VARCHAR(100) UPDATE T SET T.FPACKUNITCONVT = CONCAT(CONVERT(VARCHAR,T.FPACKUNITCONVERRATIO),T.FSTOREUNITNAME,'/',T.FPACKUNITNAME) FROM #TMPMPS T --ALTER TABLE #TMPMPS ADD TotalStockQty decimal(23,6) --UPDATE T SET T.TotalStockQty = T.InProductionQty +T.InStockQty FROM #TMPMPS T --查询结果汇总end DECLARE @SQL VARCHAR(2000) SET @sql = N' select t0.* ,'+@SeqFld+' into '+ @TableName +' From #TMPMPS t0 ' EXECUTE(@sql) DROP TABLE #TMPMPS DROP TABLE #TMP_PLN_INFO DROP TABLE #TMP_MO_INFO END