当我调用Acumatica REST API更新PO收据时,详细信息行上的PO Number字段未更新。我只是在对Default / 17.200.001端点(包括明细行)进行PUT操作。 PUT成功,但是响应在详细信息行上返回空的PONbr和POType,并且这些字段未更新。由于某些原因,这些字段是只读的吗?我该如何解决或覆盖它,以便这些PO字段将更新?
更新#1 3/22: 根据下面的响应,我尝试将这些值放入插入而不是更新中,但是现在我得到了另一个错误:“ PO错误:数量必须大于0”和“ PurchaseReceipt.Details [0] .ReceiptQty:数量”必须大于0“。但是,ReceiptQty在那里并且大于0。
更新#2 3/22: 您应该可以通过非常简单的步骤复制它:
这是插入的示例json:
{
"Date": {
"value": "2019-03-22T00:00:00-04:00"
},
"Details": [
{
"InventoryID": {
"value": "0010006"
},
"LineNbr": {
"value": 1
},
"Location": {
"value": "01P"
},
"POLineNbr": {
"value": 1
},
"POOrderNbr": {
"value": "005554"
},
"POOrderType": {
"value": "RO"
},
"ReceiptQty": {
"value": 5
},
"Warehouse": {
"value": "002"
}
}
],
"PostPeriod": {
"value": "032019"
},
"VendorID": {
"value": "CVS TRADE"
}
}
更新#3 3/24: 为了尝试避免Acumatica将ReceiptQty强制设置为0,我尝试添加一个POReceiptLine_ReceiptQty_CacheAttached处理程序,而没有PXDBQuantity,PXDefault和PXFormula属性来防止其被清零。这给了我一个SQL错误:“'INTranInTransit_INTransitLineStatus附近的语法不正确'”-意味着什么。
答案 0 :(得分:0)
这里的逻辑是,当您插入采购收据明细行时,如果您指定有关采购订单的信息,则该行将以PONbr和POType的形式添加对原始采购订单的引用。
插入该行后,通过Web服务的行为与屏幕上的行为相同,PONbr和POType为只读字段,无法修改。
在插入期间,正确插入采购订单行所需的参数是PONbr,POType和POLineNbr。
更新
在某些情况下,由于操作的复杂性,创建了一个特殊的适配器以覆盖特定的情况。 在这种情况下,向采购收据添加明细行是这些方案之一。 因此,仅需要一些特定的值,其余的将从系统中的记录中获取。
在您的情况下,我认为由于采购订单行已经存在于另一个采购收货中,因此它们的未清数量为0,然后将其作为收货数量的值。不幸的是,这会引发错误,因为采购收据中的收据数量不能为0。