我有一个可用的QBXML界面,但我似乎无法添加几个 数据项到发票上传(到QB)。我想添加 发票日期和P.O.号。
QB返回的错误是:
QuickBooks在解析提供的XML文本流时发现错误。
努力确保我正在使用 正确的XML格式我在相反的方向上进行了转移 (来自QB)以查看它发送的内容。
向QB发送发票时,我添加了以下两个XML 元素(导致问题):
<TxnDate>2013-04-02</TxnDate>
和
<PONumber>ABC123</PONumber>
其中一个或两个都会产生错误。如果我省略它两者都有效。
例如,以下作品:
<?xml version="1.0" ?><?qbxml version="10.0"?><QBXML><QBXMLMsgsRq onError = "stopOnError"><InvoiceAddRq requestID = "1"><InvoiceAdd><CustomerRef><ListID>800000D1-1371755142</ListID></CustomerRef><RefNumber>0071010001P</RefNumber><Memo></Memo><InvoiceLineAdd><ItemRef><ListID>80000001-1288815007</ListID></ItemRef><Desc>Software License Fee as per 6/19/07 Licensing Agreement</Desc><Quantity>1.00</Quantity><Rate>4000.0000</Rate></InvoiceLineAdd><InvoiceLineAdd><ItemRef><ListID>80000001-1288815007</ListID></ItemRef><Desc>Consulting hours as per 7/16/07 Large Contract for Consulting Services</Desc><Quantity>50.00</Quantity><Rate>100.0000</Rate></InvoiceLineAdd></InvoiceAdd></InvoiceAddRq> </QBXMLMsgsRq></QBXML>
但以下不起作用:
<?xml version="1.0" ?><?qbxml version="10.0"?><QBXML><QBXMLMsgsRq onError = "stopOnError"><InvoiceAddRq requestID = "1"><InvoiceAdd><CustomerRef><ListID>800000D1-1371755142</ListID></CustomerRef><RefNumber>0071010001P</RefNumber><Memo></Memo><TxnDate>2013-04-02</TxnDate><InvoiceLineAdd><ItemRef><ListID>80000001-1288815007</ListID></ItemRef><Desc>Software License Fee as per 6/19/07 Licensing Agreement</Desc><Quantity>1.00</Quantity><Rate>4000.0000</Rate></InvoiceLineAdd><InvoiceLineAdd><ItemRef><ListID>80000001-1288815007</ListID></ItemRef><Desc>Consulting hours as per 7/16/07 Large Contract for Consulting Services</Desc><Quantity>50.00</Quantity><Rate>100.0000</Rate></InvoiceLineAdd></InvoiceAdd></InvoiceAddRq> </QBXMLMsgsRq></QBXML>
以下内容不起作用:
<?xml version="1.0" ?><?qbxml version="10.0"?><QBXML><QBXMLMsgsRq onError = "stopOnError"><InvoiceAddRq requestID = "1"><InvoiceAdd><CustomerRef><ListID>800000D1-1371755142</ListID></CustomerRef><RefNumber>0071010001P</RefNumber><Memo></Memo><PONumber >ABC123</PONumber><InvoiceLineAdd><ItemRef><ListID>80000001-1288815007</ListID></ItemRef><Desc>Software License Fee as per 6/19/07 Licensing Agreement</Desc><Quantity>1.00</Quantity><Rate>4000.0000</Rate></InvoiceLineAdd><InvoiceLineAdd><ItemRef><ListID>80000001-1288815007</ListID></ItemRef><Desc>Consulting hours as per 7/16/07 Large Contract for Consulting Services</Desc><Quantity>50.00</Quantity><Rate>100.0000</Rate></InvoiceLineAdd></InvoiceAdd></InvoiceAddRq> </QBXMLMsgsRq></QBXML>
我花了至少30个小时。我完全失去了更多的想法。任何帮助将不胜感激。
Blake McBride
答案 0 :(得分:2)
您提交的代码的顺序非常重要。
这意味着如果QuickBooks OSR告诉您标签的正确顺序是:
然后你必须按顺序发送标签。任何其他订单都不起作用。
您的示例按此顺序包含标记:( TxnDate之前的备忘录)
这个顺序:( PONumber之前的备忘录)
两者都不正确。
如果您重新订购代码,它就会有效。
此处相关QuickBooks development FAQ entry。此外,请确保查看QuickBooks SDK附带的XML Validator工具(它会告诉您标签是否出现故障)。
QuickBooks OSR会显示正确的代码顺序。