无法找到具有键的子列表项的匹配行:[orderLine] 和值:[1]

Unable to find a matching line for sublist item with key: [orderLine] and value: [1]

我正在使用 SuiteTalk 从现有销售订单创建项目履行。这适用于非序列化订单,但不适用于序列化 SO。

我收到以下错误:

Unable to find a matching line for sublist item with key: [orderLine] and value: [1].

但是行号确实匹配,因为只有一行,并且行号为“1”。该行项目的数量确实为 3,每个项目都使用相同的行号单独添加到履行中。这可能是问题所在吗?

我的代码:

ItemFulfillmentItem ffItem = new ItemFulfillmentItem();
ffItem.item = ifitemlist.item[b].item;
ffItem.itemReceive = true;
ffItem.itemReceiveSpecified = true;
ffItem.itemIsFulfilled = true;
ffItem.itemIsFulfilledSpecified = true;
ffItem.orderLineSpecified = true;
ffItem.orderLine = ifitemlist.item[b].orderLine;
ffItem.quantity = msg.despatchCartons[i].items[a].qtyDespatched;
ffItem.quantitySpecified = true;
ifitems.Add(ffItem);

具体实现,以上代码运行3次。这是因为此行中的 3 个项目中的每一个都有单独的序列号。

如有任何帮助,我们将不胜感激。提前致谢!

要解决此问题,您需要为项目履行记录上的每一行创建一个库存详细信息记录。库存明细记录将包含特定行项目的序列号和每个序列号的数量。

使用用户事件脚本的 SuiteScript 2.0 代码:

var currentRecord = scriptContext.currentRecord;
var subrecordInvDetail = currentRecord.getSublistSubrecord({
       sublistId: 'item',
       fieldId: 'inventorydetail',
       line: item_line_num
});

运行 当前行上每个序列号的以下代码:

subrecordInvDetail.setSublistValue({
     sublistId: 'inventoryassignment',
     fieldId: 'issueinventorynumber',
     line: serial_num_line,
     value: 'Serial_Number'
});
subrecordInvDetail.setSublistValue({
     sublistId: 'inventoryassignment',
     fieldId: 'quantity',
     line: serial_num_line,
     value: 'Quantity_Value'
});
subrecordInvDetail.save();

这是当我 google 遇到同样的错误时弹出的第一件事,所以希望这可以帮助某人并节省他们几个小时的生命!我知道这不是对所提问题的严格回答。在我的例子中,我在尝试为采购订单创建项目收据时遇到了同样的错误。问题原来是我没有增加 ItemReceiptItem 的 lineOrder 参数。因此,我在具有相同 lineOrder 的项目收据中有多行(与原始采购订单中的行相匹配)。如果错误消息说的是重复项,那会更有用。