Acumatica API / 预约 / LocationID 不能为空

问题描述 投票:0回答:1

问题

我们在错误消息中看到的

LocationID
字段在哪里,我们如何才能阻止它为空?

概述

我们的系统尝试通过 Acumatica(品牌为 MYOB Advanced)API 为服务订单创建预约。我们遇到了很多错误:

'LocationID' cannot be empty.; LocationID: 'LocationID' cannot be empty.

此错误仅发生在 API 中,使用 UI 创建约会时我们看不到该错误。

API 尝试获取现有服务订单,为其添加预约,然后设置新预约的计划和实际日期/时间。最终目标是输入约会日志并自动创建考勤卡。当我们尝试设置日期和时间时,会发生错误。

技术细节

创建约会的 working 请求如下所示:

{
  "ServiceOrderNbr": {
    "value": "40054"
  },
  "ServiceOrderType": {
    "value": "TECH"
  },
  "BranchLocation": {
    "value": "DVM"
  },
  "Customer": {
    "value": "CSOUTHPAC"
  }
}

它映射到我们的自定义端点中的以下字段:

  1. ServiceOrderNbr
    预约记录 > 服务订单编号
  2. ServiceOrderType
    预约记录 > 服务订单类型
  3. Customer
    预约记录 > 客户

设置日期和时间的失败请求看起来像:

{
  "AppointmentNbr": {
    "value": "40083-4"
  },
  "ServiceOrderLocation": {
    "value": "MAIN"
  },
  "ScheduledStartDate": {
    "value": "2024-03-06T00:00:00.000Z"
  },
  "ScheduledEndDate": {
    "value": "2024-03-06T00:06:00.000Z"
  },
  "ActualStartDate": {
    "value": "2024-03-06T00:00:00.000Z"
  },
  "ActualEndDate": {
    "value": "2024-03-06T00:06:00.000Z"
  },
  "ScheduledStartTime": {
    "value": "2024-03-06T00:00:00.000Z"
  },
  "ScheduledEndTime": {
    "value": "2024-03-06T00:06:00.000Z"
  },
  "ActualStartTime": {
    "value": "2024-03-06T00:00:00.000Z"
  },
  "ActualEndTime": {
    "value": "2024-03-06T00:06:00.000Z"
  }
}

它映射到我们的自定义端点中的以下字段:

  1. 预约Nbr预约记录>客户
  2. ServiceOrderLocation 服务订单标头 > 位置 > LocationID(这是作为修复错误的失败尝试而设置的)
  3. 实际日期和时间 设置 > 预约时间 > 实际日期和时间
  4. 预定日期和时间服务订单标题>交货备注
acumatica
1个回答
0
投票

和往常一样,发布后就找到了解决方案。所有 Acumatica API 查询都必须包含您正在更新的记录的所有关键字段,否则它们会以奇怪的方式失败。

在本例中,当我们包含

ServiceOrderNbr
Branch
时,请求开始起作用,即使您希望系统使用预约号码...

{
  "AppointmentNbr": {
    "value": "40083-4"
  },
  "ServiceOrderNbr": {
    "value": "40083"
  },
  "Branch": {
    "value": "DVMM"
  },
...
© www.soinside.com 2019 - 2024. All rights reserved.