Netsuite Suitescript 2.0 批次物品库存转移

问题描述 投票:0回答:1

我很难在 suitescript 2.0 中使用我的功能来在 netsuite 上传输批次项目。我不断收到错误“错误:您无法为此商品创建库存详细信息。”。尽管我确信我使用的内部 ID 是很多项目。请参阅下面的功能

function transferItems(itemIds, TRANSFER_LOCATION_ID) {
      log.debug('Start transferItems', 'Starting item transfer process for items: ' + JSON.stringify(itemIds) + ' to location: ' + TRANSFER_LOCATION_ID);
      itemIds.forEach(function(item) {
        var itemId = 519;
        var itemLength = item.length; 
        var lotNumber = item.netsuiteId; 
        log.debug('Processing item', 'Item ID: ' + itemId + ', Length: ' + itemLength + ', Lot: ' + lotNumber);

        try {
            var transferRecord = record.create({
                type: record.Type.INVENTORY_TRANSFER,
                isDynamic: true
            });
            log.debug('Transfer record created', 'Transfer record initiated for item ID: ' + itemId);

            // Set dynamic values for fields here
            transferRecord.setValue({fieldId: 'subsidiary', value: '7'}); // Example subsidiary ID
            transferRecord.setValue({fieldId: 'trandate', value: new Date()});
            transferRecord.setValue({fieldId: 'location', value: 903}); // Example source location ID
            transferRecord.setValue({fieldId: 'transferlocation', value: TRANSFER_LOCATION_ID});

            // Add the item to the inventory sublist
            transferRecord.selectNewLine({sublistId: 'inventory'});
            transferRecord.setCurrentSublistValue({sublistId: 'inventory', fieldId: 'item', value: itemId});
            
            // Work with the inventorydetail subrecord for lot numbered items
            var inventoryDetailSubrecord = transferRecord.getCurrentSublistSubrecord({
                sublistId: 'inventory',
                fieldId: 'inventorydetail'
            });
            log.debug(inventoryDetailSubrecord);


            inventoryDetailSubrecord.selectNewLine({sublistId: 'inventoryassignment'});
            inventoryDetailSubrecord.setCurrentSublistValue({sublistId: 'inventoryassignment', fieldId: 'issueinventorynumber', value: lotNumber}); // Set the lot number
            inventoryDetailSubrecord.setCurrentSublistValue({sublistId: 'inventoryassignment', fieldId: 'quantity', value: parseInt(itemLength)});
            
            // Commit the lines
            inventoryDetailSubrecord.commitLine({sublistId: 'inventoryassignment'});
            log.debug('Inventory detail set and committed for lot', 'Lot: ' + lotNumber + ', Quantity: ' + itemLength);

            transferRecord.commitLine({sublistId: 'inventory'});
            
            var transferId = transferRecord.save({enableSourcing: true, ignoreMandatoryFields: true});
            log.debug('Inventory Transfer Created', 'Transfer ID: ' + transferId + ' for Item ID: ' + itemId + ', Lot: ' + lotNumber);
        } catch (e) {
            log.error('Error transferring lot-numbered item', 'Item ID: ' + itemId + ', Lot: ' + lotNumber + ', Error: ' + e.message);
        }
    });
    log.debug('End transferItems', 'Lot-numbered item transfer process completed.');
}

我已尝试使用批次项目文本值和内部 ID,并且我已重新订购脚本,但它仍然无法正常工作。我对套件脚本比较陌生

netsuite transfer suitescript2.0 inventory
1个回答
0
投票

首先使用 hasCurrentSublistSubrecord(options) 检查子记录是否存在,否则如果不存在,使用 getCurrentSublistSubrecord 将尝试创建一个。

© www.soinside.com 2019 - 2024. All rights reserved.