有没有人在C#中有一个如何删除或还原已被同步过程标记为错误的对象的工作示例?
我正在创建一个.Net应用程序,它使用QuickBooks API的V2将发票推送到Intuit。
最近,我显然已将发票推到Intuit,它已经确定“坏”。
当我查找类似问题时,我会看到一些我需要还原或删除这些问题的答案,但找不到任何如何操作的示例。
谢谢!
答案 0 :(得分:0)
PFB .net code snippets。
查询错误对象
Intuit.Ipp.Data.Qbd.CustomerQuery qbdCustomerQueryErroredObjects = new Intuit.Ipp.Data.Qbd.CustomerQuery();
qbdCustomerQueryErroredObjects.ErroredObjectsOnly = true;
IEnumerable<Intuit.Ipp.Data.Qbd.Customer> qbdCustomers = qbdCustomerQueryErroredObjects.ExecuteQuery<Intuit.Ipp.Data.Qbd.Customer>(context) as IEnumerable<Intuit.Ipp.Data.Qbd.Customer>;
查询对象的同步状态
Intuit.Ipp.Data.Qbd.SyncStatusRequest syncSt1 = new Intuit.Ipp.Data.Qbd.SyncStatusRequest();
syncSt1.ErroredObjectsOnly = true;
syncSt1.OfferingIdSpecified = true;
syncSt1.OfferingId = Intuit.Ipp.Data.Qbd.offeringId.ipp;
syncSt1.NgIdSet = new Intuit.Ipp.Data.Qbd.NgIdSet[1];
syncSt1.NgIdSet[0] = new Intuit.Ipp.Data.Qbd.NgIdSet();
syncSt1.NgIdSet[0].NgId = "949162";
syncSt1.NgIdSet[0].NgObjectType = Intuit.Ipp.Data.Qbd.objectName.Customer;
//Optional Params
//syncSt1.StartCreatedTMS = DateTime.Now.AddDays(-90);
//syncSt1.StartCreatedTMSSpecified = true;
//syncSt1.EndCreatedTMS = DateTime.Now;
//syncSt1.EndCreatedTMSSpecified = true;
IEnumerable<Intuit.Ipp.Data.Qbd.SyncStatusResponse> syncResultCustomers = commonService.GetSyncStatus(syncSt1);
删除错误对象
Intuit.Ipp.Data.Qbd.Customer customerToDelete = new Intuit.Ipp.Data.Qbd.Customer();
customerToDelete.Id = new Intuit.Ipp.Data.Qbd.IdType() { idDomain = Intuit.Ipp.Data.Qbd.idDomainEnum.NG, Value = "949162" };
customerToDelete.SyncToken = "1";
commonService.Delete(customerToDelete);
您也可以使用ApiExplorer完成所有这些工作。
您可以通过执行查询并设置ErroredObjectsOnly = true进行检查。
如果实体处于错误状态,您可以使用SyncStatus API查询特定原因:
从那里,你需要删除或恢复处于错误状态的对象,具体取决于是否发生了同步。
删除(未发生同步):
如果实体成功同步确实至少发生一次,但随后Update将其推入错误状态,则需要进行恢复:
谢谢