QuickBooks发票修改有不同的地址行为比创建,如何补偿?

时间:2009-05-18 13:14:24

标签: quickbooks invoice qbxml

我正在编写一个函数来获取定义格式的发票文件,并通过qbXML将其导入QuickBooks。其中一个要求是,可以重新导入与修改现有发票相同的发票编号,而不是创建具有相同编号的新发票编号。

我遇到的问题是QuickBooks如何处理地址。我得到的地址可以是任何格式(在6种不同的情况下),不保证遵守该语言环境的正确地址格式。

因此创建发票非常简单,我在xml标记中指定了帐号地址addr1到addr5,而QuickBooks没有问题。 HOWEVER 它不会将地址存储为原始文本,它会尝试解析城市,州邮政编码和国家/地区。

发票修改,给定相同的地址信息,不会解析城市状态和zip,而是保留地址线完整,并保持城市状态和zip不变,在发票上创建一个重复的行,一个免费表格文本,城市,州和邮政编码的复合。解决方法是明确设置城市州拉链国家和发票修改时注释为空白。但是,这还没有完全解决问题。

有时,QuickBooks会正确解析地址并在下一行添加一个随机数(在注释标签上内部表示)。

有时QuickBooks会拒绝该地址,甚至认为它在创建时接受了它。我假设是因为它试图解析5行地址并进行修改,因为城市州和邮政编码无处可去,它没有地方存储它们。

现在我唯一的解决方案是简单地保持地址不变,并告诉用户由于QuickBooks的限制,无法修改发票重新导入的地址,只有发票行。

之前有没有人碰到这个,如果有的话,你有更好的解决方法吗?你知道一个地址解析器可以合理地估计quickbooks的作用吗,所以我可以以一致的方式发送城市状态和邮政编码吗?

现在,在某种程度上(除了最后一个)QuickBooks给了我一个回复,告诉我它在创建时解析了什么,所以我理论上可以存储它以了解我正在处理什么,但是没有写一些时间消费地址解析例程是否有任何解决方案可以让quickbooks从新的地址重新解析地址。

这是请求和响应。请注意,发票创建是相同的,我删除了一些识别信息,但保持字段长度相同。

请求:

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

响应:

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

1 个答案:

答案 0 :(得分:0)

此处另一个可能的解决方法是双倍更新发票。首先将地址删空。第二个是发送五行而不提及城市状态zip等,就像在创建时一样。

我没有测试过这个(用户接受了地址不会改变,所以我不打算尝试),但是我把它作为一个想法,所以如果有人有类似的问题他们可以尝试一下,也许可以在这里发表评论。