2009-05-18 4 views
2

Ich schreibe eine Funktion, um eine Rechnungsdatei in einem definierten Format zu nehmen und es über QbXML in QuickBooks zu importieren. Eine der Anforderungen ist, dass es möglich ist, die gleiche Rechnungsnummer erneut zu importieren als die bestehende Rechnung, anstatt eine neue mit derselben Nummer zu erstellen.QuickBooks Rechnung ändern hat ein anderes Adressverhalten als erstellen, wie zu kompensieren?

Das Problem, das ich habe, ist mit, wie QuickBooks Adressen handhabt. Die Adressen, die ich bekomme, können in jedem Format sein (In 6 verschiedenen Kontexten), ohne dass man sich vergewissern kann, dass man das richtige Adressformat für dieses Gebietsschema einhält.

So erstellen Sie die Rechnung ist einfach genug, ich im XML-Tag angeben die Rechnungsadresse addr1 bis addr5, und QuickBooks dauert es kein Problem. JEDOCH es speichert die Adresse nicht als Rohtext, es versucht, die Stadt, die Postleitzahl und das Land zu analysieren.

Rechnung ändern, bei der gleichen Adresse Informationen, wird nicht aus der Stadt Staat und zip, sondern lassen Sie die Adresszeile intakt, und lassen Sie die Stadt Staat und zip unberührt, Erstellen einer doppelten Zeile auf der Rechnung, eine Freiformtext, der andere der Zusammensetzung von Stadt, Staat und Postleitzahl. Die Problemumgehung dafür war, dass Sie explizit den Status "Stadt-PLZ-Land" und "Notiz" auf "Rechnungsänderung" einstellen. Dies hat das Problem jedoch nicht vollständig gelöst.

Manchmal analysiert QuickBooks die Adresse korrekt und fügt der nächsten Zeile eine Zufallszahl hinzu (intern auf der Registerkarte "Notiz" dargestellt).

Und manchmal QuickBooks wird die Adresse ablehnen, auch wenn es angenommen, dass es auf create. Ich nehme an, weil es versucht, eine 5-Zeilen-Adresse zu analysieren und zu modifizieren, da der Stadtstaat und die Postleitzahl keine wohin haben, es hat keinen Platz, sie zu speichern.

Im Moment ist meine einzige Lösung, die Adresse einfach unberührt zu lassen und dem Benutzer mitzuteilen, dass es aufgrund der Einschränkungen von QuickBooks keine Möglichkeit gibt, die Adresse beim Reimport der Rechnung zu modifizieren, sondern nur Rechnungszeilen.

Hat jemand schon einmal davor gelitten, und wenn ja, haben Sie eine bessere Arbeit? Kennen Sie einen Adressparser, der vernünftigerweise approximieren kann, was quickbooks tut, damit ich den Stadtstaat und die Postleitzahl auf konsistente Weise erstellen kann?

Jetzt zu einem gewissen Grad (mit Ausnahme der letzten) QuickBooks gibt mir eine Antwort, die mir sagt, was es bei der Erstellung geparst, so könnte ich theoretisch speichern, um zu wissen, was ich damit zu tun habe, aber kurz zu schreiben Zeitaufwendige Adreßanalyse-Routinen gibt es eine Lösung, um Quickbooks zu bekommen, die Adresse von neu zu lesen.

Hier ist die Anfrage und die Antwort. Beachten Sie, dass die Erstellung der Rechnung identisch war und dass ich einige identifizierende Informationen entfernt habe, die Feldlängen jedoch gleich geblieben sind.

Anfrage:

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

Antwort:

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

Können Sie die von Ihnen gesendeten Anfragen und die Fehlermeldungen, die Sie von QuickBooks erhalten, anzeigen? Ohne diese zu sehen, ist es etwas schwierig zu sagen, was Sie tun und wie es behoben werden könnte ... –

Antwort

0

Eine andere mögliche Abhilfe ist hier zu Doppel-update die Rechnung. Zuerst die Adresse löschen. Zweiter ist das Senden der fünf Zeilen ohne irgendeine Erwähnung des Stadtstatus zip, etc., wie es bei create gemacht wurde.

Ich habe das nicht getestet (die Benutzer haben akzeptiert, dass sich die Adresse nicht ändert, also werde ich es nicht versuchen), aber ich stelle das hier als eine Idee vor, wenn jemand ein ähnliches Problem hat Sie können es versuchen und vielleicht kommentieren, wenn es funktioniert.

0

Obwohl dies eine ältere Frage ist, habe ich keine Antwort gefunden. Ich stoße auf das gleiche Problem, aber hier ist, was ich bisher gefunden habe.

Das Problem ist, dass die Struktur addr 1-5 auf einem Add/Insert funktioniert, aber nicht auf einem Update funktioniert, mit QB geben die "der Parameter ist falsch".

Um das Problem zu umgehen, können Sie die Methode addr 1-3, city, state, zip ... verwenden, wenn Sie die aktualisierten Empfänger-/Straßeninformationen in 3 Zeilen, maximal 41 (Desktop Edition), analysieren können. Wenn ich mich erinnere, nimmt QB ein Newline-Zeichen, so dass Sie eine einzelne "Adresszeile 3" sehen können wie 2 separate Zeilen im QB-Adressblock.

Der einschränkendste Faktor, und warum es für mich nicht funktioniert, ist, dass jede Adresszeile 41 Zeichen hat, obwohl die Online-Ausgabe bei 500 viel großzügiger ist. Ich kann zwei oder drei Zeilen in die eine Adresse setzen 3 Slot, aber 41 ist ziemlich einschränkend für eine ganze Straße Adresse.

Dies ist auch der Grund, warum der Adress-XML-Block, wie in der Abfrageantwort angegeben, nicht funktioniert. Hätten Sie Adresszeilen 3 & 4 von 35 Zeichen, zum Beispiel, in Ihrer ersten Adresse 1-5 Auftrag hinzufügen Anfrage, QB wird es nehmen, aber Sie können nicht umdrehen und setzen Sie das in 3 Zeilen plus Stadt, Staat PLZ ... beim Update.

Also, ich aktualisiere gerade keine Adressen und, wie oben erwähnt, akzeptieren die Benutzer nur, dass externe Änderungen nicht in QB aktualisiert werden und sie müssen es in QB selbst getan haben.

Intuit muss nur diesen Fehler beheben. Sie müssen nur die alte Adresse in einem Update löschen und durch das neue ersetzen, anstatt zu versuchen, das eine dem anderen zuzuordnen. Sie können das nicht tun, weil sie Adressen als eine einzelne Zeichenfolge speichern und dann zur Laufzeit analysieren. Ich denke, der Versuch, die Zeilen des Updates 1-5 mit der zur Laufzeit analysierten Zeichenkette zu vergleichen, ist der Grund, warum dies fehlschlägt.

Bitte lassen Sie uns wissen, wenn es eine Lösung gibt! Wir werden alle im Ruhestand sein, bevor Intuit dazu kommt.

James

Verwandte Themen