C# 创建NetSuite ItemFulfillment,其中包含具有批次/序列信息的项目

C# 创建NetSuite ItemFulfillment,其中包含具有批次/序列信息的项目,c#,netsuite,C#,Netsuite,我正在使用SuiteTalk web服务(v.2013_2)。我正在尝试创建一个ItemFulfillment,其中的项目与具有批号或序列号的项目相关 当我尝试将此项目实现保存到NetSuite时,我得到一个错误: 请在此行提交inventorydetail。 创建itemfillmentItem时,我试图设置itemfillmentation.serialNumbers和itemfillments.binNumbers 例如,我设置 nsIfItem.serialNumbers = "SNum

我正在使用SuiteTalk web服务(v.2013_2)。我正在尝试创建一个ItemFulfillment,其中的项目与具有批号或序列号的项目相关

当我尝试将此项目实现保存到NetSuite时,我得到一个错误:
请在此行提交inventorydetail。

创建
itemfillmentItem
时,我试图设置
itemfillmentation.serialNumbers
itemfillments.binNumbers

例如,我设置

nsIfItem.serialNumbers = "SNum(5)"
nsIfItem.binNumbers = "BNum(5)"
基于这些属性-序列号或批号的逗号分隔列表。如果输入序列号,则每个项目必须有一个编号。 批号必须以批号#(数量)的格式输入。 例如,要输入数量为100的项目作为批号ABC1234,请输入ABC1234(100)


我是否还需要在
项目实现
上设置其他内容,或者如何消除该错误。

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

首先,为项目实现创建initialize 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>();
最后,将“iItems”列表添加到项目履行中,并将其添加到NetSuite:

ItemFulfillmentItemList ifitemlistToFulfill = new ItemFulfillmentItemList();
ifitemlistToFulfill.replaceAll = false;
ifitemlistToFulfill.item = ifitems.ToArray();

ItemFulfillment newItemFulfill = new ItemFulfillment();
newItemFulfill.itemList = ifitemlistToFulfill;
_service.add(newItemFulfill);

您是否启用了高级仓位管理/编号库存管理功能?还有,你用的是什么终点?我不确定。我该怎么检查呢?至于端点版本,我们使用的是2013_2。对不起,我应该提到这个。安装->公司->启用功能->物品和库存。应该在右边,大约在中间。老实说,我不确定这是否完全重要,但是帮助系统会参考它。我想你可以通过添加'item.itemReceive=true;item.itemReceiveSpecified=true;`或'item.itemiscompleted=true;item.itemIsFulfilledSpecified=true;`,但我还没有测试过,我会尝试一下。非常感谢您提出了一些可供选择的途径。当我有时间尝试的时候,我会发布它的运行情况。
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);
ItemFulfillmentItemList ifitemlistToFulfill = new ItemFulfillmentItemList();
ifitemlistToFulfill.replaceAll = false;
ifitemlistToFulfill.item = ifitems.ToArray();

ItemFulfillment newItemFulfill = new ItemFulfillment();
newItemFulfill.itemList = ifitemlistToFulfill;
_service.add(newItemFulfill);