单据关联及控制功能(向单头汇总、取小乘积运算、必填行设置)——案例分享原创
金蝶云社区-锂镂锡
锂镂锡
68人赞赏了该文章 470次浏览 未经作者许可,禁止转载编辑于2023年05月31日 10:38:26

1 应用场景

1.1 当前案例需求背景:

        二开的单据,涉及到运费填写,需要按行控制,有运费的行,运价数量运费金额承运商都必填;没有的运费的话不应填写。

1.2 可参考应用场景:

        涉及到按行关联控制的场景,例如:涉及到外币的,控制必填汇率并计算本位币;涉及到折扣、补助的设置必填;涉及到上级单位代扣代缴税费的自动计算扣缴金额等等。



2 主要案例功能分享

2.1 分录金额向单头汇总功能

2.1.1 在单头新增用于汇总的字段

image.png

2.1.2 选择需要向单头汇总的金额字段

image.png

2.1.3 在【属性】中找到【汇总至上级字段】的属性,配置属性值为新增的单头字段即可。
注意:如果需要每填一行都实时汇总,需要勾选属性中的【即时出发更新事件】。

image.png

image.png

2.2 取小功能

需求:新增了【运费数量】字段,需要按【入库数量】和【对方数量】自动取小。

分析:【运费数量】不是必填字段,需要依据【是否运费】来判断是否必填。但是是否运费有两种不同的来源场景:
场景1 上游单据携带,此时需要在下推时就依据【是否运费】判断下游是否需要填写【运费数量】

场景2 手工填写,上游单据填写不规范导致【是否运费】下推得到空值时,需要手工填写【是否运费】

解决方案:

2.2.1 为解决场景1,按下图所示,使用单据转换的表单服务功能,按实际分析得到的场景(此案例有三种场景,因此设置了三个规则),给下推规则设置【前提条件】和【赋值规则】

image.png

即可实现下推时【运费数量】按条件赋值。

2.2.2 为解决场景2,下推时无法判断是否运费,需要手工填写后触发,需要用到值更新事件的功能,如下图所示配置按条件赋值的值更新事件功能

image.png

即可实现【填写是否运费】字段后按条件赋值(或清空)。

2.3 乘积计算功能

依据【运价】和【运费数量】计算运费金额,同时给运费和运价配置值更新时间即可

image.png

2.4 必填项控制

需求:分录的【运价】【运费数量】【运费金额】【运输商】四个字段,需要依据这一行的【是否运费】字段来校验必填

分析:【值更新事件】功能的设置为必录项的功能,可以在【是否运费】的值变更时,改变【运价】等其他字段的【是否必录】的属性。但是只能对整列进行控制,不能区分每一行是否必录,同时,此操作会互相覆盖,如:第一行【是否必录】选择了【是】,同时四个字段自动设置为必录了,此时第二行【是否必录】选择了【否】,四个字段又被更新为非必录。
解决方案:尝试使用【提交】的【其他控制】下的【校验规则】功能进行处理

2.4.1 按条件设置【运输商】必录

image.png

2.4.2 按条件设置【运价】【运费数量】【运费金额】必录

由于这三个字段是数量、金额类型的字段,默认值为0(而不是null),使用必填项校验的功能,校验不到null,所以无法使用2.4.1的【合法性检查,字段必录】功能,

image.png

需要使用【单据合法性校验】功能校验相关字段值大于0来进行控制,

image.png

并且【单据合法性校验】的【前置条件】无法依据单据体进行设置,因此只能直接将前置条件的逻辑融合到校验规则中

image.png

设置相关条件后,可以设置不符合条件时的提示信息。

image.png

设置完成后可实现按分录进行必填项校验。

赞 68