(技巧)价格管理:配置手工取价原创
金蝶云社区-苏格拉底
苏格拉底
5人赞赏了该文章 1,106次浏览 未经作者许可,禁止转载编辑于2023年03月14日 15:05:14
summary-icon摘要由AI智能服务提供

本文介绍了价格服务平台新增的【取价操作】:quote,该功能允许在单据上通过按钮绑定操作以获取完整的取价功能。它适用于各种表单,包括动态表单及不带分录的单据,但仅限于表单上的按钮,不支持列表界面的按钮。取价操作能自我诊断配置逻辑是否合理,并由取价方案驱动。还提供了取价插件以支持自定义价格处理逻辑和指定取价组织。考虑到性能问题,可选择关闭刷新监听,但需通过插件处理后续计算逻辑。最后,给出了销售单据的通用插件示例及插件接口说明,供开发人员参考。

总体说明

为了方便各类单据进行取价处理,价格服务平台增加了一个【取价操作】:quote,在维护好【取价策略】和【取价方案】的前提下,只需要在单据上增加一个按钮,然后绑定这个操作就可以获取完整的取价功能了

  •                image.png


                                                                           1 按钮绑定服务

1 .  这个功能适用于任何表单,包括二开的单据,甚至是动态表单、不带分录的单据等。

2.  如果按钮配置在分录上,取价范围为【没有录入价格的分录】, 即不需要用户选择分录。当然这样的话也意味着用户也无法指定分录行取价。

3 .  只支持表单上的按钮,不支持列表界面的按钮。

4.  取价操作会自行诊断 【取价方案】和【操作参数配置】的逻辑是否自洽,如:【取价方案】价格返回字段如果在单头,而取价组织却在分录,则会给出错误提示;再如 【取价方案】价格返回字段在分录A上,但是取价组织配置了分录B上的组织,也会给出错误提示; 这都是服务配置不能自洽的表现。因为是通用服务所以考虑了所有可能的极端配置场景。

5.  取价服务完全由【取价方案】驱动,请严格配置好取价单的【取价方案】。

6.  注意:目前不支持HDD的第二个D取价,即不支持分录的子分录取价

 

 

操作参数说明:


参数名称

说明

取价插件(可选)

因为这个是一个通用操作,每一种单据对于取到价格的前后处理不尽相同,所以提供了一个取到价格回填前后的处理机制

例:销售单据在获取价格后,回填前需要判断【税率】是否有效; 回填后需要重新计算分录上的金额和汇总单头金额。

通过插件,现场也可以继续定制取到的价格逻辑。

取价组织

价格是基于组织来管理的,但取价组织不一定是【主业务组织】,所以需要指定取价组织为当前取价单据中的具体组织字段。

注意:取价组织可以选择取价分录行上的组织

是否触发监听

与取价插件二选一。

一般现场选择【是】。因为是批量取价,取到价格后可能会大批量的刷新分录上的价格字段,导致计算金额的监听风暴产生(与用户手工录入价格时不同,日常都是都是逐格录入,一次只触发一个监听),所以出于性能的考量,提供了关闭监听的功能。

如果不关闭监听,则取到价格后的金额计算等就如常进行,和单据的功能无缝对接,只是如果取价分录超过几百条可能存在前端性能问题。 如果关闭了监听,请开发【取价插件】来处理后续的补充计算逻辑。



  •            image.png


                                                                  

                                                                        2 操作参数说明

销售插件说明(例)

只要是继承销售单据模板的单据,都可以使用这个插件,这个插件已经针对销售单据提供了完整的取价前后处理通用逻辑。

其他模块的通用插件等有现场需求了再行提供。 销售出库单不是销售单据而是库存单据。

  •                 image.png


                                                            图3 销售单据通用插件

插件接口说明

以下供标准产品开发人员和二开人员参考,如果开发插件,请实现:

kd.bos.ext.scmc.operation.quote.plugin. IQuoteDataHadler

                    

方法名称

说明

beforeDoQuoteOperation

取到价格后回填前处理:例如:销售单据在这个时点处理的是税率的有效性判断

afterDoQuoteOperation

取到价格后回填后处理:例如:销售单据金额计算

参数名称

说明

BeforeDoQuoteEventArgs

cance:boolean    是否取消取价,设置成false,则取消取价

quoteDataEntity:Map<Long, Map<String, Object>>  取价返回结果

cancelMessage:String    取价取消时设置的异常信息

model : 表单对象

selectRows: int[] 参与取价的分录行号

AfterDoQuoteEventArgs

selectRows : int[]参与取价的分录行号

view: 页面对象

islistener: Boolean 是否启动监听,设置为false则关闭监听

 

 

取价方案配置如图参考

  • image.png



赞 5