Reputation: 91
I'm trying to populate the Inventory Detail subrecord on line items of a sales order through scripting. The script is a user event script and will run on before submit. At this point the user has already entered line item information: ie. item, quantity, lot number (a custom select field, where the options are inventory numbers).
I use the following to populate the inventory detail subrecords:
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');}
When I do this I get the following error:
Notice (SuiteScript) You must enter at least one line item for this transaction.
Does anyone have any ideas why I'm getting this error?
Thanks!
Upvotes: 3
Views: 10251
Reputation: 91
There are errors on lines 10 and 11. Also, in my particular case where I'm in the Customer Center, I needed to place this code in After Submit and load the record. Here is the corrected code:
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);
Upvotes: 6