簡體   English   中英

如何只初始化記錄而不在SuiteScript中觸發“ validateline”功能?

[英]How to just initialize the record without trigger “validateline” function in SuiteScript?

NetSuite的發票記錄中有2個字段。

一個是poUnitCost字段,另一個是poTotalCost “字段。

poTotalCost的值等於poUnitCost乘以數量

公式:poTotalCost = poUnitCost x數量

創建記錄后,腳本將調用pageInit,后者會找到相應的字段並將其填充到發票記錄中。

但是,腳本不僅會觸發pageInit函數,還會觸發validateLine函數。

如何在創建記錄時僅觸發pageInit而不觸發validate函數?

代碼如下:

/**
 *@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
        }
    });

您無法停止子列表事件的觸發。 提交一行后, validateLine將觸發。 您將需要調整validateLine處理程序以在不希望其執行其正常邏輯的任何情況下返回true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM