创建包含批号/序列号信息的NetSuite ItemFulfillment
本文关键字:NetSuite ItemFulfillment 信息 序列号 包含批 创建 | 更新日期: 2023-09-27 18:03:40
我使用的是SuiteTalk网络服务(v. 2013_2)。我试图创建一个ItemFulfillment,其中的项目与有很多或序列号的项目相关。
当我尝试将此项目实现保存到NetSuite时,我得到一个错误:Please commit inventorydetail on this line.
当我创建itemFulfillmentItem
时,我试图设置itemFulfillment.serialNumbers
和itemFulfillment.binNumbers
。
例如我设置
nsIfItem.serialNumbers = "SNum(5)"
nsIfItem.binNumbers = "BNum(5)"
基于这些属性的-逗号分隔的序列号或LOT号列表。如果输入序列号,每个项目必须有一个数字。批号必须以Lot #(数量)的格式输入。例如,要输入批号为ABC1234的数量为100件,请输入ABC1234(100)。
我是否还需要设置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);