创建包含批号/序列号信息的NetSuite ItemFulfillment

本文关键字:NetSuite ItemFulfillment 信息 序列号 包含批 创建 | 更新日期: 2023-09-27 18:03:40

我使用的是SuiteTalk网络服务(v. 2013_2)。我试图创建一个ItemFulfillment,其中的项目与有很多或序列号的项目相关。

当我尝试将此项目实现保存到NetSuite时,我得到一个错误:Please commit inventorydetail on this line.

当我创建itemFulfillmentItem时,我试图设置itemFulfillment.serialNumbersitemFulfillment.binNumbers

例如我设置

nsIfItem.serialNumbers = "SNum(5)"
nsIfItem.binNumbers = "BNum(5)"
基于这些属性的

-逗号分隔的序列号或LOT号列表。如果输入序列号,每个项目必须有一个数字。批号必须以Lot #(数量)的格式输入。例如,要输入批号为ABC1234的数量为100件,请输入ABC1234(100)。

我是否还需要设置itemFulfillment上的其他东西,或者我如何摆脱这个错误。

创建包含批号/序列号信息的NetSuite ItemFulfillment

我不确定这个问题是否仍然有效,但我有同样的问题,我找不到太多的帮助。我通过创建库存分配对象并添加到事务中来解决这个问题。

首先,为Item Fulfillment创建初始化ref,并将返回的记录分配给一个变量:

InitializeRecord ir = new InitializeRecord();
ir.type = InitializeType.itemFulfillment;
InitializeRef iref = new InitializeRef();
iref.typeSpecified = true;
iref.type = InitializeRefType.salesOrder;
iref.internalId = 'Sales Order internalID';
ir.reference = iref;
ReadResponse getInitResp = _service.initialize(ir);
ItemFulfillment ifrec = (ItemFulfillment)getInitResp.record;

获取初始化事务的项列表:

ItemFulfillmentItemList ifitemlist = ifrec.itemList;

创建一个列表,将每个要完成的项目添加到该列表中:

List<ItemFulfillmentItem> ifitems = new List<ItemFulfillmentItem>();

为初始化事务的项目列表中的每个项目运行以下代码:

如果当前行的项目已经添加到ifitems列表中,则将当前的Fulfillment行添加为该项目的分配:

InventoryAssignment assignment = new InventoryAssignment
{
    issueInventoryNumber = new RecordRef { internalId = 'internalID',
    type = 'RecordType',
    typeSpecified = true 
    }
};
List<InventoryAssignment> list = new List<InventoryAssignment>();
list.Add(assignment);
ifitemlist.item[b].inventoryDetail = new InventoryDetail
{
     inventoryAssignmentList = new InventoryAssignmentList
     {
         inventoryAssignment = list.ToArray()
     }
};
ifitemlist.item[b].quantity += 'quantity shipped';

如果行项尚未添加,则创建新的行项:

ItemFulfillmentItem ffItem = new ItemFulfillmentItem();
ffItem.item = ifitemlist.item[b].item;
ffItem.itemReceive = true;
ffItem.itemReceiveSpecified = true;
ffItem.itemIsFulfilled = true;
itemIsFulfilled = true;
ffItem.itemIsFulfilledSpecified = true;
ffItem.orderLineSpecified = true;
ffItem.orderLine = ifitemlist.item[b].orderLine;
//Check if serialized
if (Your fulfillment item contains serialized data)
{
    ffItem.serialNumbers = 'Serial numbers';
    InventoryAssignment assignment = new InventoryAssignment
    {
         issueInventoryNumber = new RecordRef { 
         internalId = 'Inventory internal ID',
         type = RecordType,
         typeSpecified = true 
         }
    };
    ffItem.inventoryDetail = new InventoryDetail
    {
        inventoryAssignmentList = new InventoryAssignmentList
        {
            inventoryAssignment = new InventoryAssignment[]
            {
                 assignment
            },
            replaceAll = false
        },
        nullFieldList = new string[] { },
        customForm = new RecordRef { }
     };
 }
 ffItem.quantity = 'QUANTITY SHIPPED';
 ffItem.quantitySpecified = true;
 ifitems.Add(ffItem);

最后,将"ifitems"列表添加到您的"Item Fulfillment"中,并将其添加到NetSuite中:

ItemFulfillmentItemList ifitemlistToFulfill = new ItemFulfillmentItemList();
ifitemlistToFulfill.replaceAll = false;
ifitemlistToFulfill.item = ifitems.ToArray();
ItemFulfillment newItemFulfill = new ItemFulfillment();
newItemFulfill.itemList = ifitemlistToFulfill;
_service.add(newItemFulfill);