如何在NetSuite中通过customerPayment接口支付指定发票并解决报错
报错根因
你遇到的apply路径下的USER_ERROR本质是NetSuite中客户付款单的apply核销子列表属于静态关联子列表,不支持直接手动构造行项目提交,必须基于系统预生成的待核销行修改后提交。
排查&修复步骤
- 第一步:先拉取当前客户的待核销行数据
新建付款单前先发起GET请求拉取初始化结构,获取该客户(ID:3645)对应子公司(ID:3)下所有待核销的应收单据行,请求路径示例:GET /record/v1/customerPayment?expand=apply&fields=apply&q=customer.id eq 3645 and subsidiary.id eq 3,返回结果中会包含完整的apply子列表所有待核销行。 - 第二步:修改对应核销行参数
在返回的apply列表中找到发票ID为5517的对应行,仅修改该行的apply为true、amount为12.06,其余行必须完整保留不能删除,也不能手动新增不存在的行。 - 第三步:修正请求体错误字段
你当前请求体中tranDate格式不符合NetSuite REST API要求,需要改为ISO 8601格式,示例:"tranDate": "2021-10-13T15:34:01+08:00",也可以仅传日期部分:"tranDate": "2021-10-13"。同时原请求中apply的嵌套结构错误,不需要外层的items包裹,直接传入数组即可。 - 第四步:校验关联数据有效性
确认以下关联数据符合要求:- 发票ID 5517属于客户3645、子公司3,且状态为已审核未完全核销
- 应收科目ID 259对应子公司3的有效应收科目
- 自定义表单ID 70为当前账号有权限使用的客户付款单表单
修正后请求体参考
{ "aracct": { "id": "259" }, "autoApply": false, "apply": [ { "id": "1", // 此处替换为你拉取到的对应核销行的内部ID "amount": 12.06, "apply": true, "doc": { "id": 5517 } } // 其余系统返回的待核销行原样保留,不要删除 ], "tranDate": "2021-10-13", "customForm": { "id": "70" }, "customer": { "id": "3645" }, "payment": 12.06, "subsidiary": { "id": "3" } }
内容的提问来源于stack exchange,提问作者RcDEV
相关产品推荐
相关产品推荐

