Фильтровать счета QuickBook по дате отгрузки

Я работаю с QuickBooks PHP DevKit (спасибо, Кит!), и работаю над интеграцией рабочего стола quickbooks и моего сайта. Моя цель — импортировать их счета в мою базу данных, чтобы получать по ним отчеты.

Я столкнулся с проблемой, когда QBWC слишком долго переносил все счета (на это уходит несколько лет). «Очевидным» решением было поместить фильтр в запрос qbXML, чтобы получить только те, которые были недавно изменены (скажем, в течение последнего года). Некоторое время это прекрасно работало, однако возникла проблема.

Мой клиент хочет импортировать счета-фактуры на основе самой даты счета-фактуры (я полагаю, также известной как ShipDate), а не даты создания или изменения счета-фактуры. Однако OSR (справочник onScreen) от intuit не перечисляет гораздо больше полей, доступных для фильтрации в InvoiceQueryRq.

Итак, мой вопрос:

  • Есть ли способ фильтрации по определенному полю счета (а именно, ShipDate)?

Если не:

  • Есть ли способ стратегически загружать огромные куски данных (сотни тысяч) своевременно и упорядоченно? (для предотвращения тайм-аутов, разочарований и т. д.)

person brazilianldsjaguar    schedule 20.01.2015    source источник


Ответы (1)


Я думаю, что нашел подходящий пример и решение здесь:

https://github.com/consolibyte/quickbooks-php/blob/master/docs/web_connector/example_web_connector_import.php

Это пример вторичного подхода, о котором я упоминал. Он использует методологию итератора для одновременной обработки фрагментов счетов, а не всех одновременно. PHP DevKit позволяет передавать некоторые данные через «дополнительные» теги/атрибуты в qbXML, что позволяет легко использовать их между запросом и получением сообщений.

person brazilianldsjaguar    schedule 20.01.2015
comment
Чтобы добавить сюда еще немного -- вы можете фильтровать на основе некоторых полей. Вы должны ссылаться на QuickBooks OSR (developer-static.intuit.com /qbSDK-current/Common/newOSR/), по которым можно фильтровать поля. В этом случае дату счета (TxnDate в XML) можно отфильтровать с помощью тега ‹TxnDateRangeFilter›. Также обратите внимание, что поля ShipDate и TxnDate — это два отдельных поля. TxnDate — это дата счета-фактуры, которую можно фильтровать. ShipDate — это дата отгрузки товара (она не имеет ничего общего ни с датой продажи, ни с датой самого счета-фактуры) и недоступна для фильтрации. - person Keith Palmer Jr.; 21.01.2015
comment
Спасибо @KeithPalmer-consolibyte. Да, я понял, что TxnDate, вероятно, является полем, по которому я хотел отфильтровать, и я действительно видел этот фильтр там. Несмотря на это, я использовал итеративный подход, как показано в примере, который я разместил в ссылке, а также в обратных вызовах SQL для дампа sql. Между ними я смог успешно обрабатывать большие наборы данных постепенно. - person brazilianldsjaguar; 21.01.2015