灵当CRM

 找回密码
 立即注册
查看: 3460|回复: 0

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

[复制链接]

1662

主题

1711

帖子

5万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
59960
 楼主| 发表于 2022-6-27 17:02:17 | 显示全部楼层 |阅读模式
业务需求:比如总经理组是可以修改低于产品里的价格,销售组没权限修改低于的价格 但是可以改高价格

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

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

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、职位级别=总经理取 0 表示不限制加个,其他情况下取产品的“参考价”
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、清除缓存,验证规则:
图片6.png


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

灵当CRM

GMT+8, 2024-4-30 04:18 , Processed in 0.055031 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2008-2022, Tencent Cloud.

沪ICP备08110973号-2

快速回复 返回顶部 返回列表