Files
GateDge2023_ljy/ProductionMaterialsReport/SqlServer/生产用料清单.sql
PastSaid f3eae0a034 a
2024-01-08 10:58:24 +08:00

130 lines
5.8 KiB
Transact-SQL

DECLARE @FBILLNO varchar(80)
,@MainNumber varchar(80)
,@MainName varchar(80)
,@FMOBILLNO varchar(80)
,@FNumber varchar(80)
,@FName varchar(80)
,@FSALEORDERNO varchar(80)
,@LCID int
set @FBILLNO = ''
set @MainNumber = ''
set @MainName = ''
set @FMOBILLNO = ''
set @FNumber = ''
set @FName = ''
set @FSALEORDERNO = ''
set @LCID = 2052
--set @FBILLNO =''
--set @MainNumber=''
--set @MainName=''
--set @FMOBILLNO=''
--set @FNumber=''
--set @FName=''
--set @FSALEORDERNO=''
--set @LCID=2052
SELECT
top 1000
ROW_NUMBER() OVER(ORDER BY T0.FMATERIALID) AS '行号' --1.行号
,T0.FID
--,T0.FFORMID
,t7.FDATE AS '单据日期' --2.单据日期
,T0.FBILLNO AS '生产投料单号'--3.生产投料单号
--,T0.FMOID --生产订单内码
----,T0.FMOENTRYID --生产订单子表内码
--,t0.FSALEORDERID
--,t0.FSALEORDERENTRYID
,T0.FSALEORDERNO AS '销售订单号' --4.销售订单号
--,T0.FMATERIALID --产品ID
--5.购货单位代码
,T1.FMNEMONICCODE AS '助记码'--6.助记码
,T0.FMOBILLNO AS '生产任务单号'--7.生产任务单号
,T1.FNUMBER AS '产品编码'--8.产品编码
,T1_L.FNAME AS '产品名称'--9.产品名称
,T1_L.FSPECIFICATION AS '产品规格型号'--10.产品规格型号
,T3_L.FNAME AS '产品单位'--11.产品单位
,T0.FQTY AS '产品生产数量'--12.产品生产数量
,T2.FNUMBER AS '物料代码'--13.物料代码
,T2_L.FNAME AS '物料名称'--14.物料名称
,(CASE T2.FMATERIALSRC WHEN 'A' THEN 'PLM' WHEN 'B' THEN 'ERP' ELSE '' END) AS '物料来源' --15.物料来源
,T2_L.FSPECIFICATION AS '物料规格型号'--16.物料规格型号
,t10_L.FNAME AS '物料技术标准'--17.物料技术标准
,(T0E.FNUMERATOR / T0E.FDENOMINATOR) AS '物料单位用量' --18.物料单位用量
--,T0E.FUNITID AS ENTRYUNITID
,T4_L.FNAME AS '物料单位' --19.物料单位
,t9.FBASEQTY AS '物料库存量'--20.物料库存量
,T11E_A.FBASEINVQTY
--21.物料待检数
,T0E.FNEEDQTY AS '物料总需求'--22.物料总需求
,T0E_Q.FBASEWIPQTY AS '当前在制品数量'--23.当前在制品数量
--,(case when t9.FBASEQTY > T0E.FNEEDQTY then 0 else T0E.FNEEDQTY - t9.FBASEQTY end) AS '欠料'--24.欠料
,T11E.FBASELACKQTY AS '欠料'--24.欠料
,T11E_A.FBASEONORDERQTY AS '物料在途数' --25.物料在途数
,T11E_A.FENTRYID
--26.计划投料数量
,T0E_Q.FPICKEDQTY AS '已领数量'--27.已领数量
,T0E_Q.FNOPICKEDQTY AS '未领数量'--28.未领数量
,T0E.FSTDQTY AS '标准数量'--标准用量 --29.标准数量
,T0E.FMUSTQTY AS '应发数量'--应发数量 --30.应发数量
,t0E_L.FMEMO AS '备注'--31.备注
,T0E_Q.FPICKEDQTY * (100 - t7E.FYIELDRATE) AS '损耗数量'--32.损耗数量
,T0E_Q.FSCRAPQTY AS '报废数量' --33.报废数量
--34.计划发料日期
,T0E_C.FSTOCKID
,T5_L.FNAME AS '仓库'--35.仓库
,T0E_C.FSTOCKLOCID --36.仓位
,T0E_Q.FREPICKEDQTY AS '补料数量'--37.补料数量
,t7E.FPLANSTARTDATE AS '计划开工日期'--38.计划开工日期
,t7E.FPLANFINISHDATE AS '计划完工日期'--39.计划完工日期
--40.工位
--,7E.FMEMO AS '其他备注项' --41.其他备注项
,t8_L.FMEMO AS 'BOM备注项'--42.BOM备注项
--,t8.FNUMERATOR
,(CASE T7e.FPRODUCTTYPE WHEN 1 THEN '主产品' WHEN 2 THEN '主产品' WHEN 3 THEN '主产品' ELSE '' END) AS '生产类型'--43.生产类型
--,T0.FWORKSHOPID
,T6_L.FNAME AS '生产车间'--44.生产车间
,(CASE T7E_A.FSTATUS WHEN 6 THEN '已结案'ELSE '' END) AS '生产任务单结案否'--45.生产任务单结案否
,(CASE t0.FDOCUMENTSTATUS WHEN 'A' THEN '创建' WHEN 'B' THEN '审核中' WHEN 'C' THEN '已审核' WHEN 'D' THEN '重新审核' WHEN 'Z' THEN '暂存' ELSE '' END) AS '生产投料单状态'--46.生产投料单状态
--47.PR已审未转PO数量
,6 AS FDECIMALS
FROM
T_PRD_MO t7 --生产订单
LEFT JOIN T_PRD_MOENTRY t7E on t7E.FID = t7.FID
LEFT JOIN T_PRD_MOENTRY_A t7E_A on t7E_A.FENTRYID = t7E.FENTRYID
LEFT JOIN T_PRD_PPBOM T0 on T0.FMOID = t7.FID --生产用料清单
LEFT JOIN T_PRD_PPBOMENTRY T0E ON T0.FID = T0E.FID AND t0.FMOENTRYSEQ = t7e.FSEQ--生产用料清单子表
LEFT JOIN T_PRD_PPBOMENTRY_Q T0E_Q ON T0E_Q.FENTRYID = T0E.FENTRYID --生产用料清单数量拆分表
LEFT JOIN T_PRD_PPBOMENTRY_C T0E_C ON T0E_C.FENTRYID = T0E.FENTRYID
LEFT JOIN T_PRD_PPBOMENTRY_L t0E_L on t0E_L.FENTRYID = T0E.FENTRYID AND t0E_L.FLOCALEID = @LCID
LEFT JOIN T_BD_MATERIAL T1 ON T1.FMATERIALID = T0.FMATERIALID
LEFT JOIN T_BD_MATERIAL_L T1_L ON T1_L.FMATERIALID = T0.FMATERIALID AND T1_L.FLOCALEID = @LCID
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 AND T2_L.FLOCALEID = @LCID
LEFT JOIN T_BD_UNIT_L T3_L ON T3_L.FUNITID = T0.FUNITID AND T3_L.FLOCALEID = @LCID
LEFT JOIN T_BD_UNIT_L T4_L ON T4_L.FUNITID = T0E.FUNITID AND T4_L.FLOCALEID = @LCID
LEFT JOIN T_BD_STOCK_L T5_L ON T5_L.FSTOCKID = T0E_C.FSTOCKID AND T5_L.FLOCALEID =@LCID
LEFT JOIN T_BD_DEPARTMENT_L T6_L ON T6_L.FDEPTID = T0.FWORKSHOPID AND T6_L.FLOCALEID = @LCID
LEFT JOIN T_ENG_BOMCHILD_L t8_L ON t8_L.FENTRYID = T0E.FBOMENTRYID AND t8_L.FLOCALEID = @LCID
LEFT JOIN (
SELECT
t0.FMATERIALID
,t0.FSTOCKORGID
,sum(t0.FBASEQTY) AS FBASEQTY
FROM
T_STK_INVENTORY t0
GROUP BY
t0.FMATERIALID
,t0.FSTOCKORGID
) t9 on t9.FMATERIALID = T2.FMASTERID AND t9.FSTOCKORGID = t2.FUSEORGID
LEFT JOIN T_ENG_ROUTE_L t10_L on t10_L.FID = t7E.FROUTINGID AND t10_L.FLOCALEID = @LCID
LEFT JOIN T_PRD_PMPPBOMENTRY T11E on T11E.FMOID = t7e.FID AND T11E.FMOENTRYID = t7e.FENTRYID AND T11E.FMOENTRYSEQ = t7E.FSEQ AND T11E.FMATERIALIDSUB = T0E.FMATERIALID AND T11E.FMATERIALID = t0.FMATERIALID
LEFT JOIN T_PRD_PMPPBOMENTRY_A T11E_A ON T11E_A.FENTRYID = T11E.FENTRYID
WHERE
T0.FBILLNO = (CASE WHEN @FBILLNO != '' THEN @FBILLNO ELSE T0.FBILLNO END)
AND T0.FMOBILLNO = (CASE WHEN @FMOBILLNO != '' THEN @FMOBILLNO ELSE T0.FMOBILLNO END)
AND T0.FSALEORDERNO = (CASE WHEN @FSALEORDERNO != '' THEN @FSALEORDERNO ELSE T0.FSALEORDERNO END)
AND T1.FNUMBER = (CASE WHEN @MAINNUMBER != '' THEN @MAINNUMBER ELSE T1.FNUMBER END)
AND T1_L.FNAME = (CASE WHEN @MAINNAME != '' THEN @MAINNAME ELSE T1_L.FNAME END)
AND T2.FNUMBER = (CASE WHEN @FNUMBER != '' THEN @FNUMBER ELSE T2.FNUMBER END)
AND T2_L.FNAME = (CASE WHEN @FNAME != '' THEN @FNAME ELSE T2_L.FNAME END)