QBXML - 当我使用 InvoiceModRq 修改发票时,如何即时添加全新的项目?
QBXML - How do I go about adding brand new items on the fly when i modify an Invoice using InvoiceModRq?
<?xml version="1.0" encoding="utf-16"?><?qbxml version="13.0"?><QBXML>
<QBXMLMsgsRq onError="stopOnError">
<InvoiceModRq>
<InvoiceMod>
<TxnID>983C-1639586336</TxnID>
<EditSequence>1639586895</EditSequence>
<RefNumber>308_17</RefNumber>
<Other>INVU</Other>
<InvoiceLineMod>
<TxnLineID>-1</TxnLineID>
<ItemRef>
<FullName>MP3-C </FullName>
</ItemRef>
<Desc>Harley Davidson 1950 80hp bike </Desc>
<Quantity>1.00</Quantity>
<Amount>5.00</Amount>
<Other1>308_17</Other1>
<Other2>13041</Other2>
</InvoiceLineMod>
</InvoiceMod>
</InvoiceModRq>
</QBXMLMsgsRq>
</QBXML>
在我工作的公司,我们在开发环境中有以下技术-公司自己的C# web 应用程序称为companyABCDevapplication-安装Quick Books Web Connector-安装Quick books Quickbooks Desktop 2017 Premier 试用版
我的任务是创建一个接口 Web 服务,该服务将由 Quick Books Web Connector Installation 调用以与我们公司的 ABCDevapplication 进行通信
以下是用于本地开发的技术:
Intuit Quickbooks Desktop 2017 Premier 试用版
Intuit QuickBooks Web 连接器版本 2.2.0.71
微软 Visual Studio 企业版 2015
版本 14.0.25431.01 更新 3
Microsoft .NET Framework 版本 4.6.01055
不幸的是,当我将 post 顶部显示的 XML 发送到 Quickbooks Web 连接器时,出现以下错误:
<?xml version=\"1.0\" ?><QBXML>
<QBXMLMsgsRs>
<InvoiceModRs statusCode=\"3140\" statusSeverity=\"Error\" statusMessage=\"There is an invalid reference to QuickBooks Item "MP3-C" in the Invoice. \" />
</QBXMLMsgsRs>
</QBXML>
我想修改发票,但担心问题中的 ItemRef 是否已为 Quickbooks 所知。我基本上想通过使用 ItemInventoryAdd 标签或 ItemNonInventoryAdd 标签将尚未输入到 Quickbooks 中的新项目。当我使用 InvoiceModRq 修改发票时,如何即时添加全新的项目?
How do I go about adding brand new items on the fly when i modify an Invoice using InvoiceModRq?
你不能。
QuickBooks 不允许您做您想做的事。
你 可以 做的,是通过总是在你的 InvoiceAddRq
或 InvoiceModRq
节点之前发送一个 ItemInventoryAddRq
来捏造它,本质上 总是 在开具发票之前尝试重新创建项目。
如果该项目已经存在,添加将失败并报错,但仍会处理下一个请求。
如果您将此捆绑在一个 QBXMLMsgsRq
中,那么您需要确保使用:
onError="continueOnError"
而不是:
onError="stopOnError"
这样即使项目添加请求失败,QuickBooks 也会继续处理其余请求。
<?xml version="1.0" encoding="utf-16"?><?qbxml version="13.0"?><QBXML>
<QBXMLMsgsRq onError="stopOnError">
<InvoiceModRq>
<InvoiceMod>
<TxnID>983C-1639586336</TxnID>
<EditSequence>1639586895</EditSequence>
<RefNumber>308_17</RefNumber>
<Other>INVU</Other>
<InvoiceLineMod>
<TxnLineID>-1</TxnLineID>
<ItemRef>
<FullName>MP3-C </FullName>
</ItemRef>
<Desc>Harley Davidson 1950 80hp bike </Desc>
<Quantity>1.00</Quantity>
<Amount>5.00</Amount>
<Other1>308_17</Other1>
<Other2>13041</Other2>
</InvoiceLineMod>
</InvoiceMod>
</InvoiceModRq>
</QBXMLMsgsRq>
</QBXML>
在我工作的公司,我们在开发环境中有以下技术-公司自己的C# web 应用程序称为companyABCDevapplication-安装Quick Books Web Connector-安装Quick books Quickbooks Desktop 2017 Premier 试用版
我的任务是创建一个接口 Web 服务,该服务将由 Quick Books Web Connector Installation 调用以与我们公司的 ABCDevapplication 进行通信
以下是用于本地开发的技术:
Intuit Quickbooks Desktop 2017 Premier 试用版
Intuit QuickBooks Web 连接器版本 2.2.0.71
微软 Visual Studio 企业版 2015
版本 14.0.25431.01 更新 3
Microsoft .NET Framework 版本 4.6.01055
不幸的是,当我将 post 顶部显示的 XML 发送到 Quickbooks Web 连接器时,出现以下错误:
<?xml version=\"1.0\" ?><QBXML>
<QBXMLMsgsRs>
<InvoiceModRs statusCode=\"3140\" statusSeverity=\"Error\" statusMessage=\"There is an invalid reference to QuickBooks Item "MP3-C" in the Invoice. \" />
</QBXMLMsgsRs>
</QBXML>
我想修改发票,但担心问题中的 ItemRef 是否已为 Quickbooks 所知。我基本上想通过使用 ItemInventoryAdd 标签或 ItemNonInventoryAdd 标签将尚未输入到 Quickbooks 中的新项目。当我使用 InvoiceModRq 修改发票时,如何即时添加全新的项目?
How do I go about adding brand new items on the fly when i modify an Invoice using InvoiceModRq?
你不能。
QuickBooks 不允许您做您想做的事。
你 可以 做的,是通过总是在你的 InvoiceAddRq
或 InvoiceModRq
节点之前发送一个 ItemInventoryAddRq
来捏造它,本质上 总是 在开具发票之前尝试重新创建项目。
如果该项目已经存在,添加将失败并报错,但仍会处理下一个请求。
如果您将此捆绑在一个 QBXMLMsgsRq
中,那么您需要确保使用:
onError="continueOnError"
而不是:
onError="stopOnError"
这样即使项目添加请求失败,QuickBooks 也会继续处理其余请求。