Как обновить номер заказа на поставку заказа на поставку через API - PullRequest
0 голосов
/ 22 марта 2019

Когда я вызываю API REST Acumatica для обновления квитанции заказа на покупку, поле номера заказа на строке подробностей не обновляется. Я просто делаю PUT для конечной точки Default / 17.200.001, включая строку детализации. PUT успешен, но ответ возвращает пустые PONbr и POType в строке подробностей, и эти поля не обновляются. Почему эти поля доступны только для чтения? Как я могу решить это или переопределить, чтобы эти поля PO обновились?

Обновление № 1 3/22: Согласно приведенному ниже ответу, я попытался поместить эти значения во вставку вместо обновления, но теперь я получаю другую ошибку: «Ошибка PO: количество должно быть больше 0» и «PurchaseReceipt.Details [0] .ReceiptQty: Количество должно быть больше 0 ". Тем не менее, ReceiptQty есть и больше 0.

Обновление № 2 3/22: Вы должны быть в состоянии скопировать его с очень простыми шагами:

  1. Создайте заказ с поставщиком, который по умолчанию расположен в местоположении.
  2. Добавление строки заказа на поставку с идентификатором InventoryID, который по умолчанию задает тип линии и склад
  3. Введите количество заказа
  4. Сохранить PO
  5. В Почтальоне, PUT, аналогичном JSON, который я предоставил ниже для получения заказа на поставку, указав строку детали с указанным идентификатором запаса, номером заказа на поставку, типом заказа на поставку, строкой Nbr, строкой заказа на поставку Nbr, кол-во квитанций, складом
  6. Ответом является ошибка «Ошибка заказа: количество должно быть больше 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 голосов
/ 22 марта 2019

Логика заключается в том, что когда вы вставляете подробную строку Покупки, если вы укажете информацию о заказе на покупку, то строка будет добавлена ​​со ссылкой на исходный Заказ на покупку в форме PONbr и POType.

После вставки строки поведение через веб-сервисы такое же, как на экране, поля PONbr и POType доступны только для чтения и не могут быть изменены.

Во время вставки параметр, которыйДля правильной вставки строки заказа на покупку требуются PONbr, POType и POLineNbr.

Обновление

В некоторых случаях из-за сложности операции особыйАдаптер был создан для того, чтобы охватить определенный сценарий.В этом случае добавление строки детализации в квитанцию ​​о покупке является одним из таких сценариев.Таким образом, требуются только некоторые конкретные значения, а остальные будут взяты из записи в системе.

Я думаю, что в вашем случае, поскольку строка заказа на покупку есть / уже присутствует в другой квитанции о покупке, они имеютОткрытое количество 0, которое затем помещается в качестве значения для количества поступления.К сожалению, это приводит к ошибке, так как количество поступления в квитанции о покупке не может быть 0.

...