【问题标题】:How to update a PO Receipt line's PO number via API如何通过 API 更新 PO Receipt 行的 PO 编号
【发布时间】:2019-03-25 04:55:25
【问题描述】:

当我调用 Acumatica REST API 更新采购订单收据时,详细信息行上的采购订单编号字段未更新。我只是对 Default/17.200.001 端点进行 PUT,包括一个详细信息行。 PUT 成功,但响应在详细信息行上返回空的 PONbr 和 POType,并且这些字段未更新。这些字段是否出于某种原因是只读的?我该如何解决或覆盖它以便更新这些 PO 字段?

更新 #1 3/22: 根据下面的响应,我尝试将这些值放入插入而不是更新中,但现在我得到一个不同的错误:“PO 错误:数量必须大于 0”和“PurchaseReceipt.Details[0].ReceiptQty:Quantity必须大于 0”。但是,ReceiptQty 存在并且大于 0。

更新 #2 3/22: 您应该能够通过非常简单的步骤复制它:

  1. 使用 Vendor 创建 PO,默认为 Location。
  2. 使用 InventoryID 添加订单行,默认行类型和仓库
  3. 输入订单数量
  4. 保存采购订单
  5. 在 Postman 中,PUT 类似于我在下面为采购​​订单收据提供的 JSON,指定详细信息行,其中包含引用的库存 ID、采购订单编号、采购订单类型、行编号、采购订单行编号、接收数量、仓库李>
  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' 附近的语法不正确”——不管这意味着什么。

【问题讨论】:

    标签: acumatica


    【解决方案1】:

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

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

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

    更新

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

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

    【讨论】:

    • 我将您提到的所有三个字段都提供给 PUT,并且它们没有更新。或者你是说他们必须在 PUT 插入而不是更新?
    • 是的,我的意思是您需要在插入期间指定这些字段
    • 如果您转到屏幕并插入一行,您会注意到一旦该行存在,您将无法更新这些字段。
    • 我将这些字段添加到插入中,但现在它抱怨 ReceiptQty 的数量必须大于零。但是,它大于零。
    • 我用我用于插入的 json 更新了我上面的原始帖子,但仍然抛出错误。
    猜你喜欢
    • 1970-01-01
    • 2012-10-13
    • 2021-03-05
    • 2012-07-15
    • 1970-01-01
    • 2017-05-23
    • 2022-01-14
    • 2012-03-29
    • 1970-01-01
    相关资源
    最近更新 更多