我们正在使用.Net SDK for QuickBooks Online的IntuitCDCResponse类来检索在指定时间段内已更改的客户权限列表。
目前,我们能够检索已更改客户的列表并迭代列表。从这一点开始,如何判断客户是否已在QuickBooks Online中删除?
docs表示当实体被删除后,实体的status
将设置为Deleted
。我们假设此状态已传递到SDK中Customer
类的status
属性。
以下是我们当前尝试用来确定客户是否已被删除的代码。
if (customer.statusSpecified && customer.status == EntityStatusEnum.Deleted)
{
// handle deletion event locally
}
实际上,所有Customer对象的statusSpecified
值始终为false,status
值始终为EntityStatusEnum.Deleted
,无论是否实际情况如此。我们已多次测试已更新,创建和/或删除的客户。
我们确实尝试在SDK source code中搜索有关如何初始化Customer类的提示,但是看起来Intuit.IPP.Data命名空间在源代码中不可用。
This SO question类似且有一些兴趣,但没有讨论 如何正确判断客户是否已被删除。
答案 0 :(得分:0)
EntityStatusEnum不是true或false值,它是枚举值0-6。我建议将customer.status
值更改为int,其中0-6分别表示文档值。
编辑:
EntityStatusEnum.Deleted
将返回0
和
customer.status
将返回true
或false
答案 1 :(得分:0)
这是我现在能想到的最好的解决方法。
if ( (customer.statusSpecified && customer.status == EntityStatusEnum.Deleted)
|| customer.DisplayName.Contains("(deleted)") )
{
// handle deletion event locally
}
或者,如果你更愿意完全放弃希望能够以正确的方式确定删除状态......
if ( customer.DisplayName.Contains("(deleted)") )
{
// handle deletion event locally
}
当您将客户标记为非活动时,QuickBooks Online会将“(已删除)”一词附加到“显示名称”的末尾。这个QuickBooks Help article是我能记录下这种行为的最接近的。在“恢复客户”部分下,它声明:
非活动客户将被注明为(已删除)