下面介绍一下开发定价条件来源的步骤:
1、往PRM_PRICECONDITIONSOURCE中插一条记录,现在说明一下这个表中一些比较关键的字段:
- VCODE、VNAME:定价条件来源的编码和名称,这个是可以根据自己的需求随意设置,但是不同记录之间的编码和名称不要发生重复。
- FCONDITIONATTRIBUTEFLAG:条件来源属性,这个字段有三个枚举值:0、参照选择;1、任意输入;2、函数,表示取比较来源值的方法。
- FCONDITIONTYPEFLAG:条件取值类型,有三个枚举值:0、直接折扣;1、直接加价;2、条件比较。
- VCLASSNAME:条件来源值计算类名,这个类必须要实现nc.pubitf.price.pricecondition.IPriceConditionSrcCal接口,这个类是用来计算参与定价条件比较的来源值的。但是当FCONDITIONTYPEFLAG这个字段的值为0(直接折扣)或1(直接加价)时,由于不用进行定价条件比较所以这个字段的值可以是空的。
- VREFNAME:参照名称,只有FCONDITIONATTRIBUTEFLAG(来源属性)的值为0(参照选择)才需要填写这个字段。这个字段的值是使用的参照的名称,比如物料、客户档案等等。
- VCOMOPERATOR:比较符列表,当FCONDITIONTYPEFLAG这个字段的值为0(直接折扣)或1(直接加价)时由于不用进行定价条件比较这个字段的值也可以为空,目前比较符最多只支持=、>、>=、!=、<、<=,不支持其他比较符,在做数据的时候如果比较符有多个,比较符之间有逗号分隔,在前台界面显示的时候会对这个字符串进行解析并且把所有比较符显示在一个待选下拉框中。
2、开发条件比较来源值计算类,上面已经介绍过了如果FCONDITIONTYPEFLAG这个字段的值为0(直接折扣)或1(直接加价),不需要开发条件比较来源值计算类,可以跳过这一步。
条件比较来源值计算类要实现nc.pubitf.price.pricecondition.IPriceConditionSrcCal接口,下面是一个简单的代码示例:
package nc.bs.price.pricecondition.rule;
import nc.pubitf.price.pricecondition.IPriceConditionSrcCal;
import nc.vo.price.pub.entity.FindPriceParaVO;
public class NumberPriceCondSrcCal implements IPriceConditionSrcCal {
@Override
public Object calculateSourceValue(FindPriceParaVO findPriceParaVO) {
return findPriceParaVO.getNnum();
}
}
上面的代码非常的简单,功能就是直接把询价参数findPriceParaVO(询价参数已经传进来了二开时不用关心)中数量当作条件比较源值。客户的实际需求可能比这复杂很多,可以在calculateSourceValue方法中按实际需求根据询价参数传递进来的信息编写自己的计算逻辑。
3、扩展接口算法如果需要用到销售订单常规询价使用字段之外其他字段,比如单据自定义项,注册完成二次开发接口后,需要实施人员进行如下操作:
- 在“应用管理平台—开发配置工具—参数模板设置”节点,选择“供应链销售价格”,将参数“SA09传递单据所有数据项进行询价”设置为“是”。
- 在“动态建模平台—基础数据—参数设置”节点,将询价销售组织的“SA09”参数值设置为“是”。