SuiteScript 2.x 在交易行项目上分配佣金选择

问题描述 投票:0回答:1

我正在开发销售订单和报价的 ClientScript。我添加了一个下拉选择交易行字段,以根据行项目的利润率选择佣金值。

对于每个行项目,获取金额成本估算并计算毛利润。如果毛利在一定范围内,就在佣金选择上设置这个值。

下面是我写的代码:

/**
 * @NApiVersion 2.1
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */

define(['N/currentRecord'], (currentRecord)=>{
    
    const CommLoad = (context)=>{
           var currRecord = context.currentRecord,
               lines = currRecord.getLineCount({ sublistId: 'item' });
         
         for(let i=0; i<lines; i++){
             
            const lineNum = currRecord.selectLine({ sublistId: 'item', line: i });
             
            var lAmnt = currRecord.getCurrentSublistValue({ sublistId: 'item', line: i, fieldId: 'amount'});
            var lCost = currRecord.getCurrentSublistValue({ sublistId: 'item', line: i, fieldId: 'costestimate'});
            var GP = Math.trunc(((lAmnt-lCost)/lAmnt)*100); GP = GP.toFixed(2);
            
            //console.log('line: '+i,'Amount: '+lAmnt,'Cost: '+lCost,'Gross Profit: '+GP);
            
            if (GP < 10.00) { 
                     currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 1
                      });
                     }
                     
                    if (GP >= 10.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 2
                      });
                     }
                     
                if (GP >= 15.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 3
                      });
                     }
                     
                    if (GP >= 20.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 4
                      });
                     }
                     
                     if (GP >= 25.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 5
                      });
                     }
                     
                     if (GP >= 30.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 6
                      });
                     }
                     
                     if (GP >= 35.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 7
                      });
                     }
                     
                     if (GP >= 40.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 8
                      });
                     }
                     
                     if (GP >= 45.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 9
                      });
                     }
                     
                 else { 
                  return true;
                }
            
         } //end for

         
    }
    

    
    const CommValidate = (context) =>{
          var currRecord = context.currentRecord,
              lines = currRecord.getLineCount({ sublistId: 'item' }),
              lineNum = currRecord.getCurrentSublistValue({ sublistId: 'item', fieldId: 'line' }),
              lAmnt = currRecord.getCurrentSublistValue({ sublistId: 'item', line: lineNum, fieldId: 'amount'}),
              lCost = currRecord.getCurrentSublistValue({ sublistId: 'item', line: lineNum, fieldId: 'costestimate'}),
             GP = Math.trunc(((lAmnt-lCost)/lAmnt)*100); GP = GP.toFixed(2);
            
            //console.log('line: '+lineNum,'Amount: '+lAmnt,'Cost: '+lCost,'Gross Profit: '+GP);
            

            if (GP < 10.00) { 
                     currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 1
                      });
                     }
                     
                    if (GP >= 10.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 2
                      });
                     }
                     
                if (GP >= 15.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 3
                      });
                     }
                     
                    if (GP >= 20.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 4
                      });
                     }
                     
                     if (GP >= 25.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 5
                      });
                     }
                     
                     if (GP >= 30.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 6
                      });
                     }
                     
                     if (GP >= 35.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 7
                      });
                     }
                     
                     if (GP >= 40.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 8
                      });
                     }
                     
                     if (GP >= 45.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 9
                      });
                      
                     }
                     
                     
            
    }
    
        const CommFChange = (context) =>{

                     
        }
     
        
    return {
        pageInit: CommLoad, 
        validateLine: CommValidate,
        fieldChanged: CommFChange
    };
    
});

该脚本在 pageInit 上完美运行,当订单项加载时,任何没有佣金值的订单项都将被分配一个。

我现在在 validateLine 上遇到问题,我可以更新费率,甚至添加新项目,变量将计算并分配佣金值,但我无法离开订单项,我可以继续按“添加”或“确定”,它不会带我去任何地方。

我确实尝试在语句中甚至在语句之外添加 commitLine,但我收到了此错误:RangeError 超过最大调用堆栈大小

netsuite suitescript2.0 clientscript
1个回答
0
投票

看起来在我的 validateline 函数的末尾,我需要添加一个 return true。

添加后,我能够弹到物品上并四处走动。奇迹般有效。再次感谢氪!

/**
 * @NApiVersion 2.1
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */

define(['N/currentRecord','N/record'], (currentRecord,record)=>{
    
    const CommLoad = (context)=>{
           var currRecord = context.currentRecord,
               lines = currRecord.getLineCount({ sublistId: 'item' });
         
         for(let i=0; i<lines; i++){
             
            const lineNum = currRecord.selectLine({ sublistId: 'item', line: i });
             
            var lAmnt = currRecord.getCurrentSublistValue({ sublistId: 'item', line: i, fieldId: 'amount'});
            var lCost = currRecord.getCurrentSublistValue({ sublistId: 'item', line: i, fieldId: 'costestimate'});
            var GP = Math.trunc(((lAmnt-lCost)/lAmnt)*100); GP = GP.toFixed(2);
            
            //console.log('line: '+i,'Amount: '+lAmnt,'Cost: '+lCost,'Gross Profit: '+GP);
            
            if (GP < 10.00) { 
                     currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 1
                      });
                     }
                     
                    if (GP >= 10.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 2
                      });
                     }
                     
                if (GP >= 15.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 3
                      });
                     }
                     
                    if (GP >= 20.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 4
                      });
                     }
                     
                     if (GP >= 25.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 5
                      });
                     }
                     
                     if (GP >= 30.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 6
                      });
                     }
                     
                     if (GP >= 35.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 7
                      });
                     }
                     
                     if (GP >= 40.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 8
                      });
                     }
                     
                     if (GP >= 45.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: i,
                          fieldId: 'custcol3',
                          value: 9
                      });
                     }
                     
            
         } //end for

         
    }
    

    
    const CommValidate = (context) =>{
          var currRecord = context.currentRecord,
              lineNum = currRecord.getCurrentSublistValue({ sublistId: 'item', fieldId: 'line' }),
              lAmnt = currRecord.getCurrentSublistValue({ sublistId: 'item', line: lineNum, fieldId: 'amount'}),
              lCost = currRecord.getCurrentSublistValue({ sublistId: 'item', line: lineNum, fieldId: 'costestimate'}),
             GP = Math.trunc(((lAmnt-lCost)/lAmnt)*100); GP = GP.toFixed(2);
            
            //console.log('line: '+lineNum,'Amount: '+lAmnt,'Cost: '+lCost,'Gross Profit: '+GP);
            

            if (GP < 10.00) { 
                     currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 1
                      });
                     }
                     
                    if (GP >= 10.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 2
                      });
                     }
                     
                if (GP >= 15.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 3
                      });
                     }
                     
                    if (GP >= 20.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 4
                      });
                     }
                     
                     if (GP >= 25.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 5
                      });
                     }
                     
                     if (GP >= 30.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 6
                      });
                     }
                     
                     if (GP >= 35.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 7
                      });
                     }
                     
                     if (GP >= 40.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 8
                      });
                     }
                     
                     if (GP >= 45.00) { 
                      currRecord.setCurrentSublistValue({
                          sublistId: 'item',
                          line: lineNum,
                          fieldId: 'custcol3',
                          value: 9
                      });
                      
                     }
                     
                     return true;
        
    }
    
    const CommFChange = (context) =>{ 
    
    }
        
    return {
        pageInit: CommLoad, 
        validateLine: CommValidate,
        fieldChanged: CommFChange
    };
    
});
© www.soinside.com 2019 - 2024. All rights reserved.