152 lines
5.0 KiB
Transact-SQL
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'
|