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

时间:2015-09-28 06:43:33

标签: c# quickbooks qbxml

这是我的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>

我收到了错误消息 解析提供的XML文本流时,QuickBooks发现错误。

请帮助

1 个答案:

答案 0 :(得分:1)

如果您参考QuickBooks OSR:

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

  • <TxnLineID>

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

  

<强> TxnLineID

     

交易行的标识号。 (TxnLineID   从v2.0开始支持SDK。使用qbXML v1.0和v1.1,   TxnLineID始终返回为零。)

     

如果您需要在事务Mod中添加新的事务行   请求,您可以通过将TxnLineID设置为-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>
...