如何通过API更新PO收据行的PO号

时间:2019-03-22 05:26:26

标签: acumatica

当我调用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: 您应该可以通过非常简单的步骤复制它:

  1. 使用供应商创建采购订单,默认为位置。
  2. 添加一个带有InventoryID的采购订单行,该行默认使用行类型和“仓库”
  3. 输入订单数量
  4. 保存订单
  5. 在邮递员中,将与我在下面为采购​​订单收据提供的JSON相似的PUT格式,指定带有参考库存ID,采购订单Nbr,采购订单类型,行Nbr,采购订单Nbr,收货数量,仓库的明细行
  6. 响应为错误“ PO错误:数量必须大于0”,“ PurchaseReceipt.Details [0] .ReceiptQty:数量必须大于0”

这是插入的示例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附近的语法不正确'”-意味着什么。

1 个答案:

答案 0 :(得分:0)

这里的逻辑是,当您插入采购收据明细行时,如果您指定有关采购订单的信息,则该行将以PONbr和POType的形式添加对原始采购订单的引用。

插入该行后,通过Web服务的行为与屏幕上的行为相同,PONbr和POType为只读字段,无法修改。

在插入期间,正确插入采购订单行所需的参数是PONbr,POType和POLineNbr。

更新

在某些情况下,由于操作的复杂性,创建了一个特殊的适配器以覆盖特定的情况。 在这种情况下,向采购收据添加明细行是这些方案之一。 因此,仅需要一些特定的值,其余的将从系统中的记录中获取。

在您的情况下,我认为由于采购订单行已经存在于另一个采购收货中,因此它们的未清数量为0,然后将其作为收货数量的值。不幸的是,这会引发错误,因为采购收据中的收据数量不能为0。