如何實現(xiàn)階梯價(采購、銷售、提成等場景)?
? ? ? 在企業(yè)經(jīng)營活動中,經(jīng)常會遇到階梯價,比如采購單價隨采購量的不同而價格有所不同、產(chǎn)品銷售價隨銷售量及審批權(quán)限不同價格也有所不同、業(yè)務(wù)員銷售提成也會隨銷售量不同呈現(xiàn)階梯價等等應(yīng)用場景。
?思泉開發(fā)平臺可以很靈活地跟進企業(yè)的實際需求進行配置從而達到用戶需求。
?下面以產(chǎn)品銷售階梯價為例進行說明:
產(chǎn)品階梯價:每一種型號都有不同梯度的階梯價,有市場價、業(yè)務(wù)價、經(jīng)理價、副總價,在使用這個價格體系時,都會去判斷是屬于哪個數(shù)量梯度,價格會自動帶出來,業(yè)務(wù)員只會帶出業(yè)務(wù)員對應(yīng)梯度的價格出來,經(jīng)理只能看到經(jīng)理價以下的價格,副總級別才能看到副總價。是有的階梯價格都是統(tǒng)一在產(chǎn)品階梯價基礎(chǔ)資料里維護。

如果有產(chǎn)品迭代,會出現(xiàn)基礎(chǔ)型號相同的產(chǎn)品,產(chǎn)品代碼不同、規(guī)格型號相同的迭代產(chǎn)品,但是對于階梯價,新的迭代產(chǎn)品的階梯價需要維護,維護頻率和維護量太大了,于是通過產(chǎn)品同步程序上,加上根據(jù)基礎(chǔ)型號復(fù)制產(chǎn)品階梯價的處理邏輯。

輸入完產(chǎn)品后,需通過客戶、產(chǎn)品來自動讀取價格,讀取價格的優(yōu)先級是客戶報價>促銷價>產(chǎn)品階梯價,可以通過表單js事件來處理,處理代碼部分如下:
//數(shù)量改變后觸發(fā)獲取參考價格事件
function getProdPrice() ? {
????var ? qty = $(this).val(); ??//數(shù)量
????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);
}
?
//選擇產(chǎn)品之后觸發(fā)事件
function ? afterChooseProd(prodId, textValue, ctl) {
?? debugger;
????var ? tr = $(ctl).closest('tr');
????//清空后面的數(shù)量價格金額
????$(tr).find('[sname="SL"]').val('');
????$(tr).find('[sname="DBPrice"]').val('');
????$(tr).find('[sname="HSDJ"]').val('');
????$(tr).find('[sname="XJ"]').val('');
????//經(jīng)理價
????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";
????//經(jīng)理價 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));
}
當(dāng)業(yè)務(wù)員下單時,會根據(jù)訂單數(shù)量,自動帶出當(dāng)前階梯的階梯價出來作為參考價格,業(yè)務(wù)員只能看到業(yè)務(wù)員價,所以自動帶出的價格最低只能是業(yè)務(wù)員價的最后一個階梯價格,效果圖如下:

