NetSuite SuiteTalk 项目执行错误 - VALID_LINE_ITEM_REQD

NetSuite SuiteTalk Item Fulfillment Error - VALID_LINE_ITEM_REQD

非常感谢任何建议!

销售订单可以有 50-100 行。每个 SO 将有多个项目实现。当我们通过 SuiteTalk 创建 IF 时,我们不知道哪些行已经完成或哪些行已部分完成。

创建肥皂时,我覆盖了项目列表。

如果销售订单上只有 2 件商品并且所有行都已发货,则代码可以正常工作。

当另一个进程在销售订单上添加/删除项目从而导致具有 5 行的订单具有诸如 1、45、245、300 和 301 之类的 soLines 时,问题就出现了。如果我正在尝试履行第 245 行, 我会收到 VALID_LINE_ITEM_REQD.

有人对需要初始化的内容有什么建议吗?

提前谢谢你,

比尔


下面是示例 request/response。

请求

<record xmlns:q1="urn:sales_2020_1.transactions.webservices.netsuite.com" xsi:type="q1:ItemFulfillment" externalId="mrk-so-2446425">
<q1:createdFrom internalId="2446425"/>
<q1:shippedDate>2020-12-25T06:00:00Z</q1:shippedDate>
<q1:shipStatus>_shipped</q1:shipStatus>
<q1:tranDate>2020-12-25T06:00:00Z</q1:tranDate>
<q1:generateIntegratedShipperLabel>false</q1:generateIntegratedShipperLabel>
<q1:itemList>
<q1:item>
<q1:location internalId="308"/>
<q1:quantity>1</q1:quantity>
<q1:item internalId="82198"/>
<q1:orderLine>101</q1:orderLine>
</q1:item>
</q1:itemList>
</record>

回应

<writeResponse>
<platformCore:status xmlns:platformCore="urn:core_2020_1.platform.webservices.netsuite.com" isSuccess="false">
<platformCore:statusDetail type="ERROR">
<platformCore:code>VALID_LINE_ITEM_REQD</platformCore:code>
<platformCore:message>You must have at least one valid line item for this transaction.</platformCore:message>
</platformCore:statusDetail>
</platformCore:status>
<baseRef xmlns:platformCore="urn:core_2020_1.platform.webservices.netsuite.com" type="itemFulfillment" xsi:type="platformCore:RecordRef" externalId="mrk-so-2446425"/>
</writeResponse>
You must have at least one valid line item for this transaction

这有很多原因:

  • 此 SO 中不存在该行(项目)
  • 该商品没有可用数量(全部延期交货)
  • 该线路已关闭
  • 项目的内部 ID 错误

在您完成第一次履行后检查您的 SO(部分履行)并验证您的退货行

将 SO 转换为 fulfillment 之后

var itemFulfillMent = record.transform( {
                fromType: context.createdfrom.recordType,
                fromId: context.createdfrom.id,
                toType: 'itemfulfillment',
                isDynamic: true,
            } );

用(行,项目)制作一个数组

    var itemsPosition = {};
    for ( var i = 0; i < itemFulfillMent.getLineCount( 'item' ); i ++ ) {
            itemsPosition[ itemFulfillMent.getSublistValue( 'item',  'item', i ) ] = i;
}

在 itemsPosition 中,您现在可以知道项目的行。

您是否通过初始化调用开始了商品配送?

ItemFulfillmentItem 有一个字段 'orderLine'。 这与 SalesOrderItem 'line' 字段匹配。

如果可以根据 SO 信息计算出您实际想要履行的内容,那么我只需对履行行进行反向循环,使用 orderLine 值键入 SalesOrder 并删除任何不应该的履行行关于这个实现。