2

是否可以使用一次性物品创建发票或按需生成缺少的物品,而无需解析QBXMLMsgsRs返回值?

我正在尝试通过 QuickBooks Web 连接器将发票传输到 QuickBooks,我无法确保这些项目已经存在。我知道 QuickBooks 本身能够按需创建项目。

我将收到以下返回消息:

QBXMLMsgsRs

发票行中对 QuickBooks 项目“1000000000”的引用无效。QuickBooks 错误消息:参数无效。列表中不存在指定的记录。

作为后备,我会解析返回值,创建项目并再次提交发票,但我正在寻找现有的实现。我已经检查了屏幕参考(InvoiceAdd),没有任何有用的信息。

这是我的一个例子QBXML

<?xml version="1.0" encoding="us-ascii"?>
<?qbxml version="13.0"?>
<QBXML>
    <QBXMLMsgsRq onError="stopOnError">
        <InvoiceAddRq requestID="bd4a0a4d-81ea-4f95-ae09-150f15a12423">
            <InvoiceAdd>
                <CustomerRef>
                    <ListID>80000004-1434444973</ListID>
                    <FullName>University of North Carolina</FullName>
                </CustomerRef>
                <TxnDate>1999-01-21</TxnDate>
                <RefNumber>9668</RefNumber>
                <BillAddress>
                    <Addr1>University of North Carolina</Addr1>
                    <Addr2>University City Blvd</Addr2>
                    <Addr3 />
                    <City>Charlotte</City>
                    <State>NC</State>
                    <PostalCode>9201</PostalCode>
                    <Country>United States</Country>
                </BillAddress>
                <InvoiceLineAdd>
                    <ItemRef>
                        <FullName>1000000000</FullName>
                    </ItemRef>
                    <Desc>Item 1 Description Goes Here</Desc>
                    <Quantity>1</Quantity>
                    <Rate>295</Rate>
                </InvoiceLineAdd>
                <InvoiceLineAdd>
                    <ItemRef>
                        <FullName>1000000001</FullName>
                    </ItemRef>
                    <Desc>Item 2 Description Goes Here</Desc>
                    <Quantity>5</Quantity>
                    <Rate>25</Rate>
                </InvoiceLineAdd>
            </InvoiceAdd>
        </InvoiceAddRq>
    </QBXMLMsgsRq>
</QBXML>
4

1 回答 1

3

是否可以使用一次性物品创建发票或按需生成缺失物品,

不。

我无法确保这些项目已经存在。

为什么不?其他人都这样做...

我知道 QuickBooks 本身能够按需创建项目。

这是不正确的,QuickBooks 无法按需创建项目。如果该项目不存在并且您尝试将其键入到列表中,GUI 会提示您手动创建它。

作为后备,我会解析返回值,创建项目并再次提交发票,但我正在寻找现有的实现。

另一种选择是批量处理您的请求并始终尝试创建项目以确保它们存在。

例如:

<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="7.0"?>
<QBXML>
    <QBXMLMsgsRq onError="continueOnError">
        <ItemNonInventoryAdd>
            ... your item data here ...
        </ItemNonInventoryAdd>
        <InvoiceAdd> 
            ... your invoice data here ...
        </InvoiceAdd>
    </QBXMLMsgsRq>
</QBXML>

更多示例:

通过这样做,如果该项目尚不存在,则将在发票之前创建该项目。如果该项目确实存在,QuickBooks 将跳过请求的该部分并继续下一个。

于 2015-06-29T12:19:49.073 回答