Делая запрос через qbXML для импорта счетов, я использую следующий фрагмент:
<InvoiceQueryRq requestID="1">
<IncludeLineItems>true</IncludeLineItems>
<OwnerID>0</OwnerID>
</InvoiceQueryRq>
Это позволяет мне захватывать все позиции для всех счетов, которые я импортирую, — это именно то, что я хочу, когда я сообщаю об этих счетах, их товарах и количествах (и описаниях).
Тем не менее, моя проблема заключается в том, когда пользователь QuickBooks удалений я не могу сказать в ответе, что получаю. Я получу обновления, как обновленные количества или описания, и, конечно, я получаю все новый позиции.
Я понимаю, что одним из решений было бы просто стереть все данные с известных счетов и заново вставить новые данные, однако я хочу избежать дополнительных затрат на манипулирование данными.
Таким образом, мой основной вопрос заключается в том, есть ли способ также включить удаленные позиции в запрос счета-фактуры?
Таким образом, мой основной вопрос заключается в том, есть ли способ также включить удаленные позиции в запрос счета-фактуры?
Нет, нет
Однако, если вы кешируете эти данные в своем приложении, сравнивать TxnLineID
значения, которые вы вернули из QuickBooks, в кешированные TxnLineID
значения, которые вы имеете в своей базе данных, и просто удалите из своего приложения все, что не присутствует в том, что вы получили от QuickBooks.
Psuedocode для чего-то подобного будет что-то вроде:
// the main TxnID of the invoice itself
$TxnID = ...
// this will store the current TxnLineIDs for existing lines
$list_of_current_TxnLineIDs = array();
// loop through the invoice lines that were returned from QuickBooks
foreach ($InvoiceLineRet as $InvoiceLine)
{
$list_of_current_TxnLineIDs[] = $InvoiceLine->TxnLineID;
}
// delete anything we have already cached that isn't needed anymore
db_query("DELETE FROM invoice_line WHERE TxnID = $TxnID AND TxnLineID NOT IN ( " . implode(", ", $list_of_current_TxnLineIDs) . " ) ");
Других решений пока нет …