思泉軟體開發平臺如何實現階梯價(採購、銷售、提成等場景)?

leiwencheng發表於2020-11-26

在企業經營活動中,經常會遇到階梯價,比如採購單價隨採購量的不同而價格有所不同、產品銷售價隨銷售量及審批許可權不同價格也有所不同、業務員銷售提成也會隨銷售量不同呈現階梯價等等應用場景。

  思泉開發平臺可以很靈活地跟進企業的實際需求進行配置從而達到使用者需求。

  下面以產品銷售階梯價為例進行說明:

  產品階梯價: 每一種型號都有不同梯度的階梯價,有市場價、業務價、經理價、副總價,在使用這個價格體系時,都會去判斷是屬於哪個數量梯度,價格會自動帶出來,業務員只會帶出業務員對應梯度的價格出來,經理只能看到經理價以下的價格,副總級別才能看到副總價。是有的階梯價格都是統一在產品階梯價基礎資料裡維護。

如果有產品迭代,會出現基礎型號相同的產品,產品程式碼不同、規格型號相同的迭代產品,但是對於階梯價,新的迭代產品的階梯價需要維護,維護頻率和維護量太大了,於是透過產品同步程式上,加上根據基礎型號複製產品階梯價的處理邏輯。

  輸入完產品後,需透過客戶、產品來自動讀取價格,讀取價格的優先順序是客戶報價 > 促銷價 > 產品階梯價,可以透過表單 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));

}

  當業務員下單時,會根據訂單數量,自動帶出當前階梯的階梯價出來作為參考價格,業務員只能看到業務員價,所以自動帶出的價格最低只能是業務員價的最後一個階梯價格,效果圖如下:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22737988/viewspace-2737065/,如需轉載,請註明出處,否則將追究法律責任。

相關文章