欢迎光临散文网 会员登陆 & 注册

如何实现阶梯价(采购、销售、提成等场景)?

2020-11-30 17:05 作者:深圳思泉软件  | 我要投稿

      在企业经营活动中,经常会遇到阶梯价,比如采购单价随采购量的不同而价格有所不同、产品销售价随销售量及审批权限不同价格也有所不同、业务员销售提成也会随销售量不同呈现阶梯价等等应用场景。

 思泉开发平台可以很灵活地跟进企业的实际需求进行配置从而达到用户需求。

 下面以产品销售阶梯价为例进行说明:

产品阶梯价:每一种型号都有不同梯度的阶梯价,有市场价、业务价、经理价、副总价,在使用这个价格体系时,都会去判断是属于哪个数量梯度,价格会自动带出来,业务员只会带出业务员对应梯度的价格出来,经理只能看到经理价以下的价格,副总级别才能看到副总价。是有的阶梯价格都是统一在产品阶梯价基础资料里维护。


如果有产品迭代,会出现基础型号相同的产品,产品代码不同、规格型号相同的迭代产品,但是对于阶梯价,新的迭代产品的阶梯价需要维护,维护频率和维护量太大了,于是通过产品同步程序上,加上根据基础型号复制产品阶梯价的处理逻辑。


输入完产品后,需通过客户、产品来自动读取价格,读取价格的优先级是客户报价>促销价>产品阶梯价,可以通过表单js事件来处理,处理代码部分如下:

//数量改变后触发获取参考价格事件

function getProdPrice()   {

    var   qty = $(this).val();   //数量

    if   (qty == null || qty == '') {

        qty   = 0;

    }   else {

        qty   = parseInt(qty.replace(/,/g, ''));

    }

    var   custId = $('#KHMC').attr('idvalue');

    if   (custId == null || custId == '') {

        return;

    }

    var   tr = $(this).closest('tr');

    var   prodId = $(tr).find('[sname="CPMC"]').attr('idvalue');

    if   (prodId == null || prodId == '') {

        return;

    }

    var   sql = 'EXEC [UP_GET_PROD_PRICE] ' + prodId + ',' + custId + ',' + qty;

    var   url = '../siquan/Access.ashx';

    $.post(url,   { action: 'getvalue', sql: sql }, function (data) {

      debugger;

        $(tr).find('[sname="DBPrice"]').val(data);

        $(tr).find('[sname="HSDJ"]').val(data);

        $(tr).find('[sname="HJDJ"]').val(data);

        calculateMoney(tr);

    });

}

 

//修改含税单价事件

function changeHSDJ()   {

    var   tr = $(this).closest('tr');

    calculateMoney(tr);

}

 

//选择产品之后触发事件

function   afterChooseProd(prodId, textValue, ctl) {

   debugger;

    var   tr = $(ctl).closest('tr');

    //清空后面的数量价格金额

    $(tr).find('[sname="SL"]').val('');

    $(tr).find('[sname="DBPrice"]').val('');

    $(tr).find('[sname="HSDJ"]').val('');

    $(tr).find('[sname="XJ"]').val('');

    //经理价

    var   sql = 'select JG from CRM_JTJ where CPMC=' + prodId + ' and JTJMC=2';

    var   url = '../siquan/Access.ashx';

    $.post(url,   { action: 'getvalue', sql: sql }, function (data) {

        $(tr).find('[sname="DYJLJ"]').attr('vvv',   data);

    });

    //副总价

    sql   = 'select JG from CRM_JTJ where CPMC=' + prodId + ' and JTJMC=3';

    $.post(url,   { action: 'getvalue', sql: sql }, function (data) {

        $(tr).find('[sname="DYFZJ"]').attr('vvv',   data);

    });

}

 

//重新计算金额,比较价格

function   calculateMoney(tr) {

    var   qty = $(tr).find('[sname="SL"]').val();

 

    if   (qty == null || qty == '') {

        qty   = 0;

    }   else {

        qty   = parseInt(qty.replace(/,/g, ''));

    }

    var   dj1 = $(tr).find('[sname="HSDJ"]').val();

    if   (dj1 == null || dj1 == '') {

        dj1   = 0;

    }   else {

        dj1   = parseFloat(dj1.replace(/,/g, ''));

    }

    var   vvv = "2";

    //经理价 2  

    var   jlj = $(tr).find('[sname="DYJLJ"]').attr('vvv');

    if   (dj1 < jlj) { vvv = "1" };

    $(tr).find('[sname="DYJLJ"]').val(vvv);

    vvv   = "2";

    //副总价 3  

    var   fzj = $(tr).find('[sname="DYFZJ"]').attr('vvv');

    if   (dj1 < fzj) { vvv = "1" };

    $(tr).find('[sname="DYFZJ"]').val(vvv);

 

    var   dj2 = $(tr).find('[sname="XPDJ"]').val();

    if   (dj2 == null  || dj2 == '') {

        dj2   = 0;

    }   else {

        dj2   = parseFloat(dj2.replace(/,/g, ''));

    }

    $(tr).find('[sname="XJ"]').val(qty   * (dj1 + dj2));

}

当业务员下单时,会根据订单数量,自动带出当前阶梯的阶梯价出来作为参考价格,业务员只能看到业务员价,所以自动带出的价格最低只能是业务员价的最后一个阶梯价格,效果图如下:


如何实现阶梯价(采购、销售、提成等场景)?的评论 (共 条)

分享到微博请遵守国家法律