我运行了这个xml请求 .
<Class sparse="true" xmlns="http://schema.intuit.com/finance/v3">
<Id>3000000000000249140</Id>
<SyncToken>0</SyncToken>
<Name>holy cow this is inactive</Name>
<Active>false</Active>
<FullyQualifiedName>holy cow this is inactive</FullyQualifiedName>
</Class>
我收到了响应代码200
<IntuitResponse xmlns="http://schema.intuit.com/finance/v3"
time="2014-03 21T14:31:36.948-07:00">
<Class domain="QBO" sparse="false">
<Id>3000000000000249140</Id>
<SyncToken>0</SyncToken>
<MetaData>
<CreateTime>2014-03-21T13:44:17-07:00</CreateTime>
<LastUpdatedTime>2014-03-21T13:44:17-07:00</LastUpdatedTime>
</MetaData>
<Name>holy cow this is inactive</Name>
<SubClass>false</SubClass>
<FullyQualifiedName>holy cow this is inactive</FullyQualifiedName>
<Active>true</Active>
</Class>
</IntuitResponse>
我期待响应返回Active = false .
当我尝试将来自QBO的Active = false更新为Active = true时,我收到此业务错误消息 .
我收到了响应代码400
<Error code="6000" element="">
<Message>A business validation error has occurred while processing your request</Message>
<Detail>Business Validation Error: You cannot modify a list element that has been deleted.</Detail>
</Error>
为了进一步澄清,焦点不是在创建实体记录期间 . 这是我认为QBO V3 API的bug问题的一个例子 .
根据文档,我应该可以在任何List Name实体记录上推送软删除,例如带有Class Entity记录的示例 . 这是通过将Active节点值设置为false来实现的 . QBO V3上是否存在记录,API返回的响应是响应代码200,但记录仍设置为Active = true而不是false的预期值 . 这告诉我QBO V3存在错误,并且它没有将List Name实体记录Active节点设置为false .
另一方面,当我尝试将记录Active = true设置为QBO V3上设置为Active = false的现有记录时,我得到引发业务规则的响应代码400 .
总之,我不确定是否允许软删除?我现在必须想出一个解决我的应用程序上的软删除的工作 .
1 回答
'Active'属性主要用于软实体的删除 .
根据IPP的文档,它是 - “*删除是通过在实体更新请求中将属性设置为false来实现的;因此,使其处于非活动状态 . 在这种类型的删除中,记录不会被永久删除,但会被隐藏用于显示目的对非活动对象的引用保持不变 . “
参考 - https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/030_entity_services_reference/class
你能解释为什么在创建这个对象时你试图将这个标志设置为false . 我同意,如果在创建对象时不允许使用此属性的错误值,则服务应返回有意义的错误消息 . 只是想了解这个用例 .
第2期 - 从QBO更新Active = false的记录到Active = true
是 . 这绝对是服务中的问题 .
我们将针对此提出一个错误,并相应地更新帖子(使用修复/发布信息) .
谢谢