162 lines
5.2 KiB
Transact-SQL
162 lines
5.2 KiB
Transact-SQL
|
|
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
|
|
t0E.FSRCBILLNO
|
|
,t0E.FMATERIALID
|
|
,t0E.FSALEORDERENTRYID
|
|
,t0E.FSALEORDERENTRYSEQ
|
|
,SUM(t0E.FQTY) AS FQTY
|
|
,SUM(t1.FFINISHQTY) AS FFINISHQTY --已入库数量
|
|
into #TMP_MO_INFO
|
|
FROM
|
|
T_PRD_MO t0
|
|
LEFT JOIN T_PRD_MOENTRY t0E ON t0.FID = t0E.FID
|
|
LEFT JOIN T_PRD_MOENTRY_A t0E_A ON t0E_A.FENTRYID = t0E.FENTRYID
|
|
LEFT JOIN (SELECT
|
|
t0.FBILLTYPE --50fa7c2eda7947b89fab5431bf25d48e 入库汇报 e52b554423704173b7306554708a8b05 生产汇报
|
|
,t0E.FMOENTRYID
|
|
,FFINISHQTY
|
|
FROM
|
|
T_PRD_MORPT t0
|
|
LEFT JOIN T_PRD_MORPTENTRY t0E ON t0E.FID = t0.FID
|
|
WHERE t0.FDOCUMENTSTATUS='C' AND t0.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e'
|
|
) t1 on t1.FMOENTRYID = t0E.FENTRYID
|
|
WHERE
|
|
t0E.FSRCBILLTYPE ='PLN_PLANORDER'
|
|
AND t0E_A.FSTATUS <> 6
|
|
AND t0E.FSALEORDERENTRYID <> 0
|
|
AND t0.FDATE between @STARTDATE and @ENDDATE
|
|
GROUP BY
|
|
t0E.FSRCBILLNO
|
|
,t0E.FMATERIALID
|
|
,t0E.FSALEORDERENTRYID
|
|
,t0E.FSALEORDERENTRYSEQ
|
|
--生产订单-汇报单end
|
|
|
|
|
|
--计划订单start
|
|
SELECT
|
|
t0.FID
|
|
,t0.FBILLNO
|
|
,t0.FMATERIALID
|
|
,t0_B.FSALEORDERENTRYID
|
|
,SUM(t0.FFirmQty) as 'FFirmQty'
|
|
,SUM(t0.FORDERQTY) as 'FOrderQty'
|
|
into #TMP_PLN_INFO
|
|
FROM
|
|
T_PLN_PLANORDER t0
|
|
LEFT JOIN T_PLN_PLANORDER_B t0_B ON t0.FID = t0_B.FID
|
|
WHERE
|
|
t0.FRELEASETYPE = 1
|
|
--AND (t0.FRELEASESTATUS = 1 OR t0.FRELEASESTATUS = 2 )
|
|
GROUP By
|
|
t0.FID
|
|
,t0.FBILLNO
|
|
,t0.FRELEASETYPE
|
|
,t0.FMATERIALID
|
|
,t0_B.FSALEORDERENTRYID
|
|
--计划订单end
|
|
|
|
|
|
|
|
--查询结果汇总start
|
|
SELECT
|
|
t0.FID
|
|
,t0.FBILLNO
|
|
,t0E.FMATERIALID
|
|
,t0E.FENTRYID
|
|
,t2.FNUMBER
|
|
,t2_L.FNAME
|
|
,t2_L.FSPECIFICATION
|
|
,(CASE t2S.FEXPPERIOD
|
|
WHEN 0 THEN ''
|
|
ELSE
|
|
CASE
|
|
t2S.FEXPUNIT
|
|
WHEN 'Y' THEN
|
|
CONVERT ( VARCHAR,CAST((t2S.FEXPPERIOD * 12) AS INT) ) + '个月'
|
|
WHEN 'M' THEN
|
|
CONVERT ( VARCHAR,CAST(t2S.FEXPPERIOD AS INT) ) + '个月'
|
|
WHEN 't3' THEN
|
|
CONVERT ( VARCHAR, CAST((
|
|
CASE t2S.FEXPPERIOD % 30 WHEN 0 THEN t2S.FEXPPERIOD / 30 ELSE t2S.FEXPPERIOD / 365 * 12 END
|
|
) AS INT)) + '个月' ELSE ''
|
|
END
|
|
END) AS 'SHELFLIFE'
|
|
,t2.FLotSize AS StandardLot
|
|
,t2S.FSAFESTOCK AS SAFESTOCK --安全库存
|
|
,t2S.FSTOREUNITID --库存单位
|
|
,(dbo.PackageValConver(t2S.FSAFESTOCK, t2P.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT
|
|
,t2P.FLOTYIELD -- '每批产量'
|
|
,t2P.FPACKUNITCONVERRATIO -- '包装规格'
|
|
,t2P.FPACKUNITID -- '单位'
|
|
,dbo.PackageValConver(t0E.M01,t2P.FPACKUNITCONVERRATIO) as M01
|
|
,dbo.PackageValConver(t0E.S01,t2P.FPACKUNITCONVERRATIO) as S01
|
|
,dbo.PackageValConver(t0E.S02,t2P.FPACKUNITCONVERRATIO) as S02
|
|
,dbo.PackageValConver(t0E.S03,t2P.FPACKUNITCONVERRATIO) as S03
|
|
,dbo.PackageValConver((ISNULL(t3.FQTY,0) - ISNULL(t3.FFINISHQTY,0)),t2P.FPACKUNITCONVERRATIO) AS InProductionQty --在生产数量
|
|
,dbo.PackageValConver(ISNULL(t4.FQTY,0),t2P.FPACKUNITCONVERRATIO) AS InStockQty --已入库数量
|
|
,dbo.PackageValConver((ISNULL(t3.FQTY,0) + ISNULL(t4.FQTY,0)),t2P.FPACKUNITCONVERRATIO) AS TotalStockQty --合计入库量
|
|
,dbo.PackageValConver(t1.FOrderQty,t2P.FPACKUNITCONVERRATIO) AS OrderLotQty --计划生产批数
|
|
,t1.FFirmQty
|
|
,t1.FOrderQty
|
|
into #TMPMPS
|
|
FROM
|
|
T_PLN_FORECAST t0
|
|
LEFT JOIN T_PLN_FORECASTENTRY t0E ON t0.FID = t0E.FID
|
|
LEFT JOIN #TMP_PLN_INFO t1 ON t1.FSALEORDERENTRYID = t0E.FENTRYID AND t1.FMATERIALID = t0E.FMATERIALID
|
|
LEFT JOIN T_BD_MATERIAL t2 ON t2.FMATERIALID = t0E.FMATERIALID
|
|
LEFT JOIN T_BD_MATERIAL_L t2_L ON t2_L.FMATERIALID = t0E.FMATERIALID
|
|
LEFT JOIN T_BD_MATERIALSTOCK t2S ON t2S.FMATERIALID = t0E.FMATERIALID
|
|
LEFT JOIN T_BD_MATERIALPRODUCE t2P ON t2P.FMATERIALID = t0E.FMATERIALID
|
|
LEFT JOIN #TMP_MO_INFO t3 on t3.FSRCBILLNO = t1.FBILLNO AND t3.FSALEORDERENTRYID = t0E.FENTRYID AND t3.FSALEORDERENTRYSEQ = t0E.FSEQ
|
|
LEFT JOIN (SELECT
|
|
t0.FMATERIALID
|
|
,t0.FSTOCKORGID
|
|
,SUM(t1.FQTY) AS FQTY
|
|
FROM T_STK_INVENTORY t0
|
|
LEFT JOIN T_STK_INVINITDETAIL t1 ON t0.FMATERIALID = t1.FMATERIALID AND t0.FSTOCKID = t1.FSTOCKID
|
|
GROUP BY t0.FMATERIALID,t0.FSTOCKORGID
|
|
) t4 on t4.FMATERIALID = t0E.FMATERIALID
|
|
WHERE
|
|
--t0.FDATE BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
|
|
t0.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 |