提前期(lead time)是物料的产生周期、采购周期。这在手工管理中也是有的,就是提前多长时间下单,才能保证采购进来,或者生产出来。手工管理里面,是每类物料一个提前期。软件可以做到每种物料一个提前期。
累计提前期是什么呢?对于产品来说,需要先采购原料、元器件,生产零部件。产品累计提前期就是将提前期按产品BOM层次,逐级加在一起,最大的那个累计提前期就是产品累计提前期。这在手工管理中也是存在的。
/*
产品累计提前期计算函数 func_cum_lt(p_product_no)
programed by fuerquan, copy right 2023,2030
*/
CREATE function cum_lt (p_product_no varchar(20)) returns int
BEGIN
declare v_lead_time int;
set v_lead_time=
(with recursive cum_lt (lev, item_no, lead_time)
as (
select 0, item_no, lead_time
from items
where item_no=p_item_no
union all
select lev+1, b.component_no, c.lead_time + b.lead_time
from cum_lt as c, v_bills as b
where (b.item_no = c.item_no) and c.lev = lev and lev <= 10
)
select max(lead_time) from cum_lt);
return v_lead_time;
END
select item_no 物料编码, cum_lt(item_no) 累计提前期 from items where item_no="DDN-30";