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
相关产品推荐
相关产品推荐

