模拟报价向导自定义单价来源二开案例
模拟报价向导默认包含很多取价来源,但不管标准产品如何迭代始终满足不了所有客户的取价要求,比如有些客户想取二开单据上的单价,这种标准功能默认肯定是获取不到的,不过标准产品预留了支持部分二开取价的条件。如果客户有开发人员可参阅本帖子干预模拟报价向导的取价逻辑,本文演示从采购价目表中取最大单价。
首先扩展模拟报价向导,在外购材料单价来源里面追加个自定义单价来源,名称可自行修改,枚举编码值要对应到后面的数据库添加语句中的编码,如下图1-1所示:
图1-1
创建C#类库项目,添加一个继承至AbstractGetPrice 的子类,重写其中的GetMaterialPrice方法(这里演示的类库是 Kingdee.K3.SCM.Custom.Lib,子类名是SimulateQuoteCustomPrice,这些类名可以修改但要对应到后面的SQL语句中的插件字段值),这里是源代码文件:
,二开代码里面最重要的逻辑是要给临时表中的四个相关字段赋值,如下图1-2所示:图1-2
由于历史原因,模拟报价向导和模拟报价单上的单价来源字段的控件类型是不一样的,模拟报价向导是用下拉列表而模拟报价单用了基础资料,所以除了在上图1-1中要追加自定义枚举值外,还要向基础资料'模拟报价取价来源'对应的表添加一行记录,向数据库中执行以下类似的SQL语句:
INSERT INTO T_SAL_SIMPRICESOURCE(FID, FNUMBER, FDOCUMENTSTATUS, FFORBIDSTATUS, FPLUGIN, FSYSPRESET, FSOURCETYPE, FRAWPRICESOURCE, FSUBPRICESOURCE, FSELFMADEPRICESOURCE, FAPPROVERID, FAPPROVEDATE, FASSISTPRICESOURCE) VALUES(10001, 'CUSTOMRAWPRICE001', 'C', 'A', ' Kingdee.K3.SCM.Custom.Lib.SimulateQuoteCustomPrice,Kingdee.K3.SCM.Custom.Lib', '0', 'RAW', 'CUST001', ' ', ' ', 0, NULL, '') INSERT INTO T_SAL_SIMPRICESOURCE_L(FPKID, FID, FLOCALEID, FNAME) VALUES(1100, 10001, 2052, '我的自定义单价(演示了从采购价目表中取最高价)')
这里对表 T_SAL_SIMPRICESOURCE 的相关字段做个解释:自定义取价的FID字段建议用10000以上的,标准功能会占用1万以内的,FPLUGIN字段是自定义插件的全局命名空间类名,FSOURCETYPE字段目前只支持三种值(RAW, SUB, SELFMADE),其中RAW为外购件, SUB为委外件,SELFMADE为自制件,标准功能将通过FSOURCETYPE字段值动态地从FRAWPRICESOURCE, FSUBPRICESOURCE, FSELFMADEPRICESOURCE三个字段中读取二开取价编码相同的插件。举个例子,如果表T_SAL_SIMPRICESOURCE中的FSOURCETYPE字段值为SUB,且模拟报价向导中有个自定义的委外取价来源CUST111,则取FSUBPRICESOURCE字段值为CUST111的那条记录中的PLUGIN作为取价逻辑。
执行模拟报价向导,选择一个物料,配置外购件取价来源为二开的单价,如下图2-1所示:
图2-1
下图2-2,2-3是向导生成的模拟报价单和采购价目表上的相关单价截图,可以看到此时的取价逻辑是不依赖于价目表中的从和至数量的,也不依赖单位,它只取价目表的最高价。
图2-2
图2-3
写在最后:
标准功能由于历史原因,最开始只关注外购,委外,自制件,因此模拟报价向导中的'自定义维度设置'不支持二开干预,另外如果想携带物料清单中的自定义字段值到模拟报价单中的二开字段上,目前也是没有地方可以二开干预的,对于这种二开需求,建议不要在模拟报价向导中干预,可选择在生成后的模拟报价单中二开插件实现。
模拟报价向导自定义单价来源二开案例
本文2024-09-23 02:47:07发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-154681.html