1.业务场景一:合同订单选择产品,录入数量之后,含税单价自动根据定制的“价格表”带出
配置实现方法:在ld_related_producttoolfield 表中写入控制规则和查询SQL,然后清除缓存,刷新页面。
lid:自动增长
lmodulename:设置需要添加控制的模块
ltrigger_columnname:设置哪些字段改变时触可以发规则,多个字段使用英文逗号分隔。单据分录中的“产品名称”使用“hdnProductId”来表示,其他字段使用单据分录 ld_producttoolfield 表中对应的 columnname 来表示。
leffect_columnname:设置规则触发时,影响的字段(需要赋值的字段),多个字段使用英文逗号
lquery_sql:被影响字段赋值查询脚本:
SELECT
total AS taxprice
FROM ld_customform05 a
LEFT JOIN ld_customform05scf b ON b.customform05id=a.customform05id
WHERE a.deleted=0
AND a.product_id='{hdnProductId}'
AND b.cf_3321<='{quantity}'
AND b.cf_3322>='{quantity}'
ORDER BY b.cf_3321,b.cf_3322,a.modifiedtime DESC LIMIT 1
1) 查询脚本中变量引用方法: {触发字段}
2) 一定要把查询结果字段 AS 为 effect_columnname,查询结果只取一条记录
3) 该功能仅适用于V8.2.2及以上版本,或者在V8.2.1版本打相关的补丁包
2. 业务场景二:合同订单选择客户和产品后,根自动带出对应客户和产品的折扣
配置实现方法:在ld_related_producttoolfield 表中写入控制规则和查询SQL,然后清除缓存,刷新页面。
lModulename:SalesOrder
ltrigger_columnname:hdnProductId
leffect_columnname:discount_percent
lquery_sql:
SELECT
ROUND(b.discount_percent,3) AS discount_percent
FROM ld_quotes a
LEFT JOIN ld_quotesdetail b ON b.id=a.quoteid
WHERE a.deleted=0
AND a.approvestatus<>'已拒绝'
AND b.productid='{hdnProductId}'
AND a.accountid='{ld_salesorder.accountid}'
ORDER BY a.modifiedtime DESC LIMIT 1
3. 业务场景三:选择源单之后,根据源单分录明细带出上游单据的值。例如:发票选择合同,如果有关联源单则带出源单的单价,没有关联源单直接选择产品,则带入产品中的参考价。
配置实现方法:在ld_related_producttoolfield 表中写入控制规则和查询SQL,然后清除缓存,刷新页面。
lModulename:Invoice
ltrigger_columnname:
(1) hdnProductId:选定的产品ID
(2) hidden_lineitem_id:产品关联的源单明细的ID
(3) entitytype_module:源单的类型
leffect_columnname:taxprice
lquery_sql:
SELECT
CASE
WHEN '{hidden_lineitem_id}'>0 AND '{entitytype_module}'='SalesOrder' THEN
(SELECT ROUND(taxprice,2) FROM ld_salesorderdetail WHERE lineitem_id='{hidden_lineitem_id}')
ELSE
(SELECT ROUND(unit_price,2) FROM ld_products WHERE productid='{hdnProductId}')
END AS taxprice
4. 业务场景四:销售发票单据分录增加了客户名称字段,希望选择源单之后能够带出源单的客户名称。
lModulename:Invoice
ltrigger_columnname:
(1) hdnProductId:选定的产品ID
(2) selectSourceModuleid:选择的源单ID
leffect_columnname:
(1) line_accounts_id:客户ID
(2) line_accounts_id_name:客户名称
lquery_sql:
SELECT
a.accountid AS line_accounts_id,
b.accountname AS line_accounts_id_name
FROM ld_salesorder a
LEFT JOIN ld_account b ON b.accountid=a.accountid
WHERE a.salesorderid='{selectSourceModuleid}'