2009-05-18 5 views
2

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

Réponse:

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

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é ... –

Répondre

0

Une autre solution possible est ici à double mise à jour de la facture. D'abord vider l'adresse. La deuxième est d'envoyer les cinq lignes sans aucune mention du code postal de la ville, etc., comme cela a été fait lors de la création.

Je n'ai pas testé cela (les utilisateurs ont accepté que l'adresse ne changera pas, donc je ne vais pas l'essayer), mais je mets ceci ici comme une idée si quelqu'un a un problème similaire ils peuvent l'essayer et peut-être commenter ici si cela fonctionne.

0

Bien que ce soit une question plus ancienne, je n'ai pas trouvé de réponse. Je suis confronté au même problème, mais voici ce que j'ai trouvé jusqu'à présent.

Le problème est que la structure addr 1-5 fonctionne sur un ajout/insertion, mais ne fonctionne pas sur une mise à jour, avec QB donnant le "le paramètre est incorrect". Pour contourner ce problème, vous pouvez mettre à jour en utilisant la méthode addr 1-3, city, state, zip ... si vous pouvez analyser votre information de destinataire/rue mise à jour en 3 lignes, maximum de 41 chacune (édition de bureau). Si je me souviens, QB prendra un caractère de nouvelle ligne, de sorte que vous pouvez faire une seule "ligne d'adresse 3" regarder comme 2 lignes distinctes dans le bloc d'adresse QB. Le facteur le plus limitant, et pourquoi cela ne fonctionne pas pour moi, est que chaque ligne d'adresse est de 41 caractères, bien que l'édition en ligne soit beaucoup plus généreuse à 500. Je peux mettre deux ou trois lignes dans l'une 3 slot, mais 41 est assez limitant pour une adresse de rue entière.

C'est également la raison pour laquelle le fait de prendre le bloc XML d'adresse comme indiqué dans la réponse à la requête ne fonctionne pas. Si vous avez des lignes d'adresse 3 & 4 de 35 caractères chacune, par exemple, dans votre demande initiale d'ajout d'ordre 1-5, QB le prendra, mais vous ne pouvez pas faire demi-tour et mettre en 3 lignes plus ville, état zip ... sur la mise à jour. Donc, je ne mets pas à jour les adresses et, comme mentionné ci-dessus, les utilisateurs acceptent simplement que les modifications externes ne seront pas mises à jour dans QB et qu'elles doivent l'être dans QB lui-même.

Intuit a juste besoin de réparer ce bug. Ils ont juste besoin de supprimer l'ancienne adresse sur une mise à jour et de la remplacer par la nouvelle au lieu d'essayer de mapper l'un à l'autre. Ils ne peuvent pas le faire car ils stockent les adresses en tant que chaîne unique, puis analysent au moment de l'exécution. Je pense que la tentative de faire correspondre les lignes de mise à jour 1-5 à la chaîne analysée à l'exécution est ce qui fait échouer.

S'il vous plaît laissez-nous savoir s'il y a une solution là-bas! Nous serons tous à la retraite avant qu'Intuit ne s'en occupe.

James

Questions connexes