检索旧记录的行项目

Retrieving the Line Item of an Old Record

我有一个部署到销售订单的用户事件脚本。它使用行项目的字段值来确定剩余数量。但是,如果我删除一个行项目,它不会更新已删除项目的数量。我需要提交后更新的项目。

是否可以使用 nlapiGetOldRecord() 或类似的方法编辑已删除订单项的数量?

代码如下所示:

function afterSubmit(){
    var curRec = nlapiGetRecordId();
    var item = nlapiLoadRecord('item', curRec);
    var sold = item.getFieldValue('cust_sold');
    var quantity = item.getFieldValue('cust_quantity'); 
    var leftToSell = quantity - sold;
    item.setFieldValue('cust_lefttosell', leftToSell);

    var finalValue = item.getFieldValue('cust_lefttosell');
    var old = nlapiGetOldRecord(); // only retrieves salesorder record
    nlapiSubmitRecord(item);

}

编辑: 结果证明我可以用一个简单的 old.getLineItemValue('item', 'item', linenum) 来定位订单项。 正如 Adolfo 在下面指出的那样,我可以定位旧记录的行项目。出于某种原因,我认为定位它的唯一方法是使用 nlapiGetLineItemField(type, fldnm, linenum)getLineItemValue 版本的函数正是我要找的。 这就是代码的样子:

var old = nlapiGetOldRecord();
var id = old.getLineItemValue('item', 'item', linenum);
var rec = nlapiLoadRecord('type', id);

为什么不将 cust_lefttosell 设为公式字段,以便始终根据 cust_quantity - cust_sold 即时计算值?

无论如何,如果您想使用 afterSubmit,那么您必须遍历旧记录中的所有行项目,找出哪些已被删除,然后更新这些项目的数量。