本文介绍了业务单据中获取库存数量的功能,系统服务根据配置读取库存并过滤,满足条件后汇总。对于特殊需求,系统提供二开插件接口,允许通过编写插件改写库存数据过滤条件或筛选结果集。编写插件需引用标准组件并派生抽象类,主要方法包括修改取数脚本、加工结果集等。完成插件后需在配置界面注册插件类全名。
很多业务单据上都配置了获取库存的菜单,点击菜单,就会获取对应的即时库存数量并回填到单据的指定字段上。系统服务在执行时会根据配置信息读取当前分录字段的值,配置了匹配字段并录入了数据库存维度都会参与过滤,最终得到满足条件的即时库存并汇总数量。
如果要执行一些特殊条件需求,比如某些单在执行获取服务时单据的仓库字段留空,但是希望获取库存时只希望得到部分仓库的库存,比如只要普通仓,或者只要待检仓的库存数量等。这样的需求标准服务的配置无法满足,对于类似的扩展需求,系统的获取库存服务提供了二开插件接口,可以依据接口编写二开插件,在插件中改写读取即时库存数据的过滤条件,或者直接对获取到的即时库存结果集进行筛选,然后交由标准服务返回到单据上。
编写插件需要引用标准组件Kingdee.K3.SCM.App.Core.dll,派生抽象类AbstractGetInvStockPlugIn。
主要方法如下:
RegexGetInvDataSql:可以对服务的取数脚本进行处理,按照业务需求修改过滤条件
AfterGetAllData:可以对标准服务取得的结果集进行加工
ApplyExtFilter:因服务是支持批量的,也就是可以一次性获取单据所有分录的库存,这里可以对每一条单据分录的结果集进行处理。
插件类也有一些属性可以判定应用场景:
Ctx:上下文
BillFormId:单据FormID
BillEntity:业务单据数据实体
ServiceSet:获取库存服务配置信息
完成插件编写后需要要对插件的类全名(格式与单据的表单插件以及列表插件相同)在上面配置界面的插件栏进行注册。
推荐阅读