2017-07-18 86 views
1

我们正在使用用于QuickBooks Online的.Net SDK的IntuitCDCResponse类检索在指定时间段内发生更改的客户实体列表。确定CDC响应中的客户是否已删除

目前,我们能够检索更改的客户列表并重复列表。从这一点,如何判断客户是否已在QuickBooks Online中被删除?

docs表示当实体被删除时,该实体的status被设置为Deleted。我们假设此状态被传递给SDK中Customer类的status属性。

以下是我们目前试图用来确定客户是否已被删除的代码。

if (customer.statusSpecified && customer.status == EntityStatusEnum.Deleted) 
{ 
    // handle deletion event locally 
} 

正因为如此,所有的客户对象始终有一个false statusSpecified值和status值始终EntityStatusEnum.Deleted,不管这是否真的是这样。我们已经多次测试已更新,创建和/或删除的客户。

我们的确尝试搜索SDK source code以获得有关Customer类如何初始化的提示,但似乎Intuit.IPP.Data命名空间在源代码中不可用。

This SO question是类似的,有些兴趣,但不讨论如何正确确定客户是否已被删除。

回答

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的附加术语“(删除)”以当您将客户标记为不活动时,显示名称的末尾。这QuickBooks Help article是最接近我可以来记录这种行为。根据部分“要恢复客户”它指出:

不活动的客户将被记为(删除)

0

EntityStatusEnum Enumeration

EntityStatusEnum是不是真的还是假的价值,它是一个枚举值0-6。我建议将customer.status值更改为int,其中0-6分别表示文档值。

编辑:

EntityStatusEnum.Deleted是否会返回0

customer.status是要返回truefalse

+0

我相信你是误会了'customer.status'。 'status'属性继承自[IntuitEntity](https://developer-static.intuit.com/SDKDocs/QBV3Doc/IPPDotNetDevKitV3/html/f7380e23-d1a8-6520-de89-1b928bbb1d80.htm)类,并显示数据类型'EntityStatusEnum'。所以'customer.status'与'EntityStatusEnum.Deleted'的比较是可以接受的表达式。 –

+0

'customer.statusSpecified'怎么样?我认为if语句是错误的。不应该是:'customer.statusSpecified == true && customer.status == EntityStatusEnum.Deleted' @RichC –

+0

[Double-checked](https://developer-static.intuit.com/SDKDocs/QBV3Doc/IPPDotNetDevKitV3/ html/d879bbdf-d1f3-7054-3945-798de11b7fb9.htm)'customer.statusSpecified'。它的数据类型是'bool'。此外,'customer.statusSpecified'和'customer.statusSpecified == true'都产生相同的布尔结果并且是可接受的表达式。 'if'陈述应该是正确的。 –

相关问题