1

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

我收到以下错误:

找不到具有键:[orderLine] 和值:[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 个项目中的每一个都有一个单独的序列号。

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

4

1 回答 1

1

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

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();
于 2020-04-21T12:07:48.863 回答