1. 解决问题
采购时的单位与销售时的单位不同,该怎么办?
例如:采购时是按千米单位采购的,销售时客户要买10米,这种情况下就需要在系统中做换算。
2. 应用场景
(1)利用自定义表单(有单据分录不选择产品的模块)定制计量单位组和计量单位。
图:计量单位组 单据页面
图:单位组 详情页面
图:单位组 编辑页面
(2)产品增加选择“计量单位组”功能,产品报价按照“基本计量单位”设置。
图:产品详情页面示例
(3)合同订单增加“下拉框”字段“销售计量单位”,并实现以下功能:
a. 选择产品后“销售计量单位”显示该产品计量单位组相应的计量单位明细
图:合同订单产品“销售计量单位”下拉框明细
b. 选择不同的“销售计量单位”自动根据设定的换算关系重算“含税单价”
图:单位不同,对应的单价不同
3. 配置方法
(1)在ld_related_producttoolfield 表中写入控制规则和查询SQL,清除缓存、刷新页面。
图:编辑页面
(2)表 ld_related_producttoolfield 字段说明
(1) id:自动增长 (2) modulename:设置需要添加控制的模块 (3) trigger_columnname:设置哪个/哪些字段改变时触可以发规则,多个字段使用英文逗号分隔。单据分录中的“产品名称”使用“hdnProductId”来表示,其他字段使用单据分录 ld_producttoolfield 表中对应的 columnname 来表示 (4) effect_columnname:设置规则触发时,影响的字段(需要赋值的字段),多个字段使用英文逗号 (5) query_sql:被影响字段赋值的查询SQL脚本。注意在编写 query_sql 时一定要将查询结果列对应的列 AS为 effect_columnname 字段中设置的相对应的列名 说明:支持多条规则
(3)配置方法说明
(1) 首先增加一条控制规则:实现选择产品之后“销售计量单位”下拉选项根据该产品的“计量单位组”显示。query_sql 如下: SELECT b.unit_name AS sf1622 FROM ld_products a LEFT JOIN ld_customform35detail b ON b.id=a.customform35_id WHERE a.productid='{hdnProductId}' ORDER BY b.is_basicunit DESC,b.sequence
(2) 再增加一条控制规则:实现选择“销售计量单位”之后重算产品的“含税单价”
SELECT CASE WHEN IFNULL(a.customform35_id,0)=0 OR IFNULL('{sf1622}','')='' THEN ROUND(a.unit_price,2) ELSE ROUND(a.unit_price*b.rate_tobasic,2) END AS taxprice FROM ld_products a LEFT JOIN ld_productcf c ON c.productid=a.productid LEFT JOIN ld_customform35detail b ON b.id=a.customform35_id WHERE a.productid='{hdnProductId}' AND ( CASE WHEN IFNULL(a.customform35_id,0)=0 OR IFNULL('{sf1622}','')='' THEN 1=1 ELSE b.unit_name='{sf1622}' END)
(3)附:“计量单位组”模块配置脚本 |