如何使用qbxml和qbsdk13修改quickbooks中的发票?

How to modify an invoice in quickbooks using qbxml and qbsdk13?

这是我的 QBXML 请求

<?xml version="1.0" ?>
<?qbxml version="6.0"?>
<QBXML>
    <QBXMLMsgsRq onError="stopOnError">
        <InvoiceModRq requestID="1">
            <InvoiceMod>
                <TxnID>85-1442639879</TxnID>
                <EditSequence>1442639879</EditSequence>
                <CustomerRef>
                    <ListID>80000005-1442639850</ListID>
                    <FullName>Bruce Banner</FullName>
                </CustomerRef>
                <TxnDate>2015-09-19</TxnDate>
                <RefNumber>5462</RefNumber>
                <InvoiceLineMod>
                    <ItemRef>
                        <ListID>8000000A-1442469770</ListID>
                        <FullName>Item 1</FullName>
                    </ItemRef>
                    <Quantity>1</Quantity>
                    <Rate>1100.00</Rate>
                </InvoiceLineMod>
            </InvoiceMod>
        </InvoiceModRq>
    </QBXMLMsgsRq>
</QBXML>

我收到一个错误 QuickBooks 在解析提供的 XML 文本流时发现错误。

请帮忙

如果您参考 QuickBooks OSR:

您会注意到,在 <InvoiceLineMod> 元素中,此节点是 必需的

  • <TxnLineID>

OSR 也为您提供了更多信息:

TxnLineID

Identification number of the transaction line. (TxnLineID is supported as of v2.0 of the SDK. With qbXML v1.0 and v1.1, TxnLineID is always returned as zero.)

If you need to add a new transaction line in a transaction Mod request, you can do so by setting the TxnLineID to -1.

因此,您需要添加一个 <TxnLineID> 节点。如果是新行项目,请将 -1 作为节点内的内容。如果它是您要更新的现有行,请将现有行的 TxnLineID 值放在那里。

示例:

...
<InvoiceLineMod>
    <TxnLineID>-1</TxnLineID>
    <ItemRef>
        <ListID>8000000A-1442469770</ListID>
        <FullName>Item 1</FullName>
    </ItemRef>
    <Quantity>1</Quantity>
    <Rate>1100.00</Rate>
</InvoiceLineMod>
...