Files
GateDge2023_ljy/MonthlyProductionSchedule/SQLServer/月度生产计划表-预测单.sql

162 lines
5.0 KiB
MySQL
Raw Normal View History

2023-12-14 10:31:17 +08:00
2023-12-15 09:08:09 +08:00
IF EXISTS(SELECT * FROM SYS.PROCEDURES WHERE NAME='PROC_INQUIRPLMTMPRTP')
DROP PROCEDURE dbo.PROC_INQUIRPLMTMPRTP;
2023-12-14 10:31:17 +08:00
GO
2023-12-15 09:08:09 +08:00
CREATE PROCEDURE PROC_INQUIRPLMTMPRTP
2023-12-17 11:37:43 +08:00
@TableName varchar(100)
,@STARTDATE date
2023-12-14 10:31:17 +08:00
,@ENDDATE date
,@LCID int
,@SeqFld varchar(200)
2023-12-17 11:37:43 +08:00
AS
2023-12-15 09:08:09 +08:00
BEGIN
2023-12-17 11:37:43 +08:00
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD>start
SELECT
AE.FSRCBILLNO
,AE.FMATERIALID
,AE.FSALEORDERENTRYID
,AE.FSALEORDERENTRYSEQ
,SUM(AE.FQTY) AS FQTY
,SUM(B.FFINISHQTY) AS FFINISHQTY --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> e52b554423704173b7306554708a8b05 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,AE.FMOENTRYID
,FFINISHQTY
FROM
T_PRD_MORPT A
LEFT JOIN T_PRD_MORPTENTRY AE ON AE.FID = A.FID
2023-12-26 10:44:19 +08:00
WHERE A.FDOCUMENTSTATUS='C' AND A.FBILLTYPE = '50fa7c2eda7947b89fab5431bf25d48e'
2023-12-17 11:37:43 +08:00
) 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
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD><EFBFBD><EFBFBD>end
--<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>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
--<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>end
2023-12-14 10:31:17 +08:00
2023-12-20 09:08:21 +08:00
2023-12-17 11:37:43 +08:00
--<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>start
2023-12-14 10:31:17 +08:00
SELECT
A.FID
,A.FBILLNO
,AE.FMATERIALID
,AE.FENTRYID
,C.FNUMBER
,C_L.FNAME
,C_L.FSPECIFICATION
2023-12-17 11:37:43 +08:00
,(CASE CS.FEXPPERIOD
WHEN 0 THEN ''
ELSE
CASE
CS.FEXPUNIT
WHEN 'Y' THEN
CONVERT ( VARCHAR,CAST((CS.FEXPPERIOD * 12) AS INT) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'M' THEN
CONVERT ( VARCHAR,CAST(CS.FEXPPERIOD AS INT) ) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
WHEN 'D' THEN
CONVERT ( VARCHAR, CAST((
2023-12-26 10:44:19 +08:00
CASE CS.FEXPPERIOD % 30 WHEN 0 THEN CS.FEXPPERIOD / 30 ELSE CS.FEXPPERIOD / 365 * 12 END
2023-12-17 11:37:43 +08:00
) AS INT)) + '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>' ELSE ''
END
END) AS 'SHELFLIFE'
2023-12-26 10:44:19 +08:00
,C.FLotSize AS StandardLot
2023-12-20 09:08:21 +08:00
,CS.FSAFESTOCK AS SAFESTOCK --<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2023-12-15 09:08:09 +08:00
,CS.FSTOREUNITID --<EFBFBD><EFBFBD><EFBFBD>λ
2023-12-26 10:44:19 +08:00
,(PackageValConver(CS.FSAFESTOCK, CP.FPACKUNITCONVERRATIO)) AS SAFESTOCKCOUNT
2023-12-17 11:37:43 +08:00
,CP.FLOTYIELD -- 'ÿ<><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
,CP.FPACKUNITCONVERRATIO -- '<27><>װ<EFBFBD><D7B0><EFBFBD><EFBFBD>'
,CP.FPACKUNITID -- '<27><>λ'
2023-12-26 10:44:19 +08:00
,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 --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,PackageValConver(ISNULL(E.FQTY,0),CP.FPACKUNITCONVERRATIO) AS InStockQty --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,PackageValConver((ISNULL(D.FQTY,0) + ISNULL(E.FQTY,0)),CP.FPACKUNITCONVERRATIO) AS TotalStockQty --<EFBFBD>ϼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
,PackageValConver(B.FOrderQty,CP.FPACKUNITCONVERRATIO) AS OrderLotQty --<EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2023-12-14 10:31:17 +08:00
,B.FFirmQty
,B.FOrderQty
2023-12-15 09:08:09 +08:00
into #TMPMPS
FROM
2023-12-17 11:37:43 +08:00
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
2023-12-14 10:31:17 +08:00
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
2023-12-17 11:37:43 +08:00
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
2023-12-20 09:08:21 +08:00
,SUM(A1.FQTY) AS FQTY
2023-12-17 11:37:43 +08:00
FROM T_STK_INVENTORY A
2023-12-26 10:44:19 +08:00
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
2023-12-14 10:31:17 +08:00
WHERE
--A.FDATE BETWEEN '2023-12-01 00:00:00' AND '2023-12-31 23:59:59'
A.FDATE BETWEEN @STARTDATE AND @ENDDATE
2023-12-17 11:37:43 +08:00
2023-12-14 10:31:17 +08:00
--<EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>λ
2023-12-20 09:08:21 +08:00
ALTER TABLE #TMPMPS ADD FSTOREUNITNAME VARCHAR(50)
2023-12-17 11:37:43 +08:00
UPDATE #TMPMPS SET #TMPMPS.FSTOREUNITNAME = B_L.FNAME FROM T_BD_UNIT_L B_L WHERE B_L.FUNITID = #TMPMPS.FSTOREUNITID
2023-12-20 09:08:21 +08:00
ALTER TABLE #TMPMPS ADD FPACKUNITNAME VARCHAR(50)
2023-12-17 11:37:43 +08:00
UPDATE #TMPMPS SET #TMPMPS.FPACKUNITNAME = B_L.FNAME FROM T_BD_UNIT_L B_L WHERE B_L.FUNITID = #TMPMPS.FPACKUNITID
2023-12-20 09:08:21 +08:00
ALTER TABLE #TMPMPS ADD FPACKUNITCONVT VARCHAR(100)
UPDATE T SET T.FPACKUNITCONVT = CONCAT(CONVERT(VARCHAR,T.FPACKUNITCONVERRATIO),T.FSTOREUNITNAME,'/',T.FPACKUNITNAME) FROM #TMPMPS T
2023-12-26 10:44:19 +08:00
--ALTER TABLE #TMPMPS ADD TotalStockQty decimal(23,6)
--UPDATE T SET T.TotalStockQty = T.InProductionQty +T.InStockQty FROM #TMPMPS T
2023-12-17 11:37:43 +08:00
--<EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>end
DECLARE @SQL VARCHAR(2000)
2023-12-20 09:08:21 +08:00
SET @sql = N'
2023-12-17 11:37:43 +08:00
select
t0.*
,'+@SeqFld+'
into '+ @TableName +' From #TMPMPS t0 '
EXECUTE(@sql)
2023-12-14 10:31:17 +08:00
2023-12-17 11:37:43 +08:00
DROP TABLE #TMPMPS
DROP TABLE #TMP_PLN_INFO
DROP TABLE #TMP_MO_INFO
2023-12-15 09:08:09 +08:00
END