Acumatica通过Rest API放行Invoice抛出NullReferenceException异常问询
Acumatica REST API放行Invoice异常解决方案
根因分析
- 你调用的20.200.001版本
ReleaseInvoice接口缺少必填的上下文参数,接口执行时,发票放行的核心逻辑先完成,事务提交了发票状态从Balanced到Closed的更新,但后续关联发货单的状态同步逻辑,因为无法获取完整的发票实体上下文,触发System.NullReferenceException,中断了发货单的开票标记更新,最终出现发票放行成功但发货单状态异常的情况。 - 你当前的请求体只传了Type、ReferenceNbr、Customer三个字段,Acumatica的REST接口执行动作时,需要实体的版本号(Version字段)来确认操作的是最新版本的单据,缺省该字段时,接口内部解析关联实体时就会触发空引用。
修复方法
调整请求结构,补充版本号字段并明确指定返回字段,参考请求体如下:
{ "entity": { "Type": { "value": "Invoice" }, "ReferenceNbr": { "value": "AR000067" }, "Customer": { "value": "ECO3939026272299" }, "Version": { "value": <对应发票的实际版本号,可提前通过GET /Invoice?$filter=ReferenceNbr eq 'AR000067'查询获取> } }, "select": "ReferenceNbr,Status,Type" }
如果需要确保关联单据同步正常,可在请求URL后添加参数$expand=SOInvoice/Shipment,让接口预加载关联的发货单实体,避免上下文缺失。
内容的提问来源于stack exchange,提问作者headspiderthingy
相关产品推荐
相关产品推荐

