确定 CDC 响应中的客户是否已被删除
Determine if a Customer in the CDC response has been Deleted
我们正在使用 .Net SDK for QuickBooks Online 的 IntuitCDCResponse class 来检索在指定时间段内发生更改的客户实体列表。
目前,我们能够检索已更改客户的列表并迭代该列表。从这点来说,如何判断QuickBooks Online中的客户是否被删除了?
SDK中的docs say that when the entity has been deleted, the status
of the entity is set to Deleted
. We are assuming that this status is passed on to the status
property of the Customer
class
这是我们当前试图用来确定客户是否已被删除的代码。
if (customer.statusSpecified && customer.status == EntityStatusEnum.Deleted)
{
// handle deletion event locally
}
实际上,所有 Customer 对象的 statusSpecified
值始终为 false,而 status
值始终为 EntityStatusEnum.Deleted
,无论实际情况是否如此。我们反复测试已更新的客户,已创建 and/or 已删除。
我们确实尝试在 SDK source code 中搜索有关如何初始化 Customer class 的提示,但是 Intuit.IPP.Data 名称空间似乎在源代码中不可用。
This SO question 与此类似,也很有趣,但没有讨论如何 正确确定客户是否已被删除。
EntityStatusEnum 不是真假值,它是一个枚举值 0-6。我建议将 customer.status
值更改为 int,其中 0-6 分别代表文档值。
编辑:
EntityStatusEnum.Deleted
将要 return 0
和
customer.status
将变为 return true
或 false
这是我目前能想到的最好的解决方法。
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 是我能找到的最接近此行为的文档。在 "To restore a customer" 部分下,它指出:
inactive customer will be noted as (deleted)
我们正在使用 .Net SDK for QuickBooks Online 的 IntuitCDCResponse class 来检索在指定时间段内发生更改的客户实体列表。
目前,我们能够检索已更改客户的列表并迭代该列表。从这点来说,如何判断QuickBooks Online中的客户是否被删除了?
SDK中的docs say that when the entity has been deleted, the status
of the entity is set to Deleted
. We are assuming that this status is passed on to the status
property of the Customer
class
这是我们当前试图用来确定客户是否已被删除的代码。
if (customer.statusSpecified && customer.status == EntityStatusEnum.Deleted)
{
// handle deletion event locally
}
实际上,所有 Customer 对象的 statusSpecified
值始终为 false,而 status
值始终为 EntityStatusEnum.Deleted
,无论实际情况是否如此。我们反复测试已更新的客户,已创建 and/or 已删除。
我们确实尝试在 SDK source code 中搜索有关如何初始化 Customer class 的提示,但是 Intuit.IPP.Data 名称空间似乎在源代码中不可用。
This SO question 与此类似,也很有趣,但没有讨论如何 正确确定客户是否已被删除。
EntityStatusEnum 不是真假值,它是一个枚举值 0-6。我建议将 customer.status
值更改为 int,其中 0-6 分别代表文档值。
编辑:
EntityStatusEnum.Deleted
将要 return 0
和
customer.status
将变为 return true
或 false
这是我目前能想到的最好的解决方法。
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 是我能找到的最接近此行为的文档。在 "To restore a customer" 部分下,它指出:
inactive customer will be noted as (deleted)