NetSuite - 销售订单项目履行脚本不起作用

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

我正在使用 Restlet 脚本,我需要使用脚本来履行销售订单。我已经使用 netsuite-php 库完成了它,但现在我需要使用 NetSuite 脚本 这是我的脚本:

    function createItemFulfillmentFromSalesOrder(wcOrderId, serialNumbers) {
            var salesOrder = record.load({
                type: record.Type.SALES_ORDER,
                id: wcOrderId,
                isDynamic: true
            });
            var itemCount = salesOrder.getLineCount({ sublistId: 'item' });

            for (var i = 0; i < itemCount; i++) {
                var inventoryDetailId = salesOrder.getSublistValue({
                    sublistId: 'item',
                    fieldId: 'inventorydetail',
                    line: i
                });

                if (!inventoryDetailId) {
                    var inventoryDetail = record.create({
                        type: record.Type.INVENTORY_DETAIL,
                        //isDynamic: true
                    });

                    inventoryDetail.setValue({
                        fieldId: 'item',
                        value: salesOrder.getSublistValue({
                            sublistId: 'item',
                            fieldId: 'item',
                            line: i
                        })
                    });
                    inventoryDetail.selectNewLine({ sublistId: 'inventoryassignment' });
                    inventoryDetail.setCurrentSublistValue({
                        sublistId: 'inventoryassignment',
                        fieldId: 'quantity',
                        value: 1
                    });

                    inventoryDetail.setCurrentSublistValue({
                        sublistId: 'inventoryassignment',
                        fieldId: 'issueinventorynumber',
                        value: serialNumbers[i]
                    });

                    inventoryDetail.commitLine({ sublistId: 'inventoryassignment' });

                    inventoryDetailId = inventoryDetail.save();
                }

                var inventoryAssignmentList = [{ issueInventoryNumber: inventoryDetailId }];
                var itemFulfillment = record.transform({
                    fromType: record.Type.SALES_ORDER,
                    fromId: wcOrderId,
                    toType: record.Type.ITEM_FULFILLMENT,
                    isDynamic: true
                });
                itemFulfillment.selectLine({ line: i });
                itemFulfillment.setCurrentSublistValue({
                    sublistId: 'item',
                    fieldId: 'inventorydetail',
                    value: inventoryAssignmentList
                });

                itemFulfillment.commitLine({ sublistId: 'item' });
            }

            var fulfillmentId = itemFulfillment.save();
            return {
                success: true,
                fulfillmentId: fulfillmentId
            };
    }
});

但我有这个错误:

You have entered an Invalid Field Value <my_inventory_number_internal_id> for the following field: issueinventorynumber

我更改了函数并删除了 isDynamic 参数,但这些都不起作用。我尝试过不同的库存编号。

scripting netsuite suitescript2.0 restlet-2.0 netsuite-rest-api
1个回答
0
投票

这里的serialNumbers的值是多少?

            inventoryDetail.setCurrentSublistValue({
                sublistId: 'inventoryassignment',
                fieldId: 'issueinventorynumber',
                value: serialNumbers[i]
            });

如果您设法获取内部 ID,请尝试先通过 UI 手动输入/测试它,看看使用该内部 ID 是否会出错

在动态模式下处理记录时,设置字段值的顺序很重要

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