171 lines
6.6 KiB
MySQL
171 lines
6.6 KiB
MySQL
|
|
DECLARE @needNum DECIMAL(23,6)
|
|||
|
|
,@sDate varchar(100)
|
|||
|
|
,@eDate varchar(100)
|
|||
|
|
,@dbName varchar(100)
|
|||
|
|
SET @needNum = 20
|
|||
|
|
SET @sDate = '2024-02-24'
|
|||
|
|
SET @eDate = '2024-03-24'
|
|||
|
|
|
|||
|
|
select @dbName = db_name()
|
|||
|
|
|
|||
|
|
SELECT t0.FMATERIALID
|
|||
|
|
,ISNULL(t3.sumQTY,0) AS <EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
,ISNULL(t4.sumBASENOPICKEDQTY,0) AS δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
,ISNULL(t5.sumNoStockInQty,0) AS <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
,CASE WHEN CHARINDEX('TC',t0.FNUMBER) = 1 THEN 0 ELSE ISNULL(t1.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> - t1.δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) END AS '<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,ISNULL(t2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> - t2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD><EFBFBD>;<EFBFBD><EFBFBD>'
|
|||
|
|
,(ISNULL(t3.sumQTY,0) - ISNULL(t4.sumBASENOPICKEDQTY,0) + ISNULL(t5.sumNoStockInQty,0) - ISNULL(t1.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> - t1.δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) + ISNULL(t2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> - t2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0)) AS '<EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,ISNULL(t6.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,0) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
INTO #Material_Stock_Statu
|
|||
|
|
FROM T_BD_MATERIAL t0
|
|||
|
|
LEFT JOIN (
|
|||
|
|
SELECT
|
|||
|
|
t0e.FMATERIALID,SUM(t0e.FQTY) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,SUM((t0e_r.FBASEREMAINOUTQTY + t0e_r.FBASERETURNQTY)) AS 'δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
FROM T_SAL_ORDER t0
|
|||
|
|
INNER JOIN T_SAL_ORDERENTRY t0e on t0.FID = t0e.FID
|
|||
|
|
INNER JOIN T_SAL_ORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID
|
|||
|
|
WHERE t0.FDOCUMENTSTATUS = 'C'
|
|||
|
|
AND t0.FCANCELSTATUS = 'A'
|
|||
|
|
AND t0.FCLOSESTATUS = 'A'
|
|||
|
|
AND t0.FDATE between @sDate AND @eDate
|
|||
|
|
GROUP BY t0e.FMATERIALID
|
|||
|
|
) t1 on t1.FMATERIALID = t0.FMATERIALID
|
|||
|
|
LEFT JOIN (
|
|||
|
|
SELECT
|
|||
|
|
t0e.FMATERIALID,SUM(t0e.FQTY) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,SUM(t0e_r.FREMAINSTOCKINQTY) AS 'ʣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,SUM(t0e_r.FBASESTOCKINQTY) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
FROM T_PUR_POORDER t0
|
|||
|
|
INNER JOIN T_PUR_POORDERENTRY t0e on t0.FID = t0e.FID AND t0.FBUSINESSTYPE != 'ZCCG' AND t0.FBUSINESSTYPE != 'FYCG'
|
|||
|
|
INNER JOIN T_PUR_POORDERENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e_r.FENTRYID = t0e.FENTRYID
|
|||
|
|
WHERE t0.FDOCUMENTSTATUS = 'C'
|
|||
|
|
AND t0.FCANCELSTATUS = 'A'
|
|||
|
|
AND t0.FCLOSESTATUS = 'A'
|
|||
|
|
AND t0.FDATE BETWEEN @sDate AND @eDate
|
|||
|
|
GROUP BY t0e.FMATERIALID
|
|||
|
|
) t2 on t2.FMATERIALID = t0.FMATERIALID
|
|||
|
|
LEFT JOIN (
|
|||
|
|
SELECT tt0.FMATERIALID,tt0.FSTOCKORGID,SUM(tt0.FBASEQTY) AS sumQTY
|
|||
|
|
FROM T_STK_INVENTORY tt0
|
|||
|
|
GROUP BY tt0.FMATERIALID,tt0.FSTOCKORGID
|
|||
|
|
) t3 on t3.FMATERIALID = t0.FMASTERID AND t3.FSTOCKORGID = t0.FUSEORGID
|
|||
|
|
LEFT JOIN (
|
|||
|
|
SELECT t0e.FMATERIALID,SUM(t0e_q.FNOPICKEDQTY) sumBASENOPICKEDQTY --δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
FROM T_PRD_PPBOMENTRY t0e
|
|||
|
|
INNER JOIN T_PRD_PPBOMENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID
|
|||
|
|
INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FMOENTRYID
|
|||
|
|
WHERE t0e_a.FSTATUS = 4
|
|||
|
|
GROUP BY t0e.FMATERIALID
|
|||
|
|
) t4 on t4.FMATERIALID = t0.FMATERIALID
|
|||
|
|
LEFT JOIN (
|
|||
|
|
SELECT t0e.FMATERIALID,SUM(t0e_q.FNOSTOCKINQTY) AS sumNoStockInQty
|
|||
|
|
FROM T_PRD_MOENTRY t0e
|
|||
|
|
INNER JOIN T_PRD_MOENTRY_Q t0e_q on t0e.FENTRYID = t0e_q.FENTRYID
|
|||
|
|
INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID
|
|||
|
|
WHERE t0e_a.FSTATUS = 4
|
|||
|
|
GROUP BY t0e.FMATERIALID
|
|||
|
|
) t5 on t5.FMATERIALID = t0.FMATERIALID
|
|||
|
|
LEFT JOIN (
|
|||
|
|
SELECT t0e.FMATERIALID,SUM(FBASEUNITQTY-FINSTOCKBASEQTY + FRETURNBASEQTY) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
FROM T_PUR_RECEIVE t0
|
|||
|
|
INNER JOIN T_PUR_RECEIVEENTRY t0e on t0.FID = t0e.FID
|
|||
|
|
INNER JOIN T_PUR_RECEIVEENTRY_R t0e_r on t0e.FID = t0e_r.FID AND t0e.FENTRYID = t0e_r.FENTRYID
|
|||
|
|
INNER JOIN T_PUR_RECEIVEENTRY_S t0e_s on t0e.FID = t0e_s.FID AND t0e.FENTRYID = t0e_s.FENTRYID
|
|||
|
|
WHERE t0.FDOCUMENTSTATUS = 'C'
|
|||
|
|
AND t0.FCANCELSTATUS = 'A'
|
|||
|
|
AND t0.FCLOSESTATUS = 'A'
|
|||
|
|
AND t0.FDATE BETWEEN @sDate AND @eDate
|
|||
|
|
GROUP BY t0e.FMATERIALID
|
|||
|
|
) t6 on t6.FMATERIALID = t0.FMATERIALID
|
|||
|
|
WHERE t0.FDOCUMENTSTATUS = 'C'
|
|||
|
|
AND t0.FFORBIDSTATUS = 'A'
|
|||
|
|
|
|||
|
|
UPDATE #Material_Stock_Statu SET <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD> = <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> - δ<><CEB4><EFBFBD><EFBFBD> - <20>ܶ<EFBFBD><DCB6><EFBFBD> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20><>;<EFBFBD><CDBE>;
|
|||
|
|
|
|||
|
|
WITH #TMPMATERIALNUM AS (
|
|||
|
|
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>id<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD>
|
|||
|
|
SELECT tt.MATERIALID,SUM(tt.needNum) needNum
|
|||
|
|
FROM (
|
|||
|
|
SELECT
|
|||
|
|
CASE @dbName WHEN 'AIS20231110222743' THEN 101521 ELSE 782449 END AS 'MATERIALID'
|
|||
|
|
,10 needNum
|
|||
|
|
--UNION ALL
|
|||
|
|
--SELECT
|
|||
|
|
--CASE @dbName WHEN 'AIS20231110222743' THEN 101530 ELSE 808372 END AS 'MATERIALID'
|
|||
|
|
--,30 needNum
|
|||
|
|
) tt
|
|||
|
|
GROUP BY tt.MATERIALID
|
|||
|
|
), #ProMaterial AS(
|
|||
|
|
SELECT t0.FMASTERID
|
|||
|
|
,t0.FMATERIALID
|
|||
|
|
,t0.FNUMBER
|
|||
|
|
,t0.FUSEORGID
|
|||
|
|
,CAST(t1.needNum AS decimal(23,6)) AS 'ProMaterialQty'
|
|||
|
|
FROM T_BD_MATERIAL t0
|
|||
|
|
INNER JOIN #TMPMATERIALNUM t1 on t0.FMATERIALID = t1.MATERIALID
|
|||
|
|
WHERE t0.FDOCUMENTSTATUS = 'C'
|
|||
|
|
), #T_ENG_BOM_TOP1 AS(
|
|||
|
|
--<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>²㼶<EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BOM
|
|||
|
|
SELECT
|
|||
|
|
t1.FMATERIALID AS 'EMaterialId',t1.FNUMERATOR,t1.FDENOMINATOR
|
|||
|
|
,ISNULL(t0.FID,0) AS 'BomId',ISNULL(t0.FNUMBER,'') AS 'FNUMBER'
|
|||
|
|
,ISNULL(t0.FMATERIALID,0) AS 'FMATERIALID',t1.FID AS 'BOMCHILD_FID'
|
|||
|
|
FROM T_ENG_BOMCHILD t1
|
|||
|
|
OUTER APPLY (
|
|||
|
|
SELECT TOP 1 t0.FID,t0.FNUMBER,t0.FMATERIALID
|
|||
|
|
FROM T_ENG_BOM t0
|
|||
|
|
WHERE t0.FMATERIALID = t1.FMATERIALID
|
|||
|
|
AND t0.FDOCUMENTSTATUS = 'C' AND t0.FFORBIDSTATUS = 'A'
|
|||
|
|
ORDER BY t0.FID DESC
|
|||
|
|
) t0
|
|||
|
|
), #MATERIAL_LACKANALYE AS(
|
|||
|
|
SELECT
|
|||
|
|
t0.FMATERIALID AS 'MATERIALID'
|
|||
|
|
,t1.BomId AS 'BomId'
|
|||
|
|
,t0.ProMaterialQty AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,t3.<EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
,CAST((CASE CHARINDEX('TC',t0.FNUMBER)
|
|||
|
|
WHEN 1 THEN 0 - t0.ProMaterialQty
|
|||
|
|
ELSE (CASE WHEN t3.<EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD> > t0.ProMaterialQty THEN 0 ELSE t3.<EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD> - t0.ProMaterialQty END)
|
|||
|
|
END) AS decimal(23,6)) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,0 'BOMLEVEL',1 'IsProduct',1 '<EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>'
|
|||
|
|
FROM #ProMaterial t0
|
|||
|
|
CROSS APPLY (
|
|||
|
|
SELECT TOP 1 tt.BomId,tt.FMATERIALID FROM #T_ENG_BOM_TOP1 tt
|
|||
|
|
WHERE 1 = 1 AND t0.FMATERIALID = tt.FMATERIALID ORDER BY tt.BomId DESC
|
|||
|
|
) t1
|
|||
|
|
INNER JOIN #Material_Stock_Statu t3 on t1.FMATERIALID = t3.FMATERIALID
|
|||
|
|
UNION ALL
|
|||
|
|
SELECT t1.EMaterialId AS 'MATERIALID'
|
|||
|
|
,t1.BomId
|
|||
|
|
,CAST(t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * (t1.FNUMERATOR / t1.FDENOMINATOR) AS decimal(23,6)) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,t0.<EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
,CAST(t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * (t1.FNUMERATOR / t1.FDENOMINATOR) AS decimal(23,6)) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,t0.BOMLEVEL + 1 AS 'BOMLEVEL',0 AS 'IsProduct',1 AS '<EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>'
|
|||
|
|
FROM #MATERIAL_LACKANALYE t0
|
|||
|
|
INNER JOIN #T_ENG_BOM_TOP1 t1 on t0.BomId = t1.BOMCHILD_FID
|
|||
|
|
)
|
|||
|
|
SELECT
|
|||
|
|
ROW_NUMBER() OVER (ORDER BY t0.BOMLEVEL,t1.FNumber) 'FIDENTITYID'
|
|||
|
|
,t0.MATERIALID,t0.IsProduct,t1_l.FNAME,t1.FNUMBER
|
|||
|
|
,t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--,t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
,t2.<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>',t2.δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>',t2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,t2.<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD>ܶ<EFBFBD><EFBFBD><EFBFBD>',t2.<EFBFBD><EFBFBD>;<EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD>;<EFBFBD><EFBFBD>',t2.<EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',t2.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,t0.<EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>
|
|||
|
|
FROM (
|
|||
|
|
SELECT t0.MATERIALID
|
|||
|
|
--,SUM(t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,SUM(t0.<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) AS '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
|||
|
|
,MAX(t0.BOMLEVEL) AS 'BOMLEVEL'
|
|||
|
|
,MAX(t0.IsProduct) AS 'IsProduct'
|
|||
|
|
,SUM(t0.<EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>) AS '<EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD>'
|
|||
|
|
FROM #MATERIAL_LACKANALYE t0
|
|||
|
|
GROUP BY t0.MATERIALID
|
|||
|
|
) t0
|
|||
|
|
INNER JOIN T_BD_MATERIAL t1 on t0.MaterialId = t1.FMATERIALID
|
|||
|
|
INNER JOIN T_BD_MATERIAL_L t1_l on t0.MaterialId = t1_l.FMATERIALID AND t1_l.FLOCALEID = 2052
|
|||
|
|
INNER JOIN #Material_Stock_Statu t2 on t2.FMATERIALID = t0.MATERIALID
|
|||
|
|
OPTION (MAXRECURSION 30)
|
|||
|
|
|
|||
|
|
DROP TABLE #Material_Stock_Statu
|