本文介绍了反写插件在日常开发中的使用场景与方法,包括beforeTrack、beforeCreateArticulationRow、afterCalcWriteValue和before/afterExcessCheck等。以afterCalcWriteValue和beforeExcessCheck为例,详述了如何通过这些方法控制反写内容和超额检查。通过采购申请单与采购订单的案例,展示了反写插件的配置、数据处理及超额检查的自定义逻辑。
日常开发过程中,botp是必用功能,编写botp插件也是家常便饭。但是又有多少开发小伙伴使用过反写插件,反写插件又能实现那些功能呢?今天就给大家简单介绍一下
下面是常用的反写插件方法以及触发时机和适用场景
事件 | 触发时机 | 适用场景 |
beforeTrack | 构建关联主实体全部关联记录前 | 取消关联和反写 |
beforeCreateArticulationRow | 构建关联主实体单行数据与源单的关联记录前 | 取消本行的关联和反写 |
afterCalcWriteValue | 基于下游单据当前行,反写值计算完毕后 | 修正反写量,调整对各源单行的分配量 |
beforeExcessCheck | 对源单反写完毕,超额检查前 | 取消超额检查 |
afterExcessCheck | 对源单反写完毕,超额检查完毕后 | 控制是否终止反写、提示超额、修正提示内容 |
我们就以afterCalcWriteValue和beforeExcessCheck两个方法为例,说明一下如何使用反写插件对反写内容进行处理,以及对超额检查的控制
以采购申请单与采购订单为例,我们关联实体为单据体对单据体
首先先看下我们配置的反写规则,其中包括订货数量以及金额字段,并且超额检查为严格控制
继承AbstractWriteBackPlugIn,重写beforeExcessCheck,afterCalcWriteValue两个方法。
反写插件比较特殊,需要注册在下游单据的关联配置中
保存之后,建立数据,来断点看下可以在插件中可以获取到那些数据
在afterCalcWriteValue方法中,我们可以获取到反写的单据体实体,反写数量,反写字段以及源单id信息
如果我们像手动修改反写内容,只需要判断反写字段,并将反写内容赋值即可
看效果
反写之后
再看beforeExcessCheck方法,同样可以获取到上下游单据信息
正常的超额检查如下:
如果想要取消超额检查,修改逻辑,设置上游单据为RMB时取消超额检查
看效果
并没有进行差额检查,并且反写成功。
本文就先简单介绍这两个案例,小伙伴们快去研究一下剩下的几个方法吧
推荐阅读