我正在尝试通过脚本填充销售订单的订单项上的“库存明细”子记录。 该脚本是一个用户事件脚本,将在提交之前运行。 此时用户已经输入了订单项信息:即。料品,数量,批号(自定义选择栏,选项是库存号)。
我使用以下内容填充库存明细子记录:
for (var i=1; i<=numberOfLineItems; i++){
nlapiSelectLineItem('item',i);
//First get the Lot Number and Quantity
var lotNumber = nlapiGetCurrentLineItemValue('item', 'custcol_select_lot_number');
var quantity = nlapiGetCurrentLineItemValue('item', 'quantity');
var inventoryDetail=nlapiCreateCurrentLineItemSubrecord('item','inventorydetail');
inventoryDetail.selectNewLineItem('inventoryassignment');
inventoryDetail.setCurrentLineItemValue('inventorydetail', 'issueinventorynumber', lotNumber);
inventoryDetail.setCurrentLineItemValue('inventorydetail', 'quantity', quantity);
inventoryDetail.commitLineItem('inventoryassignment');
inventoryDetail.commit();
nlapiCommitLineItem('item');}
当我这样做时,我收到以下错误:
通知(SuiteScript) 您必须为此交易输入至少一个订单项。
有没有人有任何想法我为什么会收到此错误?
谢谢!
答案 0 :(得分:5)
第10行和第11行有错误。另外,在我特殊情况下,我在客户中心,我需要将此代码放在After Submit中并加载记录。这是更正后的代码:
for (var i=1; i<=numberOfLineItems; i++){
SOrecord.selectLineItem('item',i);
//First get the Lot Number and Quantity
var lotNumber = SOrecord.getCurrentLineItemValue('item', 'custcol_select_lot_number');
var quantity = SOrecord.getCurrentLineItemValue('item', 'quantity');
var available = SOrecord.getCurrentLineItemValue('item','available');
nlapiLogExecution('debug','lineNum, LotNumID, Quantity, available',i + ', ' + lotNumber + ', ' + quantity + ', ' + available);
var inventoryDetail = SOrecord.createCurrentLineItemSubrecord('item','inventorydetail');
inventoryDetail.selectNewLineItem('inventoryassignment');
inventoryDetail.setCurrentLineItemValue('inventoryassignment', 'issueinventorynumber', lotNumber);
inventoryDetail.setCurrentLineItemValue('inventoryassignment', 'quantity', quantity);
inventoryDetail.commitLineItem('inventoryassignment');
inventoryDetail.commit();
SOrecord.commitLineItem('item');
}
nlapiSubmitRecord(SOrecord);