本文讨论了客户在ERP系统中通过触发器更新批号主档字段,并希望将此字段值反映到即时库存中遇到的问题。客户发现即使更新了批号主档的值,即时库存显示仍然是旧值,因为即时库存系统对数据进行了缓存。文章提供了场景分析、代码示例和解决方案,即通过插件在特定操作后清除相关批号主档的缓存,以确保即时库存显示最新值。
一、【业务背景】:客户在批号主档上加了字段 这个字段取值是通过生产入库单的字段更新的;客户自行做了触发器,批号主档已经能写入值,但是这个值客户需要携带到即时库存里面;在即时库存里面批号是基础资料字段 所以可以通过引入属性去携带;但是每次需要清除缓存才可以显示出来;自定义的字段不支持携带到即时库存吗?
二、【场景分析】:客户二开触发器做数据更新(不建议),库中的批号主档数据已更新,但是即时库存引用批号主档的该字段值还是旧值,原因是即时库存查询中,批号主档做为基础资料已被应用层做了数据缓存,需要通过插件针对对应的批号主档数据清除缓存。
问题还原:
1、扩展“批号主档”基本信息,添加“备注”字段
2、扩展“即时库存汇总查询明细”,添加“基础资料属性”字段“FLotText”,关联批号备注字段
3、直接语句更新批号主档字段: Update T_BD_LOTMASTER set FTEXT ='Test222' where FLOTID = '544154'
4、刷新“即时库存”,FLotText字段显示未更新
三、【代码示例】:
插件继承AbstractOperationServicePlugIn类,重写EndOperationTransaction(EndOperationTransaction e),附加在“保存”或者“审核”操作按钮点击事件下(示例中硬编码了批号主档内码544154,具体情况根据业务需求修改)
四、【实现效果】:
验证效果:
1、直接语句更新批号主档字段: Update T_BD_LOTMASTER set FTEXT ='Test222' where FLOTID = '544154'
2、触发单据中插件操作
3、刷新“即时库存”
以上分析及处理方案是一些个人的理解,如有不对之处,还请指正。
推荐阅读