中途启用/反启用批号管理或保质期管理,如何处理?

栏目:云星瀚知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

中途启用/反启用批号管理或保质期管理,如何处理?


客户场景

场景一、上线时客户没有定义清楚到底那些物料要启用批号、保质期管理,初始化库存后才发现需要再启用;

场景二、客户业务变更,需要中途对物料启用/反启用批号、保质期管理。


问题描述

目前系统控制了【物料库存信息】中修改“启用批号管理”和“启用保质期管理”参数时,如果物料已经发生过业务,即被单据或余额表引用,则不允许再修改。

控制的目的是由于库存单据上批号和保质期字段会受主数据参数影响其可编辑性和必录性,如果随意中途修改参数,会造成历史已有库存无法出库。

解决方法

  • 方案一、新建物料,新发生的业务走新物料,历史物料在库存消化完后禁用。


  • 方案二、对于刚完成初始化,或仅发生少量业务的情况下,可以反审核并删除单据,然后在余额表中删除余额记录后再到【物料库存信息】中修改参数。

    删除余额记录的方式:

    【开发平台】-【供应链云】-【库存管理】-【余额模型】-【即时库存余额表】

    【开发平台】-【供应链云】-【库存管理】-【期初期末】-【库存核算期间余额表】/库存期间余额表】

    列表界面预览,按物料、库存组织的条件过滤出库存明细,选中后删除(可能还有更新了其他余额表,按提示找对应余额表同样方式处理)。

    注意尽量不要自己扩展增加“删除”操作按钮,一定不要删除存在“已更新”状态的余额更新快照的余额记录。仅能删除快照为空或状态为“已回滚”,数量都为0的余额记录。原厂预置的“删除”按钮已经自带校验功能,可以直接使用。



  • 方案三、用【其他出库单】将历史库存全部出库,然后数据库更新【物料库存信息】的批号、保质期参数,最后做【其他入库单】将库存入回来。

    数据库更新脚本参考如下样例:
    -- 【物料库存信息】启用或反启用批号管理(系统库)
    update t_bd_materialinvinfo set fenablelot = 0,flotcoderuleid = 0
    -- fenablelot“启用批号管理”,0是“不启用”,1是“启用”
    -- flotcoderuleid“批号规则”,基础资料字段,来源【供应链编码规则】(bd_lotcoderule),启用批号时也可以先不刷,手工再维护
    where fid in (select a.fid from t_bd_materialinvinfo a inner join t_bd_material b on a.fmasterid  = b.fid inner join t_org_org c on a.forgid = c.fid where b.fnumber = '物料编码'  and c.fnumber ='组织编码' );


    -- 【物料库存信息】启用或反启用批号管理(系统库)

    update t_bd_materialinvinfo_x

    set fenableshelflifemgr = 0,fshelflifeunit = 0,fshelflife =  0,fcaldirection = 0,fcalculationforenddate = 0,fstartdatecaltype = 0,fleadtimeunit = 0

    -- fenableshelflifemgr“启用保质期管理”,0是“不启用”,1是“启用”;

    -- fshelflifeunit“保质期单位”,启用必录,day是“日”,month是“月”,year是“年”;

    -- fshelflife“保质期”,启用必录,整数字段;

    -- fcaldirection “计算方向”,启用必录,1是“按生产日计算到期日”,3是“相互计算”,4是“互不计算”;

    -- fcalculationforenddate“到期日计算方式”,启用且“计算方向”≠“4互不计算”时必录,0是“生产日期+保质期”,1是“生产日期+保质期-1”,2是“生产日期+保质期上个月的最后一天”;“计算方向”等于“4互不计算”时,必须为空;

    -- fstartdatecaltype“生产日计算方式”,启用必录,1是“到期日-保质期”,2是“到期日-保质期+1”;

    -- fleadtimeunit“提前期单位”,启用必录,day是“日”,month是“月”,year是“年”;

    where fid in( select a.fid from t_bd_materialinvinfo a inner join t_bd_material b on a.fmasterid  = b.fid inner join t_org_org c on a.forgid = c.fid where b.fnumber = '物料编码' and c.fnumber ='组织编码' );


  • 方案四、对系统业务流程以及数据库表非常熟悉的情况下可以考虑此方案。如果可以明确已经发生业务的单据范围,以及库存单据无下游单据,以及对存货核算影响可控,以及未开启批号主档的前提下。也可以使用方案三中的方式,先更新主数据参数后,再数据库更新单据,比如关闭批号管理,就把所有单据中此物料的批号清空,开启批号,就把所有单据中此物料的批号赋值为某默认值,如123。最后重算库存余额和重新同步核算。

  • 方案五、升级到V6.0.2及以上版本,如果物料库存信息已被引用,改动启用批号管理参数时,系统不做强控,但会弹窗提示:启用或反启用批号管理需要先确保历史库存为0。点击“确定”则修改成功,点击“取消”则不做修改。

    但处理历史库存的方式与方案三相同,必须在改参数前将历史库存出库,修改参数后再入库。


注意事项

  • 其他出库处理历史库存的方式,会对账龄分析报表取数产生影响,物料的账龄会按新入库的时间计算。

  • 数据库更新过【物料库存信息】的启用批号或启用保质期参数,最好再到物料库存信息列表手工禁用和启用一次,否则库存单据界面批号、生产日期、到期日期字段的锁定性控制可能由于存在缓存的原因还没有更新。


适用版本

5.0.015及之后版本


-the end-





中途启用/反启用批号管理或保质期管理,如何处理?

客户场景场景一、上线时客户没有定义清楚到底那些物料要启用批号、保质期管理,初始化库存后才发现需要再启用;场景二、客户业务变更,需要...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息