Php QuickBooks-检查客户是否有新发票
我试图找到一个标志来确定QuickBooks客户是否有新发票。我正在同步发票,下次尝试同步时,我想检查是否有任何新发票或更新过一次 客户记录中有一个syncToken,但它只显示客户对象的更新 除了同步所有发票外,是否有其他方法检查更新的发票或新发票Php QuickBooks-检查客户是否有新发票,php,api,quickbooks,invoice,customer,Php,Api,Quickbooks,Invoice,Customer,我试图找到一个标志来确定QuickBooks客户是否有新发票。我正在同步发票,下次尝试同步时,我想检查是否有任何新发票或更新过一次 客户记录中有一个syncToken,但它只显示客户对象的更新 除了同步所有发票外,是否有其他方法检查更新的发票或新发票 提前感谢。我们处理此问题的方法是存储上次同步时间。将上次同步时间作为筛选器添加到QuickBooks SDK查询对象。第一次,同步所有发票。在下一次同步期间,将同步上次同步时间之后创建或修改的同步。下面是我们正在使用的Windows服务的C代码示例
提前感谢。我们处理此问题的方法是存储上次同步时间。将上次同步时间作为筛选器添加到QuickBooks SDK查询对象。第一次,同步所有发票。在下一次同步期间,将同步上次同步时间之后创建或修改的同步。下面是我们正在使用的Windows服务的C代码示例:
using QBXMLRP2Lib;
using Interop.QBFC13;
public void SyncTransactions(QBSessionManager sessionMgr, DateTime? fromModifiedDate)
{
IMsgSetRequest msgset = sessionMgr.CreateMsgSetRequest("US", 13, 0);
IInvoiceQuery invoiceQuery = msgset.AppendInvoiceQueryRq();
invoiceQuery.IncludeLineItems.SetValue(true); // true if line items from a transaction have to included in the result set
if (fromModifiedDate != null)
{
invoiceQuery.ORInvoiceQuery.InvoiceFilter.ORDateRangeFilter.ModifiedDateRangeFilter.FromModifiedDate.SetValue(fromModifiedDate.Value, false);
invoiceQuery.ORInvoiceQuery.InvoiceFilter.ORDateRangeFilter.ModifiedDateRangeFilter.FromModifiedDate.SetTimeZone(0, 0); // UTC, since we keep the last sync time in UTC
IMsgSetResponse msgRes = sessionMgr.DoRequests(msgset);
IResponseList responseList = msgRes.ResponseList;
if (responseList.Count > 0)
{
// process the results here
}
}
}
希望这能有所帮助。在@Naveen的回答之后,我才明白这一点 基本上,当我们一次处理单个记录时,syncToken很好用。我们可以在数据库中保留syncToken,并在下次对照QuickBooks进行检查 但在批量记录获取时,最好使用LastUpdateTime 要过滤发票,我所做的是如下查询QuickBooks
$InvoiceService = new QuickBooks_IPP_Service_Invoice();
$invoices = $InvoiceService->query($Context, $realm, "SELECT * FROM Invoice where MetaData.LastUpdatedTime > <date>";
注:应为长日期格式。例如:2004-02-12T15:19:21+00:00。我们可以通过date'c',mySql date得到这个日期格式
干杯。。!!!再次感谢@Naveen的提示感谢@Naveen的回复。我不懂代码,但我懂逻辑。而且它是有效的。。。!!!谢谢