首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过Consoli字节Quickbooks DevKit将定金从PHP应用程序传递到Quickbook桌面的问题

通过Consoli字节Quickbooks DevKit将定金从PHP应用程序传递到Quickbook桌面的问题
EN

Stack Overflow用户
提问于 2022-06-24 01:18:04
回答 1查看 40关注 0票数 0

我正在实现Keith的QuickBooks PHP DevKit (https://github.com/consolibyte/quickbooks-php/),以便我的PHP应用程序可以通过Quickbooks将数据传递到Quickbooks。由于PHP和Quickbook的变化,我已经解决了几个问题,现在示例web连接器应用确实有效,并成功地将客户传递给Quickbook。

我的实际目标是通过PHP模拟通过以下相对简单的过程在Quickbook中完成的工作:

银行->使用登记册,(选择帐户),并输入付款或存款金额,帐户,备忘录,并单击记录.

我认为这一点(至少是存款部分)将通过DepositAddRq通过使用PHP中的DepositAddRq方法来实现。现在我正在重写一些东西来使用这个方法,我收到了以下错误:

3180:保存存款线时出错了。QuickBooks错误信息:给定的记录号不在“支付到存款”列表中。

SOAP服务器正在生成以下XML:

代码语言:javascript
运行
复制
        <?qbxml version="2.0"?>
        <QBXML>
            <QBXMLMsgsRq onError="stopOnError">
                <DepositAddRq requestID="19">
                    <DepositAdd>
                        <DepositToAccountRef>
                            <FullName>test account</FullName>
                        </DepositToAccountRef>
                        <Memo>Memo</Memo>
                        <DepositLineAdd>
                            <PaymentTxnID>3D95-1071497093</PaymentTxnID>
                        </DepositLineAdd>
                    </DepositAdd>
                </DepositAddRq>
            </QBXMLMsgsRq>
        </QBXML>

我收到了来自Quickbook的XML响应:

代码语言:javascript
运行
复制
<?xml version="1.0" ?>
<QBXML>
<QBXMLMsgsRs>
<DepositAddRs requestID="19" statusCode="3180" statusSeverity="Error" statusMessage="There was an error when saving a Deposit line..  QuickBooks error message: The given record number is not in the Payments to Deposit list." />
</QBXMLMsgsRs>
</QBXML>

在传递用于QuickBooks的XML 15示例代码时,我也会收到相同的错误:

代码语言:javascript
运行
复制
<QBXMLMsgsRq onError="stopOnError">
<DepositAddRq requestID="0">
<DepositAdd>
<DepositToAccountRef>
<FullName>Checking</FullName>
</DepositToAccountRef>
<DepositLineAdd>
<PaymentTxnID>3D95-1071497099</PaymentTxnID>
</DepositLineAdd>
</DepositAdd>
</DepositAddRq>
</QBXMLMsgsRq>
</QBXML>

我是否应该用一种完全不同的方法记录一个帐户的存款和付款,是否还需要额外的步骤,还是说我这样做完全错误?

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-24 01:45:07

这有点棘手,但是如果您查看这些文档,您可以看到它想要什么:

具体而言,请参阅本节:

代码语言:javascript
运行
复制
<DepositLineAdd defMacro="MACROTYPE"> <!-- optional, may repeat -->
        <!-- BEGIN OR -->
                <PaymentTxnID  useMacro="MACROTYPE">IDTYPE</PaymentTxnID> <!-- required -->
                <PaymentTxnLineID  useMacro="MACROTYPE">IDTYPE</PaymentTxnLineID> <!-- optional -->
                <OverrideMemo >STRTYPE</OverrideMemo> <!-- optional -->
                <OverrideCheckNumber >STRTYPE</OverrideCheckNumber> <!-- optional -->
                <OverrideClassRef> <!-- optional -->
                        <ListID >IDTYPE</ListID> <!-- optional -->
                        <FullName >STRTYPE</FullName> <!-- optional -->
                </OverrideClassRef>
        <!-- OR -->
                <EntityRef> <!-- optional -->
                        <ListID >IDTYPE</ListID> <!-- optional -->
                        <FullName >STRTYPE</FullName> <!-- optional -->
                </EntityRef>
                <AccountRef> <!-- required -->
                        <ListID >IDTYPE</ListID> <!-- optional -->
                        <FullName >STRTYPE</FullName> <!-- optional -->
                </AccountRef>
                <Memo >STRTYPE</Memo> <!-- optional -->
                <CheckNumber >STRTYPE</CheckNumber> <!-- optional -->
                <PaymentMethodRef> <!-- optional -->
                        <ListID >IDTYPE</ListID> <!-- optional -->
                        <FullName >STRTYPE</FullName> <!-- optional -->
                </PaymentMethodRef>
                <ClassRef> <!-- optional -->
                        <ListID >IDTYPE</ListID> <!-- optional -->
                        <FullName >STRTYPE</FullName> <!-- optional -->
                </ClassRef>
                <Amount >AMTTYPE</Amount> <!-- optional -->
        <!-- END OR -->
</DepositLineAdd>

这意味着您可以提供到支付(<PaymentTxnID>)的链接,也可以提供到帐户(<AccountRef>)的链接。

您在文章中描述的内容和在XML中显示的内容是两件不同的事情。在XML中,您试图链接到现有的未存入付款(例如,您试图将现有付款标记为已存入银行):

<PaymentTxnID>3D95-1071497099</PaymentTxnID>

但你所描述的是指定一个帐户和一个备忘录

代码语言:javascript
运行
复制
... (Select Account), and entering either a Payment or a Deposit amount, an Account, a Memo, and Clicking Record.

如果您试图模拟输入帐户、备注等,则需要提供XML来指定帐户、备注等。例如:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="15.0"?>
<QBXML>
        <QBXMLMsgsRq onError="stopOnError">
                <DepositAddRq>
                        <DepositAdd>
                                <DepositToAccountRef>
                                        <FullName>Your Bank Account</FullName>
                                </DepositToAccountRef>

                                <DepositLineAdd>

                                        <AccountRef>
                                                <FullName>Account Name Here</FullName>
                                        </AccountRef>
                                        <Memo>Memo test</Memo>

                                        <Amount>100.00</Amount>
                                                
                                </DepositLineAdd>
                        </DepositAdd>

                </DepositAddRq>
        </QBXMLMsgsRq>
</QBXML>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72738099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档