4

我是一家销售基于 Web 的商业软件产品的公司的程序员,该产品让用户经营他们的业务。我们的系统还需要将所有财务信息同步到我们用户的桌面 QuickBooks。我们使用 QB Web 连接器来执行此操作。

当我向 QB 发送已在我们系统中支付的发票时,首先我发送 InvoiceAddRq。我在 ARAccountRef 字段中指定了确切的 AR 帐户名称。

当 InvoiceAddRs 返回时,如果 statusSeverity 是 INFO 并且 statusMessage 是“Status OK”,那么我从 XML 中读取 TxnID 并存储在我们的数据库中。

然后,当 Web 连接器发送下一个操作的请求时,我从数据库中读取相同的 TxnID 并发送一个 ReceivePaymentAddRq,其中我在 ARAccountRef 中使用完全相同的 AR 帐户名称,在 CustomerRef 中使用完全相同的客户名称,并且在 ReceivePaymentAddRq 的 AppliedToTxnAdd 块中,我将 InvoiceAddRs 中的相同 TxnID 用于 TxnID,并使用我在 InvoiceAddRq 的 InvoiceLineAdd 的 Amount 字段中发送的 PaymentAmount 相同的发票总额。

(我们的 InvoiceAddRq 始终只包含一个 Invoice Line,在我们的系统中包含发票的总计。我们不导入客户的单个项目。)

现在——有时这很好用,但有时 ReceivePaymentAddRs 包含错误“无法找到请求中指定的对象“...”——其中“...”是我从初始 InvoiceAddRs 中获得的 TxnID。

发生这种情况时,客户向我们确认相应发票确实在他们的 QB 中,但未标记为已付款。

另外,需要注意的是,我们的客户没有使用多种货币,所有货币都是美元,并且 ReceivePaymentAddRq 发生在 InvoiceAddRq 之后的几秒钟内,这意味着客户公司中没有 QB 用户有时间修改新插入的发票.

为什么会这样?这是QB的错误吗?

编辑:

2017-01-04 14:24:21


<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="8.0"?>
<QBXML>
    <QBXMLMsgsRq onError="stopOnError">
        <InvoiceAddRq>
            <InvoiceAdd>
                <CustomerRef>
                    <FullName>SILMAN DC</FullName>
                </CustomerRef>
                <ARAccountRef>
                    <FullName>Accounts Receivable:Accounts Receivable</FullName>
                </ARAccountRef>
                <TxnDate>2017-01-04</TxnDate>
                <RefNumber>77671</RefNumber>
                <BillAddress>
                    <Addr1>SILMAN DC</Addr1>
                    <Addr2>1053 31ST STREET NW</Addr2>
                    <Addr3/>
                    <Addr4/>
                    <City>WASHINGTON</City>
                    <State>DC</State>
                    <PostalCode>20007</PostalCode>
                </BillAddress>
                <ShipAddress>
                    <Addr1>1053 31ST STREET NW</Addr1>
                    <Addr2/>
                    <Addr3/>
                    <City>WASHINGTON</City>
                    <State>DC</State>
                    <PostalCode>20007</PostalCode>
                </ShipAddress>
                <PONumber/>
                <TermsRef>
                    <FullName>Credit Card</FullName>
                </TermsRef>
                <InvoiceLineAdd>
                    <ItemRef>
                        <FullName>Invoice</FullName>
                    </ItemRef>
                    <Desc>Invoice</Desc>
                    <Quantity>1</Quantity>
                    <Amount>59.21</Amount>
                </InvoiceLineAdd>
            </InvoiceAdd>
        </InvoiceAddRq>
    </QBXMLMsgsRq>
</QBXML>


2017-01-04 14:24:21


<?xml version="1.0"?>
<QBXML>
    <QBXMLMsgsRs>
        <InvoiceAddRs statusCode="0" statusSeverity="Info" statusMessage="Status OK">
            <InvoiceRet>
                <TxnID>A13F8-1483561159</TxnID>
                <TimeCreated>2017-01-04T15:19:19-05:00</TimeCreated>
                <TimeModified>2017-01-04T15:19:19-05:00</TimeModified>
                <EditSequence>1483561159</EditSequence>
                <TxnNumber>133184</TxnNumber>
                <CustomerRef>
                    <ListID>800005FF-1478123373</ListID>
                    <FullName>SILMAN DC</FullName>
                </CustomerRef>
                <ARAccountRef>
                    <ListID>80000025-1423671174</ListID>
                    <FullName>Accounts Receivable:Accounts Receivable</FullName>
                </ARAccountRef>
                <TemplateRef>
                    <ListID>80000003-1423576739</ListID>
                    <FullName>Intuit Service Invoice</FullName>
                </TemplateRef>
                <TxnDate>2017-01-04</TxnDate>
                <RefNumber>77671</RefNumber>
                <BillAddress>
                    <Addr1>SILMAN DC</Addr1>
                    <Addr2>1053 31ST STREET NW</Addr2>
                    <City>WASHINGTON</City>
                    <State>DC</State>
                    <PostalCode>20007</PostalCode>
                </BillAddress>
                <BillAddressBlock>
                    <Addr1>SILMAN DC</Addr1>
                    <Addr2>1053 31ST STREET NW</Addr2>
                    <Addr3>WASHINGTON, DC 20007</Addr3>
                </BillAddressBlock>
                <ShipAddress>
                    <Addr1>1053 31ST STREET NW</Addr1>
                    <City>WASHINGTON</City>
                    <State>DC</State>
                    <PostalCode>20007</PostalCode>
                </ShipAddress>
                <ShipAddressBlock>
                    <Addr1>1053 31ST STREET NW</Addr1>
                    <Addr2>WASHINGTON, DC 20007</Addr2>
                </ShipAddressBlock>
                <IsPending>false</IsPending>
                <IsFinanceCharge>false</IsFinanceCharge>
                <TermsRef>
                    <ListID>80000009-1425488517</ListID>
                    <FullName>Credit Card</FullName>
                </TermsRef>
                <DueDate>2017-01-04</DueDate>
                <ShipDate>2017-01-04</ShipDate>
                <Subtotal>59.21</Subtotal>
                <SalesTaxPercentage>0.00</SalesTaxPercentage>
                <SalesTaxTotal>0.00</SalesTaxTotal>
                <AppliedAmount>0.00</AppliedAmount>
                <BalanceRemaining>59.21</BalanceRemaining>
                <IsPaid>false</IsPaid>
                <IsToBePrinted>true</IsToBePrinted>
                <IsToBeEmailed>false</IsToBeEmailed>
                <InvoiceLineRet>
                    <TxnLineID>A13FA-1483561159</TxnLineID>
                    <ItemRef>
                        <ListID>80000003-1423676477</ListID>
                        <FullName>Invoice</FullName>
                    </ItemRef>
                    <Desc>Invoice</Desc>
                    <Quantity>1</Quantity>
                    <Rate>59.21</Rate>
                    <Amount>59.21</Amount>
                    <SalesTaxCodeRef>
                        <ListID>80000002-1423576739</ListID>
                        <FullName>Non</FullName>
                    </SalesTaxCodeRef>
                </InvoiceLineRet>
            </InvoiceRet>
        </InvoiceAddRs>
    </QBXMLMsgsRs>
</QBXML>


2017-01-04 14:25:33


<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="8.0"?>
<QBXML>
    <QBXMLMsgsRq onError="stopOnError">
        <ReceivePaymentAddRq>
            <ReceivePaymentAdd>
                <CustomerRef>
                    <FullName>SILMAN DC</FullName>
                </CustomerRef>
                <TotalAmount>59.21</TotalAmount>
                <PaymentMethodRef>
                    <FullName>Credit Card</FullName>
                </PaymentMethodRef>
                <DepositToAccountRef>
                    <FullName>Undeposited Funds</FullName>
                </DepositToAccountRef>
                <AppliedToTxnAdd>
                    <TxnID>A13F8-1483561159</TxnID>
                    <PaymentAmount>59.21</PaymentAmount>
                </AppliedToTxnAdd>
            </ReceivePaymentAdd>
        </ReceivePaymentAddRq>
    </QBXMLMsgsRq>
</QBXML>


2017-01-04 14:25:33


<?xml version="1.0"?>
<QBXML>
   <QBXMLMsgsRs>
      <ReceivePaymentAddRs statusCode="3120" statusSeverity="Error" statusMessage="Object &quot;A13F8-1483561159&quot; specified in the request cannot be found. "/>
   </QBXMLMsgsRs>
</QBXML>

好的,一个更正:我的 ReceivePaymentAddRq 中似乎没有包含 ARAccountRef 聚合。可能是因为 IDN 统一 OSR 说它是可选的。这是问题吗?请记住,它只会偶尔发生一次...

**编辑:

我在我的 ReceivePaymentAddRq 中添加了 ARAccountRef 聚合。仍然收到错误。

4

0 回答 0