如何操作上的NetSuite在beforeLoad functioni记录?

问题描述 投票:0回答:1

目前,我们有一个SO订单(SO),点击“落船”按钮后,页面会直接到另一个页面创建一个Pruchase订单(PO)。

Becasue如果值在pageInit阶段抓起,它的成本多少时间显示记录(更多的项目更多的时间它的成本)。

因此,我们希望得到所以一些值,然后把它放在PO的befordLoad函数内。但我碰到一些麻烦的语法因此不能肯定是否是可行的NetSuite的。

我的脚本如下:

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

        function beforeLoad(context) {

            var rec = record.create({
                type: record.Type.PURCHASE_ORDER,
                isDynamic: true
            });

            var rec = context.newRecord;

            // var createdFromID = rec.getValue({
            //     fieldId: 'createdfrom'
            // });

            log.debug('createdFormID', 'test');
            log.debug('createdFormID', createdFromID); // 1765886

            if (createdFromID != null && createdFromID.length > 0) {

                var so_record = record.load({
                    type: record.Type.SALES_ORDER,
                    id: createdFromID,
                    isDynamic: false
                });

                if (so_record != null) {
                    //make sure there is a shipping line in the PO, if, create a new line.              
                    // var recordChanged = checkForShippingLine(rec);

                    log.debug('context.type', context.type);

                    if (context.type == 'create') {
                        try {
                            var po_lines = rec.getLineCount({
                                sublistId: 'item'
                            });
                            var so_costestimate;
                            for (var poLineNum = 0; poLineNum < po_lines; poLineNum++) {
                                // var currIndex = rec.selectLine({
                                //     sublistId: 'item',
                                //     line: poLineNum
                                // });
                                var soLineID = rec.getSublistValue({
                                    sublistId: 'item',
                                    fieldId: 'custcol_so_line_id',
                                    line: poLineNum
                                });
                                log.debug('soLineID', soLineID);

                                if (soLineID != null && soLineID.length > 0) {
                                    var soLineNumber = so_record.findSublistLineWithValue({
                                        sublistId: 'item',
                                        fieldId: 'custcol_so_line_id',
                                        value: soLineID
                                    });

                                    so_costestimaterate = so_record.getSublistValue({
                                        sublistId: 'item',
                                        fieldId: 'costestimaterate',
                                        line: soLineNumber
                                    });
                                    // rec.setCurrentSublistValue({
                                    rec.setValue({
                                        // sublistId: 'item',
                                        fieldId: 'custcol_so_est_unit_cost',
                                        // line: poLineNum,
                                        // fireSlavingSync: true,
                                        value: parseFloat(so_costestimaterate)
                                    });

                                    rec.commitLine({
                                        sublistId: "item"
                                    });
                                } //if (soLineNumInPO != null && soLineNumInPO.length > 0)
                                else {}
                            } //for(var poLineNum = 1; poLineNum <= po_lines; poLineNum++)
                        } catch (error) {}
                    } //if (context.mode == 'create')
                }
            }
            return true;
        }
javascript netsuite serverside-javascript suitescript2.0 server-side-scripting
1个回答
0
投票

最后,我找到了解决办法。

更改rec.setValue{...}rec.setCurrentSublistValue{...}然后它工作。

© www.soinside.com 2019 - 2024. All rights reserved.