我们在错误消息中看到的
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"
}
}
它映射到我们的自定义端点中的以下字段:
ServiceOrderNbr
预约记录 > 服务订单编号ServiceOrderType
预约记录 > 服务订单类型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"
}
}
它映射到我们的自定义端点中的以下字段:
和往常一样,发布后就找到了解决方案。所有 Acumatica API 查询都必须包含您正在更新的记录的所有关键字段,否则它们会以奇怪的方式失败。
在本例中,当我们包含
ServiceOrderNbr
和 Branch
时,请求开始起作用,即使您希望系统使用预约号码...
{
"AppointmentNbr": {
"value": "40083-4"
},
"ServiceOrderNbr": {
"value": "40083"
},
"Branch": {
"value": "DVMM"
},
...