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

时间:2014-05-29 00:35:59

标签: javascript netsuite

首先,我对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);
        }
    }
}

有人能指出我可能需要改变或做的正确方向吗?非常感谢任何帮助!!

2 个答案:

答案 0 :(得分:2)

您在After Submit事件中执行此操作。此时,记录已经提交到数据库。您有两种选择:

  1. 正如@eliseobeltran所说,您可以先加载并提交记录。
  2. 将您确切的现有代码移至提交前事件。
  3. 我建议使用选项2,因为这会使用更少的治理,性能更高,并且可以减少数据库查询。

答案 1 :(得分:0)

您忘了提交:nlapiSubmitRecord(...);

您也可以尝试以下代码:

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);