1

私はNetSuiteを学んでいます。

私がアーカイブしようとしているシナリオ、請求書で、項目を追加するときに、項目の説明に「non 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

アイテムが選択されたときにカスタム列フィールドとソースを作成して、アイテムを選択すると自動的に説明が入力されるようにします。スクリプトでそれを使用して、ロジックを検証します

ここに画像の説明を入力

于 2021-09-04T04:35:16.697 に答える