245 lines
15 KiB
Transact-SQL
245 lines
15 KiB
Transact-SQL
|
||
declare @FBILLNO NVARCHAR(1000)
|
||
set @FBILLNO = 'WO2402200045,WO2402200046,WO2402200047'
|
||
select fname into #temp2 from dbo.fn_hr_StrSplit(@FBILLNO,',')
|
||
|
||
/*********************************拆分订单更新生产层数start*****************************************/
|
||
--UPDATE B SET FFORECASTGROUP = REPLACE( D.FFORECASTGROUP,H.FBILLNO,L.FBILLNO)
|
||
|
||
--FROM T_PRD_MO A
|
||
--INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID
|
||
--INNER JOIN T_PRD_MOENTRY_Q C ON C.FENTRYID=B.FENTRYID
|
||
--INNER JOIN T_PRD_MOENTRY D ON D.FENTRYID=C.FSRCSPLITENTRYID
|
||
--INNER JOIN T_PRD_MO E ON E.FID=D.FID
|
||
--INNER JOIN T_PRD_MO H ON H.FBILLNO=D.FFORECASTGROUPFRIST --首层
|
||
--INNER JOIN T_PRD_MOENTRY I ON I.FID=H.FID --首层单据体
|
||
--INNER JOIN T_PRD_MOENTRY_Q J ON J.FSRCSPLITENTRYID=I.FENTRYID
|
||
--INNER JOIN T_PRD_MOENTRY K ON K.FENTRYID=J.FENTRYID
|
||
--INNER JOIN T_PRD_MO L ON L.FID=K.FID AND SUBSTRING(L.FBILLNO, CHARINDEX('-',L.FBILLNO)+1,LEN(L.FBILLNO)) = SUBSTRING(A.FBILLNO, CHARINDEX('-',A.FBILLNO)+1,LEN(A.FBILLNO))
|
||
--inner join #temp2 m on m.Fname=a.FBILLNO
|
||
--WHERE 1=1
|
||
--AND B.FFORECASTGROUP = ''
|
||
|
||
UPDATE t0e SET t0e.FFORECASTGROUP = REPLACE( t1e.FFORECASTGROUP,t2.FBILLNO,t3.FBILLNO)
|
||
--SELECT REPLACE( t1e.FFORECASTGROUP,t2.FBILLNO,t3.FBILLNO)
|
||
FROM T_PRD_MO t0
|
||
INNER JOIN T_PRD_MOENTRY t0e on t0.FID = t0e.FID
|
||
INNER JOIN T_PRD_MOENTRY_Q t0e_q on t0e_q.FENTRYID = t0e.FENTRYID
|
||
INNER JOIN T_PRD_MOENTRY t1e on t1e.FENTRYID = t0e_q.FSRCSPLITENTRYID
|
||
INNER JOIN T_PRD_MO t2 on t2.FBILLNO = t1e.FFORECASTGROUPFRIST
|
||
INNER JOIN T_PRD_MOENTRY t2e on t2e.FID = t2.FID
|
||
INNER JOIN T_PRD_MOENTRY_Q t3e_q on t3e_q.FSRCSPLITENTRYID = t2e.FENTRYID
|
||
INNER JOIN T_PRD_MOENTRY t3e on t3e.FENTRYID = t3e_q.FENTRYID
|
||
INNER JOIN T_PRD_MO t3 on t3.FID = t3e.FID AND SUBSTRING(t3.FBILLNO, CHARINDEX('-',t3.FBILLNO)+1,LEN(t3.FBILLNO)) = SUBSTRING(t0.FBILLNO, CHARINDEX('-',t0.FBILLNO)+1,LEN(t0.FBILLNO))
|
||
WHERE 1=1
|
||
AND t0e.FFORECASTGROUP = ''
|
||
/*********************************拆分订单更新生产层数end*****************************************/
|
||
--2024-01-15 阿斌修改 ,使用骏愉存储过程
|
||
exec PROC_SELECT_UPDATE_BOMLEVEL @FBILLNO
|
||
|
||
|
||
--更新生产订单的生产层数(由生产订单生产下游订单生成)
|
||
UPDATE B SET FFORECASTGROUP = ISNULL( cast( e.FBILLNO as nvarchar(100))+'-'+ cast( dbo.GetBomSeq(D.fbomid,b.fmaterialid) as nvarchar(100)) ,'')
|
||
--SELECT
|
||
--F.FNUMBER,
|
||
--a.FBILLNO,
|
||
--B.FENTRYID ,
|
||
--D.fbomid,b.fmaterialid,
|
||
--cast( e.FBILLNO as nvarchar(100))+'-'+ cast( dbo.GetBomSeq(D.fbomid,b.fmaterialid) as nvarchar(100)) as 'Bom项次',
|
||
--CONVERT( nvarchar(1000),'') as '上游单据',a.FBILLNO as '上游生产订单',e.FBILLNO as '源头生产订单'
|
||
FROM T_PRD_MO A
|
||
INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID
|
||
INNER JOIN T_PRD_MOENTRY_LK C ON C .FENTRYID=B.FENTRYID
|
||
INNER JOIN T_PRD_MOENTRY D ON D.FID=C.FSBILLID AND D.FENTRYID=C.FSID
|
||
INNER JOIN T_PRD_MO E ON E.FID=D.FID
|
||
INNER JOIN T_BD_MATERIAL F ON F.FMATERIALID=B.FMATERIALID
|
||
inner join #temp2 g on g.Fname=a.FBILLNO
|
||
WHERE B.FFORECASTGROUP = ''
|
||
--AND A.FBILLNO =@FBILLNO
|
||
|
||
|
||
--2024-01-23 18:14 梁骏愉修改start--
|
||
----更新生产订单(生产订单没有上游单据,为他的单据编号)
|
||
--UPDATE B SET FFORECASTGROUP = A.FBILLNO
|
||
----SELECT *
|
||
--FROM T_PRD_MO A
|
||
--INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID
|
||
--LEFT JOIN T_PRD_MOENTRY_LK D ON D.FENTRYID=B.FENTRYID AND D.FSTABLENAME = 'T_PRD_MOENTRY'
|
||
--inner join #temp2 f on f.Fname=a.FBILLNO
|
||
--WHERE
|
||
--1=1
|
||
--AND D.FSID IS NULL
|
||
--AND B.FFORECASTGROUP = ''
|
||
----AND A.FBILLNO =@FBILLNO
|
||
--2024-01-23 18:14 梁骏愉修改end--
|
||
|
||
--2024-01-23 18:14 梁骏愉添加start--
|
||
UPDATE B SET FFORECASTGROUP = A.FBILLNO
|
||
--SELECT A.FBILLNO
|
||
FROM T_PRD_MO A
|
||
INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID
|
||
INNER JOIN T_PRD_MOENTRY_A t0e_a on B.FENTRYID = t0e_a.FENTRYID
|
||
INNER JOIN #temp2 f on f.Fname=a.FBILLNO
|
||
WHERE
|
||
1=1
|
||
AND B.FFORECASTGROUP = ''
|
||
AND t0e_a.FCREATETYPE != 3
|
||
--AND B.FFORECASTGROUPFRIST != '无顶层'
|
||
AND NOT EXISTS (
|
||
SELECT 1
|
||
FROM T_PRD_MOENTRY_LK t1_lk
|
||
WHERE 1=1
|
||
AND t1_lk.FSTABLENAME = 'T_PRD_MOENTRY'
|
||
AND t1_lk.FENTRYID = B.FENTRYID)
|
||
--2024-01-23 18:14 梁骏愉添加end--
|
||
|
||
|
||
|
||
|
||
--将系统标准的备注字段更新到备注2字段
|
||
update B set FNOTE2=c.FMEMO FROM T_PRD_MO A
|
||
INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID
|
||
INNER JOIN T_PRD_MOENTRY_L C ON C.FENTRYID=B.FENTRYID
|
||
INNER JOIN #temp2 f on f.Fname=a.FBILLNO
|
||
--where FNOTE2 = ''
|
||
--AND A.FBILLNO =@FBILLNO
|
||
|
||
--拆单获取原单备注
|
||
UPDATE B SET FNOTE2 = D.FNOTE2
|
||
FROM T_PRD_MO A
|
||
INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID
|
||
INNER JOIN T_PRD_MOENTRY_Q C ON C.FENTRYID=B.FENTRYID
|
||
INNER JOIN T_PRD_MOENTRY D ON D.FENTRYID=C.FSRCSPLITENTRYID
|
||
inner join #temp2 f on f.Fname=a.FBILLNO
|
||
--where A.FBILLNO = 'WO2301050101'
|
||
where B.FNOTE2= ''
|
||
--AND A.FBILLNO =@FBILLNO
|
||
|
||
|
||
|
||
|
||
--将上游单据的生产订单的备注带到下级生产订单的备注
|
||
--UPDATE D SET D.FNOTE2 = B.FNOTE2
|
||
--SELECT a.FBILLNO,b.FNOTE2,c.FBILLNO ,d.FNOTE2
|
||
UPDATE B SET FNOTE2 = D.FNOTE2
|
||
FROM T_PRD_MO A
|
||
INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID
|
||
INNER JOIN T_PRD_MO C ON C.FBILLNO= B.FFORECASTGROUPFRIST
|
||
INNER JOIN T_PRD_MOENTRY D ON D.FID=C.FID
|
||
inner join #temp2 f on f.Fname=a.FBILLNO
|
||
--where A.FBILLNO = 'WO2301050101'
|
||
where B.FNOTE2= ''
|
||
AND A.FBILLNO <> B.FFORECASTGROUPFRIST
|
||
-- AND A.FBILLNO =@FBILLNO
|
||
|
||
--更新生产用料清单的生产层数
|
||
UPDATE D SET FFORECASTGROUP= c.FFORECASTGROUP
|
||
FROM T_PRD_PPBOM A
|
||
INNER JOIN T_PRD_PPBOMENTRY D ON A.FID=D.FID
|
||
INNER JOIN T_PRD_MO B ON B.FBILLNO=A.FMOBillNO
|
||
INNER JOIN T_PRD_MOENTRY C ON C.FID=B.FID
|
||
inner join #temp2 f on f.Fname=a.FMOBILLNO
|
||
where d.FFORECASTGROUP = ''
|
||
--AND A.FMOBILLNO =@FBILLNO
|
||
|
||
|
||
|
||
UPDATE A SET FINVSTOCKQTY=B.FBASEQTY
|
||
FROM T_PRD_MOENTRY A
|
||
INNER JOIN
|
||
(
|
||
SELECT B.FMATERIALID,SUM(FBASEQTY) AS 'FBASEQTY' FROM T_STK_INVENTORY A
|
||
INNER JOIN T_BD_MATERIAL B ON A.FMATERIALID=B.FMASTERID
|
||
WHERE A.FISEFFECTIVED=1
|
||
GROUP BY B.FMATERIALID
|
||
) B ON A.FMATERIALID=B.FMATERIALID
|
||
inner join t_prd_mo c on c.fid=a.fid
|
||
inner join #temp2 f on f.Fname=c.FBILLNO WHERE FINVSTOCKQTY = 0
|
||
|
||
--AND c.FBILLNO =@FBILLNO
|
||
|
||
|
||
|
||
--UPDATE a SET a.FBILLNO = ISNULL( cast( e.FBILLNO as nvarchar(100))+'-'+ cast( dbo.GetBomSeq(D.fbomid,b.fmaterialid) as nvarchar(100)) ,'')
|
||
----SELECT
|
||
----F.FNUMBER,
|
||
----a.FBILLNO,
|
||
----B.FENTRYID ,
|
||
----D.fbomid,b.fmaterialid,
|
||
----cast( e.FBILLNO as nvarchar(100))+'-'+ cast( dbo.GetBomSeq(D.fbomid,b.fmaterialid) as nvarchar(100)) as 'Bom项次',
|
||
----CONVERT( nvarchar(1000),'') as '上游单据',a.FBILLNO as '上游生产订单',e.FBILLNO as '源头生产订单'
|
||
--FROM T_PRD_MO A
|
||
--INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID
|
||
--INNER JOIN T_PRD_MOENTRY_LK C ON C .FENTRYID=B.FENTRYID
|
||
--INNER JOIN T_PRD_MOENTRY D ON D.FID=C.FSBILLID AND D.FENTRYID=C.FSID
|
||
--INNER JOIN T_PRD_MO E ON E.FID=D.FID
|
||
--INNER JOIN T_BD_MATERIAL F ON F.FMATERIALID=B.FMATERIALID
|
||
--WHERE B.FFORECASTGROUP = ''
|
||
|
||
|
||
--更新生产订单的首层订单号
|
||
|
||
|
||
update a set FFORECASTGROUPFRIST =
|
||
CASE WHEN CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0) = 0 THEN FFORECASTGROUP
|
||
|
||
WHEN CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0) > 0 AND B.FSRCSPLITENTRYID=0 THEN SUBSTRING(FFORECASTGROUP,0,dbo.[func_find](FFORECASTGROUP,'-',1))
|
||
WHEN CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0) > 0 AND B.FSRCSPLITENTRYID>0 AND SUBSTRING(FFORECASTGROUP,0,dbo.[func_find](FFORECASTGROUP,'-',2)) IS NULL THEN FFORECASTGROUP
|
||
ELSE SUBSTRING(FFORECASTGROUP,0,dbo.[func_find](FFORECASTGROUP,'-',2)) END
|
||
|
||
FROM T_PRD_MOENTRY A
|
||
INNER JOIN T_PRD_MOENTRY_Q B ON A.FENTRYID=B.FENTRYID
|
||
inner join T_PRD_MO c on c.fid =a.fid
|
||
inner join #temp2 f on f.Fname=c.FBILLNO
|
||
WHERE
|
||
1=1
|
||
AND FFORECASTGROUPFRIST= ''
|
||
--AND c.FBILLNO =@FBILLNO
|
||
|
||
|
||
--更新生产用料清单的首层订单号
|
||
update T_PRD_PPBOMENTRY set FFORECASTGROUPFRIST =
|
||
CASE
|
||
WHEN CHARINDEX( '-',REPLACE( A.FFORECASTGROUP,'_','-') ,0) = 0
|
||
THEN A.FFORECASTGROUP
|
||
ELSE SUBSTRING(A.FFORECASTGROUP,0, CHARINDEX( '-',REPLACE( A.FFORECASTGROUP,'_','-') ,0))
|
||
END
|
||
FROM T_PRD_PPBOMENTRY a
|
||
inner join T_PRD_PPBOM b on a.fid=b.fid
|
||
inner join #temp2 f on f.Fname=b.FMOBILLNO
|
||
WHERE FFORECASTGROUPFRIST= ''
|
||
--and b.FMOBILLNO = @FBILLNO
|
||
|
||
|
||
--生产订单的客户带到下级生产订单的客户(生成下级子工单)
|
||
UPDATE E SET E.F_PKGR_CUSTOMER= A.F_PKGR_CUSTOMER
|
||
--SELECT *
|
||
--D.FNOTE2,
|
||
--B.FNOTE2,*
|
||
FROM T_PRD_MO A
|
||
INNER JOIN T_PRD_MOENTRY B ON A.FID=B.FID
|
||
INNER JOIN T_PRD_MOENTRY_LK C ON C.FSID=B.FENTRYID AND C.FSBILLID=B.FID
|
||
INNER JOIN T_PRD_MOENTRY D ON D.FENTRYID=C.FENTRYID
|
||
INNER JOIN T_PRD_MO E ON E.FID=D.FID
|
||
inner join #temp2 f on f.Fname=a.FBILLNO
|
||
--where A.FBILLNO = 'TO2305300002'
|
||
AND ISNULL(E.F_PKGR_CUSTOMER,0)= 0
|
||
and E.F_PKGR_CUSTOMER<>A.F_PKGR_CUSTOMER
|
||
|
||
|
||
|
||
--更新生产用料清单的单位用量
|
||
--SELECT FNUMERATOR,FDENOMINATOR,
|
||
--ROUND(FNUMERATOR/FDENOMINATOR,3), F_PKGR_CONSUMPTION,
|
||
--*
|
||
update T_PRD_PPBOMENTRY set FBomStdQty = ROUND(FNUMERATOR/FDENOMINATOR,3)
|
||
|
||
FROM T_PRD_PPBOMENTRY a
|
||
inner join T_PRD_PPBOM b on a.fid=b.fid
|
||
inner join #temp2 c on c.Fname=b.FMOBILLNO
|
||
|
||
WHERE FBomStdQty = 0
|
||
--and b.FMOBILLNO = @FBILLNO
|
||
|
||
|
||
drop table #temp2 |