自动锁库解锁服务插件干预试例

预计在2023年1月补丁中,对自动锁库解锁服务将提供插件干预功能,原有的服务在锁库时只支持本单据(本单据指的是自动锁库解锁服务配置于的单据上)上的操作,而解锁时可以支持本单据的某个操作解锁特定上游单据的锁库信息,当然也支持解锁本单据的锁库信息,但是有些自定义逻辑支持的不太好或者根本就不支持。由于一些限制,此服务不可能满足所有客户的要求,比如客户可能需要根据非常复杂的条件来过滤哪些单据体记录参与锁库,哪些不参与锁库(通版的锁库服务有个数据筛选条件配置,但它只支持一些简单的表达式配置),或者客户可能需要在锁库/解锁成功后调用自定义逻辑,抑或是自定义锁库排序逻辑。因此本服务添加了自定义插件干预功能,有关自动锁库解锁服务的介绍,可参阅:https://wenku.my7c.com/article/284352629646877184?productLineId=1,本文将通过二开插件自定义逻辑,简单介绍下此功能。
1,首先扩展发货通知单,在审核操作上配置锁库服务,在自动锁库解锁服务配置界面中的插件文本框中输入:Kingdee.K3.SCM.Custom.ServicePlugin.CustomAutoLockOrUnlockStockPlugin,Kingdee.K3.SCM.Custom.ServicePlugin ,注意这里只是一个扩展的例子,客户可自行命名此类的全名,其他例子类似地配置。

图1-1
创建自定义类CustomAutoLockOrUnlockStockPlugin,此类必须继承至AbstractAutoLockOrUnlockPlugin,重写其中的方法 SortLockSupplies,如下图1-2所示:

图1-2
上面的二开代码例子在锁库时会对即时库存排序(参数lockSupplies会有一个默认排序,但通常他可能不符合客户的排序要求),即优先使用可用量小的即时库存锁库,如果可用量相同,则再使用有效期小的。举个例子,如果即时库存初始时有三个即时库存,且有相同的数量(假设都为5),但有效期不同,当发货通知单上的数量是4时,审核并锁库成功后,会优先使用第三行有效期小的那条即时库存,如下图1-3所示和图1-4所示:

图1-3

图1-4
2,修改类CustomAutoLockOrUnlockStockPlugin,重写其中的 FilterLockRequirements 方法,如下图2-1所示:

图2-1
上面的代码通过LINK表排除有销售订单下推销售订单的下游分录内码记录(通版一般是退货类型的销售订单),当在销售订单保存操作上配置类似于上图1-1所示的自定义插件时(注意这里演示的是销售订单保存操作而不是审核操作是因为审核操作会有根据单据类型参数自动审核的逻辑,而这一逻辑在自动锁库解锁服务发布之前就存在了),创建一个标准销售订单A,可以看到它可以锁库,但当标准销售订单下推一个退货方向的销售订单B时,订单B锁库不成功,查看日志可以看到有如下图2-2所示的记录:

图2-2
3,修改类CustomAutoLockOrUnlockSt
自动锁库解锁服务插件干预试例
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



