[易飞]包材Forcast四周滚动需求


【背景】整理整顿, 仓库最大的库容占用在于包装材料, 特别是纸箱,托盘,泡沫片,包装管等,价值不高, 但占用面积比较大。
【解决方案】
1. 此类材料, 不走LRP请购即不在合同评审时下请购单。
2. 补货将按库存补货点补货,补货点库存, 初步将设定为3天平均用 量。物控一,三,五定期跑补货报表。
3. 采购按补货请购单的数量通知进货。即我们的采购订单就是供应商的进货通知单。
因我们包材种类比较多,需求波动也比较大, 为方便供应商提前备他们的原材料, 及供应商建一定的安全库存, 这边会和IT小龚沟通一下, 专门这对此类材料开发滚动1个月的需求报表给采购, 由采购转供应商备料和备成品。
要压缩此类材料库存, 关键在于供应商要有一定的备料库存, 我们的补货点是基于平均用量来算, 不排除个别时间段, 实际用量会超过平均用量比较多造成紧急进料, 请采购提前和供应商探讨备料的可行性。


-- =============================================   
-- Author: <David Gong>   
-- Create date: <2015-12-22>  
-- Modify by: 
-- Description: <forcast for purchase>   
-- ============================================= 

ALTER PROC [dbo].[UP_ForcastForPur]
as
declare @NEEDAFTER BIT              --需求日期后的需求是否纳入计算:1->是;0->否
declare @now as char(8), @wkdate1 as char(8), @wkdate2 as char(8), @wkdate3 as char(8), @wkdate4 as char(8)

set @NEEDAFTER=1
set @now=convert(char(8),getdate(),112)
set @wkdate1=convert(char(8),dateadd(week,1,getdate()),112)
set @wkdate2=convert(char(8),dateadd(week,2,getdate()),112)
set @wkdate3=convert(char(8),dateadd(week,3,getdate()),112) 
set @wkdate4=convert(char(8),dateadd(week,4,getdate()),112)
;
with A --计算预计领用需求
as(
select TB003 品号,ISNULL(SUM(TB004-TB005)*ISNULL(MD004,1)/ISNULL(MD003,1),0) as 预计领用,TA009 as 领用日期   
from MOCTA INNER JOIN MOCTB ON TA001=TB001 AND TA002=TB002 
     LEFT JOIN INVMD ON MD001=TB003 AND MD002=TB007 AND MD007='Y'
WHERE  UPPER(TA011)<>'Y'  AND TB018='Y'
      AND LEFT(TB003,3)='312' 
      AND TB015 >=@now AND TB015 <@wkdate4  --TB015<=(CASE @NEEDAFTER WHEN 1 THEN '99991231' ELSE @NEEDDATE END)
      --AND TA009 >=@now AND TA009 <@wkdate4   
group by TB003,TA009,MD004,MD003
),
B   --计算安全库存量与现有库存量
as(
select MC001 品号,MC004 安全库存,MC007 现有库存 from INVMC WHERE MC002='01' and  left(MC001,3)='312'
)
, C --计算4周预计领用分布
as(
SELECT A.品号,预计领用,
    case when A.领用日期 >=@now AND A.领用日期 <@wkdate1 then '第一周'
         when A.领用日期 >=@wkdate1 AND A.领用日期 <@wkdate2 then '第二周'
         when A.领用日期 >=@wkdate2 AND A.领用日期 <@wkdate3 then '第三周'
         when A.领用日期 >=@wkdate3 AND A.领用日期 <@wkdate4 then '第四周'
    else '其他' END 所属周

FROM A 

)
--计算结果
select pvt.品号,MB002 AS 品名,MB003 AS 规格,MA002 AS 主供应商,
isnull(pvt.第一周,0) as 第一周,
isnull(pvt.第二周,0) as 第二周,
isnull(pvt.第三周,0) as 第三周,
isnull(pvt.第四周,0) as 第四周,
isnull(pvt.第一周,0)+isnull(pvt.第二周,0)+isnull(pvt.第三周,0)+isnull(pvt.第四周,0) 总需求,
case when (isnull(pvt.第一周,0)+isnull(pvt.第二周,0)+isnull(pvt.第三周,0)+isnull(pvt.第四周,0)-现有库存)<=0  then 0 else (isnull(pvt.第一周,0)+isnull(pvt.第二周,0)+isnull(pvt.第三周,0)+isnull(pvt.第四周,0)-现有库存) END as 缺料情况,现有库存,
    CASE WHEN MB034='R' then '按补货点' 
         WHEN MB034='M' then '按MRP需求' 
         WHEN MB034='L' then '按LRP需求' 
         WHEN MB034='N' then '不需'
    else '按历史销售' END as 补货政策,
    @now+'~'+@wkdate4 as 日期
from ( select 品号,预计领用,所属周 from C) p PIVOT(SUM(预计领用)  FOR 所属周 in([第一周],[第二周],[第三周],[第四周])) as pvt
      INNER JOIN INVMB ON pvt.品号=MB001
      LEFT JOIN PURMA ON MB032=MA001
      INNER JOIN B ON pvt.品号=B.品号

order by pvt.品号

这里写图片描述

相关内容

    暂无相关文章