2

スクリプトを使用して、販売注文の品目の在庫詳細サブレコードを入力しようとしています。このスクリプトはユーザー イベント スクリプトであり、送信前に実行されます。この時点で、ユーザーはすでに項目情報を入力しています。アイテム、数量、ロット番号 (オプションが在庫番号であるカスタム選択フィールド)。

以下を使用して、在庫の詳細サブレコードを入力します。

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) このトランザクションには、少なくとも 1 つの項目を入力する必要があります。

このエラーが発生する理由は誰にもわかりますか?

ありがとう!

4

1 に答える 1

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);
于 2013-10-21T21:03:16.277 に答える