我正在实现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:
<?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响应:
<?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示例代码时,我也会收到相同的错误:
<QBXMLMsgsRq onError="stopOnError">
<DepositAddRq requestID="0">
<DepositAdd>
<DepositToAccountRef>
<FullName>Checking</FullName>
</DepositToAccountRef>
<DepositLineAdd>
<PaymentTxnID>3D95-1071497099</PaymentTxnID>
</DepositLineAdd>
</DepositAdd>
</DepositAddRq>
</QBXMLMsgsRq>
</QBXML>
我是否应该用一种完全不同的方法记录一个帐户的存款和付款,是否还需要额外的步骤,还是说我这样做完全错误?
提前感谢!
发布于 2022-06-23 17:45:07
这有点棘手,但是如果您查看这些文档,您可以看到它想要什么:
具体而言,请参阅本节:
<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>
但你所描述的是指定一个帐户和一个备忘录
... (Select Account), and entering either a Payment or a Deposit amount, an Account, a Memo, and Clicking Record.
如果您试图模拟输入帐户、备注等,则需要提供XML来指定帐户、备注等。例如:
<?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>
https://stackoverflow.com/questions/72738099
复制相似问题