代码之家  ›  专栏  ›  技术社区  ›  skyline

如何在SuiteScript中仅初始化记录而不触发“validateline”函数?

  •  0
  • skyline  · 技术社区  · 6 年前

    NetSuite的发票记录中有2个字段。

    一个是 手续费 字段,另一个是 波托塔尔科斯特 “外地。

    价值 波托塔尔科斯特 等于 手续费 .

    ( 公式:poTotalCost=磅成本x数量

    创建记录后,脚本将调用pageInit,找到相应的字段并将其填充到发票记录中。

    如何在创建记录时只触发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
            }
        });
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   erictgrubaugh    6 年前

    无法阻止子列表事件触发。当一行被提交时, validateLine 我会开枪的。你需要调整你的工作 验证线 返回的处理程序 true 在您不希望它执行其正常逻辑的任何情况下。