CREATE PROCEDURE P_UpdateSubFORECAST @billnoStr varchar(8000) AS BEGIN EXEC PROC_SELECT_UPDATE_BOMLEVEL2 @billnoStr --更新委外订单委外层数 ,源单类型为委外订单 UPDATE t0e SET FFORECASTGROUP = ISNULL( cast( t1.FBILLNO as nvarchar(100))+'-'+ cast(dbo.GetBomSeq(t1e.fbomid,t0e.fmaterialid) as nvarchar(100)) ,'') --SELECT t2.FNUMBER -- ,t0.FBILLNO -- ,t0e.FENTRYID -- ,t1e.FBOMID,t0e.FMATERIALID -- ,CAST( t1.FBILLNO AS NVARCHAR(100)) + '-'+ cast(dbo.GetBomSeq(t1e.fbomid,t0e.fmaterialid) as nvarchar(100)) as 'Bom项次', --CONVERT( nvarchar(1000),'') as '上游单据',t0.FBILLNO as '上游生产订单',t1.FBILLNO as '源头生产订单' FROM T_SUB_REQORDER t0 INNER JOIN T_SUB_REQORDERENTRY t0e on t0.FID = t0e.FID INNER JOIN T_SUB_REQORDERENTRY_LK t0e_lk on t0e_lk.FENTRYID = t0e.FENTRYID INNER JOIN T_SUB_REQORDERENTRY t1e on t1e.FID = t0e_lk.FSBILLID AND t1e.FENTRYID = t0e_lk.FSID INNER JOIN T_SUB_REQORDER t1 on t1.FID = t1e.FID INNER JOIN T_BD_MATERIAL t2 on t2.FMATERIALID = t0e.FMATERIALID WHERE t0e.FFORECASTGROUP = '' --已检查 --更新委外订单委外层数 ,源单类型为空,证明委外订单为源头 UPDATE B SET FFORECASTGROUP = A.FBILLNO --SELECT D.FSTABLENAME,* FROM T_SUB_REQORDER A INNER JOIN T_SUB_REQORDERENTRY B ON A.FID=B.FID LEFT JOIN T_SUB_REQORDERENTRY_LK D ON D.FENTRYID=B.FENTRYID --AND D.FSTABLENAME = 'T_SUB_REQORDER' WHERE 1 = 1 AND D.FSID IS NULL AND B.FFORECASTGROUP = '' --已检查 --更新委外订单委外层数 ,源单类型不为委外订单,层数为源单单号 UPDATE B SET FFORECASTGROUP = C.FSRCBILLNO --SELECT D.FSTABLENAME,* FROM T_SUB_REQORDER A INNER JOIN T_SUB_REQORDERENTRY B ON A.FID=B.FID LEFT JOIN T_SUB_REQORDERENTRY_A C ON C.FENTRYID=B.FENTRYID LEFT JOIN T_SUB_REQORDERENTRY_LK D ON D.FENTRYID=B.FENTRYID --AND D.FSTABLENAME = 'T_SUB_REQORDER' WHERE 1=1 AND D.FSID IS NOT NULL AND B.FFORECASTGROUP = '' --已检查 --更新委外订单的首层订单号 UPDATE T_SUB_REQORDERENTRY set FFORECASTGROUPFRIST = CASE WHEN CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0) = 0 THEN FFORECASTGROUP ELSE SUBSTRING(FFORECASTGROUP,0, CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0)) end FROM T_SUB_REQORDERENTRY WHERE FFORECASTGROUPFRIST= '' --更新委外用料清单的首层订单号 UPDATE T_SUB_PPBOMENTRY set FFORECASTGROUPFRIST = CASE WHEN CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0) = 0 THEN FFORECASTGROUP ELSE SUBSTRING(FFORECASTGROUP,0, CHARINDEX( '-',REPLACE( FFORECASTGROUP,'_','-') ,0)) end FROM T_SUB_PPBOMENTRY WHERE FFORECASTGROUPFRIST= '' END