J'écris une fonction pour prendre un fichier de facture dans un format défini et l'importer dans QuickBooks via qbXML. L'une des exigences est qu'il soit possible de réimporter le même numéro de facture que de modifier la facture existante plutôt que d'en créer une nouvelle avec le même numéro.Modifier facture QuickBooks a un comportement d'adresse différent de créer, comment compenser?
Le problème que j'ai est de savoir comment QuickBooks gère les adresses. Les adresses que je reçois peuvent être dans n'importe quel format (dans 6 contentions différentes), sans aucune garantie d'adhérence à un format d'adresse approprié pour ces paramètres régionaux.
Donc, la création de la facture est assez simple, je spécifie dans la balise xml l'adresse de facturation addr1 à addr5, et QuickBooks ne pose aucun problème. CEPENDANT il ne stocke pas l'adresse comme texte brut, il tente d'analyser la ville, le code postal et le pays. Facture modifier, avec les mêmes informations d'adresse, ne pas analyser l'état de la ville et zip, mais laisser la ligne d'adresse intacte, et laisser l'état de la ville et zip intacte, créant une ligne en double sur la facture, l'un des texte libre, l'autre du composite de la ville, de l'état et du code postal. La solution de contournement pour cela était d'expliquer explicitement le code postal de l'état de la ville et de noter à blanc sur la facture modifier. Cependant, cela n'a pas complètement résolu le problème.
Parfois, QuickBooks analyse correctement l'adresse et ajoute un nombre aléatoire sur la ligne suivante (représentée en interne sur l'onglet note).
Et parfois QuickBooks va rejeter l'adresse, même si elle l'a accepté sur créer. Je suppose parce qu'il essaie d'analyser une adresse de 5 lignes et sur modifier puisque l'état de ville et le code postal n'ont aucun endroit où aller, il n'a aucun endroit pour les stocker.
Maintenant, ma seule solution est de laisser l'adresse intacte, et de dire à l'utilisateur qu'en raison des limitations de QuickBooks, il est impossible de modifier l'adresse à la réimportation de la facture, uniquement les lignes de facture.
Est-ce que quelqu'un a déjà rencontré ce problème et si oui, avez-vous un meilleur travail? Connaissez-vous un analyseur d'adresse qui peut raisonnablement approximer ce que fait Quickbooks afin que je puisse lui envoyer l'état de la ville et le code postal sur créer de manière cohérente? Maintenant, dans une certaine mesure (sauf pour ce dernier), QuickBooks me donne une réponse qui me dit ce qu'il a créé, donc je pourrais théoriquement stocker cela pour savoir de quoi je parle, mais sans écrire routines d'analyse d'adresses de temps est là une solution pour obtenir quickbooks pour analyser l'adresse de nouveau.
Voici la requête et la réponse. Notez que la création de facture était identique et que j'ai supprimé certaines informations d'identification, tout en conservant les mêmes longueurs de champ.
Demande:
<?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 & 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 & 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>
Réponse:
<?xml version="1.0" ?> <QBXML>
<QBXMLMsgsRs newMessageSetID="243f42acf4011139b7a">
<InvoiceModRs statusCode="3210" statusSeverity="Error"
statusMessage="The "address" field has an invalid value "". QuickBooks error message: The parameter is incorrect. "/>
</QBXMLMsgsRs>
</QBXML>
Pouvez-vous afficher les demandes que vous envoyez et les messages d'erreur que vous recevez de QuickBooks? Sans les voir, il est difficile de dire ce que vous faites et comment cela pourrait être réparé ... –