QuickBooks factura modificar tiene un comportamiento de dirección diferente que crear, ¿cómo compensar?

Estoy escribiendo una función para tomar un archivo de factura en un formato definido e importarlo a QuickBooks a través de qbXML. Uno de los requisitos es que sea posible volver a importar el mismo número de factura que modificar la factura existente en lugar de crear una nueva con el mismo número.

El problema que tengo es con la forma en que QuickBooks maneja las direcciones. Las direcciones que obtengo pueden estar en cualquier formato (en 6 contenedores diferentes), sin ninguna garantía de adhesión a un formato de dirección adecuado para ese entorno local.

Por lo tanto, crear la factura es bastante simple, especifico en la etiqueta xml la dirección de facturación addr1 a addr5, y QuickBooks no toma ningún problema. @SIN EMBARG no almacena la dirección como texto sin procesar, intenta analizar la ciudad, el código postal del estado y el país.

a modificación @Invoice, dada la misma información de dirección, no analizará el estado y el código postal de la ciudad, sino que dejará intacta la línea de dirección y dejará intacto el estado y el código postal de la ciudad, creando una línea duplicada en la factura, una de texto de forma libre , el otro del compuesto de ciudad, estado y código postal. La solución para eso fue establecer explícitamente el estado de la ciudad, el país y la nota en blanco en la modificación de la factura. Sin embargo, eso no ha resuelto completamente el problema.

A veces, QuickBooks analiza correctamente la dirección y agrega un número aleatorio en la siguiente línea (representada internamente en la pestaña de notas).

Y a veces QuickBooks rechazará la dirección, incluso aunque la haya aceptado al crear. Supongo que porque está tratando de analizar una dirección de 5 líneas y al modificarla, ya que el estado de la ciudad y el código postal no tienen dónde ir, no tiene dónde almacenarlos.

n este momento, mi única solución es simplemente dejar la dirección intacta y decirle al usuario que, debido a las limitaciones de QuickBooks, no hay forma de modificar la dirección al reimportar la factura, solo las líneas de la factura.

¿Alguien se ha encontrado con esto antes, y si es así, tiene una mejor solución? ¿Conoces un analizador de direcciones que pueda aproximarse razonablemente a lo que hace Quickbooks para que pueda enviarle el estado de la ciudad y el código postal en crear de manera consistent

Ahora, hasta cierto punto (excepto el último) QuickBooks me está dando una respuesta que me dice qué analizó en crear, por lo que teóricamente podría almacenar eso para saber con qué estoy tratando, pero sin escribir una dirección que consume mucho tiempo las rutinas de análisis hay alguna solución para obtener libros rápidos para volver a analizar la dirección de nuevo.

Aquí está la solicitud y la respuesta. Tenga en cuenta que la creación de la factura fue idéntica y que eliminé cierta información de identificación, pero mantuve las longitudes de campo iguales.

Solicitud

<?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>

Respuesta

    <?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> 

Respuestas a la pregunta(2)

Su respuesta a la pregunta