请输入
菜单

实现根据负责人控制产品最低限价

下载
业务需求:比如总经理组是可以修改低于产品里的价格,销售组没权限修改低于的价格 但是可以改高价格

 

解决方案(以合同订单为例):
1、单据分录增加一个字段“单价”类型的字段“最低限价”,并设置为不可编辑

 

2、查询新增加字段的列名
SELECT *FROM ld_producttoolfield WHERE tabid=22 AND presence<>1

 

3、把“最低限价”根据“负责人”控制的规则写入控制表:ld_related_producttoolfield
这里以用户“职位级别”为“”做控制为例:
SET @query_sql="SELECT
        CASE
                WHEN userlevel='总经理' THEN 0
                ELSE (SELECT ROUND(unit_price,2)  FROM ld_products WHERE productid='{hdnProductId}')
        END AS sf1687
FROM ld_users
WHERE id='{ld_salesorder.smownerid}'";

 

INSERT INTO ld_related_producttoolfield(modulename,trigger_columnname,effect_columnname,query_sql)
SELECT 'SalesOrder','hdnProductId','sf1687',@query_sql FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM ld_related_producttoolfield WHERE modulename='SalesOrder' AND trigger_columnname='hdnProductId' AND effect_columnname='sf1687');

 

说明:
1、职位级别=总经理取 表示不限制加个,其他情况下取产品的“参考价”
2、红色部分的内容需要根据模块和“最低限价”字段修改
 
4、插入验证规则控制单据分录“含税单价”不能低于“最低限价”(目前验证规则没有放开单价字段的设置,暂时通过脚本写入验证规则)
SET @module='SalesOrder';
SET @columnname='sf1687';
SET @rule_name='含税单价不允许低于最低限价';
SET @rule_tip="第{line}行『含税单价』必须高于『最低限价』";
INSERT INTO `ld_validatasave` (`module`,`relatedtable`,`fieldname`,`comparator`,`formulavalue`,`comparatordescription`,`rulename`,`status`,`validatacheckbutton`,`allowsave`,`tipzh`,`tipen`, `funtype`, `fungroupdbcolumns`, `fungrouphiddencolumns`,`sequence`,`validatasavetype`,`isshowlist`)
SELECT @module,'ld_producttoolfield','taxprice','h',NULL,NULL,@rule_name,'active','create,edit','no',@rule_tip,@rule_tip,NULL,NULL,NULL,'1','php','no' FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM ld_validatasave WHERE module=@module AND rulename=@rule_name AND fieldname='taxprice');

 

SET @id=(SELECT id FROM ld_validatasave WHERE module=@module AND rulename=@rule_name AND fieldname='taxprice' LIMIT 1);
INSERT INTO `ld_validatasavedetail` (`relateid`,`relatefieldname`, `sequence`, `relatedtable`)
SELECT @id,@columnname,1,'ld_producttoolfield' FROM DUAL
WHERE NOT EXISTS (SELECT 1 FROM ld_validatasavedetail WHERE relateid=@id AND relatefieldname=@columnname)
        AND @id>0;

 

说明:红色部分的内容需要根据模块和“最低限价”字段修改
 
5、清除缓存,验证规则:
最近修改: 2025-01-15