문제

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!

도움이 되었습니까?

해결책

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);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top