Files
GateDge2023_ljy/07.珠海英搏尔/Enpower.Python/领+补-退.sql
PastSaid fa480006a8 1
2024-07-16 10:33:50 +08:00

152 lines
5.0 KiB
Transact-SQL

IF EXISTS (SELECT 1 WHERE object_id('tempdb..#生产订单') IS NOT NULL)
BEGIN
DROP TABLE #生产订单
END
IF EXISTS (SELECT 1 WHERE object_id('tempdb..#关联项目费用临时表') IS NOT NULL)
BEGIN
DROP TABLE [dbo].[#关联项目费用临时表]
END
CREATE TABLE #生产订单(
[FBILLNO] [nvarchar](80) NULL,
[FID] [int] NOT NULL,
[FENTRYID] [int] NOT NULL,
[TopMaterialId] [int] NULL,
[FMATERIALID] [int] NULL,
[FFORMID] [varchar](36) NULL,
[入库数量] [decimal](23, 10) NOT NULL,
[FSTATUS] [char](1) NULL,
[FCOSTDATE] [datetime] NULL,
[FQTY] [decimal](23, 10) NOT NULL,
[FPERIOD] [int] NULL
) ON [PRIMARY]
declare @sqlL varchar(max)
declare @billNo varchar(100),@materialNumber varchar(100)
declare @dbName varchar(100)
SET @sqlL = N'
INSERT INTO #生产订单
SELECT t0.FBILLNO,t0.FID,t0e.FENTRYID,t0e.FMATERIALID AS TopMaterialId,t0e.FMATERIALID
,t0.FFORMID AS FFORMID,t0e_a.FSTOCKINQUASELAUXQTY AS 入库数量
,t0e_a.FSTATUS,t0e_a.FCOSTDATE,t0e_a.FSTOCKINQUASELAUXQTY AS FQTY
,CONVERT(INT, CONVERT(VARCHAR(6),ISNULL(t0e_a.FCOSTDATE,GETDATE()),112)) AS FPERIOD
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.FENTRYID = t0e_a.FENTRYID
INNER JOIN T_BD_MATERIAL t1 on t1.FMATERIALID = t0e.FMATERIALID
WHERE 1 = 1
'
select @dbName = db_name()
if @dbName != 'AIS20231110222743'
BEGIN
SET @billNo = 'WO2403210039'
--SET @billNo = 'WO2310240111'
--SET @billNo = 'TO2310120003'
SET @billNo = 'RO2403280019'
SET @billNo = 'WO2304230023'
END
IF @billNo != '' OR @materialNumber = ''
BEGIN
SET @sqlL = @sqlL + N' AND t0.FBILLNO = ''' + @billNo + ''''
END
IF @materialNumber != ''
BEGIN
SET @sqlL = @sqlL + N' AND t1.FNUMBER = ''' + @materialNumber + ''''
END
EXEC(@sqlL)
;WITH #生产领料单 AS (
SELECT t1e.FMOENTRYID,t1e.FMOBILLNO,t1e.FMATERIALID,t1e.FLOT,t1e.FLOT_TEXT
--,SUM(t1e.FAMOUNT) AS 'FAMOUNT'
--,SUM(t1e.FACTUALQTY) AS 'FQTY'
,t1e.FAMOUNT,t1e.FACTUALQTY,t1e.FPRICE
,'领料' AS 'FFORMID'
FROM T_PRD_PICKMTRL t1
INNER JOIN T_PRD_PICKMTRLDATA t1e on t1.FID = t1e.FID
WHERE t1.FDOCUMENTSTATUS = 'C' AND t1e.FMOBILLNO != t1e.FLOT_TEXT
--GROUP BY t1e.FLOT,t1e.FLOT_TEXT,t1e.FMATERIALID,t1e.FMOENTRYID,t1e.FMOBILLNO
)
, #生产补料单 AS (
SELECT t0e.FMOENTRYID,t0e.FMOBILLNO,t0e.FMATERIALID,t0e.FLOT,t0e.FLOT_TEXT
--,SUM(t0e.FAMOUNT) AS 'FAMOUNT'
--,SUM(t0e_q.FACTUALQTY) AS 'FQTY'
,t0e.FAMOUNT,t0e_q.FACTUALQTY,t0e.FPRICE
,'补料' AS 'FFORMID'
FROM T_PRD_FEEDMTRL t0
INNER JOIN T_PRD_FEEDMTRLDATA t0e on t0.FID = t0e.FID
INNER JOIN T_PRD_FEEDMTRLDATA_Q t0e_q on t0e_q.FENTRYID = t0e.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C'
--GROUP BY t0e.FMOID,t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,t0e.FLOT_TEXT,t0e.FMOBILLNO
)
, #生产退料单 AS (
SELECT t0e.FMOENTRYID,t0e.FMOBILLNO,t0e.FMATERIALID,t0e.FLOT,t0e.FLOT_TEXT
--,-SUM(t0e.FAMOUNT) AS 'FAMOUNT'
--,-SUM(t0e.FQTY) AS 'FQTY'
,-t0e.FAMOUNT AS 'FAMOUNT',-t0e.FQTY AS 'FQTY',-t0e.FPRICE AS 'FPRICE'
,'退料' AS 'FFORMID'
FROM T_PRD_RETURNMTRL t0
INNER JOIN T_PRD_RETURNMTRLENTRY t0e on t0.FID = t0e.FID
WHERE t0.FDOCUMENTSTATUS = 'C'
--GROUP BY t0e.FMOID,t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,t0e.FLOT_TEXT,t0e.FMOBILLNO
)
, #生产补料单 AS (
SELECT t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,SUM(t0e.FAMOUNT) AS 'FAMOUNT','PRD_MO' AS 'FFORMID'
,SUM(t0e_q.FACTUALQTY) AS 'FQTY'
FROM T_PRD_FEEDMTRL t0
INNER JOIN T_PRD_FEEDMTRLDATA t0e on t0.FID = t0e.FID
INNER JOIN T_PRD_FEEDMTRLDATA_Q t0e_q on t0e_q.FENTRYID = t0e.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C'
GROUP BY t0e.FMOID,t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT
)
, #生产退料单 AS (
SELECT t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,SUM(t0e.FAMOUNT) AS 'FAMOUNT','PRD_MO' AS 'FFORMID'
,SUM(t0e.FQTY) AS 'FQTY'
FROM T_PRD_RETURNMTRL t0
INNER JOIN T_PRD_RETURNMTRLENTRY t0e on t0.FID = t0e.FID
WHERE t0.FDOCUMENTSTATUS = 'C'
GROUP BY t0e.FMOID,t0e.FMOENTRYID,t0e.FMATERIALID,t0e.FLOT
)
, #委外补料单 AS (
SELECT t0e.FSUBREQENTRYID AS FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,SUM(t0e.FAMOUNT) AS 'FAMOUNT','SUB_SUBREQORDER' AS 'FFORMID'
,SUM(t0e_q.FACTUALQTY) AS 'FQTY'
FROM T_SUB_FEEDMTRL t0
INNER JOIN T_SUB_FEEDMTRLENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_SUB_FEEDMTRLENTRY_Q t0e_q on t0e_q.FENTRYID = t0e.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C'
GROUP BY t0e.FLOT,t0e.FMATERIALID,t0e.FSUBREQENTRYID
)
, #委外退料单 AS (
SELECT t0e_a.FSUBREQENTRYID AS FMOENTRYID,t0e.FMATERIALID,t0e.FLOT,SUM(t0e.FAMOUNT) AS 'FAMOUNT','SUB_SUBREQORDER' AS 'FFORMID'
,SUM(t0e.FQTY) AS 'FQTY'
FROM T_SUB_RETURNMTRL t0
INNER JOIN T_SUB_RETURNMTRLENTRY t0e on t0.FID = t0e.FID
INNER JOIN T_SUB_RETURNMTRLENTRY_A t0e_a on t0e.FENTRYID = t0e_a.FENTRYID
WHERE t0.FDOCUMENTSTATUS = 'C'
GROUP BY t0e.FLOT,t0e.FMATERIALID,t0e_a.FSUBREQENTRYID
)
, #直接材料 AS (
SELECT * FROM #生产领料单
UNION ALL
SELECT * FROM #生产补料单
UNION ALL
SELECT * FROM #生产退料单
)
, #整合数据 AS (
SELECT * FROM #生产订单
UNION ALL
SELECT *
FROM #整合数据
)
SELECT FAMOUNT,FACTUALQTY,FPRICE
FROM #直接材料 t0
WHERE t0.FMOBILLNO = 'WO2304230023'