我有一个部署到销售订单的用户事件脚本。它使用订单项的字段值来确定剩余数量。但是,如果我删除订单项,则不会更新已删除商品的数量。我需要在提交后更新项目。
是否可以使用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);
答案 0 :(得分:1)
为什么不将cust_lefttosell设为公式字段,以便始终从cust_quantity - cust_sold?
动态计算该值无论如何,如果您想使用afterSubmit,那么您必须遍历旧记录中的所有订单项,找出已删除的订单项,然后更新数量。