Search code examples
inventory

netsuite inventory detail subrecord


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!


Solution

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