Изменение счета QuickBooks имеет другое поведение адреса, чем создание, как компенсировать?

Я пишу функцию, чтобы взять файл счета в определенном формате и импортировать его в QuickBooks через qbXML. Одно из требований заключается в том, что можно повторно импортировать тот же номер счета-фактуры, что и существующий счет-фактура, а не создавать новый с тем же номером.

Проблема в том, как QuickBooks обрабатывает адреса. Адреса, которые я получаю, могут быть в любом формате (в 6 разных вариантах), без какой-либо гарантии соблюдения правильного формата адреса для этой локали.

Таким образом, создание счета-фактуры достаточно просто, я указываю в теге xml адрес для выставления счетов от addr1 до addr5, и QuickBooks не принимает его без проблем. ОДНАКО он не сохраняет адрес в виде необработанного текста, он пытается разобрать город, почтовый индекс штата и страну.

Изменение счета, учитывая ту же информацию об адресе, не будет анализировать штат и почтовый индекс, а скорее оставит адресную строку нетронутой, а штат и почтовый индекс останутся нетронутыми, создавая дублирующую строку в счете, один из текста в произвольной форме, другой составной из города, штата и почтовый индекс. Обходной путь для этого состоял в том, чтобы установить точное значение zip-страны и указать пустое значение при изменении счета-фактуры. Однако это не полностью решило проблему.

Иногда QuickBooks правильно проанализирует адрес и добавит случайное число в следующей строке (внутренне представлено на вкладке заметок).

И иногда QuickBooks отклоняет адрес, даже если он принял его при создании. Я полагаю, потому что он пытается проанализировать 5-строчный адрес и изменить его, так как городу и почтовому индексу некуда идти, ему некуда их хранить.

Сейчас мое единственное решение - просто оставить адрес без изменений и сообщить пользователю, что из-за ограничений QuickBooks нет способа изменить адрес при повторном импорте счета, только строки счета.

Кто-нибудь сталкивался с этим раньше, и если так, у вас есть лучшая работа? Знаете ли вы о парсере адресов, который может разумно приблизиться к тому, что делает quickbooks, чтобы я мог отправить его в штат и почтовый индекс при создании последовательным способом?

Теперь, в некоторой степени (за исключением последнего), QuickBooks дает мне ответ, который сообщает мне, что он анализировал при создании, так что я могу теоретически сохранить это, чтобы знать, с чем я имею дело, но если не писать некоторый трудоемкий анализ адресов Подпрограммы есть какое-либо решение, чтобы получить быстрые книги, чтобы проанализировать адрес от нового.

Вот запрос и ответ. Обратите внимание, что создание счета-фактуры было идентичным, и что я удалил некоторую идентифицирующую информацию, но сохранил длины полей одинаковыми.

Запрос:

<?xml version="1.0" encoding="UTF-8"?>  <?qbxml version="7.0"?>
<QBXML>
<QBXMLMsgsRq newMessageSetID="243f42acf4011139b7a" onError="stopOnError">
    <InvoiceModRq>
        <InvoiceMod>
            <TxnID>4E64-1242411202</TxnID>
            <EditSequence>1242411202</EditSequence>
            <CustomerRef>
                <ListID>80000012-1242156814</ListID>
            </CustomerRef>
            <ARAccountRef>
                <FullName>Accounts Receivable</FullName>
            </ARAccountRef>
            <TxnDate>2009-04-01</TxnDate>
            <RefNumber>M-053491</RefNumber>
            <BillAddress>
                <Addr1>S &amp; S ACME CO., INC.</Addr1>
                <Addr2>MR. ABC ABCDEF</Addr2>
                <Addr3>981 ABCD 761 ST</Addr3>
                <Addr4>ABABC, AA 99999-3584</Addr4>
                <Addr5>USA</Addr5>
                <City/>
                <State/>
                <PostalCode/>
                <Country/>
                <Note/>
            </BillAddress>
            <TermsRef>
                <FullName>NET 30</FullName>
            </TermsRef>
            <DueDate>2009-05-01</DueDate>
            <InvoiceLineMod>
                <TxnLineID>-1</TxnLineID>
                <Desc/>
            </InvoiceLineMod>
            <InvoiceLineMod>
                <TxnLineID>-1</TxnLineID>
                <Desc>ABCDEFG ABC $3,000.00 *</Desc>
            </InvoiceLineMod>
            <InvoiceLineMod>
                <TxnLineID>-1</TxnLineID>
                <Desc/>
            </InvoiceLineMod>
            <InvoiceLineMod>
                <TxnLineID>-1</TxnLineID>
                <Desc>FOR:</Desc>
            </InvoiceLineMod>
            <InvoiceLineMod>
                <TxnLineID>-1</TxnLineID>
                <ItemRef>
                    <FullName>ANFEE</FullName>
                </ItemRef>
                <Desc>1 . #9999 S &amp; S ABCD CO., INC., ABCDE, AA *</Desc>
                <Amount>123456.72</Amount>
            </InvoiceLineMod>
            <InvoiceLineMod>
                <TxnLineID>-1</TxnLineID>
                <Desc/>
            </InvoiceLineMod>
            <InvoiceLineMod>
                <TxnLineID>-1</TxnLineID>
                <Desc>PLEASE NOTE: Blahh Someone sellificant repeats on July 31st, 2009.</Desc>
            </InvoiceLineMod>
            <InvoiceLineMod>
                <TxnLineID>-1</TxnLineID>
                <Desc>Sellifcan of your Someone Ssellificant to Jan. 31st, 2011 is contingent upon</Desc>
            </InvoiceLineMod>
            <InvoiceLineMod>
                <TxnLineID>-1</TxnLineID>
                <Desc>your satisfying all open invoices and all other/different issues.</Desc>
            </InvoiceLineMod>
            <InvoiceLineMod>
                <TxnLineID>-1</TxnLineID>
                <Desc/>
            </InvoiceLineMod>
            <InvoiceLineMod>
                <TxnLineID>-1</TxnLineID>
                <Desc/>
            </InvoiceLineMod>
            <InvoiceLineMod>
                <TxnLineID>-1</TxnLineID>
                <Desc>* PLUS expenses for some amount of service described here.</Desc>
            </InvoiceLineMod>
        </InvoiceMod>
    </InvoiceModRq>
</QBXMLMsgsRq>
</QBXML>

Отклик:

    <?xml version="1.0" ?> <QBXML>
<QBXMLMsgsRs newMessageSetID="243f42acf4011139b7a">
<InvoiceModRs statusCode="3210" statusSeverity="Error"
              statusMessage="The &quot;address&quot; field has an invalid value &quot;&quot;.  QuickBooks error message: The parameter is incorrect. "/>
</QBXMLMsgsRs>
</QBXML> 

1 ответ

Решение

Еще один потенциальный обходной путь - дважды обновить счет. Сначала вычеркните адрес. Во-вторых, пошлите пять строк без какого-либо упоминания почтового индекса города и т. Д., Как это было сделано при создании.

Я не проверял это (пользователи признали, что адрес не изменится, поэтому я не буду пробовать его), но я привожу это здесь как идею, чтобы, если у кого-то возникла подобная проблема, он мог попробовать и, возможно, прокомментируйте здесь, если это работает.

Другие вопросы по тегам