Acumatica REST API端点操作调用失败

时间:2019-06-03 18:40:52

标签: rest api action acumatica endpoint

**注意:任何批评Acumatica的StackOverflow问题都将被否决。

我正在尝试使REST Web-Service-Endpoint Action正常工作。

在扩展默认端点的同时,我添加了一个动作CreateShipmentAction。

URL: .../17.200.001/SalesOrder/CreateShipmentAction
SEND: {'entity':{'OrderNbr':{'value':'ME050225'},'OrderType':{'value':'SO'}},'parameters':{'value':null}}
METHOD: post

enter image description here

这很好用

按照相同的步骤,我在购物订单中添加了CancelPurchaseOrderAction。

URL: .../17.200.001/PurchaseOrder/CancelPurchaseOrderAction
SEND: {'entity':{'OrderNbr':{'value':'ME006802'},'OrderType':{'value':'DP'}},'parameters':{'value':null}}
METHOD: post

enter image description here

失败,显示“取消订单按钮被禁用”。手动检查PurchaseOrder,通过网站可以激活“取消订单”按钮。

如果我将“实体” OrderNbr更改为

SEND: {'entity':{'OrderNbr':{'value':'xxxME006802'},'OrderType':{'value':'DP'}},'parameters':{'value':null}}

不应该匹配的东西,我遇到了同样的错误。就像我的PurchaseOrder的“实体”格式不正确。

我会在Acumatica文档中查找PurchaseOrder的“实体”的必要格式,但找不到任何文档。 VIEW_ENDPOINT_SERVICE文档也没有将其拼写清楚,我认为应该这样(否则,如果未定义参数,为什么要有API ...)

2 个答案:

答案 0 :(得分:1)

可以肯定的是,在处理Acumatica Web Service时,还需要在浏览器中处理屏幕。

Web服务只能执行屏幕上可以完成的相同操作。

那么,如果您进入“采购订单”屏幕并查看记录,是否启用了“取消订单”按钮?

在测试时,我注意到对销售订单和采购订单而言,相同的步骤将不会同时启用这两种操作。至少使用默认设置时,使用安装程序随附的Sales Demo Data即可获得。

对于销售订单,只需要使记录“处于保持状态”即可,以便启用“创建货件”操作。

尽管对于采购订单,您不仅不需要处于“暂停”状态,还需要在启用“取消”按钮之前使用“批准”操作。

如果在执行这些操作之前我要使用“取消订单”操作,则会遇到与您在问题中注意到的错误相同的错误,但是一旦完成这些步骤,我就可以正确地取消订单。

我过去遵循的要求

  • 销售订单
.../entity/DefaultPlus/17.200.001/SalesOrder/CreateShipmentAction
{
    "entity":
    {
        "OrderType":{"value":"SO"},
        "OrderNbr":{"value":"SO004264"}
    },
    "parameters":
    {
        "ShipmentDate":{"value":"06/05/2019"},
        "WarehouseID":{"value":"RETAIL"}
    }
}
  • 购买订单
.../entity/DefaultPlus/17.200.001/PurchaseOrder/CancelPurchaseOrderAction
{
    "entity":
    {
        "Type":{"value":"Normal"},
        "OrderNbr":{"value":"PO000701"}
    }
}

答案 1 :(得分:0)

此问题在Acumatica字段中不一致。

PurchaseOrder的网站URL具有

?ScreenId=PO301000&OrderType=DP&OrderNbr=ME006802

让人们认为REST Action API调用的“实体”字段为

{OrderNbr:{value:"ME006802"},OrderType:{value:"DP"}}

实际上是这样(请注意,OrderType现在只是具有不同值的Type)

{OrderNbr:{value:"ME006802"},Type:{value:"Drop Ship"}}

编程到Acumatica的REST API就像Whack-A-Mole...。随机尝试不同的事情(因为没有文档),希望它可以幸运地工作。...