1/9用友股份-LE支持服务业务本部产品方案--《将价目表价格作为预订单最低价的设置方法》建立日期:2013-08-01修改日期:xxxx-xx-xx文档属性:客户文控编号:LE-DY-CP-2013-06912/9文档控制创建记录适用范围审阅人日期审阅签字所属部门发布范围内部员工伙伴客户发布人姓名所属部门发布时间日期作者所属部门邮件地址版本2013-08-01刘嘉亮产品支持部V1.0版本领域模块备注3/9目录将价目表价格作为预订单最低价的设置方法........................................................4一、问题背景:........................................................................................................4二、解决方案:........................................................................................................4三、操作步骤:........................................................................................................5(一)预订单...........................................................................................................5(二)销售订单.........................................................................................................74/9将价目表价格作为预订单最低价的设置方法一、问题背景:项目应用中,在预订单或者销售订单时开启了询价参数,填写价格时,希望对价格做一个控制,使得填写的价格不能低于价目表中询出的价格。这样的需求,实际是将价目表价格作为了一个底线:高于价目表中定义的价格的,可以继续业务;低于价目表中定义的价格,不允许业务继续进行。目前,可以通过配置模板公式从产品层面解决这个问题。二、解决方案:本方案基于56产品。其他版本中,只要表体中有下文用到的相关字段,也可以尝试。思路为:如果当前录入的价格高于价目表价格,则保持当前价格;如果当前录入的价格低于价目表价格,则取价目表价格。使用单据模版公式中提供的IIF函数实现。注意到预订单的表体字段中,有“原币无税单价(noriginalcurprice)”、“原币含税单价(noriginalcurtaxprice)”、“报价单位无税单价(nqtorgprc)”、“报价单位含税单价(nqtorgtaxprc)”、“价目表ID(cpriceitemtable)”等字段,括号中的是该字段的项目主键。5/9如果预订单匹配了价目表,则系统会将询到的价格置到“报价单位无税单价”、“报价单位含税单价”等报价单位相关字段上去。所以,可以将这些字段作为判断条件,将录入的价格与这些字段做比较。销售订单的表体字段中,有“无税单价(noriginalcurprice)”、“含税单价(noriginalcurtaxprice)”、“主计量询价无税单价(nqtorgprc)”、“主计量询价含税单价(nqtorgtaxprc)”、“税率(ntaxrate)”、“价目表ID(cpriceitemtable)”等字段。如果销售订单匹配上了价目表,则会根据SA02参数的不同而将询到的价格置入到“主计量询价无税单价”或者“主计量询价含税单价”字段中。这是,必须对这两个字段中确实的价格项进行补齐,然后就可以将“无税单价”和“含税单价”与“主计量询价无税单价”和“主计量询价含税单价”字段进行比较。这中间需要注意的一个问题就是当存货没有定义价目表或者没有开启预订单询价时,价格项应该保持当前输入值,没有比较的环节。三、操作步骤:(一)预订单1、在“原币无税单价”字段添加编辑公式原币无税单价的编辑公式中配置:iif(cpriceitemtable==null,noriginalcurprice,iif(noriginalcurprice>=nqtorgprc,noriginalcurprice,nqtorgprc))6/9含义为,先判断是否匹配了价目表,当价目表id值为“null”时,认为没有匹配价目表或者没有开启预订单询价,则保持当前输入值不变;否则判断原币无税单价是否大于等于报价单位无税单价字段,如果大于等于,则保持当前输入的字段值,如果小于,则将原币无税单价字段赋值为报价单位无税单价的值。2、在“原币含税单价”字段添加编辑公式同理,原币含税单价的编辑公式中配置:iif(cpriceitemtable==null,noriginalcurtaxprice,iif(noriginalcurtaxprice>=nqtorgtaxprc,noriginalcurtaxprice,nqtorgtaxprc))其公式含义与无税单价字段完全相同,只是相应字段都更改为含税相关。7/93、使用要求由于将公式写在了“原币无税单价”和“原币含税单价”字段的编辑公式中,所以如果希望公式生效,必须手动编辑这两个字段才能看出效果。编辑其他字段(比如“原币无税净价”等),系统也会根据价格关系反算出“原币无税单价”和“原币含税单价”,但是由于这时公式没能触发,所以不能达到将询到的价格作为最低价格的要求。这一点需要注意。(二)销售订单1、在“无税单价”字段添加编辑公式编辑公式中配置如下公式:8/9nqtorgprc->iif(getcolvalue2(pub_sysinit,value,initcode,"SA02",pk_org,"1001")=="Y",nqtorgtaxprc/(1+ntaxrate/100),nqtorgprc);nqtorgtaxprc->iif(getcolvalue2(pub_sysinit,value,initcode,"SA02",pk_org,"1001")=="N",nqtorgprc*(1+ntaxrate/100),nqtorgtaxprc);iif(cpriceitemtable==null,noriginalcurprice,iif(noriginalcurprice>nqtorgprc,noriginalcurprice,nqtorgprc))销售订单询价结果根据参数SA02(是否计价含税、含税优先)的不同,取到的询价后的价格,会置入到不同的表体询价结果字段中。当SA02=Y时,询价后价格会置入表体“主计量询价无税单价”字段;当SA02=N时,询价后价格置入表体“主计量询价含税单价”字段中。这样,我们为了达到能够将“无税单价”和“含税单价”字段都可以与寻到的价格进行比较,有必要人为的将“主计量询价无税单价”和“主计量询价含税单价”字段补齐。上述公式中的前两条公式语句就是这个作用。第三个语句是控制无税单价不能低于寻到的价格表价格。2、在“含税单价”字段添加编辑公式编辑公式中填入如下公式:9/9nqtorgprc->iif(getcolvalue2(pub_sysinit,value,initcode,"SA02",pk_org,"1001")=="Y",nqtorgtaxprc/(1+ntaxrate/100),nqtorgprc);nqtorgtaxprc->iif(getcolvalue2(pub_sysinit,value,initcode,"SA02",pk_org,"1001")=="N",nqtorgprc*(1+ntaxrate/100),nqtorgtaxprc);iif(cpriceitemtable==null,noriginalcurtaxprice,iif(noriginalcurtaxprice>nqtorgtaxprc,noriginalcurtaxprice,nqtorgtaxprc))含义与“无税单价”字段相同。3、使用要求与预订单的使用要求相同。由于公式写在了“无税单价”和“含税单价”字段上,所以,如果希望单价不得低于价目表价格,必须手工编辑这两个字段才有效果。编辑其他价格字段,反算出“无税单价”和“含税单价”时,不能实现将价目表价格作为销售最低价的需求。此处需要注意。