寄售结算单尾差处理简介原创
金蝶云社区-文安根
文安根
12人赞赏了该文章 1027次浏览 未经作者许可,禁止转载编辑于2021年12月24日 11:30:55

    寄售结算单中的单据体有结算明细,匹配发货(匹配发货是结算明细的子单据体)和选单明细,从2021年1月补丁(PT-146866 [7.6.0.202101])开始,供应链领域销售模块下的寄售结算单添加了尾差处理(BOS平台后续也添加了单据转换的尾差处理),这里讲的尾差要区别于平台的单据转换尾差处理策略,最开始的版本是直接在插件代码中的BeforeDoOperation方法中对Save操作进行尾差处理,处理的逻辑大致是以结算明细中的金额(包含金额,税金,价税合计)为基准,更新与结算明细相匹配的选单明细中对应的金额,同时还更新与结算明细相匹配的匹配发货中对应的金额,最开始的版本也添加了数量的尾差处理(最新版本已删除数量尾差,数量尾差请使用单据转换尾差处理策略或选项参数),下面举个例子大致说明下这里的单据上尾差处理逻辑:

    1,结算明细数据如下图1-1所示,可以看到第一条记录(假设为S1)的税额和金额分别为:1833.95 和 14107.31,最后一条记录(假设为S14)分别:6554.62 和 50420.12

settle.png

图1-1


    2,选单明细数据如下图1-2所示,可以看到第一条记录(假设为N1,它对应前面结算明细的第一条记录S1)的税额和金额分别为:1833.95 和 14107.31,最后一条记录(假设为N14,它对应前面结算明细的最后一条记录S14)分别:6554.65 和 50420.09

downloadfile.png

图1-2


    初始版本,在保存操作前,通版逻辑会判断两个单据体的第一条记录金额和税额是相同的(这里恰巧是结算明细中的一条记录对应选单明细中的一条记录),所以它们不存在尾差,依次类推,第二,第三条记录也没有,直到最后一条记录S14,S14比N14的税额少0.03,S14金额比N14多0.03,在保存操作时,会把N14修正成与S14一样的数据,如下图1-3为保存后的选单明细,可以看到保存后就变成和S14一样的数据了。

select.png

图1-3

另外如果一条结算明细对应多条选单明细且有尾差,那么被修正的选单明细是对应的最后一条选单明细。


    在这个尾差处理发布后,有些客户后面陆续提出了一些问题,比如客户在寄售结算单结算明细录入的数量和自动匹配发货功能匹配到的数量不一致(比如寄售直接调拨单数量小于匹配的结算明细中的数量),这种情况下做数量尾差处理就不正确了,所以后面的版本陆续做出修改了,最终在12月版本中PT-146899 [7.7.0.202112])趋于固定,新版本删除了数量的尾差处理,数量尾差将不再处理,如果数量有尾差时想要保存通过,则需要勾选用户选项参数‘允许数量差异校验控制在0.01内’让系统不再对数量进行校验,同时金额相关字段的尾差也依据选项参数,选项参数如下图所示1-3:

param.png

图1-3

    有客户自行二开'结算明细'和'选单明细'单据体,放开其中的金额等字段可编辑,并使用实体服务规则或值更新来达到尾差处理,这其实是有问题的,建议使用通版的尾差功能,BOS不支持两个单据体之间的值更新,因为它不知道前一个单据体某行应该对应另一个单据体的哪一行,通版是通过后台代码计算出一个结算明细行对应哪些选单明细行以实现动态更新(内部是通过FRowId实现的), 有关寄售结算单'结算明细'单据体,'选单明细'单据体,'匹配发货'子单据体之间的关系,可参阅:https://vip.kingdee.com/article/231368058613502208 


赞 12