2014-01-27 38 views
0

我有一个ETL设立拉SalesReceipts,发票和CreditMemos到我们自己的数据仓库的名单。但是,如果过去的交易已被废除/删除,这将导致我们的号码关闭。我还没有找到一种方式来获得无效交易的名单,我不希望有拉的所有交易的所有时间ETL的每次调用。需要取消/作废/删除交易

更多详细信息:
我们的数据在QBO中,我使用的是由Intuit提供的Java API。

我已经查阅了API(包括在线端点API,以及Java API的),我还没有发现太多的工作。

这里是发票数据查询的例子:

<page loop> 
{ 
    Invoice invoice = GenerateQuery.createQueryEntity(Invoice.class); 
    String query = select($(invoice)).skip(page * PAGE_SIZE).take(PAGE_SIZE).generate(); 
    QueryResult result = dataService.executeQuery(query); 
    for (IEntity entity : result.getEntities()) 
    { 
     Transaction t = (Transaction) entity; 
     System.out.println(t.getStatus()); 
    } 
} 

不过,我从来没有遇到任何我们取消/作废/删除的交易与此查询交易情况可能不会在这里过滤器使用。

编辑#2 我相信我已经找到了我需要在变更数据捕获服务。 https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/020_key_concepts/00600_changedata_operation

一些代码:

List<IEntity> entities = new ArrayList(); 
entities.add(new SalesReceipt()); 
entities.add(new Invoice()); 
entities.add(new CreditMemo()); 
List<CDCQueryResult> cresult = dataService.executeCDCQuery(entities, "2011-12-01T00:00:00Z"); 
... 

这将返回已更改的所有交易(修改,添加,删除),因为指定的日期,但什么是很奇怪对我来说,如果我使用日期“2011-12-01T0:0:0Z”我只收到DELETED状态的交易。

仅供参考: “2011-12-01T00:00:00Z”:所有添加,修改,删除的交易。 “2011-12-01T0:0:0Z”:只删除交易。

感谢

+1

这是QuickBooks的为Windows,或QuickBooks的在线?你在使用什么API?您需要提供更多详细信息... –

+0

我看到一个类似的问题,只有获得被删除的记录,当我包括时区。我通过在时间字符串中删除时区并确保结果在本地(以intuit)太平洋标准时间获得正确的结果。 –

回答