我运行了这个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.
总之,我不确定是否允许软删除?我现在必须想出一个处理我的应用程序上的软删除的工作。
答案 0 :(得分:0)
&#39;主动&#39; attribute主要用于软实体删除Class实体。
根据IPP的文档,它是 - &#34; *通过在实体更新请求中将属性设置为false来实现删除;因此,使其无效。在此类删除中,记录不会被永久删除,但会被隐藏用于显示目的。对非活动对象的引用保持不变。&#34;
您能解释为什么在创建此对象时尝试将此标志设置为false。我同意,如果在创建对象时不允许使用此属性的错误值,则服务应返回有意义的错误消息。只是想了解这个用例。
第2期 - 从QBO更新Active = false的记录到Active = true
是。这绝对是一个服务问题。
Read by Id
---------------
<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2014-03-22T08:38:41.182-07:00">
<Class domain="QBO" sparse="false">
<Id>100000000000359798</Id>
<SyncToken>1</SyncToken>
<MetaData>
<CreateTime>2013-12-02T00:39:48-08:00</CreateTime>
<LastUpdatedTime>2014-03-22T08:38:23-07:00</LastUpdatedTime>
</MetaData>
<Name>product_class1 (deleted)</Name>
<SubClass>false</SubClass>
<FullyQualifiedName>product_class1 (deleted)</FullyQualifiedName>
<Active>false</Active>
</Class>
</IntuitResponse>
Update operation on a deleted/inactive class
--------------------------------------------
<Class domain="QBO" sparse="false" xmlns="http://schema.intuit.com/finance/v3">
<Id>100000000000359798</Id>
<SyncToken>0</SyncToken>
<Name>product_class1 (deleted)</Name>
<SubClass>false</SubClass>
<FullyQualifiedName>product_class1 (deleted)</FullyQualifiedName>
<Active>true</Active>
</Class>
Response of the update operation
--------------------------------
<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2014-03-22T08:40:06.725-07:00">
<Fault type="ValidationFault">
<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>
</Fault>
</IntuitResponse>
我们会针对此提出错误并相应地更新帖子(使用修复/发布信息)。
由于