Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Suitescript客户端脚本错误JS#U异常-TypeError:无法读取属性';名称';未定义的_Javascript_Netsuite_Suitescript_Suitescript2.0 - Fatal编程技术网

Javascript Suitescript客户端脚本错误JS#U异常-TypeError:无法读取属性';名称';未定义的

Javascript Suitescript客户端脚本错误JS#U异常-TypeError:无法读取属性';名称';未定义的,javascript,netsuite,suitescript,suitescript2.0,Javascript,Netsuite,Suitescript,Suitescript2.0,首先对不起,我的英语一点也不好, 我想创建一个SuiteScript2.0,以便在用户希望保存商品Fulfiflment时验证客户信用额度 如果要完成的项目的总客户余额和金额超过了客户信用限额,则会有一个确认对话框,询问用户是否要提交以供完成审批或编号。 如果用户单击“是”,脚本将更新审批原因、审批状态、要审批的数量,并选中销售订单记录上的“需要审批到履行”复选框字段,然后将用户重定向到销售订单记录。 当脚本保存销售订单记录时,出现错误“JS_EXCEPTION-TypeError:无法读取未定


首先对不起,我的英语一点也不好,
我想创建一个SuiteScript2.0,以便在用户希望保存商品Fulfiflment时验证客户信用额度
如果要完成的项目的总客户余额和金额超过了客户信用限额,则会有一个确认对话框,询问用户是否要提交以供完成审批或编号。
如果用户单击“是”,脚本将更新审批原因、审批状态、要审批的数量,并选中销售订单记录上的“需要审批到履行”复选框字段,然后将用户重定向到销售订单记录。
当脚本保存销售订单记录时,出现错误“JS_EXCEPTION-TypeError:无法读取未定义的属性“name”。
谁能告诉我是哪一行导致了错误,或者如何解决我的问题,
多谢各位
这是我的剧本:

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

        var isDynamic = currentRecord.isDynamic;
        log.debug({
            title: 'isDynamic',
            details: isDynamic
        });

        var soId = currentRecord.getValue({
            fieldId: 'createdfrom'
        });

        var fromRecord = search.lookupFields({ // Get Record Type from Createfrom field
            type: search.Type.TRANSACTION,
            id: soId,
            columns: 'recordtype',
        });
        log.debug("createdfrom Type", fromRecord);

        if (fromRecord.recordtype != 'salesorder')
            return;

        else if (fromRecord.recordtype == 'salesorder') {
            var soRecord = record.load({
                type: record.Type.SALES_ORDER,
                id: soId,
                isDynamic: true
            });

            var pymtMethod = soRecord.getValue({
                fieldId: 'custbody_bmpt_metode_pembayaran'
            });
            log.debug('Payment Method', pymtMethod);

            if (pymtMethod == 3 || pymtMethod == 4) {
                var creditLimit = soRecord.getValue({
                    fieldId: 'credlim'
                });
                log.debug('creditLimit', creditLimit);

                var balance = soRecord.getValue({
                    fieldId: 'balance'
                });
                log.debug('balance', balance);

                var remainingBalance = (creditLimit * 1.15) - balance;
                log.debug({
                    title: "Customer Remaining Balance",
                    details: remainingBalance
                });

                var itemCount = currentRecord.getLineCount({
                    sublistId: 'item'
                });
                log.debug({
                    title: "itemCount",
                    details: itemCount
                });

                var soItemCount = soRecord.getLineCount({
                    sublistId: 'item'
                });
                log.debug({
                    title: "soItemCount",
                    details: soItemCount
                });

                var totalAmount = 0;
                var amount = 0;
                //get item Detail per Line
                for (var i = 0; i < itemCount; i++) {
                    var fulfillCheck = currentRecord.getSublistValue({
                        sublistId: 'item',
                        fieldId: 'itemreceive',
                        line: i
                    });
                    log.debug({
                        title: "fulfillCheck" + [i],
                        details: fulfillCheck
                    });
                    // validate if fulfill field is checked
                    if (fulfillCheck == true) {
                        var ifItem = currentRecord.getSublistValue({
                            sublistId: 'item',
                            fieldId: 'item',
                            line: i
                        });
                        log.debug({
                            title: "ifItem",
                            details: ifItem
                        });

                        var itemQty = currentRecord.getSublistValue({
                            sublistId: 'item',
                            fieldId: 'quantity',
                            line: i
                        });
                        log.debug({
                            title: "itemQty",
                            details: itemQty
                        });

                        var ifItemRate = currentRecord.getSublistValue({
                            sublistId: 'item',
                            fieldId: 'itemunitprice',
                            line: i
                        });
                        log.debug({
                            title: "ifItemRate",
                            details: ifItemRate
                        });

                        amount = itemQty * ifItemRate;
                        log.debug({
                            title: "amount",
                            details: amount
                        });
                    }
                    totalAmount += amount;
                    log.debug({
                        title: 'Amount Total',
                        details: totalAmount
                    });
                }

                var currencySymbol = {
                    style: "currency",
                    currency: "IDR"
                };
                var totalBalance = balance + totalAmount;
                log.debug({
                    title: 'totalBalance',
                    details: totalBalance
                });

                var reason = soRecord.getValue({
                    fieldId: 'custbody_approval_reason'
                });

                if (totalAmount > remainingBalance) {
                    // confirmation dialog
                    var confirmation = confirm('Total Customer Balance ' + totalBalance.toLocaleString("id-ID", currencySymbol) +
                        '\nhas Exceeded Customer Credit Limit of ' + creditLimit.toLocaleString("id-ID", currencySymbol) +
                        '\nDo You Want Submit Approval ?');

                    log.debug({
                        title: "confirmation",
                        details: confirmation
                    });

                    if (confirmation) {
                        if (reason == "" || reason == null) {
                            var input_reason = prompt('Please enter approval reason');

                            // set Sales Order Record 'approval reason' field Value . 
                            var soUpdate = record.submitFields({
                                type: record.Type.SALES_ORDER,
                                id: soId,
                                values: {
                                    'custbody_approval_reason': input_reason,
                                    'custbody_approval_status_so': 1
                                }
                            });

                            log.debug({
                                title: 'soUpdate',
                                details: soUpdate
                            });
                        }

                        //set approval status to 1 - pending approval
                        var approvalSO = record.submitFields({
                            type: record.Type.SALES_ORDER,
                            id: soId,
                            values: {
                                'custbody_approval_status_so': 1
                            }
                        });

                        for (var u = 0; u < itemCount; u++) {
                            var fulfill = currentRecord.getSublistValue({
                                sublistId: 'item',
                                fieldId: 'itemreceive',
                                line: u
                            });
                            log.debug({
                                title: "fulfill" + [u],
                                details: fulfill
                            });
                            // validate if fulfill field is checked
                            if (fulfill == true) {
                                var currentItem = currentRecord.getSublistValue({
                                    sublistId: 'item',
                                    fieldId: 'item',
                                    line: u
                                });
                                log.debug({
                                    title: "currentItem",
                                    details: currentItem
                                });

                                var currentQty = currentRecord.getSublistValue({
                                    sublistId: 'item',
                                    fieldId: 'quantity',
                                    line: u
                                });
                                log.debug({
                                    title: "currentQty",
                                    details: currentQty
                                });

                                // get SO item information. 
                                for (var so = 0; so < soItemCount; so++) {
                                    var soLine = soRecord.selectLine({
                                        sublistId: 'item',
                                        line: so
                                    });

                                    var SOItem = soRecord.getCurrentSublistValue({
                                        sublistId: 'item',
                                        fieldId: 'item'
                                    });
                                    log.debug({
                                        title: 'SOItem ' + [so],
                                        details: SOItem
                                    });

                                    if (currentItem == SOItem) {
                                        soRecord.setCurrentSublistValue({
                                            sublistId: 'item',
                                            fieldId: 'custcol_need_approval',
                                            value: true
                                        });

                                        soRecord.setCurrentSublistValue({
                                            sublistId: 'item',
                                            fieldId: 'custcol_fulfill_qty',
                                            value: currentQty
                                        });
                                    }
                                    soRecord.commitLine({
                                        sublistId: 'item'
                                    });
                                }
                            }
                        }

                        soRecord.save();

                        //open Sales Order Record at current Windows.
                        window.open('https://xxxx.app.netsuite.com/app/accounting/transactions/salesord.nl?id=' + soId, +'_self');
                    } else {
                        alert('Silahkan Perbaiki dan Submit Kembali !!');
                    }
                    return false;
                }
            }
        }
        return true;
    }
    return {
        saveRecord: saveRecord
    };
}); ```
*@NApiVersion 2.x
*@NScriptType客户端脚本
*/
定义(['N/record','N/currentRecord','N/search'],函数(记录,当前记录,搜索){
函数saveRecord(上下文){
var currentRecord=context.currentRecord;
var isDynamic=currentRecord.isDynamic;
log.debug({
标题:“isDynamic”,
详细信息:isDynamic
});
var soId=currentRecord.getValue({
fieldId:“createdfrom”
});
var fromRecord=search.lookupFields({//从Createfrom字段获取记录类型
类型:search.type.TRANSACTION,
id:soId,
列:“记录类型”,
});
调试(“createdfrom类型”,fromRecord);
if(fromRecord.recordtype!=“salesorder”)
返回;
else if(fromRecord.recordtype==“salesorder”){
var soRecord=record.load({
类型:record.type.SALES\u订单,
id:soId,
isDynamic:对
});
var pymtMethod=soRecord.getValue({
fieldId:“custbody\u bmpt\u metode\u pembayaran”
});
log.debug('Payment Method',pymtMethod);
如果(pymtMethod==3 | | pymtMethod==4){
var creditLimit=soRecord.getValue({
fieldId:“credlim”
});
log.debug('creditLimit',creditLimit);
var余额=soRecord.getValue({
fieldId:“平衡”
});
log.debug('balance',balance);
var剩余余额=(信用额度*1.15)-余额;
log.debug({
标题:“客户剩余余额”,
详情:剩余余额
});
var itemCount=currentRecord.getLineCount({
子列表:“项”
});
log.debug({
标题:“物品计数”,
详细信息:itemCount
});
var soItemCount=soRecord.getLineCount({
子列表:“项”
});
log.debug({
标题:“soItemCount”,
详情:soItemCount
});
var totalAmount=0;
风险价值金额=0;
//获取每行的项目详细信息
对于(变量i=0;ivar soUpdate = record.submitFields({
 type: record.Type.SALES_ORDER,
 id: soId,
 values: {
  'custbody_approval_reason': input_reason,
  'custbody_approval_status_so': 1
 }
});
var id = record.submitFields({
 type: record.Type.SALES_ORDER,
 id: 1,
 values: {
  memo: 'ABC'
 },
 options: {
  enableSourcing: false //default is true
 }
});