Netsuite - 使用webservices创建记录时无法将新行项添加到数据库

时间:2016-11-21 18:59:07

标签: javascript netsuite enterprise

在创建Netsuite记录时,我试图将描述行项目添加到记录的子列表中。

我试图触发在记录提交之前和记录提交之后添加订单项的脚本。

脚本正在触发但是nlapiInsertLineItem函数没有插入一行。

它完美地适用于编辑'但由于某种原因没有在'创建'。

是否有人在Netsuite中创建记录时插入新订单项?

我应该提到这条记录是由webservices创建的。

感谢您的帮助!

我的代码目前是:

function optiv_SFquote_visibility_AS(type){
  if(type == 'create'){
    var recId = nlapiGetRecordId();
    var recType = nlapiGetRecordType();
    var rec = nlapiLoadRecord(recType, recId);
    var itemCnt = rec.getLineItemCount('item');
    var soVals = {};
    var j = 0;
    for(var i = 1; i <= itemCnt+j; i ++){
        var grpNum = rec.getLineItemValue('item', 'custcol_grp_num', i);
        if(isNotNull(grpNum) && soVals[grpNum] == undefined){
            soVals[grpNum] = grpNum;
            j++;
            var grpDscrpt = rec.getLineItemValue('item', 'custcol_sf_quote_dscrpt', i);
            var grpName = rec.getLineItemValue('item', 'custcol_grp_sf_name', i);
            nlapiLogExecution('DEBUG', 'group description', grpDscrpt + ' name ' + grpName);
            var newDscrpt = '';
            if(isNotNull(grpDscrpt) && isNotNull(grpName)){
                var newDscrpt = grpName + ' - ' + grpDscrpt;
            }
            else if(isNotNull(grpName) && isNull(grpDscrpt)){
                var newDscrpt = grpName;
            }
            rec.insertLineItem('item', i);
            rec.setLineItemValue('item', 'item', i, -3);
            rec.setLineItemValue('item', 'description', i, newDscrpt);
        }
    }
    nlapiSubmitRecord(rec);
  }
}

1 个答案:

答案 0 :(得分:0)

我们有类似的情况,如果订单项包含特定字段中的值,我们会将其添加到销售订单。创建销售订单时,它在beforeSubmit上执行。我们没有使用完整的nlapiInsertLineItem()函数,而是可以在insertLineItem()上找到的nlobjRecord函数。

function addFreightLine(freightInstructions) {
    var record = nlapiGetNewRecord();
    var newLineNum = record.getLineItemCount('item') + 1;

    record.insertLineItem('item', newLineNum);
    record.setLineItemValue('item', 'item', newLineNum, 733);   // 733 is the 'CF' item
    record.setLineItemValue('item', 'description', newLineNum, freightInstructions);
    record.setLineItemValue('item', 'rate', newLineNum, 0);
}