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 并删除任何不应该的履行行关于这个实现。
非常感谢任何建议!
销售订单可以有 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 并删除任何不应该的履行行关于这个实现。