[点晴永久免费OA]金蝶KIS旗舰版物料禁用时怎么同步反使用BOM并注明物料使用状态
|
admin
2024年12月20日 11:50
本文热度 338
|
前不久有KIS旗舰版的客户反馈给我,他们在禁用物料时在BOM维护界面不能直观的看到是什么原因反使用BOM,每次都需要去物料信息查看物料状态才弄清楚是物料禁用了。问我有没有快捷的办法不用这么麻烦。 经过一番研究以后顺利实现这个客户的需求,现将解决分享一下: 1、打开【客户端工具包】-【辅助工具】-【单据自定义】,使用具有操作权限的用户登录后打开BOM。
2、在BOM中增加【单据头字段】,将其名称修改为“物料使用状态”,同时指定默认值为“使用”。
此外,为防止误操作,可将该字段设置为在单据录入和修改时不可见。
3、在SSMS控制台修改t_ICItem视图中的触发器
增加以下代码:
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;
最终实现的效果如下:
物料禁用前BOM状态为使用,物料使用状态为“使用”
物料禁用后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中对字段的设置,也避免了用户在单据录入时的误操作,保证了数据的准确性。
该文章在 2024/12/20 11:51:17 编辑过