2013-10-18 46 views
1

我正在嘗試通過腳本填充銷售訂單的訂單項的清單明細subrecord。 該腳本是一個用戶事件腳本,將在提交之前運行。 此時用戶已輸入行項目信息:即。物料,數量,批號(自定義選擇字段,其中選項是庫存號)。netsuite清單詳細子記錄

我使用以下方法來填充庫存明細子記錄:

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) 您必須輸入至少一個行項目這個交易。

有沒有人有任何想法,爲什麼我得到這個錯誤?

謝謝!

回答

3

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