在QuickBooks QBXML上使用defMacro和useMacro
我正在研究如何在qbxml上使用defMacro和useMacro。正如我读到的;我可以使用defMacro属性为TxnID分配一个名称,然后通过在另一个事务中使用useMacro,使用分配的名称引用该事务 我尝试在BillAdd和BillPaymentCheckAdd请求上执行此操作 BillAdd请求:在QuickBooks QBXML上使用defMacro和useMacro,quickbooks,Quickbooks,我正在研究如何在qbxml上使用defMacro和useMacro。正如我读到的;我可以使用defMacro属性为TxnID分配一个名称,然后通过在另一个事务中使用useMacro,使用分配的名称引用该事务 我尝试在BillAdd和BillPaymentCheckAdd请求上执行此操作 BillAdd请求: <?xml version="1.0" encoding="UTF-8"?> <?qbxml version="7.0"?> <QBXML> <
<?xml version="1.0" encoding="UTF-8"?>
<?qbxml version="7.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<BillAddRq requestID="0">
<BillAdd defMacro="TxnID:1258">
<VendorRef>
<FullName>Sample</FullName>
</VendorRef>
<TxnDate>2012-12-22</TxnDate>
<DueDate>2013-01-21</DueDate>
<RefNumber>1258</RefNumber>
<TermsRef>
<FullName>Net 30</FullName>
</TermsRef>
<ExpenseLineAdd>
<AccountRef>
<FullName>Crop Sales</FullName>
</AccountRef>
<Amount>400.00</Amount>
</ExpenseLineAdd>
<ExpenseLineAdd>
<AccountRef>
<FullName>Utilities</FullName>
</AccountRef>
<Amount>1000.00</Amount>
</ExpenseLineAdd>
</BillAdd>
</BillAddRq>
</QBXMLMsgsRq>
</QBXML>
样品
2012-12-22
2013-01-21
1258
净30
作物销售
400
公用事业
1000
QuickBooks很好地接收到了这些数据,
并将此作为响应发送:
<?xml version="1.0" encoding="UTF-8"?>
<QBXML>
<QBXMLMsgsRs>
<BillAddRs requestID="0" statusCode="0" statusSeverity="Info" statusMessage="Status OK">
<BillRet>
<TxnID>371-1459505632</TxnID>
<TimeCreated>2016-04-01T18:13:52+08:00</TimeCreated>
<TimeModified>2016-04-01T18:13:52+08:00</TimeModified>
<EditSequence>1459505632</EditSequence>
<TxnNumber>218</TxnNumber>
<VendorRef>
<ListID>80000001-1448596175</ListID>
<FullName>Sample</FullName>
</VendorRef>
<APAccountRef>
<ListID>80000031-1458630264</ListID>
<FullName>Accounts Payable</FullName>
</APAccountRef>
<TxnDate>2012-12-22</TxnDate>
<DueDate>2013-01-21</DueDate>
<AmountDue>1400.00</AmountDue>
<RefNumber>1258</RefNumber>
<TermsRef>
<ListID>80000006-1448593319</ListID>
<FullName>Net 30</FullName>
</TermsRef>
<IsPaid>false</IsPaid>
<ExpenseLineRet>
<TxnLineID>373-1459505632</TxnLineID>
<AccountRef>
<ListID>8000000A-1448593319</ListID>
<FullName>Crop Sales</FullName>
</AccountRef>
<Amount>400.00</Amount>
</ExpenseLineRet>
<ExpenseLineRet>
<TxnLineID>374-1459505632</TxnLineID>
<AccountRef>
<ListID>8000001E-1448593319</ListID>
<FullName>Utilities</FullName>
</AccountRef>
<Amount>1000.00</Amount>
</ExpenseLineRet>
</BillRet>
</BillAddRs>
</QBXMLMsgsRs>
</QBXML>
371-1459505632
2016-04-01T18:13:52+08:00
2016-04-01T18:13:52+08:00
1459505632
218
80000001-1448596175
样品
80000031-1458630264
应付账款
2012-12-22
2013-01-21
1400
1258
80000006-1448593319
净30
假的
373-1459505632
80000000A-1448593319
作物销售
400
374-1459505632
8000001E-1448593319
公用事业
1000
然后我发送账单付款请求:
<?xml version="1.0" encoding="UTF-8"?>
<?qbxml version="7.0"?>
<QBXML>
<QBXMLMsgsRq onError="continueOnError">
<BillPaymentCheckAddRq requestID="2">
<BillPaymentCheckAdd>
<PayeeEntityRef>
<FullName>Sample</FullName>
</PayeeEntityRef>
<APAccountRef>
<FullName>Accounts Payable</FullName>
</APAccountRef>
<TxnDate>2016-03-16</TxnDate>
<BankAccountRef>
<FullName>Sample Bank</FullName>
</BankAccountRef>
<RefNumber>3500</RefNumber>
<Memo>Sample Memo</Memo>
<AppliedToTxnAdd>
<TxnID useMacro="TxnID:1258">1258</TxnID>
<PaymentAmount>100.00</PaymentAmount>
</AppliedToTxnAdd>
</BillPaymentCheckAdd>
</BillPaymentCheckAddRq>
</QBXMLMsgsRq>
</QBXML>
样品
应付账款
2016-03-16
样本库
3500
样本备忘录
1258
100
QuickBooks回复时出错字段“事务ID”中给定的对象ID“1258”无效。
我尝试删除useMacro属性上的TxnID,因此我最终得到了1258
我还尝试删除TxnID节点中的文本,它变为
,但随后我得到“缺少一个元素:“TxnID”。
该网站指出,“defMacro是在SDK 2.0中引入的,因此它只适用于2.0及更高版本的请求。”因此我怀疑我可能存在版本问题,但搜索哪个QuickbooksWebConnector版本支持该问题,我一无所获
我不知道出了什么问题,我使用的是QuickbooksWebConnector 2.1.0.30和QuickBooks Premier-会计版2014
非常感谢提供任何信息。宏只能在给定的qbXML请求中工作。它们不能跨请求工作
e、 g.类似的方法将起作用:
<?xml version="1.0" encoding="UTF-8"?>
<?qbxml version="7.0"?>
<QBXML>
<QBXMLMsgsRq>
<CustomerAddRq>
... define your macro in here ...
</CustomerAddRq>
<InvoiceAddRq>
... use your macro in here ...
</InvoiceAddRq>
</QBXMLMsgsRq>
</QBXML>
... 在此处定义宏。。。
... 在这里使用你的宏。。。
但如果您将其分为两个请求,它将不起作用:
... 在此处定义宏。。。
以及:
... 在这里使用你的宏。。。
此外,关于这一点:
该网站指出,“defMacro是在SDK 2.0中引入的,因此它只适用于2.0及更高版本的请求。”
您正在使用SDK版本:
<?qbxml version="7.0"?>
<?xml version="1.0" encoding="UTF-8"?>
<?qbxml version="7.0"?>
<QBXML>
<QBXMLMsgsRq>
<InvoiceAddRq>
... use your macro in here ...
</InvoiceAddRq>
</QBXMLMsgsRq>
</QBXML>
<?qbxml version="7.0"?>