【问题标题】:QuickBooks API Invoice <DueDate> tagQuickBooks API 发票 <DueDate> 标签
【发布时间】:2014-02-17 10:43:02
【问题描述】:

多年前,我在基于 SQL Server 的系统和 QuickBooks 之间编写了一个自定义集成,它可以根据 SQL Server 中的数据在 QuickBooks 中自动创建发票。创建发票的 XML 字符串非常简单:

<QBXML>
    <QBXMLMsgsRq newMessageSetID="10025027" onError="continueOnError">
        <InvoiceAddRq requestID="10025027">
            <InvoiceAdd>
                <CustomerRef>
                    <FullName>Acme Corporation, Inc.</FullName>
                </CustomerRef>
                <TxnDate>2014-02-05</TxnDate>
                <RefNumber>124</RefNumber>
                <ShipAddress>
                    <Addr1>16-01 16th Avenue, Dock 3</Addr1>
                    <Addr2/>
                    <Addr3/>
                    <Addr4/>
                    <City>Astoria</City>
                    <State>NY</State>
                    <PostalCode>11105</PostalCode>
                </ShipAddress>
                <PONumber> 6028019</PONumber>
                <SalesRepRef>
                    <FullName>H</FullName>
                </SalesRepRef>
                <Memo>1401106</Memo>
                <InvoiceLineAdd>
                    <ItemRef>
                        <FullName>SALES</FullName>
                    </ItemRef>
                    <Desc> Semi Annual Sampling - M1; Day 1</Desc>
                    <Rate>5580</Rate>
                </InvoiceLineAdd>
            </InvoiceAdd>
        </InvoiceAddRq>
    </QBXMLMsgsRq>
</QBXML>

基于 SQL Server 的系统实际打印交付给客户的详细发票,QuickBooks 仅用于跟踪帐户余额和付款。我现在尝试通过添加以下 XML 标记将 DueDate 添加到发票中:

<DueDate>2014-03-07</DueDate>

我已尝试将此标记放置在 XML 字符串中的多个位置,但 QuickBooks 拒绝该请求并出现以下错误:

“QuickBooks 在解析提供的 XML 文本流时发现错误。”

簿记员可以在创建发票后手动更改发票的到期日期,但由于某种原因,我无法在使用 QuickBooks API 创建发票时指定到期日期。有什么想法吗?

谢谢。

【问题讨论】:

  • 也许您应该发布您的 XML 请求实际显示您尝试将 DueDate 标记放在哪里

标签: api quickbooks


【解决方案1】:

这里有几点需要注意:

  1. 这是一个不完整的 qbXML 请求。前两行应该有一个 XML 和 qbXML 标头标记,而您错过了它们。它们应该如下所示:

    &lt;?xml version="1.0" encoding="utf-8"?&gt;

    &lt;?qbxml version="13.0"?&gt;

  2. version="..." 位应设置为您的 QuickBooks 版本支持的内容(通常是您的 QuickBooks 版本 - 1,例如 QuickBooks 2012 支持 qbXML 版本 11.0,QuickBooks 2013 支持 qbXML 版本 12.0,QuickBooks 2014 支持 qbXML 版本 13.0等)

  3. 您的帖子甚至没有在 XML 中显示 DueDate 字段,因此很难判断到底出了什么问题,但是...

  4. 请记住,qbXML 中标签的顺序 很重要。因此,如果OSRPONumber 之后显示DueDate 字段,您最好确保将其放在PONumber 字段之后。如果你把它放在它之前,你会得到你描述的错误。

  5. 您是否使用 OSR 找到了正确的位置?这里不应该有任何猜测 - 它会告诉您确切的放置位置。

            ...
                    <State>NY</State>
                    <PostalCode>11105</PostalCode>
                </ShipAddress>
                <PONumber> 6028019</PONumber>
    
                <DueDate>2014-02-12</DueDate
    
                <SalesRepRef>
                    <FullName>H</FullName>
                </SalesRepRef>
                <Memo>1401106</Memo>
            ...
    

【讨论】:

  • 感谢您的回复。你的回答很有用。我认为缺少标题标题标签是问题所在。
【解决方案2】:

我认为缺少标题标签是问题所在。 (我还添加了&lt;TermsRef&gt; 标签)

下面是解决问题的 XML:

<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="11.0"?>
<QBXML>
    <QBXMLMsgsRq newMessageSetID="10025079" onError="continueOnError">
        <InvoiceAddRq requestID="10025079">
        <InvoiceAdd>
            <CustomerRef>
                <FullName>Acme Corporation</FullName>
            </CustomerRef>
            <TxnDate>2014-02-13</TxnDate>
            <RefNumber>168</RefNumber>
            <ShipAddress>
                <Addr1>Acme Corporation</Addr1>
                <Addr2>1587-43 Veteran's Highway</Addr2>
                <Addr3/>
                <Addr4/>
                <City>Islandia</City>
                <State>NY</State>
                <PostalCode>11749</PostalCode>
            </ShipAddress>
            <PONumber>5A873929B</PONumber>
            <TermsRef>
                <FullName>30 Days</FullName>
            </TermsRef>
            <DueDate>2014-03-15</DueDate>
            <SalesRepRef>
                <FullName>H</FullName>
            </SalesRepRef>
            <Memo>1402016</Memo>
            <InvoiceLineAdd>
                <ItemRef>
                    <FullName>SALES</FullName>
                </ItemRef>
                <Desc> OBAR Auto Parts, 279 South Street, Oyster Bay, NY 11771</Desc>
                <Rate>1760</Rate>
            </InvoiceLineAdd>
        </InvoiceAdd>
    </InvoiceAddRq>
</QBXMLMsgsRq>
</QBXML>

再次感谢您!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多