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 & 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>
Antwort:
<?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>
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 ... –