服务热线:

400-665-0027

知识资讯
联系我们

电话:400-665-0027


您当前位置:首页 > 知识资讯  > 知识学习 > 正文知识学习
KIS旗舰版物料禁用时怎么同步反使用BOM并注明物料使用状态
服务热线:400-665-0027 新购有特价、金蝶老客户升级金蝶云产品可以享受5折优惠,送手机、送话费,好礼不断!

前不久有KIS旗舰版的客户反馈给我,他们在禁用物料时在BOM维护界面不能直观的看到是什么原因反使用BOM,每次都需要去物料信息查看物料状态才弄清楚是物料禁用了。问我有没有快捷的办法不用这么麻烦。

经过一番研究以后顺利实现这个客户的需求,现将解决方法分享一下:

1、打开【客户端工具包】-【辅助工具】-【单据自定义】,使用具有操作权限的用户登录后打开BOM。

image.png

image.png

image.png

2、在BOM中增加【单据头字段】,将其名称修改为“物料使用状态”,同时指定默认值为“使用”。

image.png

此外,为防止误操作,可将该字段设置为在单据录入和修改时不可见。

image.png

3、在SSMS控制台修改t_ICItem视图中的触发器

image.png

增加以下代码以后按F5执行一下进行保存:

BEGIN

-- 根据 inserted 表中 fdeleted 的值更新 icbom 表的相关字段

UPDATE icbom

SET

FHeadSelfZ0134 = CASE

WHEN i.fdeleted = 1 THEN '禁用'

ELSE '使用'

END,

FUseStatus     = CASE

WHEN i.fdeleted = 1 THEN 1073

ELSE icbom.FUseStatus -- 保持原值不变

END

FROM icbom

INNER JOIN inserted i ON icbom.fitemid = i.fitemid;

END;

最终实现的效果如下:

image.png

物料禁用前BOM状态为使用,物料使用状态为“使用”

image.png

物料禁用后BOM状态为未使用,物料使用状态为“禁用”

在t_ICItem修改触发器控制的后期物料的禁用和反禁用同步更新BOM表头的“物料使用状态”,历史数据还需要用SQL语句更新一下,附上语句:

    UPDATE icbom

    SET FHeadSelfZ0134 = '禁用',FUseStatus=1073

    FROM icbom a

    INNER JOIN t_ICItem b ON a.fitemid = b.fitemid

    WHERE b.fdeleted = 1;

    UPDATE icbom

    SET FHeadSelfZ0134 = '使用'

    FROM icbom a

    INNER JOIN t_ICItem b ON a.fitemid = b.fitemid

    WHERE b.fdeleted = 0;

通过这样的修改,当对物料进行禁用和反禁用操作时,即使该字段在单据录入时不可见,但在数据库层面的相关逻辑能够根据这个字段值的变化而执行相应的操作。例如在上述代码中,当物料被禁用或者反禁用时,相关联表中的状态也会相应更新,从而实现整个业务流程中数据的一致性和完整性。并且由于在BOM中对字段的设置,也避免了用户在单据录入时的误操作,保证了数据的准确性。