NetSuite REST API:Transfer Order生成Item Fulfillment失败求助
解决NetSuite REST API转换Transfer Order到Item Fulfillment的400错误
问题描述
尝试通过NetSuite REST API从Transfer Order履行商品时,始终返回400 Bad Request错误,提示无效的子列表/行项目操作。需求为:
- 针对特定行/商品ID履行1件,将Transfer Order设为部分履行
- 全部履行完成后,为每件商品创建Item Receipt并将Transfer Order设为“已接收”
当前卡在第一步创建Item Fulfillment环节。
尝试过的Payload示例:
{ "item": { "items": [ { "itemreceive": true, "orderLine": 1, "quantity": 1 } ] }, "shipstatus": "C" }
请求URL:
POST https://<accountID>/services/rest/record/v1/transferorder/{{TRANSFER_ORDER_ID}}/!transform/itemFulfillment
返回错误:
{ "type": "https://www.rfc-editor.org/rfc/rfc9110.html#section-15.5.1", "title": "Bad Request", "status": 400, "o:errorDetails": [ { "detail": "Error while accessing a resource. You have attempted an invalid sublist or line item operation. You are either trying to access a field on a non-existent line or you are trying to add or remove lines from a static sublist.", "o:errorPath": "item", "o:errorCode": "USER_ERROR" } ] }
解决方案
1. 修正Payload字段(核心问题)
Transfer Order转换Item Fulfillment的逻辑和Sales Order存在差异,需调整以下字段:
- 移除
itemreceive字段:该字段用于采购订单/收货场景,Transfer Order的Fulfillment是发货环节,无需此字段 - 添加必填
location字段:必须指定Transfer Order的转出仓库ID(即原Transfer Order的fromLocation值) - 调整
shipstatus取值:部分履行应设为"P","C"代表完全履行,不符合当前需求
正确的Payload示例:
{ "item": { "items": [ { "orderLine": 1, "location": 123, // 替换为你的转出仓库ID "quantity": 1 } ] }, "shipstatus": "P" }
2. 验证Transfer Order行号和可用数量
先通过GET请求获取目标Transfer Order的详情,确认orderLine对应的行存在且有未履行数量:
GET https://<accountID>/services/rest/record/v1/transferorder/{{TRANSFER_ORDER_ID}}
检查响应中item子列表的line(行号)和quantityRemaining(剩余可履行数量)字段,确保目标行有足够可履行的数量。
3. 检查权限和订单状态
- 确保API角色拥有创建Item Fulfillment、查看/编辑Transfer Order的权限
- 确认Transfer Order未被锁定、处于可履行状态(如未完成审批、未被取消)
4. 后续Item Receipt创建提示
当Transfer Order全部履行完成后,创建Item Receipt需使用Transfer Order的转换接口,Payload需指定转入仓库ID和对应行的数量,示例URL:
POST https://<accountID>/services/rest/record/v1/transferorder/{{TRANSFER_ORDER_ID}}/!transform/itemReceipt
内容的提问来源于stack exchange,提问作者Jordan van Zyl
相关产品推荐
相关产品推荐

