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 进行通信

以下是用于本地开发的技术:

不幸的是,当我将 post 顶部显示的 XML 发送到 Quickbooks Web 连接器时,出现以下错误:

<?xml version=\"1.0\" ?><QBXML>
  <QBXMLMsgsRs>
    <InvoiceModRs statusCode=\"3140\" statusSeverity=\"Error\" statusMessage=\"There is an invalid reference to QuickBooks Item &quot;MP3-C&quot; 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 不允许您做您想做的事。

可以 做的,是通过总是在你的 InvoiceAddRqInvoiceModRq 节点之前发送一个 ItemInventoryAddRq 来捏造它,本质上 总是 在开具发票之前尝试重新创建项目。

如果该项目已经存在,添加将失败并报错,但仍会处理下一个请求。

如果您将此捆绑在一个 QBXMLMsgsRq 中,那么您需要确保使用:

onError="continueOnError"

而不是:

onError="stopOnError"

这样即使项目添加请求失败,QuickBooks 也会继续处理其余请求。