使用API插入采购订单时遇到了很多问题,因为它通常会以模糊或无法正确识别原因的错误来响应。我们为所涉及的站点进行了很多自定义,因此,为了缩小问题的范围,我创建了一个新的干净的Acumatica ERP安装(v17.210.0034),可以在没有端点扩展的情况下使用它,并在两者中都安装了SalesDemo数据。 >
即使在像这样的干净安装站点中,尝试插入PO时,我仍然遇到模糊的错误。例如,我遵循以下步骤,使用Postman调用API:
错误响应包括:“ PX.Data.PXException:错误:“分支”不能为空。\ r \ n错误:“收货人”不能为空。\ r \ n错误:在“系统。\ r \ n ---> PX.Data.PXOuterException:错误:插入“购买订单”记录至少引发了一个错误。请检查这些错误。”
在PO行上指定了BranchID,在PO标头上指定了Location,在ShippingInstructions上指定了ShipTo。该位置确实存在。该错误显然是模糊的并且具有误导性。仅通过反复试验,我才确定我需要将Hold从true更改为false,以克服此错误。我认为这是因为有一些验证或规则不允许在保持状态下插入或更新?将Hold更改为false并再次尝试使用PUT插入之后,我得到一个错误:“ PX.Data.PXException:错误:处理字段InventoryID:对象引用未设置为对象实例的过程中发生了错误。 --> System.NullReferenceException:对象引用未设置为对象的实例。”并且调用堆栈包括POOrderEntry.POLine_ExpenseAcctID_FieldDefaulting和POOrderEntry.POLine_LineType_FieldUpdated事件处理程序。
PO行上有一个InventoryID,并且库存项目存在,因此当设置LineType时,由于某些原因,这些事件处理程序似乎抛出错误,但我猜是这样。有什么想法可以使这个简单的API插入发挥作用吗?
更新(2/23/19):我修改了JSON,以便将详细信息项Completed更改为“ false”,并将PO标头Hold更改为“ true”,以插入更多内容,并状态为“保留”。上面提到的错误现在更改为“错误:'UOM'不能为空。\ r \ n错误:'帐户'不能为空。\ r \ n错误:'Sub。'不能为空。”。 UOM不为空,帐户为空,SubAccount为空;但是“订单行”中的“帐户”和“子帐户”不是必填字段。