Ошибка добавления нового заказа на продажу через REST API - Acumatica - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь добавить новый заказ на продажу с подробными строками в мою систему Acumatica, используя пользовательскую конечную точку, которую я создал:

https://172.16.8.65/entity/ASG_INTEGRATION/6.00.001/SalesOrder

Это тело JSON, которое я отправляю Почтальон:

{
    "OrderType": {  "value": "SO"     },
    "CustomerID": { "value": "6362212668"   },
    "Details": 
    [
        {
            "Account": {"value": "4040"            },
            "Branch": {"value": "00"                },
            "InventoryID": { "value": "33964"            },
            "OrderQty": { "value": 1.000000     }
        }
    ]
}

Причина, по которой мне пришлось создать пользовательскую конечную точку, заключалась в том, что поле "Ветвь", которое имеется в моем подробном заказе клиента на продажу , должно быть , и значение по умолчанию у конечной точки не было поля Ветви в его заполненных полях. (Спасибо этому SO Вопрос за указание пути к этой морщине!)

Но теперь я получаю следующую ошибку (которая не говорит мне, где искать ошибку - по крайней мере, что я вижу ...):

{
    "message": "An error has occurred.",
    "exceptionMessage": "PX.Data.PXException: Error: The system failed to commit the CurrentDocument row.\r\n   at PX.Api.SyImportProcessor.SyStep.a(Object A_0, PXFilterRow[] A_1, PXFilterRow[] A_2) in C:\\Bld2\\AC-FULL2019R113-JOB1\\Sources\\NetTools\\PX.Data\\Api\\Export\\SyImport\\ImportProcessor.cs:line 3638\r\n   at PX.Api.SyImportProcessor.ExportTableHelper.ExportTable() in C:\\Bld2\\AC-FULL2019R113-JOB1\\Sources\\NetTools\\PX.Data\\Api\\Export\\SyImport\\ImportProcessor.cs:line 1171",
    "exceptionType": "PX.Api.ContractBased.OutcomeEntityHasErrorsException",
    "stackTrace": "   at System.Monads.ArgumentCheck.CheckNull[TSource](TSource source, Func`1 exceptionSource)\r\n   at PX.Api.ContractBased.EntityService.GetOperationResult(EntityImpl entity, EntityExportContextBuilder entityExportContextBuilder, PXSYTable exportedKeys, List`1 errors) in C:\\Bld2\\AC-FULL2019R113-JOB1\\Sources\\NetTools\\PX.Api.ContractBased\\EntityService.cs:line 480\r\n   at PX.Api.ContractBased.EntityService.Put(ISystemContract systemContract, String version, String name, EntityImpl entity, CbOperationContext operationContext) in C:\\Bld2\\AC-FULL2019R113-JOB1\\Sources\\NetTools\\PX.Api.ContractBased\\EntityService.cs:line 474\r\n   at PX.Api.ContractBased.Soap.SoapFacadeBase.PutImpl(EntityImpl entity) in C:\\Bld2\\AC-FULL2019R113-JOB1\\Sources\\NetTools\\PX.Api.ContractBased\\Soap\\SoapFacadeBase.cs:line 117\r\n   at lambda_method(Closure , Object , Object[] )\r\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass10.<GetExecutor>b__9(Object instance, Object[] methodParameters)\r\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__2.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__0.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext()"
}

Есть идеи, где будет go дальше в моей отладке?

[Редактировать: Добавление скриншотов для решения вопроса Фернандо]

Есть 2 возможных ветви, обе названы одинаково, и вы не можете добавить их обе к сущности. Financial Settings Popup

И это в деталях документа Document Settings

Какой из них использовать? Как я могу знать??? Когда я копирую то, что показывает @Fernando (я предполагаю, что с помощью «Детали ветви» в «Подробности документа»), я получаю ошибку «Ветвь не может быть пустой»:

Branch Cannot Be Empty

1 Ответ

0 голосов
/ 03 марта 2020

Хорошо, мой разговор с Фернандо был полезным. Вот что я обнаружил, и вот что сработало:

Тот факт, что есть два разных способа выбора «Ветви» в полях, имеет значение.

Один из них отображается в «Сведениях о документе» Всплывающее окно Document Details Fields

И появляется в Финансовых настройках -> Финансовая информация Всплывающее окно: Financial Settings Field

Как оказалось, ОБА необходимы. Но оба они не могут принадлежать объекту SalesOrder - это недопустимо.

Итак, я расширил объект SalesOrder с помощью «Филиала» финансовых настроек

Sales Order Entity Extension

И я расширил сущность SalesOrderDetail с помощью DocumentDetails "Branch"

enter image description here

И тогда я мог сделать это, и это было принято:

{
        "CustomerID": { "value": "76758" },
        "OrderType": {  "value": "SO"      },
        "Branch": {  "value": "00"  },
        "Details": 
        [
            {
                "Account": {  "value": "4040"   },
                "Branch": {  "value": "00"  },
                "InventoryID": {  "value": "33964"},
                "OrderQty": {  "value": 1.000000  }
            }
        ]
    }

Установка филиала только в одном из этих мест не создаст принятую запись заказа на продажу. Так что это сработало, и у меня есть новый Заказ на продажу с подробной строкой.

Я не могу вспомнить сейчас, потому что я пробовал так много разных вещей, но я считаю что в версии SalesOrder 18.200.001 поле Branch уже существует в деталях SalesOrder, но отсутствует в SalesOrder. И в версии 6.00.001 она также не существует. Я не уверен, но я думаю, что так оно и есть. На случай, если кто-то наткнется на это и использует другую версию ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...