Javascript NetSuite脚本,用于在提交后从一个行级别字段更新另一个行级别字段

Javascript NetSuite脚本,用于在提交后从一个行级别字段更新另一个行级别字段,javascript,netsuite,Javascript,Netsuite,首先,我对NetSuite中的脚本编写非常陌生,所以请原谅我的代码太过繁琐 我正在尝试创建一个脚本(是的,我知道这可以在工作流中完成),该脚本通过销售订单的行进行循环,并在保存订单后将行“金额”复制到“altsalesamt”字段。脚本运行正常,但实际上没有做任何事情 function afterSubmit_setASA(){ var soItemCount = nlapiGetLineItemCount('item'); for (var i = 1; i <= so

首先,我对NetSuite中的脚本编写非常陌生,所以请原谅我的代码太过繁琐

我正在尝试创建一个脚本(是的,我知道这可以在工作流中完成),该脚本通过销售订单的行进行循环,并在保存订单后将行“金额”复制到“altsalesamt”字段。脚本运行正常,但实际上没有做任何事情

function afterSubmit_setASA(){
    var soItemCount = nlapiGetLineItemCount('item');

    for (var i = 1; i <= soItemCount; ++i) {
        var lineamt = nlapiGetLineItemValue('item', 'amount', i);

        if (lineamt != null && lineamt != '') {
            nlapiSetLineItemValue('item', 'altsalesamt', i, lineamt);
        }
    }
}
submit_setASA()后的函数{ var soItemCount=nlapiGetLineItemCount('item');
对于(var i=1;i您忘记提交:NLAPSubmitRecord(…)

您也可以尝试以下代码:

var record = nlapiLoadRecord(nlapiGetRecordType(), nlapiGetRecordId());
var soItemCount = record.getLineItemCount('item');

for (var i = 1; i <= soItemCount; ++i) {
    var lineamt = record.getLineItemValue('item', 'amount', i);

    if (lineamt != null && lineamt != '') {
        record.setLineItemValue('item', 'altsalesamt', i, lineamt);
    }
}

var id = nlapiSubmitRecord(record, true);
var record=nlapioadrecord(nlapiGetRecordType(),nlapiGetRecordId());
var soItemCount=record.getLineItemCount('item');

对于(var i=1;i您正在After Submit事件中执行此操作。此时,记录已提交到数据库。您有两个选项:

  • 正如@eliseobeltran所说,您可以先加载并提交记录
  • 将您的现有代码移到“提交前”事件
  • 我建议使用选项2,因为这样可以减少治理,提高性能,减少数据库查询