我有一个与 QBOnline 集成的解决方案,并将发票导出到 QBO。这个过程已经存在了一段时间,通常效果很好。但这一次,它给出了一个奇怪的错误。
它在到达行项目之前检查了很多东西:客户、生产、项目等。然后对于这张发票,当它开始处理行项目时,它也会预先检查一些东西。如果 QBO 中不存在事物,那么它将创建它们。
在这种情况下,它会尝试检索“帐户”,看看它是否已经存在。查询:
?query=select * from account where Name = 'Audio:Film:Editorial'
结果:
None found
因此此过程然后尝试创建一个帐户(提交的数据位于 cURL 选项的底部):
cURL选项:
-D $dump_header
-X POST
-H "Authorization: Bearer eyJl...VGE4w"
-H "Accept: application/json"
-H "Content-Type: application/json"
-d {"AccountType":"Income","Name":"Audio:Film:Editorial"}
结果:
{"Fault":{"Error":[{"Message":"Duplicate Name Exists Error","Detail":"The name supplied already exists. : Id=345","code":"6240"}],"type":"ValidationFault"},"time":"2023-02-13T16:36:44.868-08:00"}
所以对这个查询的响应是该帐户已经存在......但它不是只是测试并被告知该帐户不存在吗?
有关导致错误消息的原因的任何提示?或者我需要深入了解哪些现有值可能会导致它出错?
QuickBooks API 的默认行为是不返回非活动对象。
我敢打赌,当你对 API 进行查询时,你只是在请求一个帐户列表......并且只取回 Active 的帐户。你应该做的是询问 all 帐户的列表,无论状态如何。
我不知道这是什么,因为这不是您可以发送给 QuickBooks 的 API 调用(检查您的代码 - 您可能将其转换为 QuickBooks 可以在代码中的其他地方理解的内容):
{"api":"QuickBooks","companyID":"1 - MyCompany, Ltd","query":{"fieldName":"accountName","object":"account","searchValue":"Audio:Film:Editorial"},"username":"Test Dev"}
但是您应该发送给 QuickBooks 的是这样的查询,以获取活动和非活动帐户:
SELECT * FROM Account WHERE Active IN (true, false)