Files
GateDge2023_ljy/03.珠海市汇威精密制造有限公司/HW.PythonPlugIn/ProductionMaterialsReport/sql/20240206联合查询.sql
PastSaid 08d8878eef a
2024-03-11 14:47:23 +08:00

127 lines
5.1 KiB
Transact-SQL

--declare @proMaterialId int
--,@materialId int
--,@FBILLNO varchar(80)
--,@FPPBOMBILLNO varchar(80)
--,@FSALEORDERNO varchar(80)
--,@LCID int
--SET @proMaterialId = ''
--SET @materialId = ''
--SET @FBILLNO = ''
--SET @FPPBOMBILLNO = ''
--SET @FSALEORDERNO = ''
DECLARE @LCID int
SET @LCID = 2052
SELECT
ROW_NUMBER() OVER(ORDER BY t0.FID,t0e.FENTRYID) AS FIDENTITYID--1.行号
,t0.FID
,t0e.FSEQ
,t0e.FENTRYID
,t0.FDATE --2.单据日期
,t1.FBILLNO AS 'FPPBOMBILLNO'--3.生产投料单号
,t0e.FSALEORDERNO --4.销售订单号
--5.购货单位代码
,t0.FBILLNO--7.生产任务单号
,t0e.FPLANSTARTDATE--38.计划开工日期
,t0e.FPLANFINISHDATE--39.计划完工日期
,t0e.FQTY--12.产品生产数量
,t0e.FYIELDRATE
,t0e.FROUTINGID
,t0e.FMATERIALID AS 'ProMaterialId'
,t0e.FUNITID AS 'PrdUnitId'
,t1e.FENTRYID AS 'PPBOMENTRYID'
,t1e.FMATERIALID
,(t1e.FNUMERATOR / t1e.FDENOMINATOR) AS 'FUnitNeedQty' --18.物料单位用量
,t1e.FNEEDQTY --22.物料总需求
,t1e.FUNITID
,t1e.FBOMENTRYID
,t1e.FSTDQTY --标准用量 --29.标准数量
,t1e.FMUSTQTY --应发数量 --30.应发数量
,t1.FWORKSHOPID
,(CASE t0e.FPRODUCTTYPE WHEN 1 THEN '主产品' WHEN 2 THEN '联产品' WHEN 3 THEN '副产品' ELSE '' END) AS 'PRODUCTTYPE'--43.生产类型
,(CASE t0e_a.FSTATUS WHEN 6 THEN '已结案'ELSE '' END) AS 'StatusIs6'--45.生产任务单结案否
,(CASE t1.FDOCUMENTSTATUS WHEN 'A' THEN '创建' WHEN 'B' THEN '审核中' WHEN 'C' THEN '已审核' WHEN 'D' THEN '重新审核' WHEN 'Z' THEN '暂存' ELSE '' END) AS 'PPBOMStatus'--46.生产投料单状态
INTO #TmpTable0
FROM T_PRD_MO t0
INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_PRD_MOENTRY_A t0e_a on t0e_a.FENTRYID = t0e.FENTRYID
INNER JOIN T_PRD_PPBOM t1 on t1.FMOENTRYID = t0e.FENTRYID AND t1.FMOID = t0e.FID
INNER JOIN T_PRD_PPBOMENTRY t1e on t1e.FID = t1.FID
WHERE 1 = 1
--AND t0.FBILLNO = (CASE WHEN @FBILLNO != '' THEN @FBILLNO ELSE t0.FBILLNO END)
--AND t0e.FMATERIALID = (CASE WHEN @proMaterialId <> 0 THEN @proMaterialId ELSE t0e.FMATERIALID END)
--AND t0e.FSALEORDERNO = (CASE WHEN @FSALEORDERNO != '' THEN @FSALEORDERNO ELSE t0e.FSALEORDERNO END)
--AND t1.FBILLNO = (CASE WHEN @FPPBOMBILLNO != '' THEN @FPPBOMBILLNO ELSE t1.FBILLNO END)
--AND t1e.FMATERIALID = (CASE WHEN @materialId <> 0 THEN @materialId ELSE t1e.FMATERIALID END)
SELECT
tt.*
,t0e_q.FBASEWIPQTY --23.当前在制品数量
,t0e_q.FPICKEDQTY --27.已领数量
,t0e_q.FNOPICKEDQTY --28.未领数量
,t0e_l.FMEMO --31.备注
,t0e_q.FPICKEDQTY * (100 - tt.FYIELDRATE) AS 'FLossQty'--32.损耗数量
,t0e_q.FSCRAPQTY --33.报废数量
,t0e_q.FREPICKEDQTY --37.补料数量
,t0e_c.FSTOCKID
,t0e_c.FSTOCKLOCID
INTO #TmpTable1
FROM #TmpTable0 tt
LEFT JOIN T_PRD_PPBOMENTRY_Q t0e_q ON t0e_q.FENTRYID = tt.PPBOMENTRYID --生产用料清单数量拆分表
LEFT JOIN T_PRD_PPBOMENTRY_C t0e_c ON t0e_c.FENTRYID = tt.PPBOMENTRYID
LEFT JOIN T_PRD_PPBOMENTRY_L t0e_l on t0e_l.FENTRYID = tt.PPBOMENTRYID AND t0e_l.FLOCALEID = @LCID
SELECT tt.*
,t1.FMNEMONICCODE AS 'ProMnemonicCode'--6.助记码
,t1.FNUMBER AS 'ProNumber'--8.产品编码
,t1_l.FNAME AS 'ProName'--9.产品名称
,t1_l.FSPECIFICATION AS 'ProSpecification'--10.产品规格型号
,t2_l.FNAME AS 'ProUnitName'--11.产品单位
,t3.FNUMBER AS 'MaterialNumber'--8.物料编码
,t3_l.FNAME AS 'MaterialName'--9.物料名称
,t3_l.FSPECIFICATION AS 'MaterialSpecification'--10.物料规格型号
,t4_l.FNAME AS 'MaterialUnitName'--11.物料单位
,(CASE t3.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS 'Materialsrc' --15.物料来源
,t6_l.FNAME AS 'WORKSHOPNAME' --44.生产车间
,t3.FMASTERID
,t3.FUSEORGID
,t7_l.FMEMO AS 'BOMMEMO' --42.BOM备注项
,t5_l.FNAME AS 'FSTOCKNAME'
INTO FSTOCKLOCID
FROM #TmpTable1 tt
LEFT JOIN T_BD_MATERIAL t1 ON t1.FMATERIALID = tt.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L t1_l ON t1_l.FMATERIALID = tt.FMATERIALID AND t1_l.FLOCALEID = @LCID
LEFT JOIN T_BD_UNIT_L t2_l ON t2_l.FUNITID = tt.FUNITID AND t2_l.FLOCALEID = @LCID
LEFT JOIN T_BD_MATERIAL t3 ON t3.FMATERIALID = tt.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L t3_l ON t3_l.FMATERIALID = tt.FMATERIALID AND t3_l.FLOCALEID = @LCID
LEFT JOIN T_BD_UNIT_L t4_l ON t4_l.FUNITID = tt.FUNITID AND t4_l.FLOCALEID = @LCID
LEFT JOIN T_BD_STOCK_L t5_l ON t5_l.FSTOCKID = tt.FSTOCKID AND t5_l.FLOCALEID =@LCID
LEFT JOIN T_BD_DEPARTMENT_L t6_l on t6_l.FDEPTID = tt.FWORKSHOPID AND t6_l.FLOCALEID = @LCID
LEFT JOIN T_ENG_BOMCHILD_L t7_l ON t7_l.FENTRYID = tt.FBOMENTRYID AND t7_l.FLOCALEID = @LCID
SELECT tt.*
,t1.FBASEQTY
,t2_l.FNAME AS 'ROUTENAME'
,t3e_A.FBASEINVQTY
,t3e.FBASELACKQTY AS 'FBASELACKQTY'--24.欠料
,t3e_A.FBASEONORDERQTY AS 'FBASEONORDERQTY' --25.物料在途数
,6 AS 'LOWEST6'
FROM #TmpTable2 tt
LEFT JOIN (
SELECT
t0.FMATERIALID
,t0.FSTOCKORGID
,sum(t0.FBASEQTY) AS FBASEQTY
FROM
T_STK_INVENTORY t0
GROUP BY
t0.FMATERIALID
,t0.FSTOCKORGID
) t1 on t1.FMATERIALID = tt.FMASTERID AND t1.FSTOCKORGID = tt.FUSEORGID
LEFT JOIN T_ENG_ROUTE_L t2_L on t2_L.FID = tt.FROUTINGID AND t2_L.FLOCALEID = @LCID
LEFT JOIN T_PRD_PMPPBOMENTRY t3e on t3e.FPPBOMENTRYID = tt.PPBOMENTRYID AND t3e.FMATERIALIDSUB = tt.FMATERIALID --AND t3e.FMATERIALID = t0.FMATERIALID
LEFT JOIN T_PRD_PMPPBOMENTRY_A t3e_A ON t3e_A.FENTRYID = t3e.FENTRYID
DROP TABLE #TmpTable0
DROP TABLE #TmpTable1
DROP TABLE #TmpTable2