добавить кнопку и обновить заказ на продажу, используя netsuite - PullRequest
0 голосов
/ 27 июня 2018

Я новичок в netsuite, мне нужно обновить заказ на продажу, добавив в него элемент, нажав кнопку. Я написал код для кнопки, используя сценарий событий пользователя, и код для обновления заказа, используя скрипт script. Но мой скрипт клиента не работает

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 * @NModuleScope SameAccount
 */
define(['N/currentRecord','N/record'],

function(record) {

     function buttonclick() {

            try{
                var CurrRecord = currentRecord.get();
                var recIdSO= CurrRecord.id;
                var salesOrder = record.load({
                        type: record.Type.SALES_ORDER,
                        id:recIdSO ,
                        isDynamic: true
                      });
                 log.debug({
                     title: 'recordid',
                     details: 'Id: ' + recIdSO
                 }); 

                    var line=salesOrder.selectNewLine({
                     sublistId: 'item'

                 });

                    salesOrder.setCurrentSublistValue({
                            sublistId : 'item',
                            fieldId : 'item',
                            value :510 ,
                            ignoreFieldChange: true
                        });

                    salesOrder.setCurrentSublistValue({
                        sublistId : 'item',
                        fieldId : 'amount',
                        value :100 ,
                        ignoreFieldChange: true
                    });

                    salesOrder.commitLine({
                         sublistId: 'item'
                     });
                     var recId = salesOrder.save();
                     log.debug({
                         title: 'Record updated successfully',
                         details: 'Id: ' + recId
                     });

            }catch (e) {

                         log.error({
                             title: e.name,
                             details: e.message
                         });
                     }


        }





    /**
     * Function to be executed after page is initialized.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.mode - The mode in which the record is being accessed (create, copy, or edit)
     *
     * @since 2015.2
     *
    function pageInit(scriptContext) {

    }

    /**
     * Function to be executed when field is changed.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     * @param {string} scriptContext.fieldId - Field name
     * @param {number} scriptContext.lineNum - Line number. Will be undefined if not a sublist or matrix field
     * @param {number} scriptContext.columnNum - Line number. Will be undefined if not a matrix field
     *
     * @since 2015.2
     *
    function fieldChanged(scriptContext) {

    }

    /**
     * Function to be executed when field is slaved.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     * @param {string} scriptContext.fieldId - Field name
     *
     * @since 2015.2
     *
    function postSourcing(scriptContext) {

    }

    /**
     * Function to be executed after sublist is inserted, removed, or edited.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @since 2015.2
     *
    function sublistChanged(scriptContext) {

    }

    /**
     * Function to be executed after line is selected.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @since 2015.2
     *
    function lineInit(scriptContext) {

    }

    /**
     * Validation function to be executed when field is changed.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     * @param {string} scriptContext.fieldId - Field name
     * @param {number} scriptContext.lineNum - Line number. Will be undefined if not a sublist or matrix field
     * @param {number} scriptContext.columnNum - Line number. Will be undefined if not a matrix field
     *
     * @returns {boolean} Return true if field is valid
     *
     * @since 2015.2
     *
    function validateField(scriptContext) {

    }

    /**
     * Validation function to be executed when sublist line is committed.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @returns {boolean} Return true if sublist line is valid
     *
     * @since 2015.2
     *
    function validateLine(scriptContext) {

    }

    /**
     * Validation function to be executed when sublist line is inserted.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @returns {boolean} Return true if sublist line is valid
     *
     * @since 2015.2
     *
    function validateInsert(scriptContext) {

    }

    /**
     * Validation function to be executed when record is deleted.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @param {string} scriptContext.sublistId - Sublist name
     *
     * @returns {boolean} Return true if sublist line is valid
     *
     * @since 2015.2
     *
    function validateDelete(scriptContext) {

    }

    /**
     * Validation function to be executed when record is saved.
     *
     * @param {Object} scriptContext
     * @param {Record} scriptContext.currentRecord - Current form record
     * @returns {boolean} Return true if record is valid
     *
     * @since 2015.2
     */
    function saveRecord(scriptContext) {




    }

 return {

        saveRecord: saveRecord,
        buttonclick:buttonclick
    };

});

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Ваш текущий пример почти верен.

Вам нужна пара вещей:

  1. сначала добавьте fireSlavingSync:true как свойство для всех ваших методов setCurrentLineItemValue. В противном случае Netsuite, возможно, не завершит обновление поля элемента к тому времени, как вы получите вызов commitLine.
  2. Я также хотел бы установить ignoreFieldChange:false.
  3. вам, вероятно, нужно установить уровень цены для позиции. В зависимости от вашей версии Netsuite вы можете просто установить собственный уровень цен:

    salesOrder.setCurrentSublistValue({ sublistId : 'item', fieldId : 'price', value :-1 , ignoreFieldChange: false, fireSlavingSync:true });

0 голосов
/ 28 июня 2018

/ ** * @NApiVersion 2.x * @NScriptType ClientScript * @NModuleScope SameAccount * / определить ([ 'N / currentRecord', 'N / запись'],

функция (currentRecord, запись) {

function pageInit(scriptContext) {

}

 function buttonclick() {
        try{
            var salesOrder = currentRecord.get();
            console.log(salesOrder)
            var recIdSO= salesOrder.id;

/ * var salesOrder = record.load ({ тип: record.Type.SALES_ORDER, id: recIdSO, isDynamic: правда }); / / console.log ('recordid' + recIdSO); * / /*log.debug ({ title: 'recordid', детали: 'Id:' + recIdSO }); * /

                var line=salesOrder.selectNewLine({
                 sublistId: 'item'

             });
                console.log('line'+ line);

                salesOrder.setCurrentSublistValue({
                        sublistId : 'item',
                        fieldId : 'item',
                        value :510 ,
                        ignoreFieldChange: true
                    });

                salesOrder.setCurrentSublistValue({
                    sublistId : 'item',
                    fieldId : 'amount',
                    value :100 ,
                    ignoreFieldChange: true
                });
                salesOrder.setCurrentSublistValue({
                    sublistId : 'item',
                    fieldId : 'taxcode',
                    value :-160 ,
                    ignoreFieldChange: true
                });

                salesOrder.commitLine({
                     sublistId: 'item'
                 });
                 var recId = salesOrder.save();
                 log.debug({
                     title: 'Record updated successfully',
                     details: 'Id: ' + recId
                 });

        }catch (e) {

            console.log('recordid'+ recIdSO);
                     /*log.error({
                         title: e.name,
                         details: e.message
                     });*/
                 }


    }

возврат {

     pageInit: pageInit,
    buttonclick:buttonclick
};

});

0 голосов
/ 27 июня 2018

AFAIK, если вы добавляете кнопки из клиентского скрипта, они доступны только в режиме EDIT, и вы пытаетесь загрузить ту же запись и обновить ее, это приведет к тому, что запись будет изменена в сообщении об ошибке в интерфейсе пользователя (также NetSuite не рекомендую это). Лучшим способом было бы использовать рабочие процессы для обновления записей. В рабочий процесс вы можете добавить кнопку, используя сам рабочий процесс, и по нажатию кнопки запустить ваш сценарий действия рабочего процесса, чтобы обновить позицию в Заказе. Здесь - это образец, к которому вы можете обратиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...