模拟报价已经提供了丰富的子项物料的取价来源,但是在具体的客户场景中可能还会有些特殊的取价来源,这时候可以通过增加自定义取价来源的方式来实现。
具体的实现步骤如下:
一、首先二开新增一个取价类,按业务的实际需求实现取价功能,继承自 kd.scmc.sm.business.domainservice.getpriceplugin.AbstractGetPricePlugin 并重写 getPriceData方法。
参数说明: List<GetPriceMaterialData> 待取价的子项物料信息列表
子项物料信息的详细属性:
priceMaterialData.getPKId(); 主键,后续会通过这个匹配取到的价格
priceMaterialData.getMaterialId(); 子项物料业务信息ID
priceMaterialData.getMaterialMasterId(); 子项物料的主ID
priceMaterialData.getAuxPtyId(); 物料辅助属性
priceMaterialData.getOrgId(); 物料供应组织ID
priceMaterialData.getCurrencyId(); 币别
priceMaterialData.getUnitId(); 单位
priceMaterialData.getBaseUnitId(); 基本单位
priceMaterialData.getQty(); 数量
priceMaterialData.getBaseQty(); 基本单位数量
返回值:Map<Long, GetPriceResultData> 获取的价格集合
Long: 对应参数的getPKId()
GetPriceResultData:价格结果,具体属性如下:
priceResultData.setPriceSrcEntityKey("sm_salorder"); //价格来源单据实体标识
priceResultData.setPriceSrcBillId(1001L); //价格单据来源单据ID
priceResultData.setPriceSrcEntryId(100101L); //价格单据来源单据分录ID
priceResultData.setPKId(priceMaterialData.getPKId()); //主键
priceResultData.setCurrencyId(1); //价格的币别
priceResultData.setPriceUnitId(101); //价格的单位
priceResultData.setPrice(BigDecimal.valueOf(100)); //单价
priceResultData.setTaxPrice(BigDecimal.valueOf(113)); //含税单价
priceResultData.setTaxRate(BigDecimal.valueOf(13)); //税率
示例代码如下:
二、在开发平台新增自定义的取价来源
2.1 增加模拟报价取价来源类型
供应链—>销售管理-->销售报价-->模拟报价取价来源类型
增加一取价来源类型,实现类为刚才新增的取价类
2.2 增加模拟报价取价来源
供应链—>销售管理-->销售报价-->模拟报价取价来源
增加模拟报价子项的取价来源,确定上面新增的取价类型适用于材料取价还是委外取价,自制件取价
三、模拟报价向导取价
以上设置完成后,就可以在模拟报价向导中,选择新增的自定义取价来源进行取价
推荐阅读