Как просто инициализировать запись без триггера «validateline» в функции SuiteScript? - PullRequest
0 голосов
/ 30 ноября 2018

В записи счета-фактуры NetSuite есть 2 поля.

Одно поле poUnitCost , другое поле poTotalCost".

Значение poTotalCost равно poUnitCost умножить количество .

( Формула: poTotalCost = poUnitCost x количество )

После создания записи скрипт вызовет pageInit, который найдет соответствующие поля и заполнит их в записи счета-фактуры.

Однако скрипт не только запускаетфункция pageInit, а также функция validateLine.

Как просто вызвать pageInit при создании записи, не вызывая функцию проверки?

Код выглядит следующим образом:

/**
 *@NApiVersion 2.x
 *@NScriptType ClientScript
 */
define(['N/currentRecord', 'N/record', 'N/search'],
    function (currentRecord, record, search) {

        function pageInit(context) {
            console.log('inside pageinit function');

            var rec = context.currentRecord;
            var createdFromID = rec.getValue({
                fieldId: 'createdfrom'
            });
            var so_record = record.load({
                type: record.Type.SALES_ORDER,
                id: createdFromID
                // isDynamic: true
            });

            var inv_lines = rec.getLineCount({
                sublistId: 'item'
            });

            for (var i = 0; i < inv_lines; i++) {
                var soLineID = rec.getCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'so_line_id_in_Inv',
                    line: i
                });

                // Find the index of line whose 'custcol_so_line_id' field is soLineIDINV
                var soLineNumber = so_record.findSublistLineWithValue({
                    sublistId: 'item',
                    fieldId: 'so_line_id_in_SO',
                    value: soLineID
                });

                var poUnitCost = so_record.getSublistValue({
                    sublistId: 'item',
                    fieldId: 'unit_cost_in_SO',
                    line: soLineNumber
                });

                rec.setCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'unit_cost_in_Inv',
                    value: poUnitCost,
                    line: i
                    // fireSlavingSync: true
                });

                var lineQty = rec.getCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'quantity',
                    line: i
                });

                var poTotalCost = lineQty * poUnitCost;

                rec.setCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'total_cost_in_Inv',
                    value: poTotalCost,
                    line: i
                    // fireSlavingSync: true
                });
            }
            return true;
        }

        function validateLine(context) {
            console.log('inside validateLine function');

            var rec = context.currentRecord;
            var sublistName = context.sublistId;

            if (sublistName == 'item') {
                var poUnitCost = rec.getCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'unit_cost_in_Inv',
                });

                var lineQty = rec.getCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'quantity',
                });

                var poTotalCost = lineQty * poUnitCost;

                rec.setCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'total_cost_in_Inv',
                    value: poTotalCost
                    // fireSlavingSync: true
                });
            }
            return true;
        }

        return {
            pageInit: pageInit,
            validateLine: validateLine
        }
    });

1 Ответ

0 голосов
/ 30 ноября 2018

Вы не можете остановить запуск событий подсписка.Когда линия зафиксирована, validateLine сработает.Вам потребуется настроить обработчик validateLine, чтобы он возвращал true в любых ситуациях, когда вы не хотите, чтобы он выполнял свою обычную логику.

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