intuit-partner-platform - 无法将发票日期或发票上的 PO 编号发送给 QB

标签 intuit-partner-platform qbxml

我有一个可用的 QBXML 界面,但我似乎无法添加几个 数据项上传至发票(至 QB)。我正在尝试添加 发票日期和邮政信箱数量。

QB 返回的错误是:

QuickBooks found an error when parsing the provided XML text stream.

为了确保我正在使用 正确的 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 个小时。我完全失去了更多的想法。任何帮助将不胜感激。

布莱克·麦克布莱德

最佳答案

您提交的标签的顺序很重要

这意味着如果 QuickBooks OSR 告诉您标签的正确顺序是:

  • 发送日期
  • 引用编号
  • 采购订单编号
  • 备忘录

然后您必须按该顺序发送标签。任何其他命令都不起作用。

您的示例具有以下顺序的标签:(TxnDate 之前的备忘录)

  • 引用编号
  • 备忘录
  • 发送日期

此订单:(PONumber 之前的备注)

  • 引用编号
  • 备忘录
  • 采购订单编号

这两者都不正确。

如果您重新排序标签,它就会起作用。

相关QuickBooks development FAQ entry在这里。另外,请确保检查 QuickBooks SDK 中包含的 XML 验证器工具(它会告诉您标签是否乱序)。

QuickBooks OSR将向您显示正确的标签顺序。

关于intuit-partner-platform - 无法将发票日期或发票上的 PO 编号发送给 QB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17263741/

相关文章:

java - 为 2 个管理员用户订阅 Quickbooks 中的应用

QuickBooks AccountQuery - 全名不包括 parent 姓名

c# - 使用 QuickBooks Online (QBO) Intuit 合作伙伴平台 (IPP) DevKit 查询具有未结余额的所有发票

intuit-partner-platform - 发票缺少 "TotalAmt"字段

java - 我如何测试 quickbooks QBXML 和标签的有效性

php - 使用 DOMDocument 在 XML 中附加 QBXML 声明

quickbooks - 在 QBSDK 12 中将 InventorySite 添加到 Quickbooks 发票时出错

oauth - Intuit 合作伙伴平台 - 我们应该寻找什么返回状态来检查 OAuth token 是否仍然有效?

java - 使用外部库 Spring Framework 通过模拟执行 Karate jar