2560 lines
45 KiB
Transact-SQL
2560 lines
45 KiB
Transact-SQL
USE [AIS20180209140748]
|
||
GO
|
||
/****** Object: StoredProcedure [dbo].[SeorderBomExpAND] Script Date: 2024/1/24 15:09:53 ******/
|
||
SET ANSI_NULLS ON
|
||
GO
|
||
SET QUOTED_IDENTIFIER ON
|
||
GO
|
||
|
||
--SELECT * FROM seorder WHERE FBillNo='test201706201'
|
||
|
||
--SELECT * FROM SEOrderEntry WHERE FInterID=19907
|
||
|
||
--UPDATE SEOrder SET FHeadSelfS0153='N' WHERE FInterID=19422
|
||
|
||
--[SeorderBomExpAND] 'KLSO-20/0032/1-D7','mornINgstar',0,16393
|
||
|
||
--USE AIS20180209140748
|
||
|
||
-- =============================================
|
||
|
||
-- Author: 汤道勇
|
||
|
||
-- Create date: 2019-10-18
|
||
|
||
-- Description: 订单需求计算
|
||
|
||
-- =============================================
|
||
|
||
ALTER PROCEDURE [dbo].[SeorderBomExpAND]
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
(
|
||
|
||
|
||
|
||
@BillNo as varchar(100),--销售订单编号
|
||
|
||
|
||
|
||
@UseName as varchar(50),--评审用户名称
|
||
|
||
|
||
|
||
@FInterID INT=0, --销售订单内码
|
||
|
||
|
||
|
||
@UserID INT=16393--评审用户ID
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
AS
|
||
|
||
|
||
|
||
BEGIN
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
SET NOCOUNT ON
|
||
|
||
|
||
|
||
SET ANSI_WARNINGS OFF
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
DECLARE @FID INT
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
--declare @BillNo as varchar(100)
|
||
|
||
|
||
|
||
--declare @FInterID INT=0
|
||
|
||
|
||
|
||
--set @BillNo='LSO-0782/18/2-D9-1'
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
IF @FInterID=0
|
||
|
||
|
||
|
||
SELECT TOP 1 @FID=FInterID FROM SEOrder WHERE fbillno =@BillNo AND FCancellatiON=0
|
||
|
||
|
||
|
||
ELSE
|
||
|
||
|
||
|
||
SET @FID=@FInterID
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
--DECLARE @FID INT
|
||
|
||
|
||
|
||
--SET @FID=19917
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
DELETE FROM Mrp WHERE FID =@FID
|
||
|
||
|
||
|
||
DELETE FROM MrpEntry WHERE FID =@FID
|
||
|
||
|
||
|
||
DELETE FROM MrpEntry1 WHERE FID =@FID
|
||
|
||
|
||
|
||
DELETE FROM MrpEntry2 WHERE FID =@FID
|
||
|
||
|
||
|
||
DELETE FROM MrpEntry3 WHERE FID =@FID
|
||
|
||
|
||
|
||
DELETE FROM MrpEntry4 WHERE FID =@FID
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Create Table #Mutidata(
|
||
|
||
|
||
|
||
FIndex INT IDENTITY(1,1)
|
||
|
||
|
||
|
||
,FBomInterid INT DEFAULT(0) --BOM内码
|
||
|
||
|
||
|
||
,FItemID INT null --物料内码
|
||
|
||
|
||
|
||
,FNeedQty DECIMAL(28,14) DEFAULT(0) NULL
|
||
|
||
|
||
|
||
,FBomLevel INT null --BOM层级 0为成品 ,1为成品下一层,依次类推)
|
||
|
||
|
||
|
||
,FParentID INT DEFAULT(0)null
|
||
|
||
|
||
|
||
,FRate DECIMAL(28,14) DEFAULT(0) NULL
|
||
|
||
|
||
|
||
,FLevelStrIng varchar(200) null
|
||
|
||
|
||
|
||
,FBom INT
|
||
|
||
|
||
|
||
,FRootBOMID INT DEFAULT(0)
|
||
|
||
|
||
|
||
,FOrderInterID INT --订单内码
|
||
|
||
|
||
|
||
,FOrderEntryID INT --订单行号
|
||
|
||
|
||
|
||
,F1 DECIMAL(28,14) DEFAULT(0) NULL -- --直接上级对当前物料的用量
|
||
|
||
|
||
|
||
,F2 DECIMAL(28,14) DEFAULT(0) NULL --直接上级物料的需求量
|
||
|
||
|
||
|
||
,F3 NVARCHAR(255) --物料长代码
|
||
|
||
|
||
|
||
,FNumber NVARCHAR(255) --物料长代码前3位
|
||
|
||
|
||
|
||
,FEntrySelfZ0142 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0142 变动损耗%(一万以下)
|
||
|
||
|
||
|
||
,FEntrySelfZ0143 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0143 变动损耗%(一至五万)
|
||
|
||
|
||
|
||
,FEntrySelfZ0144 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0144 变动损耗%(五万以上)
|
||
|
||
|
||
|
||
,FEntrySelfZ0145 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0145 粘锅料或5K以下固定值
|
||
|
||
|
||
|
||
,FEntrySelfZ0151 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0151 其他固定值损耗
|
||
|
||
|
||
|
||
,FEntrySelfZ0152 DECIMAL(28,14) DEFAULT(0)--FEntrySelfZ0152 5000以下订单
|
||
|
||
|
||
|
||
,FEntrySelfZ0153 DECIMAL(28,14) DEFAULT(0)--FEntrySelfZ0153 变动损耗%(10万以上)
|
||
|
||
|
||
|
||
,FOrderDate DATETIME --销售订单日期
|
||
|
||
|
||
|
||
,FUnitID INT --BOM中用到的计量单位内码
|
||
|
||
|
||
|
||
,FErpClsID INT DEFAULT(0) --物料属性
|
||
|
||
|
||
|
||
,即时库存 DECIMAL(28,14) DEFAULT(0)--即时库存
|
||
|
||
|
||
|
||
,[在制量(未入库)] DECIMAL(28,14) DEFAULT(0)
|
||
|
||
|
||
|
||
,已评审未出货的销售订单 DECIMAL(28,14) DEFAULT(0)
|
||
|
||
|
||
|
||
,投料单需求量 DECIMAL(28,14) DEFAULT(0)
|
||
|
||
|
||
|
||
,可用量 DECIMAL(28,14) DEFAULT(0)
|
||
|
||
|
||
|
||
,需生产数量 DECIMAL(28,14) DEFAULT(0)
|
||
|
||
|
||
|
||
,齐料日期 DATETIME
|
||
|
||
|
||
|
||
,开工日期 DATETIME
|
||
|
||
|
||
|
||
,完工日期 DATETIME
|
||
|
||
|
||
|
||
,要求到货日期 DATETIME
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Create Table #Mutidata2(
|
||
|
||
|
||
|
||
FIndex INT IDENTITY(1,1)
|
||
|
||
|
||
|
||
,FItemID INT null --物料内码
|
||
|
||
|
||
|
||
,FNeedQty DECIMAL(28,14) DEFAULT(0) NULL
|
||
|
||
|
||
|
||
,FRate DECIMAL(28,14) DEFAULT(0) NULL
|
||
|
||
|
||
|
||
,FBom INT
|
||
|
||
|
||
|
||
,FRootBOMID INT DEFAULT(0)
|
||
|
||
|
||
|
||
,FOrderInterID INT --订单内码
|
||
|
||
|
||
|
||
,FOrderEntryID INT --订单行号
|
||
|
||
|
||
|
||
,F1 DECIMAL(28,14) DEFAULT(0) NULL -- --直接上级对当前物料的用量
|
||
|
||
|
||
|
||
,F2 DECIMAL(28,14) DEFAULT(0) NULL --直接上级物料的需求量
|
||
|
||
|
||
|
||
,F3 NVARCHAR(255) --物料长代码
|
||
|
||
|
||
|
||
,FNumber NVARCHAR(255) --物料长代码前3位
|
||
|
||
|
||
|
||
,FEntrySelfZ0142 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0142 变动损耗%(一万以下)
|
||
|
||
|
||
|
||
,FEntrySelfZ0143 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0143 变动损耗%(一至五万)
|
||
|
||
|
||
|
||
,FEntrySelfZ0144 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0144 变动损耗%(五万以上)
|
||
|
||
|
||
|
||
,FEntrySelfZ0145 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0145 粘锅料或5K以下固定值
|
||
|
||
|
||
|
||
,FEntrySelfZ0151 DECIMAL(28,14) DEFAULT(0) --FEntrySelfZ0151 其他固定值损耗
|
||
|
||
|
||
|
||
,FEntrySelfZ0152 DECIMAL(28,14) DEFAULT(0)--FEntrySelfZ0152 5000以下订单
|
||
|
||
|
||
|
||
,FEntrySelfZ0153 DECIMAL(28,14) DEFAULT(0)--FEntrySelfZ0153 变动损耗%(10万以上)
|
||
|
||
|
||
|
||
,FOrderDate DATETIME --销售订单日期
|
||
|
||
|
||
|
||
,FUnitID INT --BOM中用到的计量单位内码
|
||
|
||
|
||
|
||
,FErpClsID INT DEFAULT(0) --物料属性
|
||
|
||
|
||
|
||
,齐料日期 DATETIME
|
||
|
||
|
||
|
||
,开工日期 DATETIME
|
||
|
||
|
||
|
||
,完工日期 DATETIME
|
||
|
||
|
||
|
||
,要求到货日期 DATETIME
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
CREATE UNIQUE CLUSTERED INDEX idx_FIndex ON #Mutidata(FIndex)
|
||
|
||
|
||
|
||
CREATE NONCLUSTERED INDEX idx_FItemID ON #Mutidata(FItemID)
|
||
|
||
|
||
|
||
CREATE NONCLUSTERED INDEX idx_FLevelStrIng ON #Mutidata(FBomLevel)
|
||
|
||
|
||
|
||
CREATE NONCLUSTERED INDEX idx_F3 ON #Mutidata(F3)
|
||
|
||
|
||
|
||
CREATE NONCLUSTERED INDEX idx_FNumber ON #Mutidata(FNumber)
|
||
|
||
|
||
|
||
CREATE UNIQUE CLUSTERED INDEX idx_FIndex ON #Mutidata2(FIndex)
|
||
|
||
|
||
|
||
CREATE NONCLUSTERED INDEX idx_FItemID ON #Mutidata2(FItemID)
|
||
|
||
|
||
|
||
CREATE NONCLUSTERED INDEX idx_FNumber ON #Mutidata2(FNumber)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*更新半成品的即时库存数量*/
|
||
|
||
|
||
|
||
SELECT a.FItemID ,SUM(FQty)FQty
|
||
|
||
|
||
|
||
Into #ICINventory
|
||
|
||
|
||
|
||
FROM ICINventory a WITH(NOLOCK)
|
||
|
||
|
||
|
||
LEFT JOIN t_Stock b WITH(NOLOCK) ON a.FStockID=b.FItemID
|
||
|
||
|
||
|
||
LEFT JOIN t_icitem c WITH(NOLOCK) ON a.FItemID=c.FItemID
|
||
|
||
|
||
|
||
WHERE b.FProperty=10
|
||
|
||
|
||
|
||
AND C.FNumber NOT LIKE '05.%'
|
||
|
||
|
||
|
||
GROUP BY a.FItemID HAVING SUM(FQty)<>0
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*更新半成品预计入库数量,只考虑已审核的产品入库单*/
|
||
|
||
|
||
|
||
SELECT v1.FItemID ,SUM(v1.Fauxqty-v1.FAuxStockQty) as FQty --计划生产数量-入库数量
|
||
|
||
|
||
|
||
Into #YJRK
|
||
|
||
|
||
|
||
FROM ICMO v1 WITH(NOLOCK) INNER JOIN t_icitem t9 WITH(NOLOCK) ON v1.FItemID = t9.FItemID
|
||
|
||
|
||
|
||
WHERE 1=1 AND t9.FItemID<>0
|
||
|
||
|
||
|
||
AND v1.Fauxqty-v1.FAuxStockQty>0
|
||
|
||
|
||
|
||
AND (v1.FTranType = 85 AND v1.FType <> 11060 AND (v1.FStatus IN (1,2,5) --确认,下达状态的任务单
|
||
|
||
|
||
|
||
AND t9.FErpClsID IN (2,3) AND v1.FCancellatiON = 0))
|
||
|
||
|
||
|
||
AND (t9.FNumber like '03.%' or t9.FNumber like '04.%')
|
||
|
||
|
||
|
||
GROUP BY v1.FItemID
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*投料单已投未领数量,05.开头的物料不需要考虑库存信息*/
|
||
|
||
|
||
|
||
SELECT c.FItemID,SUM(ISNULL(c.FAuxQtyMust*m.FCoefficient,0)+ISNULL(c.FAuxQtySupply*m.FCoefficient,0)-ISNULL(c.FAuxStockQty*m.FCoefficient,0)) as 'FQty'
|
||
|
||
|
||
|
||
Into #YJCK--应发数量-已领数量
|
||
|
||
|
||
|
||
FROM ICMO a WITH(NOLOCK)
|
||
|
||
|
||
|
||
INNER JOIN PPBOM b WITH(NOLOCK) ON a.FInterID=b.FICMOINterID
|
||
|
||
|
||
|
||
INNER JOIN PPBOMEntry c WITH(NOLOCK) ON b.FInterID=c.FInterID
|
||
|
||
|
||
|
||
INNER JOIN t_MeasureUnit m WITH(NOLOCK) ON c.FUnitID=m.FMeasureUnitID
|
||
|
||
|
||
|
||
INNER JOIN t_ICItem n WITH(NOLOCK) ON n.FItemID=c.FItemID
|
||
|
||
|
||
|
||
WHERE 1=1 AND a.FStatus IN(1,2,5) AND (ISNULL(c.FAuxQtyMust,0)+ISNULL(c.FAuxQtySupply,0)-ISNULL(c.FAuxStockQty,0))>0
|
||
|
||
|
||
|
||
AND n.FNumber NOT LIKE '05.%'
|
||
|
||
|
||
|
||
GROUP BY c.FItemID
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*已审核未关闭的销售订单已评审未转任务单的成品和半成品*/
|
||
|
||
|
||
|
||
select FBase FItemID,SUM(CONVERT(FLoat,FText9)) FQty
|
||
|
||
|
||
|
||
Into #Seorder
|
||
|
||
|
||
|
||
from MrpEntry2 t1 WITH(NOLOCK)
|
||
|
||
|
||
|
||
INNER JOIN SEOrder v1 WITH(NOLOCK) ON t1.FInteger2=v1.FInterID
|
||
|
||
|
||
|
||
where 1=1 AND (v1.FChangeMark=0 AND (Isnull(v1.FClassTypeID,0)<>1007100) AND (v1.FCancellatiON = 0 AND v1.FStatus > 2))
|
||
|
||
|
||
|
||
AND CONVERT(FLoat,FText9)>0
|
||
|
||
|
||
|
||
AND t1.FCheckBox3=0 AND FBASE>0 GROUP BY FBase
|
||
|
||
/**************************************************************1级 START ***************************************************************/
|
||
|
||
INSERT Into #Mutidata
|
||
|
||
|
||
|
||
(
|
||
|
||
|
||
|
||
FBomInterid,FItemID,FNeedQty,FBomLevel,FParentID
|
||
|
||
|
||
|
||
,FRate,FLevelStrIng,FBom,FRootBOMID,FOrderInterID
|
||
|
||
|
||
|
||
,FOrderEntryID,FOrderDate,FUnitID,齐料日期,开工日期,完工日期
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
SELECT a.FInterID 'FBomInterid',se.FItemID 'FItemID',se.FQty*(m.FCoefficient/n.FCoefficient) 'FNeedQty',0 'FBomLevel', 0 'FParentID',0 'FRate'
|
||
|
||
|
||
|
||
,0 'FLevelStrIng',a.FItemID 'FBom',a.FInterID 'FRootBOMID',se.FInterID 'FOrderInterID',se.FEntryID 'FOrderEntryID',
|
||
|
||
|
||
|
||
se.FDate '交货日期',a.FUnitID 'FUnitID',se.FEntrySelfS0177 '齐料日期',DATEADD(DAY,2,se.FEntrySelfS0177) '开工日期',DATEADD(DAY,-7,se.FDate) '完工日期'
|
||
|
||
|
||
|
||
FROM SEOrder s WITH(NOLOCK)
|
||
|
||
|
||
|
||
INNER JOIN SEOrderEntry se WITH(NOLOCK) ON s.FInterID=se.FInterID
|
||
|
||
|
||
|
||
LEFT JOIN ICBOM a WITH(NOLOCK) ON a.FItemID=se.FItemID
|
||
|
||
|
||
|
||
INNER JOIN t_MeasureUnit m WITH(NOLOCK) ON se.FUnitID=m.FMeasureUnitID
|
||
|
||
|
||
|
||
INNER JOIN t_MeasureUnit n WITH(NOLOCK) ON a.FUnitID=n.FMeasureUnitID
|
||
|
||
|
||
|
||
WHERE s.FCancellatiON=0 AND ISNULL(s.FCheckerID,0)>0
|
||
|
||
|
||
|
||
AND s.FBillNo='' --'20180418test'--
|
||
|
||
|
||
|
||
AND a.FUseStatus=1072 --使用状态的BOM
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*截取成品物料代码前4位编码,更新物料的属性字段*/
|
||
|
||
|
||
|
||
UPDATE a SET FNumber=CASE WHEN b.FNumber LIKE '04.%' THEN SUBSTRING (b.FNumber,1,4) ELSE SUBSTRING (b.FNumber,1,3) END,
|
||
|
||
|
||
|
||
F3=b.FNumber,a.FErpClsID=b.FErpClsID FROM #Mutidata a WITH(NOLOCK) INNER JOIN t_icitem b WITH(NOLOCK) ON a.FItemID=b.FItemID
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/**************************************************************1级 END***************************************************************/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/**************************************************************2级 START ***************************************************************/
|
||
|
||
|
||
|
||
INSERT Into #Mutidata2
|
||
|
||
|
||
|
||
(
|
||
|
||
|
||
|
||
FItemID,FNeedQty,FRate,FBom,FRootBOMID,FOrderInterID,FOrderEntryID,F1,F2
|
||
|
||
|
||
|
||
,b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153
|
||
|
||
|
||
|
||
,FOrderDate,FUnitID,齐料日期--,开工日期,完工日期,要求到货日期
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
SELECT b.FItemID 'FItemID',0 'FNeedQty'
|
||
|
||
|
||
|
||
,0 'FRate',a.FBom 'FBom',FRootBOMID 'FRootBOMID',FOrderInterID 'FOrderInterID'
|
||
|
||
|
||
|
||
,FOrderEntryID 'FOrderEntryID',b.FAuxQty 'F1',a.FNeedQty 'F2',b.FEntrySelfZ0142,b.FEntrySelfZ0143
|
||
|
||
|
||
|
||
,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153,a.FOrderDate 'FOrderDate',b.FUnitID 'FUnitID',a.齐料日期 '齐料日期'
|
||
|
||
|
||
|
||
FROM #Mutidata a
|
||
|
||
|
||
|
||
INNER JOIN ICBOMChild b WITH(NOLOCK) ON a.FBomInterid=b.FInterID
|
||
|
||
|
||
|
||
WHERE A.FBomLevel=0 ORDER BY b.FItemID,FOrderEntryID
|
||
|
||
|
||
|
||
|
||
|
||
|
||
--新增订单里的产品属性为外购不加控制
|
||
--**************************2020-08-04 add wfm**********************************************--
|
||
|
||
INSERT Into #Mutidata2
|
||
|
||
(
|
||
FItemID,FNeedQty,FRate,FBom,FRootBOMID,FOrderInterID,FOrderEntryID,F1,F2,
|
||
b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153,
|
||
FOrderDate,FUnitID,齐料日期--,开工日期,完工日期,要求到货日期
|
||
)
|
||
SELECT a.FItemID 'FItemID',se.FQty 'FNeedQty'
|
||
,0 'FRate',0 'FBom',0 'FRootBOMID',se.FInterID 'FOrderInterID'
|
||
,se.FEntryID 'FOrderEntryID',1 'F1',se.FQty 'F2',0 FEntrySelfZ0142,0 FEntrySelfZ0143
|
||
,0 FEntrySelfZ0144, 0 FEntrySelfZ0145,0 FEntrySelfZ0151, 0 FEntrySelfZ0152,0 FEntrySelfZ0153,s.FDate 'FOrderDate',n.FMeasureUnitID 'FUnitID',se.FEntrySelfS0177 '齐料日期'
|
||
|
||
FROM SEOrder s WITH(NOLOCK)
|
||
INNER JOIN SEOrderEntry se WITH(NOLOCK) ON s.FInterID=se.FInterID
|
||
INNER JOIN t_ICItem a WITH(NOLOCK) ON a.FItemID=se.FItemID
|
||
INNER JOIN t_MeasureUnit m WITH(NOLOCK) ON se.FUnitID=m.FMeasureUnitID
|
||
INNER JOIN t_MeasureUnit n WITH(NOLOCK) ON a.FUnitID=n.FMeasureUnitID
|
||
WHERE s.FCancellatiON=0 AND ISNULL(s.FCheckerID,0)>0
|
||
AND s.FBillNo=@BillNo --''KLSO-20/0032/1-D7''--
|
||
AND a.FErpClsID =1 --外购属性
|
||
|
||
--******************************end******************************************--
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*截取物料代码前3位(04.开头就截取4位)编码,更新物料的属性字段*/
|
||
|
||
|
||
|
||
UPDATE a SET FNumber=CASE WHEN b.FNumber LIKE '04.%' THEN SUBSTRING (b.FNumber,1,4) ELSE SUBSTRING (b.FNumber,1,3) END ,
|
||
|
||
|
||
|
||
F3=b.FNumber,a.FErpClsID=b.FErpClsID FROM #Mutidata2 a
|
||
|
||
|
||
|
||
INNER JOIN t_icitem b WITH(NOLOCK) ON a.FItemID=b.FItemID
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
--用于成品的材料要求到货日期=成品的齐料日期-3
|
||
|
||
|
||
|
||
UPDATE #Mutidata2 SET 要求到货日期=DATEADD(DAY,-3,齐料日期) WHERE FErpClsID=1
|
||
|
||
|
||
|
||
--樽盖(03.、04.R)半成品开工日期=齐料日期-5,完工日期=齐料日期-2
|
||
|
||
|
||
|
||
--UPDATE #Mutidata2 SET 开工日期=DATEADD(DAY,-5,齐料日期),完工日期=DATEADD(DAY,-2,齐料日期) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R')
|
||
|
||
--2019-10-15 汤工,之前设定的樽盖半成品现在帮忙改成开工日期=齐料日期-7;完工日期=齐料日期-3;其他的暂不需要变更
|
||
|
||
UPDATE #Mutidata2 SET 开工日期=DATEADD(DAY,-7,齐料日期),完工日期=DATEADD(DAY,-3,齐料日期) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R')
|
||
|
||
|
||
|
||
--水剂(05.)半成品开工日期=齐料日期-7,完工日期=齐料日期-4
|
||
|
||
|
||
|
||
UPDATE #Mutidata2 SET 开工日期=DATEADD(DAY,-7,齐料日期),完工日期=DATEADD(DAY,-4,齐料日期) WHERE FErpClsID<>1 AND FNumber ='05.'
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*第二层的损耗数根据第一层的成品数来判断*/
|
||
|
||
|
||
|
||
UPDATE a SET FRate=
|
||
|
||
|
||
|
||
(CASE
|
||
|
||
|
||
|
||
WHEN F2 <=10000 AND F2>5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0)
|
||
|
||
|
||
|
||
WHEN F2<=5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0)+ISNULL(a.FEntrySelfZ0152,0)
|
||
|
||
|
||
|
||
WHEN F2>=100000 THEN F2*F1*ISNULL(a.FEntrySelfZ0153,0)/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END)
|
||
|
||
|
||
|
||
WHEN F2>10000 AND F2<=50000 THEN ISNULL(a.FEntrySelfZ0143,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN A.FNumber = '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END)
|
||
|
||
|
||
|
||
WHEN F2 >50000 and F2<100000 THEN ISNULL(a.FEntrySelfZ0144,0)*F2*F1/100.00 +ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN A.FNumber ='05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) ELSE 0 END )
|
||
|
||
|
||
|
||
FROM #Mutidata2 a WHERE 1=1
|
||
|
||
|
||
|
||
/*第二层的需求量=第一层的数量*第二层的用量+第一层数量对应的损耗*/
|
||
|
||
--******2020-08-04 ADD FBom<>0***********************
|
||
|
||
UPDATE #Mutidata2 SET FNeedQty=F2*F1+FRate WHERE 1=1 and FBom<>0
|
||
|
||
|
||
/*相同成品、原材料进行汇总*/
|
||
|
||
|
||
|
||
INSERT Into #Mutidata
|
||
|
||
|
||
(
|
||
|
||
FItemID,FNeedQty,FBomLevel
|
||
,FRate,FLevelStrIng,FBom,FRootBOMID,FOrderInterID
|
||
,FOrderEntryID,F1,F2,b.FEntrySelfZ0142,b.FEntrySelfZ0143
|
||
,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153,FOrderDate
|
||
,FUnitID,FErpClsID,FNumber,F3,齐料日期,开工日期,完工日期,要求到货日期
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
SELECT FItemID,SUM(FNeedQty) 'FNeedQty',1 'FBomLevel'
|
||
|
||
|
||
|
||
,SUM(FRate) 'FRate','.1' 'FLevelStrIng',MAX(FBom) 'FBom',MAX(FRootBOMID) 'FRootBOMID',MAX(FOrderInterID) 'FOrderInterID'
|
||
|
||
|
||
|
||
,MIN(FOrderEntryID) 'FOrderEntryID',MAX(F1) 'F1',MAX(F2) 'F2',MAX(FEntrySelfZ0142) 'FEntrySelfZ0142',MAX(FEntrySelfZ0143) 'FEntrySelfZ0143'
|
||
|
||
|
||
|
||
,MAX(FEntrySelfZ0144) 'FEntrySelfZ0144',MAX(FEntrySelfZ0145) 'FEntrySelfZ0145',MAX(FEntrySelfZ0151) 'FEntrySelfZ0151',MAX(FEntrySelfZ0152) 'FEntrySelfZ0152',MAX(FEntrySelfZ0153) 'FEntrySelfZ0153',
|
||
|
||
|
||
|
||
MIN(FOrderDate) 'FOrderDate'
|
||
|
||
|
||
|
||
,FUnitID 'FUnitID',FErpClsID 'FErpClsID',MAX(FNumber) 'FNumber',MAX(F3) 'F3',MIN(齐料日期) '齐料日期'
|
||
|
||
|
||
|
||
,MIN(开工日期) '开工日期',MIN(完工日期) '完工日期',MIN(要求到货日期) '要求到货日期'
|
||
|
||
|
||
|
||
FROM #Mutidata2 WHERE (F3 NOT LIKE '02.86%' AND F3 NOT LIKE '02.87%' AND F3 NOT LIKE '05.%') GROUP BY FItemID,FUnitID,FErpClsID,FNumber
|
||
|
||
|
||
|
||
UNION ALL
|
||
|
||
|
||
|
||
SELECT FItemID,SUM(FNeedQty)'FNeedQty',1 'FBomLevel'
|
||
|
||
|
||
|
||
,SUM(FRate) 'FRate','.1' 'FLevelStrIng',MAX(FBom) 'FBom',MAX(FRootBOMID) 'FRootBOMID',MAX(FOrderInterID) 'FOrderInterID'
|
||
|
||
|
||
|
||
,MIN(FOrderEntryID)'FOrderEntryID',MAX(F1) 'F1',MAX(F2) 'F2',MAX(FEntrySelfZ0142),MAX(FEntrySelfZ0143)
|
||
|
||
|
||
|
||
,MAX(FEntrySelfZ0144),MAX(FEntrySelfZ0145),MAX(FEntrySelfZ0151),MAX(FEntrySelfZ0152),MAX(FEntrySelfZ0153) 'FEntrySelfZ0153',MIN(FOrderDate)'FOrderDate'
|
||
|
||
|
||
|
||
,FUnitID 'FUnitID',FErpClsID 'FErpClsID',MAX(FNumber) 'FNumber',MAX(F3) 'F3',MIN(齐料日期) '齐料日期'
|
||
|
||
|
||
|
||
,MIN(开工日期) '开工日期',MIN(完工日期) '完工日期',MIN(要求到货日期) '要求到货日期'
|
||
|
||
|
||
|
||
FROM #Mutidata2 WHERE F3 LIKE '02.86%' OR F3 LIKE '02.87%' OR F3 LIKE '05.%' GROUP BY FItemID,FUnitID,FErpClsID,FNumber,FOrderInterID,FOrderEntryID
|
||
|
||
|
||
|
||
/*更新半成品的即时库存数量*/
|
||
|
||
|
||
|
||
UPDATE a SET A.即时库存=b.FQty
|
||
|
||
|
||
|
||
FROM #Mutidata a INNER JOIN #ICINventory b ON a.FItemID=b.FItemID WHERE a.FBomLevel=1 --AND FErpClsID=2
|
||
|
||
|
||
|
||
/*更新半成品预计入库数量*/
|
||
|
||
|
||
|
||
UPDATE a SET A.[在制量(未入库)]=b.FQty FROM #Mutidata a INNER JOIN #YJRK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=1 --AND FErpClsID=2
|
||
|
||
|
||
|
||
/*投料单已投未领数量*/
|
||
|
||
|
||
|
||
UPDATE a SET A.投料单需求量=b.FQty FROM #Mutidata a INNER JOIN #YJCK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=1 --AND FErpClsID=2
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/**************************************************************2级 END***************************************************************/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/**************************************************************3级 START ***************************************************************/
|
||
|
||
|
||
|
||
DELETE FROM #Mutidata2
|
||
|
||
|
||
|
||
INSERT Into #Mutidata2
|
||
|
||
|
||
|
||
(
|
||
|
||
|
||
|
||
FItemID,FNeedQty,FRate,FBom,FRootBOMID,FOrderInterID ,FOrderEntryID,F1,F2
|
||
|
||
|
||
|
||
,b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153
|
||
|
||
|
||
|
||
,FOrderDate,FUnitID,齐料日期,开工日期,完工日期,要求到货日期
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
SELECT b.FItemID,0 'FNeedQty',0 'FRate',a.FBom 'FBom', FRootBOMID,FOrderInterID,FOrderEntryID,b.FAuxQty 'F1'
|
||
|
||
|
||
|
||
,CASE WHEN ISNULL(a.FNeedQty,0)+ISNULL(a.投料单需求量,0)-ISNULL(a.即时库存,0)-ISNULL(a.[在制量(未入库)],0)>0 THEN
|
||
|
||
|
||
|
||
ISNULL(a.FNeedQty,0)+ISNULL(a.投料单需求量,0)-ISNULL(a.即时库存,0)-ISNULL(a.[在制量(未入库)],0) ELSE 0 END 'F2'
|
||
|
||
|
||
|
||
,b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153
|
||
|
||
|
||
|
||
,A.FOrderDate,b.FUnitID,齐料日期 '齐料日期',开工日期,完工日期,要求到货日期
|
||
|
||
|
||
|
||
FROM #Mutidata a
|
||
|
||
|
||
|
||
INNER JOIN ICBOM t WITH(NOLOCK) ON a.FItemID=t.FItemID
|
||
|
||
|
||
|
||
INNER JOIN ICBOMChild b WITH(NOLOCK) ON t.FInterID=b.FInterID
|
||
|
||
|
||
|
||
WHERE t.FUseStatus=1072 AND A.FBomLevel=1
|
||
|
||
|
||
|
||
--SELECT * FROM #Mutidata2 where FErpClsID<>1
|
||
|
||
|
||
|
||
/*截取物料代码前3位(04.开头就截取4位)编码,更新物料的属性字段*/
|
||
|
||
|
||
|
||
UPDATE a SET FNumber=CASE WHEN b.FNumber LIKE '04.%' THEN SUBSTRING (b.FNumber,1,4) ELSE SUBSTRING (b.FNumber,1,3) END,
|
||
|
||
|
||
|
||
F3=b.FNumber,a.FErpClsID=b.FErpClsID FROM #Mutidata2 a INNER JOIN t_icitem b WITH(NOLOCK) ON a.FItemID=b.FItemID WHERE 1=1
|
||
|
||
|
||
|
||
--用于半成品的材料要求到货日期=半成品的开工日期-3
|
||
|
||
|
||
|
||
UPDATE #Mutidata2 SET 要求到货日期=DATEADD(DAY,-3,开工日期) WHERE FErpClsID=1
|
||
|
||
|
||
|
||
UPDATE #Mutidata2 SET 开工日期=NULL , 完工日期=NULL WHERE FErpClsID=1
|
||
|
||
|
||
|
||
--樽盖(03.、04.R)半成品开工日期=齐料日期-5,完工日期=齐料日期-2
|
||
|
||
|
||
|
||
--UPDATE #Mutidata2 SET 开工日期=DATEADD(DAY,-5,齐料日期),完工日期=DATEADD(DAY,-2,齐料日期) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R')
|
||
|
||
--2019-10-15 汤工,之前设定的樽盖半成品现在帮忙改成开工日期=齐料日期-7;完工日期=齐料日期-3;其他的暂不需要变更
|
||
|
||
UPDATE #Mutidata2 SET 开工日期=DATEADD(DAY,-7,齐料日期),完工日期=DATEADD(DAY,-3,齐料日期) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R')
|
||
|
||
|
||
|
||
|
||
|
||
--水剂(05.)半成品开工日期=齐料日期-7,完工日期=齐料日期-4
|
||
|
||
|
||
|
||
UPDATE #Mutidata2 SET 开工日期=DATEADD(DAY,-7,齐料日期),完工日期=DATEADD(DAY,-4,齐料日期) WHERE FErpClsID<>1 AND FNumber ='05.'
|
||
|
||
|
||
|
||
UPDATE #Mutidata2 SET 要求到货日期=NULL WHERE FErpClsID<>1
|
||
|
||
|
||
|
||
--SELECT * FROM #Mutidata2
|
||
|
||
|
||
|
||
/*第三层的损耗数根据第二层的成品数来判断*/
|
||
|
||
|
||
|
||
UPDATE a SET FRate=
|
||
|
||
|
||
|
||
(CASE
|
||
|
||
|
||
|
||
WHEN F2 <=10000 AND F2>5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0)
|
||
|
||
|
||
|
||
WHEN F2<=5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0)+ISNULL(a.FEntrySelfZ0152,0)
|
||
|
||
|
||
|
||
WHEN F2>=100000 THEN F2*F1*ISNULL(a.FEntrySelfZ0153,0)/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END)
|
||
|
||
|
||
|
||
WHEN F2>10000 AND F2<=50000 THEN ISNULL(a.FEntrySelfZ0143,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END)
|
||
|
||
|
||
|
||
WHEN F2>50000 and F2<100000 THEN ISNULL(a.FEntrySelfZ0144,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0) +(CASE WHEN a.FNumber = '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) ELSE 0 END)
|
||
|
||
|
||
|
||
FROM #Mutidata2 a WHERE 1=1
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*第三层的需求量=第二层的数量*第三层的用量+第二层数量对应的损耗*/
|
||
|
||
|
||
|
||
UPDATE a SET FNeedQty=F2*F1+FRate FROM #Mutidata2 a WHERE 1=1
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*相同成品、原材料进行汇总*/
|
||
|
||
|
||
|
||
INSERT Into #Mutidata
|
||
|
||
|
||
|
||
(
|
||
|
||
|
||
|
||
FItemID,FNeedQty,FBomLevel
|
||
|
||
|
||
|
||
,FRate,FLevelStrIng,FBom,FRootBOMID,FOrderInterID
|
||
|
||
|
||
|
||
,FOrderEntryID,F1,F2,b.FEntrySelfZ0142,b.FEntrySelfZ0143
|
||
|
||
|
||
|
||
,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153,FOrderDate
|
||
|
||
|
||
|
||
,FUnitID,FErpClsID,FNumber,F3,齐料日期,开工日期,完工日期,要求到货日期
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
SELECT FItemID 'FItemID',SUM(FNeedQty) 'FNeedQty',2 'FBomLevel'
|
||
|
||
|
||
|
||
,SUM(FRate) 'FRate','.2' 'FLevelStrIng',MAX(FBom) 'FBom',MAX(FRootBOMID) 'FRootBOMID',MAX(FOrderInterID) 'FOrderInterID'
|
||
|
||
|
||
|
||
,MIN(FOrderEntryID) 'FOrderEntryID',MAX(F1) 'F1',MAX(F2) 'F2',MAX(FEntrySelfZ0142),MAX(FEntrySelfZ0143)
|
||
|
||
|
||
|
||
,MAX(FEntrySelfZ0144),MAX(FEntrySelfZ0145),MAX(FEntrySelfZ0151),MAX(FEntrySelfZ0152),MAX(FEntrySelfZ0153) 'FEntrySelfZ0153',MIN(FOrderDate)
|
||
|
||
|
||
|
||
,FUnitID 'FUnitID',FErpClsID 'FErpClsID',FNumber 'FNumber',MAX(F3) 'F3',MIN(齐料日期),MIN(开工日期) 开工日期,MIN(完工日期) 完工日期,MIN(要求到货日期) 要求到货日期
|
||
|
||
|
||
|
||
FROM #Mutidata2 WHERE F3 NOT LIKE '02.86%' AND F3 NOT LIKE '02.87%' AND F3 NOT LIKE '05.%' GROUP BY FItemID,FUnitID,FErpClsID,FNumber
|
||
|
||
|
||
|
||
UNION ALL
|
||
|
||
|
||
|
||
SELECT FItemID,SUM(FNeedQty)FNeedQty,2 'FBomLevel'
|
||
|
||
|
||
|
||
,SUM(FRate)FRate,'.2' FLevelStrIng,MAX(FBom)FBom,MAX(FRootBOMID)FRootBOMID,MAX(FOrderInterID) FOrderInterID
|
||
|
||
|
||
|
||
,MIN(FOrderEntryID)FOrderEntryID,MAX(F1)F1,MAX(F2)F2,MAX(FEntrySelfZ0142),MAX(FEntrySelfZ0143)
|
||
|
||
|
||
|
||
,MAX(FEntrySelfZ0144),MAX(FEntrySelfZ0145),MAX(FEntrySelfZ0151),MAX(FEntrySelfZ0152),MAX(FEntrySelfZ0153) 'FEntrySelfZ0153',MIN(FOrderDate)
|
||
|
||
|
||
|
||
,MAX(FUnitID),MAX(FErpClsID),MAX(FNumber),MAX(F3),MIN(齐料日期),MIN(开工日期) 开工日期,MIN(完工日期) 完工日期,MIN(要求到货日期) 要求到货日期
|
||
|
||
|
||
|
||
FROM #Mutidata2 WHERE F3 LIKE '02.86%' OR F3 LIKE '02.87%' OR F3 LIKE '05.%' GROUP BY FItemID,FErpClsID,FOrderInterID,FOrderEntryID
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*更新半成品的即时库存数量*/
|
||
|
||
|
||
|
||
UPDATE a SET A.即时库存=b.FQty FROM #Mutidata a INNER JOIN #ICINventory b ON a.FItemID=b.FItemID WHERE a.FBomLevel=2 --AND FErpClsID=2
|
||
|
||
|
||
|
||
/*更新半成品预计入库数量*/
|
||
|
||
|
||
|
||
UPDATE a SET A.[在制量(未入库)]=b.FQty FROM #Mutidata a INNER JOIN #YJRK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=2 --AND FErpClsID=2
|
||
|
||
|
||
|
||
/*投料单已投未领数量*/
|
||
|
||
|
||
|
||
UPDATE a SET A.投料单需求量=b.FQty FROM #Mutidata a INNER JOIN #YJCK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=2 --AND FErpClsID=2
|
||
|
||
|
||
|
||
/**************************************************************3级 END***************************************************************/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/**************************************************************4级 START ***************************************************************/
|
||
|
||
|
||
|
||
DELETE FROM #Mutidata2
|
||
|
||
|
||
|
||
INSERT Into #Mutidata2
|
||
|
||
|
||
|
||
(
|
||
|
||
|
||
|
||
FItemID,FNeedQty,FRate,FBom,FRootBOMID,FOrderInterID ,FOrderEntryID,F1,F2
|
||
|
||
|
||
|
||
,b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,FEntrySelfZ0153
|
||
|
||
|
||
|
||
,FOrderDate,FUnitID,齐料日期,开工日期,完工日期,要求到货日期
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
SELECT b.FItemID,0 FNeedQty
|
||
|
||
|
||
|
||
,0 FRate
|
||
|
||
|
||
|
||
,a.FBom FBom, FRootBOMID,FOrderInterID,FOrderEntryID,b.FAuxQty F1
|
||
|
||
|
||
|
||
,CASE WHEN ISNULL(a.FNeedQty,0)+ISNULL(a.投料单需求量,0)-ISNULL(a.即时库存,0)-ISNULL(a.[在制量(未入库)],0)>0 THEN ISNULL(a.FNeedQty,0)+ISNULL(a.投料单需求量,0)-ISNULL(a.即时库存,0)-ISNULL(a.[在制量(未入库)],0) ELSE 0 END F2
|
||
|
||
|
||
|
||
,b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153
|
||
|
||
|
||
|
||
,A.FOrderDate,b.FUnitID,齐料日期 '齐料日期',开工日期,完工日期,要求到货日期
|
||
|
||
|
||
|
||
FROM #Mutidata a
|
||
|
||
|
||
|
||
INNER JOIN ICBOM t WITH(NOLOCK) ON a.FItemID=t.FItemID
|
||
|
||
|
||
|
||
INNER JOIN ICBOMChild b WITH(NOLOCK) ON t.FInterID=b.FInterID
|
||
|
||
|
||
|
||
WHERE t.FUseStatus=1072 AND A.FBomLevel=2
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*截取物料代码前3位(04.开头就截取4位)编码,更新物料的属性字段*/
|
||
|
||
|
||
|
||
UPDATE a SET FNumber=CASE WHEN b.FNumber LIKE '04.%' THEN SUBSTRING(b.FNumber,1,4) ELSE SUBSTRING(b.FNumber,1,3) END,
|
||
|
||
|
||
|
||
F3=b.FNumber,a.FErpClsID=b.FErpClsID FROM #Mutidata2 a INNER JOIN t_icitem b WITH(NOLOCK) ON a.FItemID=b.FItemID
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
--用于半成品的材料要求到货日期=半成品的开工日期-3
|
||
|
||
|
||
|
||
UPDATE #Mutidata2 SET 要求到货日期=DATEADD(DAY,-3,开工日期) WHERE FErpClsID=1
|
||
|
||
|
||
|
||
UPDATE #Mutidata2 SET 开工日期=NULL , 完工日期=NULL WHERE FErpClsID=1
|
||
|
||
|
||
|
||
--樽盖(03.、04.R)半成品开工日期=齐料日期-5,完工日期=齐料日期-2
|
||
|
||
|
||
|
||
--UPDATE #Mutidata2 SET 开工日期=DATEADD(DAY,-5,齐料日期),完工日期=DATEADD(DAY,-2,齐料日期) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R')
|
||
|
||
--2019-10-15 汤工,之前设定的樽盖半成品现在帮忙改成开工日期=齐料日期-7;完工日期=齐料日期-3;其他的暂不需要变更
|
||
|
||
UPDATE #Mutidata2 SET 开工日期=DATEADD(DAY,-7,齐料日期),完工日期=DATEADD(DAY,-3,齐料日期) WHERE FErpClsID<>1 AND FNumber IN ('03.','04.R')
|
||
|
||
|
||
|
||
|
||
|
||
--水剂(05.)半成品开工日期=齐料日期-7,完工日期=齐料日期-4
|
||
|
||
|
||
|
||
UPDATE #Mutidata2 SET 开工日期=DATEADD(DAY,-7,齐料日期),完工日期=DATEADD(DAY,-4,齐料日期) WHERE FErpClsID<>1 AND FNumber ='05.'
|
||
|
||
|
||
|
||
UPDATE #Mutidata2 SET 要求到货日期=NULL WHERE FErpClsID<>1
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*第四层的损耗数根据第三层的成品数来判断*/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
UPDATE a SET FRate=
|
||
|
||
|
||
|
||
(CASE WHEN F2 <=10000 AND F2>5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0)
|
||
|
||
|
||
|
||
WHEN F2<=5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0)+ISNULL(a.FEntrySelfZ0152,0)
|
||
|
||
|
||
|
||
WHEN F2>=100000 THEN F2*F1*ISNULL(a.FEntrySelfZ0153,0)/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END)
|
||
|
||
|
||
|
||
WHEN F2>10000 AND F2<=50000 THEN ISNULL(a.FEntrySelfZ0143,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END)
|
||
|
||
|
||
|
||
WHEN F2 >50000 and F2<100000 THEN ISNULL(a.FEntrySelfZ0144,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0) +(CASE WHEN a.FNumber = '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) ELSE 0 END)
|
||
|
||
|
||
|
||
FROM #Mutidata2 a --WHERE a.FBomLevel=3
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*相同成品、原材料进行汇总*/
|
||
|
||
|
||
|
||
INSERT Into #Mutidata
|
||
|
||
|
||
|
||
(
|
||
|
||
|
||
|
||
FItemID,FNeedQty,FBomLevel
|
||
|
||
|
||
|
||
,FRate,FLevelStrIng,FBom,FRootBOMID,FOrderInterID
|
||
|
||
|
||
|
||
,FOrderEntryID,F1,F2,b.FEntrySelfZ0142,b.FEntrySelfZ0143
|
||
|
||
|
||
|
||
,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153,FOrderDate
|
||
|
||
|
||
|
||
,FUnitID,FErpClsID,FNumber,F3,齐料日期,开工日期,完工日期,要求到货日期
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
SELECT FItemID,SUM(FNeedQty)FNeedQty,3 'FBomLevel'
|
||
|
||
|
||
|
||
,SUM(FRate)FRate,'.3' FLevelStrIng,MAX(FBom)FBom,MAX(FRootBOMID)FRootBOMID,MAX(FOrderInterID) FOrderInterID
|
||
|
||
|
||
|
||
,MIN(FOrderEntryID)FOrderEntryID,MAX(F1)F1,MAX(F2)F2,MAX(FEntrySelfZ0142),MAX(FEntrySelfZ0143)
|
||
|
||
|
||
|
||
,MAX(FEntrySelfZ0144),MAX(FEntrySelfZ0145),MAX(FEntrySelfZ0151),MAX(FEntrySelfZ0152),MAX(FEntrySelfZ0153),MIN(FOrderDate)
|
||
|
||
|
||
|
||
,MAX(FUnitID),MAX(FErpClsID),MAX(FNumber),MAX(F3),MIN(齐料日期),MIN(开工日期) 开工日期,MIN(完工日期) 完工日期,MIN(要求到货日期) 要求到货日期
|
||
|
||
|
||
|
||
FROM #Mutidata2 WHERE F3 NOT LIKE '02.86%' AND F3 NOT LIKE '02.87%' AND F3 NOT LIKE '05.%' GROUP BY FItemID,FErpClsID
|
||
|
||
|
||
|
||
UNION ALL
|
||
|
||
|
||
|
||
SELECT FItemID,SUM(FNeedQty)FNeedQty,3 'FBomLevel'
|
||
|
||
|
||
|
||
,SUM(FRate)FRate,'.3' FLevelStrIng,MAX(FBom)FBom,MAX(FRootBOMID)FRootBOMID,MAX(FOrderInterID) FOrderInterID
|
||
|
||
|
||
|
||
,MIN(FOrderEntryID)FOrderEntryID,MAX(F1)F1,MAX(F2)F2,MAX(FEntrySelfZ0142),MAX(FEntrySelfZ0143)
|
||
|
||
|
||
|
||
,MAX(FEntrySelfZ0144),MAX(FEntrySelfZ0145),MAX(FEntrySelfZ0151),MAX(FEntrySelfZ0152), MAX(FEntrySelfZ0153),MIN(FOrderDate)
|
||
|
||
|
||
|
||
,MAX(FUnitID),MAX(FErpClsID),MAX(FNumber),MAX(F3),MIN(齐料日期),MIN(开工日期) 开工日期,MIN(完工日期) 完工日期,MIN(要求到货日期) 要求到货日期
|
||
|
||
|
||
|
||
FROM #Mutidata2 WHERE F3 LIKE '02.86%' OR F3 LIKE '02.87%' OR F3 LIKE '05.%' GROUP BY FItemID,FErpClsID,FOrderInterID,FOrderEntryID
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*第四层的需求量=第三层的数量*第四层的用量+第三层数量对应的损耗*/
|
||
|
||
|
||
|
||
UPDATE a SET FNeedQty=F2*F1+FRate FROM #Mutidata a WHERE FBomLevel=3
|
||
|
||
|
||
|
||
/*更新半成品的即时库存数量*/
|
||
|
||
|
||
|
||
UPDATE a SET A.即时库存=b.FQty FROM #Mutidata a INNER JOIN #ICINventory b ON a.FItemID=b.FItemID WHERE a.FBomLevel=3 --AND FErpClsID=2
|
||
|
||
|
||
|
||
/*更新半成品预计入库数量*/
|
||
|
||
|
||
|
||
UPDATE a SET A.[在制量(未入库)]=b.FQty FROM #Mutidata a INNER JOIN #YJRK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=3 --AND FErpClsID=2
|
||
|
||
|
||
|
||
/*投料单已投未领数量*/
|
||
|
||
|
||
|
||
UPDATE a SET A.投料单需求量=b.FQty FROM #Mutidata a INNER JOIN #YJCK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=3 --AND FErpClsID=2
|
||
|
||
|
||
|
||
/**************************************************************4级 END***************************************************************/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/**************************************************************5级 START ***************************************************************/
|
||
|
||
|
||
|
||
INSERT Into #Mutidata
|
||
|
||
|
||
|
||
(
|
||
|
||
|
||
|
||
FItemID,FNeedQty,FBomLevel
|
||
|
||
|
||
|
||
,FRate,FLevelStrIng,FBom,FRootBOMID,FOrderInterID
|
||
|
||
|
||
|
||
,FOrderEntryID,F1,F2,b.FEntrySelfZ0142,b.FEntrySelfZ0143
|
||
|
||
|
||
|
||
,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153,FOrderDate
|
||
|
||
|
||
|
||
,FUnitID ,齐料日期,开工日期,完工日期,要求到货日期
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
SELECT b.FItemID,0 FNeedQty,4 'FBomLevel',0 FRate
|
||
|
||
|
||
|
||
,'..4' FLevelStrIng,a.FBom FBom, FRootBOMID,FOrderInterID,FOrderEntryID,b.FAuxQty F1
|
||
|
||
|
||
|
||
,CASE WHEN ISNULL(a.FNeedQty,0)+ISNULL(a.投料单需求量,0)-ISNULL(a.即时库存,0)-ISNULL(a.[在制量(未入库)],0)>0 THEN ISNULL(a.FNeedQty,0)+ISNULL(a.投料单需求量,0)-ISNULL(a.即时库存,0)-ISNULL(a.[在制量(未入库)],0) ELSE 0 END F2
|
||
|
||
|
||
|
||
,b.FEntrySelfZ0142,b.FEntrySelfZ0143,b.FEntrySelfZ0144,b.FEntrySelfZ0145,b.FEntrySelfZ0151,b.FEntrySelfZ0152,b.FEntrySelfZ0153
|
||
|
||
|
||
|
||
,A.FOrderDate,b.FUnitID ,齐料日期,开工日期,完工日期,要求到货日期
|
||
|
||
|
||
|
||
FROM #Mutidata a
|
||
|
||
|
||
|
||
INNER JOIN ICBOM t WITH(NOLOCK) ON a.FItemID=t.FItemID
|
||
|
||
|
||
|
||
INNER JOIN ICBOMChild b WITH(NOLOCK) ON t.FInterID=b.FInterID
|
||
|
||
|
||
|
||
WHERE t.FUseStatus=1072 AND A.FBomLevel=3
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*截取物料代码前3位编码,更新物料的属性字段*/
|
||
|
||
|
||
|
||
UPDATE a SET FNumber=CASE WHEN b.FNumber LIKE '04.%' THEN SUBSTRING(b.FNumber,1,4) ELSE SUBSTRING(b.FNumber,1,3) END,
|
||
|
||
|
||
|
||
F3=b.FNumber,a.FErpClsID=b.FErpClsID FROM #Mutidata a INNER JOIN t_icitem b WITH(NOLOCK) ON a.FItemID=b.FItemID WHERE a.FBomLevel=4
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*第四层的损耗数根据第三层的成品数来判断*/
|
||
|
||
|
||
|
||
UPDATE a SET FRate=
|
||
|
||
|
||
|
||
(CASE WHEN F2 <=10000 AND F2>5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0)
|
||
|
||
|
||
|
||
WHEN F2<=5000 THEN F2*F1*ISNULL(a.FEntrySelfZ0142,0)/100.00+ISNULL(a.FEntrySelfZ0145,0)+ISNULL(a.FEntrySelfZ0151,0)+ISNULL(a.FEntrySelfZ0152,0)
|
||
|
||
|
||
|
||
WHEN F2>=100000 THEN F2*F1*ISNULL(a.FEntrySelfZ0153,0)/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END)
|
||
|
||
|
||
|
||
WHEN F2>10000 AND F2<=50000 THEN ISNULL(a.FEntrySelfZ0143,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0)+(CASE WHEN a.FNumber= '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END)
|
||
|
||
|
||
|
||
WHEN F2 >50000 and F2<100000 THEN ISNULL(a.FEntrySelfZ0144,0)*F2*F1/100.00+ISNULL(a.FEntrySelfZ0151,0) +(CASE WHEN a.FNumber = '05.' THEN ISNULL(a.FEntrySelfZ0145,0) ELSE 0 END) ELSE 0 END)
|
||
|
||
|
||
|
||
FROM #Mutidata a WHERE a.FBomLevel=4
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*第四层的需求量=第三层的数量*第四层的用量+第三层数量对应的损耗*/
|
||
|
||
|
||
|
||
UPDATE a SET FNeedQty=F2*F1+FRate FROM #Mutidata a WHERE FBomLevel=4
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*更新半成品的即时库存数量*/
|
||
|
||
|
||
|
||
UPDATE a SET A.即时库存=b.FQty FROM #Mutidata a INNER JOIN #ICINventory b ON a.FItemID=b.FItemID WHERE a.FBomLevel=4 --AND FErpClsID=2
|
||
|
||
|
||
|
||
/*更新半成品预计入库数量*/
|
||
|
||
|
||
|
||
UPDATE a SET A.[在制量(未入库)]=b.FQty FROM #Mutidata a INNER JOIN #YJRK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=4 --AND FErpClsID=2
|
||
|
||
|
||
|
||
/*投料单已投未领数量*/
|
||
|
||
|
||
|
||
UPDATE a SET A.投料单需求量=b.FQty FROM #Mutidata a INNER JOIN #YJCK b ON a.FItemID=b.FItemID WHERE a.FBomLevel=3--AND FErpClsID=2
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/**************************************************************5级 END***************************************************************/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
UPDATE a SET A.已评审未出货的销售订单=b.FQty FROM #Mutidata a INNER JOIN #Seorder b ON a.FItemID=b.FItemID WHERE 1=1
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
CREATE TABLE [dbo].[#MrpEntry1](
|
||
|
||
|
||
|
||
[FIndex] [INT] identity(1,1),
|
||
|
||
|
||
|
||
[FID] [INT] NOT NULL,
|
||
|
||
|
||
|
||
[FQty11] [DECIMAL](23, 10) DEFAULT (0),--订单数量
|
||
|
||
|
||
|
||
[FDate2] [DATETIME] NULL,
|
||
|
||
|
||
|
||
[FDate3] [DATETIME] NULL,
|
||
|
||
|
||
|
||
[FitemID1] [INT] , --成品ID
|
||
|
||
|
||
|
||
[FitemID2] [INT] , --材料长代码
|
||
|
||
|
||
|
||
[FNumber3] nvarchar(50),
|
||
|
||
|
||
|
||
[FItemID3] [INT], --材料短代码
|
||
|
||
|
||
|
||
[FUnitID] [INT] ,
|
||
|
||
|
||
|
||
[FQty1] [DECIMAL](23, 10) DEFAULT (0),--毛需求
|
||
|
||
|
||
|
||
[FQty2] [DECIMAL](23, 10) DEFAULT (0),--即时库存
|
||
|
||
|
||
|
||
[FQty3] [DECIMAL](23, 10) DEFAULT (0),--采购申请单数量
|
||
|
||
|
||
|
||
[FQty4] [DECIMAL](23, 10) DEFAULT (0),--采购订单数量
|
||
|
||
|
||
|
||
[FQty5] [DECIMAL](23, 10) DEFAULT (0),--请检单数量
|
||
|
||
|
||
|
||
[FQty6] [DECIMAL](23, 10) DEFAULT (0),--在途数量
|
||
|
||
|
||
|
||
[FQty7] [DECIMAL](23, 10) DEFAULT (0),--可用数量
|
||
|
||
|
||
|
||
[FQty8] [DECIMAL](23, 10) DEFAULT (0),--欠料数量
|
||
|
||
|
||
|
||
[FQty9] [DECIMAL](23, 10) DEFAULT (0),--已评审未转单数量
|
||
|
||
|
||
|
||
[FQty10] [DECIMAL](23, 10) DEFAULT (0),--需申购数量
|
||
|
||
|
||
|
||
[FQty12] [DECIMAL](23, 10) DEFAULT (0),--已分配量
|
||
|
||
|
||
|
||
[FOrderInterID] INT ,
|
||
|
||
|
||
|
||
[FOrderEntryID] INT,
|
||
|
||
|
||
|
||
[FNumber2] nvarchar(50),
|
||
|
||
|
||
|
||
[FOrderDate] DATETIME
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
CREATE TABLE [dbo].[#MrpEntry2](
|
||
|
||
|
||
|
||
[FID] [INT] NOT NULL,
|
||
|
||
|
||
|
||
[FIndex] [INT] identity(1,1),
|
||
|
||
|
||
|
||
[FItemID] [INT] ,
|
||
|
||
|
||
|
||
[FUnitID] [INT] ,
|
||
|
||
|
||
|
||
[FQty] [DECIMAL](23, 10) DEFAULT (0),--需求数量
|
||
|
||
|
||
|
||
[FDate] DATETIME, --生产开工日期
|
||
|
||
|
||
|
||
[FDate1] DATETIME, --生产完工日期
|
||
|
||
|
||
|
||
[FCustOrderNo] varchar(20), --客户订单号
|
||
|
||
|
||
|
||
[FOrderInterID] INT ,
|
||
|
||
|
||
|
||
[FOrderEntryID] INT
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*新增表头内容*/
|
||
|
||
|
||
|
||
INSERT Into [dbo].[Mrp]([FID],[FClassTypeID],[FBillNo],[FText4],FUser,FTime2) SELECT @FID,200000002,@BillNo,@BillNo,@UserID,GETDATE()
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*****************START 自制属性物料*************************/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
INSERT Into [dbo].[MrpEntry2]
|
||
|
||
|
||
|
||
( [FID]
|
||
|
||
|
||
|
||
,[FIndex]
|
||
|
||
|
||
|
||
,[FBase]
|
||
|
||
|
||
|
||
,[FBase1]
|
||
|
||
|
||
|
||
,FInteger2
|
||
|
||
|
||
|
||
,FINteger3
|
||
|
||
|
||
|
||
,FDate4
|
||
|
||
|
||
|
||
,FDate5
|
||
|
||
|
||
|
||
,ftext8
|
||
|
||
|
||
|
||
,ftext9
|
||
|
||
|
||
|
||
,FDecimal --即时库存
|
||
|
||
|
||
|
||
,FDecimal1--在制量(未入库)
|
||
|
||
|
||
|
||
,FDecimal2--已评审未出货的销售订单
|
||
|
||
|
||
|
||
,FDecimal3--投料单需求量
|
||
|
||
|
||
|
||
)
|
||
|
||
|
||
|
||
SELECT
|
||
|
||
|
||
|
||
a.FOrderInterID
|
||
|
||
|
||
|
||
,ROW_NUMBER() OVER(ORDER BY FOrderInterID,FOrderEntryID,FBomLevel ) as FIndex
|
||
|
||
|
||
|
||
,a.FItemID
|
||
|
||
|
||
|
||
,A.FUnitID
|
||
|
||
|
||
|
||
,FOrderInterID
|
||
|
||
|
||
|
||
,FOrderEntryID
|
||
|
||
|
||
|
||
,a.开工日期
|
||
|
||
|
||
|
||
,a.完工日期
|
||
|
||
|
||
|
||
,a.FNeedQty
|
||
|
||
|
||
|
||
,CONVERT(DECIMAL(18,4),(CASE WHEN ISNULL(a.FNeedQty,0)+ISNULL(a.投料单需求量,0)-ISNULL(a.即时库存,0)-ISNULL(a.[在制量(未入库)],0)<0 THEN 0
|
||
|
||
|
||
|
||
ELSE ISNULL(a.FNeedQty,0)+ISNULL(a.投料单需求量,0)-ISNULL(a.即时库存,0)-ISNULL(a.[在制量(未入库)],0) END))
|
||
|
||
|
||
|
||
,a.即时库存 --即时库存数量
|
||
|
||
|
||
|
||
,a.[在制量(未入库)]
|
||
|
||
|
||
|
||
,a.已评审未出货的销售订单
|
||
|
||
|
||
|
||
,a.投料单需求量
|
||
|
||
|
||
|
||
FROM #Mutidata a WHERE a.FErpClsID IN(2,3) ORDER BY a.FOrderInterID, FOrderEntryID,FBomLevel
|
||
|
||
|
||
|
||
/**************************************************END 自制属性物料**************************************************/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/**************************************************START 外购属性物料,不包含纸箱和化工原料**************************************************/
|
||
|
||
|
||
|
||
INSERT Into #MrpEntry1(FID,FitemID1,FQty11,FitemID2,FitemID3,FNumber3,FUnitID,FQty1,FDate2,FDate3,FOrderInterID,FOrderEntryID,[FNumber2],FQty2)
|
||
|
||
SELECT a.FOrderInterID FID,(case when A.FBom<>0 then a.FBom else a.FItemID end) FitemID1,a.FNeedQty,a.FItemID FitemID2,a.FItemID FitemID3,b.FNumber,b.FUnitID,a.FNeedQty*e.FCoefficient FQty1,
|
||
|
||
|
||
a.要求到货日期,
|
||
--dateadd(day,-3,C.FOrderDate),--(CASE WHEN b.fnumber like '02.86.%' THEN dateadd(day,-20,C.FOrderDate) WHEN b.fnumber like '02.87.%' THEN dateadd(day,-20,C.FOrderDate) WHEN b.fnumber like '02.71.%' THEN dateadd(day,-25,C.FOrderDate) ELSE C.FOrderDate END) FDate2,--物料需求日期=确认发货日期-15
|
||
|
||
|
||
a.要求到货日期,--dateadd(day,-3,C.FOrderDate),--(CASE WHEN b.fnumber like '02.86.%' THEN dateadd(day,-20,C.FOrderDate) WHEN b.fnumber like '02.87.%' THEN dateadd(day,-20,C.FOrderDate) WHEN b.fnumber like '02.71.%' THEN dateadd(day,-25,C.FOrderDate) ELSE C.FOrderDate END) FDate3,--材料到货日期
|
||
|
||
a.FOrderInterID,a.FOrderEntryID,SUBSTRING(b.FNumber,1,5) FNumber2,A.即时库存
|
||
|
||
|
||
FROM
|
||
|
||
(SELECT t.FOrderInterID,t.FItemID,SUM(t.FNeedQty)FNeedQty,MIN(t.FOrderEntryID) FOrderEntryID ,FUnitID,
|
||
|
||
AVG(t.即时库存)即时库存,FErpClsID ,MIN(要求到货日期) '要求到货日期',MAX(FBom) 'FBom'
|
||
|
||
|
||
|
||
FROM #Mutidata t
|
||
|
||
WHERE 1=1 AND (t.F3 NOT LIKE '02.86%' AND t.F3 NOT LIKE '02.87%') GROUP BY t.FOrderInterID,t.FItemID,FUnitID,FErpClsID,FBom) a
|
||
LEFT JOIN t_icitem b ON a.FItemID =b.FItemID
|
||
|
||
--LEFT JOIN #Mutidata c ON c.FOrderInterID=a.FOrderInterID AND c.FOrderEntryID=a.FOrderEntryID AND a.FItemID=c.FItemID --AND c.FLevelStrIng='0'
|
||
|
||
|
||
|
||
LEFT JOIN t_MeasureUnit e ON e.FMeasureUnitID=a.FUnitID
|
||
|
||
|
||
|
||
WHERE 1=1 AND b.FErpClsID =1
|
||
|
||
|
||
|
||
ORDER BY a.FItemID
|
||
|
||
|
||
|
||
--------------------------------------------------------02.86、02.86不合并------------------------------------------------------------------
|
||
|
||
|
||
|
||
INSERT Into #MrpEntry1(FID,FitemID1,FQty11,FitemID2,FitemID3,FNumber3,FUnitID,FQty1,FDate2,FDate3,FOrderInterID,FOrderEntryID,[FNumber2],FQty2)
|
||
|
||
|
||
|
||
SELECT a.FOrderInterID FID,A.FBom FitemID1,A.FNeedQty,a.FItemID FitemID2,a.FItemID FitemID3,b.FNumber,b.FUnitID,a.FNeedQty*e.FCoefficient FQty1,
|
||
|
||
|
||
|
||
A.要求到货日期,--dateadd(day,-20,C.FOrderDate) FDate2,--物料需求日期=确认发货日期-15
|
||
|
||
|
||
|
||
A.要求到货日期,--dateadd(day,-20,C.FOrderDate) FDate3,--材料到货日期
|
||
|
||
|
||
|
||
a.FOrderInterID,a.FOrderEntryID,SUBSTRING(b.FNumber,1,5) FNumber2,A.即时库存
|
||
|
||
|
||
|
||
FROM #Mutidata A
|
||
|
||
|
||
|
||
LEFT JOIN t_icitem b ON a.FItemID =b.FItemID
|
||
|
||
|
||
|
||
LEFT JOIN t_MeasureUnit e ON e.FMeasureUnitID=a.FUnitID
|
||
|
||
|
||
|
||
WHERE 1=1 AND b.FErpClsID =1 AND (A.F3 LIKE '02.86%' OR A.F3 LIKE '02.87%')
|
||
|
||
|
||
|
||
ORDER BY a.FItemID
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/*采购申请单数量*/
|
||
|
||
|
||
|
||
SELECT
|
||
|
||
|
||
|
||
v1.FItemID,ISNULL(SUM(v1.FQty),0)-ISNULL(SUM(v2.FQty),0) FQty
|
||
|
||
|
||
|
||
Into #PORequest
|
||
|
||
|
||
|
||
FROM PORequest v
|
||
|
||
|
||
|
||
LEFT JOIN PORequestEntry v1 ON v.FInterID=v1.FInterID
|
||
|
||
|
||
|
||
LEFT JOIN POOrderEntry v2 ON v2.FSourceINterId=v1.FInterID AND v2.FSourceEntryID=v1.FEntryID
|
||
|
||
|
||
|
||
WHERE v.FCancellatiON = 0 AND v.Fstatus < 3 AND V1.FMrpClosed=0
|
||
|
||
|
||
|
||
GROUP BY v1.FItemID
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
UPDATE a SET
|
||
FQty3=b.FQty
|
||
FROM #MrpEntry1 a
|
||
LEFT JOIN #PORequest b ON a.FitemID2=b.FItemID
|
||
|
||
/*采购订单数量*/
|
||
|
||
SELECT FItemID
|
||
,SUM(FQty-FAuxReceiptQty)FQty
|
||
Into #POOrder
|
||
FROM POOrder v
|
||
LEFT JOIN POOrderEntry v1 ON v.FInterID = v1.FInterID
|
||
WHERE v.FCancellatiON = 0
|
||
AND v.Fstatus < 3
|
||
GROUP BY FItemID
|
||
HAVING SUM(FQty-FAuxReceiptQty) > 0
|
||
|
||
|
||
UPDATE a SET
|
||
FQty4 = b.FQty
|
||
FROM #MrpEntry1 a LEFT JOIN #POOrder b ON a.FitemID2=b.FItemID
|
||
|
||
/*收料通知/请检单*/
|
||
|
||
|
||
|
||
SELECT FItemID
|
||
,SUM((FQty-FAuxCONCommitQty))FQty
|
||
INTO #POINStock
|
||
FROM POINStock v
|
||
LEFT JOIN POINStockEntry v1 ON v.FInterID = v1.FInterID
|
||
WHERE v.FCancellatiON = 0
|
||
AND v.Fstatus < 3
|
||
AND v.FTranType = 72
|
||
GROUP BY FItemID
|
||
HAVING SUM(FQty-FAuxCONCommitQty) > 0
|
||
|
||
UPDATE a SET
|
||
FQty5=b.FQty
|
||
,FQty6=ISNULL(FQty3,0)+ISNULL(FQty4,0)+ISNULL(b.FQty,0)
|
||
FROM #MrpEntry1 a LEFT JOIN #POINStock b ON a.FitemID2=b.FItemID
|
||
|
||
/*在途数量*/
|
||
|
||
|
||
|
||
--UPDATE a SET FQty6=ISNULL(FQty3,0)+ISNULL(FQty4,0)+ISNULL(FQty5,0) FROM #MrpEntry1 a
|
||
|
||
|
||
/*已分配量,未结案生产任务单未领数*/
|
||
|
||
UPDATE a SET FQty12=ISNULL(b.FQty,0) FROM #MrpEntry1 a LEFT JOIN #YJCK b ON a.FitemID2=b.FItemID
|
||
|
||
UPDATE a SET a.FNumber3='P' FROM #MrpEntry1 a WHERE a.FIndex IN (SELECT MIN(FIndex) FROM #MrpEntry1 GROUP BY FitemID2)
|
||
|
||
UPDATE t SET t.FQty8 = t2.累计用量
|
||
FROM #MrpEntry1 t
|
||
LEFT JOIN (
|
||
SELECT (
|
||
SELECT
|
||
SUM(ISNULL(FQty1,0) + ISNULL(CASE WHEN FNumber3 = 'P' THEN FQty12 ELSE 0 END,0))
|
||
FROM #MrpEntry1 t1
|
||
WHERE t1.FItemid2 = t.FItemid2
|
||
AND t1.FIndex <= t.FIndex) 累计用量
|
||
,t.FItemid2
|
||
,t.FIndex
|
||
FROM #MrpEntry1 t
|
||
) t2 ON t.FItemid2 = t2.FItemid2 AND t.FIndex = t2.FIndex
|
||
|
||
UPDATE t SET t.FQty8 = ISNULL(FQty2, 0)+ISNULL(FQty6, 0)-ISNULL(FQty8, 0)
|
||
,t.FQty10 = CASE WHEN ISNULL(FQty2, 0)+ISNULL(FQty6, 0)-ISNULL(FQty8, 0) < 0 THEN -(ISNULL(FQty2, 0)+ISNULL(FQty6, 0)-ISNULL(FQty8, 0)) ELSE 0 END
|
||
,t.FQty7 = ISNULL(FQty1, 0)+ISNULL(FQty2, 0)+ISNULL(FQty6, 0)-ISNULL(FQty8, 0)+ISNULL(CASE WHEN FNumber3 = 'P' THEN FQty12 ELSE 0 END, 0)
|
||
FROM #MrpEntry1 t
|
||
|
||
|
||
INSERT INTO [dbo].[MrpEntry1] (
|
||
[FID]
|
||
,[FIndex]
|
||
,[FDate2]
|
||
,[FDate3]
|
||
,FText49
|
||
,FText50
|
||
,FText51
|
||
,[FitemID2]
|
||
,[FUnitID]
|
||
,FINteger4
|
||
,FINteger5
|
||
,FText10 --订单数量
|
||
,ftext11 --毛需求T
|
||
,ftext12 --即时库存T
|
||
,ftext13 --采购申请单数量T
|
||
,ftext14 --采购订单数量T
|
||
,ftext15 --请检单数量T
|
||
,ftext16 --在途数量T
|
||
,ftext17 --已分配量T
|
||
,ftext18 --可用数量T
|
||
,ftext19 --欠料数量T
|
||
--,ftext20--已评审未转单数量T
|
||
,ftext21 --需申购数量
|
||
)
|
||
SELECT FOrderInterID
|
||
,ROW_NUMBER() OVER(ORDER BY FIndex )FIndex
|
||
,FDate2
|
||
,FDate3
|
||
,c.FNumber
|
||
,c.FName
|
||
,c.FModel
|
||
,FitemID2
|
||
,a.FUnitID
|
||
,FOrderInterID
|
||
,FOrderEntryID
|
||
,CONVERT(DECIMAL(18,4),ISNULL(fqty11,0)) --订单数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL(FQty1,0)) --毛需求
|
||
,CONVERT(DECIMAL(18,4),ISNULL(FQty2,0)) --即时库存
|
||
,CONVERT(DECIMAL(18,4),ISNULL(FQty3,0)) --采购申请单数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL(FQty4,0)) --采购订单数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL(FQty5,0)) --请检单数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL(FQty6,0)) --在途数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL(FQty12,0)) --已分配量
|
||
,CONVERT(DECIMAL(18,4),ISNULL(FQty7,0)) --可用数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL(FQty8,0)) --欠料数量
|
||
--, CONVERT(DECIMAL(18, 4), ISNULL(FQty9, 0))--已评审未转单数量
|
||
,CASE WHEN ISNULL(a.FQty8,0) < 0 THEN CONVERT(DECIMAL(18,4),-ISNULL(a.FQty8,0)) ELSE 0 END -- 需申购数量
|
||
FROM #MrpEntry1 a
|
||
INNER JOIN t_icitem b ON a.FitemID2 = b.FItemID
|
||
INNER JOIN t_icitem c ON a.FitemID1 = c.FItemID
|
||
WHERE
|
||
a.FNumber2 NOT IN ('02.86', '02.87', '01.A.' , '01.B.' , '01.C.' , '01.D.' , '01.E.', '01.H.')
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/**************************************************END 外购属性物料**************************************************/
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
/**************************************************START 纸箱物料**************************************************/
|
||
|
||
INSERT INTO [dbo].[MrpEntry3] (
|
||
[FID]
|
||
,[FIndex]
|
||
,[FBase5] --成品代码
|
||
,[FText23] --订单数量
|
||
,[FBase6] --纸箱短代码
|
||
,[FText24] --毛需求
|
||
,[FText25] --即时库存
|
||
,[FText26] --采购申请数量
|
||
,[FText27] --采购订单数量
|
||
,[FText28] --请检单数量
|
||
,[FText29] --在途数
|
||
,[FText30] --已分配量
|
||
,[FText31] --欠料数量
|
||
,[FText32] --可用量
|
||
,[FText33] --需采购数量
|
||
,[FDate6] --纸箱需求日期
|
||
,[FDate7] --建议到货日期
|
||
,[FCheckBox4] --确认转单
|
||
,[FCheckBox5] --转单标识
|
||
,[FText34] --采购申请单编号
|
||
,[FText35] --备注
|
||
,[FINteger6] --订单内码
|
||
,[FINteger7] --订单行号
|
||
,[FDate8] --转单日期
|
||
,[FUser3]) --转单人
|
||
SELECT FOrderInterID
|
||
,ROW_NUMBER() OVER(ORDER BY FIndex )FIndex
|
||
,FitemID1
|
||
,ISNULL(FQty11,0)
|
||
,FitemID2
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty1],0)) --毛需求
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty2],0)) --即时库存
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty3],0)) --采购申请单数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty4],0)) --采购订单数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty5],0)) --请检单数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty6],0)) --在途数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty12],0)) --已分配量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty8],0)) --欠料数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty7],0)) --可用数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty10],0)) --需申购数量
|
||
,FDate2
|
||
,FDate3
|
||
,0
|
||
,0
|
||
,''
|
||
,''
|
||
,FOrderInterID
|
||
,FOrderEntryID
|
||
,GETDATE()
|
||
,0
|
||
FROM #MrpEntry1 a
|
||
WHERE 1 = 1
|
||
AND (FNumber2 LIKE '02.86%' OR FNumber2 LIKE '02.87%')
|
||
|
||
/**************************************************END 纸箱物料**************************************************/
|
||
|
||
|
||
/**************************************************START 化工原料**************************************************/
|
||
|
||
INSERT Into [dbo].[MrpEntry4]
|
||
([FID],[FIndex],[FBase7],[FText36],[FBase8]
|
||
,[FText37] --毛需求
|
||
,[FText38] --即时库存
|
||
,[FText39]--采购申请单数量
|
||
,[FText40]--采购订单数量
|
||
,[FText41]--请检单数量
|
||
,[FText42]--在途数量
|
||
,[FText43] --已分配量
|
||
,[FText44]--欠料数量
|
||
,[FText45]--可用数量
|
||
,[FText46]--需申购数量
|
||
,[FDate9],[FDate10],[FCheckBox6],[FCheckBox7],[FText47],[FText48],[FINteger8],[FINteger9],[FDate11],[FUser4])
|
||
SELECT FOrderInterID
|
||
,ROW_NUMBER() OVER(ORDER BY FIndex ) FIndex
|
||
,FitemID1
|
||
,ISNULL(FQty11,0) ,FitemID2
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty1],0)) --毛需求
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty2],0)) --即时库存
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty3],0))--采购申请单数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty4],0))--采购订单数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty5],0))--请检单数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty6],0))--在途数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty12],0)) --已分配量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty8],0))--欠料数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty7],0))--可用数量
|
||
,CONVERT(DECIMAL(18,4),ISNULL([FQty10],0))--需申购数量
|
||
,FDate2--GETDATE(),
|
||
,FDate3--GETDATE()
|
||
,0,0,'','',FOrderInterID,FOrderEntryID,GETDATE(),0
|
||
FROM #MrpEntry1 A
|
||
WHERE 1=1
|
||
AND A.FNUMBER2 IN ('01.A.' ,'01.B.' ,'01.C.' ,'01.D.' ,'01.E.','01.H.')
|
||
|
||
/**************************************************END 化工原料**************************************************/
|
||
|
||
UPDATE SEOrder SET FHeadSelfS0153='Y' WHERE FInterID=@FID --FHeadSelfS0153 评审标志
|
||
|
||
SELECT @FID,@BillNo
|
||
|
||
DROP TABLE #MrpEntry1
|
||
DROP TABLE #MrpEntry2
|
||
DROP TABLE #Mutidata
|
||
DROP TABLE #Mutidata2
|
||
DROP TABLE #ICINventory
|
||
DROP TABLE #YJCK
|
||
DROP TABLE #YJRK
|
||
DROP TABLE #Seorder
|
||
DROP TABLE #POINStock
|
||
DROP TABLE #PORequest
|
||
DROP TABLE #POOrder
|
||
END |