You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Acumatica API创建Appointment时LocationID不能为空问题咨询

问题

我们在错误信息中看到的LocationID字段位于何处?如何避免其为空?

问题背景

我们的系统通过Acumatica(品牌为MYOB Advanced)API为**服务订单(Service Orders)创建预约(Appointments)**时,频繁遇到错误:

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

该错误仅在API调用时出现,通过UI创建预约则无此问题。

API逻辑为:获取现有服务订单,为其添加预约,再设置新预约的计划时间和实际时间,最终目标是自动录入预约日志并生成工时卡,错误发生在设置日期时间的环节。

技术细节

创建预约的成功请求示例

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

该请求在自定义端点中的字段映射:

  • ServiceOrderNbr → AppointmentRecords > 服务订单编号
  • ServiceOrderType → AppointmentRecords > 服务订单类型
  • Customer → AppointmentRecords > 客户

设置日期时间的失败请求示例

{  
  "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"  
  }  
}

该请求在自定义端点中的字段映射:

  • AppointmentNbr → AppointmentRecords > 客户
  • ServiceOrderLocation → 服务订单表头 > 位置 > LocationID(此为修复尝试,但未生效)
  • 实际日期时间 → 设置 > 预约时间 > 实际日期时间
  • 计划日期时间 → 服务订单表头 > 交付备注
解决方案

1. LocationID字段的位置

这个LocationID是预约记录(AppointmentRecord)本身的必填字段,并非服务订单上的位置字段。UI创建时系统会自动从关联服务订单或当前用户分支填充该值,但API调用不会触发自动填充逻辑,所以会出现为空错误。

2. 避免为空的修复步骤

  • 修正字段映射错误:当前失败请求中AppointmentNbr错误映射到了客户字段,需改为映射到AppointmentRecords > 预约编号;同时将原本指向服务订单的ServiceOrderLocation改为直接映射到AppointmentRecords > LocationID。
  • 在更新请求中明确传入LocationID:设置日期时间的请求必须包含预约对应的LocationID值(可从创建预约时的BranchLocation或服务订单的LocationID获取)。
  • 检查自定义端点配置:确认端点在处理预约更新时,正确暴露了AppointmentRecord的LocationID字段,映射关系无错配。

修正后的更新请求示例:

{  
  "AppointmentNbr": {  
    "value": "40083-4"  
  },  
  "LocationID": {  
    "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"  
  }  
}

内容的提问来源于stack exchange,提问作者Sparklellama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 19:02:05