1

我正在学习 NetSuite,

我尝试存档的场景,在发票中,添加行项目时,如果项目描述包含“非 JP”,则添加税值“193”,否则添加其他税。

我的问题:

当用户选择或更改描述时如何获取行项目的描述。

我正在尝试执行自定义功能:

该函数将在以下位置执行:“POST SOURCING FUNCTION”

我的代码

if(scriptContext.sublistId == 'item' && subsidiary_id == 6){
                 var inv_type = objRecord.getText({fieldId:'custbody3'});
                 var inv_val;
                 for(var i=0;i<inv_type.length;i++){
                 val = inv_type[i];
                 log.debug({
            title: 'inv_type', 
            details: inv_type[i]
        });
                 console.log('inv_type',inv_type);
                 //inv_type = 'Service' || 'Subscription'
                if(inv_type[i] == 'Services');
            {

 var description="";
              //////If the Description contains Non JP set Tax Rate = 0
              if(description.contains("non JP"))
                {
                   objRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'taxcode',
                        value: 193,
                        ignoreFieldChange: true,
                        enableSourcing: true
                    });
                }
              //////If the Description contains Non JP set Tax Rate = 10
             if(description.contains("JP"))
                {
                    objRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'taxrate1',
                        value: 7,
                        ignoreFieldChange: true,
                        enableSourcing: true
                    });
                }
                }
            }
                }

我的完整脚本代码

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/record', 'N/log'],
    /**
     * @param {record} record
     */
    function (record, log) {
        /**
         * Defines the function that is executed after a sublist is inserted, removed, or edited.
         *
         * @param {Object} scriptContext
         * @param {Record} scriptContext.currentRecord - Current form record
         * @param {string} scriptContext.sublistId - 
         * @since 2015.2
         */
        function postSourcing(scriptContext) {
            try {
                var objRecord = scriptContext.currentRecord;
                var subsidiary_id = objRecord.getValue({fieldId:'subsidiary'});
                
                //Tax Calculation for China Subsidiary
                if(scriptContext.sublistId == 'item' && subsidiary_id == 5){
                 var inv_type = objRecord.getText({fieldId:'custbody3'});
                 var inv_val;
                 for(var i=0;i<inv_type.length;i++){
                 val = inv_type[i];
                 log.debug({
            title: 'inv_type', 
            details: inv_type[i]
        });
                 console.log('inv_type',inv_type);
                 //inv_type = 'Service' || 'Subscription'
                if(inv_type[i] == 'Services' || inv_type[i] == 'Subscription' || (inv_type[i] == 'Subscription' && (inv_type[i] =='Expenses' || inv_type[i] == 'Customer Summit Sponsor Fees')) || (inv_type[i] == 'Services' && (inv_type[i] == 'Expenses' || inv_type[i] == 'Customer Summit Sponsor Fees')) || (inv_type[i] == 'Services' && inv_type[i] == 'Expenses' && inv_type[i] == 'Customer Summit Sponsor Fees') || (inv_type[i] == 'Services' && inv_type[i] == 'Expenses' && inv_type[i] == 'Customer Summit Sponsor Fees' && inv_type[i] == 'Subscription' ) || (inv_type[i] == 'Subscription' && inv_type[i] == 'Expenses' && inv_type[i] == 'Customer Summit Sponsor Fees')){
                log.debug({title: 'inv_type1', details: inv_type[i]});
            
                    objRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'taxcode',
                        value: 52,
                        ignoreFieldChange: true,
                        enableSourcing: true
                    });
                    objRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'taxrate1',
                        value: 6,
                        ignoreFieldChange: true,
                        enableSourcing: true
                    });
//                    objRecord.commitLine('item');
                }
                if(inv_type[i] == 'Expenses' || inv_type[i] == 'Customer Summit Sponsor Fees') {
                
                log.debug({title: 'inv_type1', details: inv_type[i]});
            
                    objRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'taxcode',
                        value: 51,
                        ignoreFieldChange: true,
                        enableSourcing: true
                    });
                    objRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'taxrate1',
                        value: 0,
                        ignoreFieldChange: true,
                        enableSourcing: true
                    });
//                    objRecord.commitLine('item');
                }
            }
                }
                
                //Tax Calculation for Singapore Subsidiary
                
                if(scriptContext.sublistId == 'item' && subsidiary_id == 69){
                 var inv_type = objRecord.getText({fieldId:'custbody3'});
                 var inv_val;
                 for(var i=0;i<inv_type.length;i++){
                 val = inv_type[i];
                 log.debug({
            title: 'inv_type', 
            details: inv_type[i]
        });
                 console.log('inv_type',inv_type);
                 //inv_type = 'Service' || 'Subscription'
                if(inv_type[i] == 'Services' || (inv_type[i] == 'Subscription' && (inv_type[i] =='Expenses' || inv_type[i] == 'Customer Summit Sponsor Fees')) || (inv_type[i] == 'Services' && (inv_type[i] == 'Expenses' || inv_type[i] == 'Customer Summit Sponsor Fees')) || (inv_type[i] == 'Services' && inv_type[i] == 'Expenses' && inv_type[i] == 'Customer Summit Sponsor Fees') || (inv_type[i] == 'Services' && inv_type[i] == 'Expenses' && inv_type[i] == 'Customer Summit Sponsor Fees' && inv_type[i] == 'Subscription' ) || (inv_type[i] == 'Subscription' && inv_type[i] == 'Expenses' && inv_type[i] == 'Customer Summit Sponsor Fees')){
                log.debug({title: 'inv_type1', details: inv_type[i]});
            
                    objRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'taxcode',
                        value: 193,
                        ignoreFieldChange: true,
                        enableSourcing: true
                    });
                    objRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'taxrate1',
                        value: 7,
                        ignoreFieldChange: true,
                        enableSourcing: true
                    });
//                    objRecord.commitLine('item');
                }
                if(inv_type[i] == 'Expenses' || inv_type[i] == 'Customer Summit Sponsor Fees' || inv_type[i] == 'Subscription' ) {
                
                log.debug({title: 'inv_type1', details: inv_type[i]});
            
                    objRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'taxcode',
                        value: 192,
                        ignoreFieldChange: true,
                        enableSourcing: true
                    });
                    objRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'taxrate1',
                        value: 0,
                        ignoreFieldChange: true,
                        enableSourcing: true
                    });
//                    objRecord.commitLine('item');
                }
            }
                }
              
              
              
              
              
              //////////////////////Tax calculation for subsidiary 'Japan'
                    
                
                if(scriptContext.sublistId == 'item' && subsidiary_id == 6){
                 var inv_type = objRecord.getText({fieldId:'custbody3'});
                 var inv_val;
                 for(var i=0;i<inv_type.length;i++){
                 val = inv_type[i];
                 log.debug({
            title: 'inv_type', 
            details: inv_type[i]
        });
                 console.log('inv_type',inv_type);
                 //inv_type = 'Service' || 'Subscription'
                if(inv_type[i] == 'Services');
            {

 var description="";
              //////If the Description contains Non JP set Tax Rate = 0
              if(description.contains("non JP"))
                {
                   objRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'taxcode',
                        value: 193,
                        ignoreFieldChange: true,
                        enableSourcing: true
                    });
                }
              //////If the Description contains Non JP set Tax Rate = 10
             if(description.contains("JP"))
                {
                    objRecord.setCurrentSublistValue({
                        sublistId: 'item',
                        fieldId: 'taxrate1',
                        value: 7,
                        ignoreFieldChange: true,
                        enableSourcing: true
                    });
                }
                }
            }
                }
              /////////////////////////////////////End
           
                
                
                return true;
            } catch (e) {
                console.log("Error in validateLine : " + e);
                log.error('Error in validateLine', e);
            }
        }

        return {
            postSourcing: postSourcing
        };

    });

其他功能正常,

我只需要在日本部分(在评论中添加)获取订单项的描述,并根据描述设置税金。

4

1 回答 1

1

Create a custom column field and source that when the item is selected, so when you select the item automatically description will be populated. 在您的脚本中使用它来验证您的逻辑

在此处输入图像描述

于 2021-09-04T04:35:16.697 回答