标签: qbxml

如何为QuickBooks Web Connector创建.qwc文件?

我正在将QuickBooks(桌面版)与ASP.NET应用程序集成.为此,我使用的是QuickBooks Web Connector.如何为自定义Web服务创建.qwc文件?

quickbooks qbxml qbwc

10
推荐指数
1
解决办法
2万
查看次数

由于以下错误,检索具有CLSID {6C9E80E3-B780-4361-A693-5E5C6BDC83A9}的组件的COM类工厂失败:80040154

我收到此错误:
由于以下错误,检索具有CLSID {6C9E80E3-B780-4361-A693-5E5C6BDC83A9}的组件的COM类工厂失败:80040154.

Dim smgrGlobal As QBSessionManager
smgrGlobal = New QBSessionManagerClass()
Run Code Online (Sandbox Code Playgroud)

第二行是错误的一行.
我只在QB2013和QBFC12上出现此错误.任何以前的版本都不会发生这种情况.
我可以找到,这个错误是由于应用程序没有为x86编译(如果使用"任何CPU").但是我已经设置我的应用程序编译为x86而不是"任何CPU"我仍然收到此错误.

quickbooks qbxml qbfc

5
推荐指数
1
解决办法
2804
查看次数

如何使用QBXML将订单项添加到现有销售订单

我能够很好地提高销售订单,我认为修改已经存在的订单项看起来很有意义,但我该如何添加额外的订单项呢?

OSR对我来说似乎没有意义. https://developer-static.intuit.com/qbSDK-current/Common/newOSR/index.html

在我申请销售订单后,我会收到这些订单项:

<SalesOrderLineRet>
<TxnLineID>15-1379092567</TxnLineID>
<ItemRef>
<ListID>80000002-1379090362</ListID>
<FullName>4684</FullName>
</ItemRef>
<Desc>tester</Desc>
<Quantity>3</Quantity>
<Rate>600.00</Rate>
<Amount>1800.00</Amount>
<SalesTaxCodeRef>
<ListID>80000002-1378850266</ListID>
<FullName>Non</FullName>
</SalesTaxCodeRef>
<Invoiced>0</Invoiced>
<IsManuallyClosed>false</IsManuallyClosed>
</SalesOrderLineRet>
<SalesOrderLineRet>
<TxnLineID>16-1379092567</TxnLineID>
<ItemRef>
<ListID>80000001-1378935144</ListID>
<FullName>Test Item</FullName>
</ItemRef>
<Desc>Shipment</Desc>
<Quantity>5</Quantity>
<Rate>5.00</Rate>
<Amount>25.00</Amount>
<SalesTaxCodeRef>
<ListID>80000002-1378850266</ListID>
<FullName>Non</FullName>
</SalesTaxCodeRef>
<Invoiced>0</Invoiced>
<IsManuallyClosed>false</IsManuallyClosed>
</SalesOrderLineRet>
Run Code Online (Sandbox Code Playgroud)

现在这是有道理的,那么我看看SalesOrderMod的qbxml和我看到的订单项部分:

<SalesOrderLineMod> <!-- optional -->
<TxnLineID >IDTYPE</TxnLineID> <!-- required -->
<ItemRef> <!-- optional -->
<ListID >IDTYPE</ListID> <!-- optional -->
<FullName >STRTYPE</FullName> <!-- optional -->
</ItemRef>
<Desc >STRTYPE</Desc> <!-- optional -->
<Quantity >QUANTYPE</Quantity> <!-- optional -->
<UnitOfMeasure >STRTYPE</UnitOfMeasure> <!-- optional -->
<OverrideUOMSetRef> …
Run Code Online (Sandbox Code Playgroud)

quickbooks qbxml intuit-partner-platform

5
推荐指数
1
解决办法
1328
查看次数

从QuickBooks数据计算客户余额(QBXML)

我正在建立一个简单的网站,我公司的客户可以查看过去12个月的报表,以及他们当前的余额.为此,我将使用QuickBooks Web连接器将必要的数据从我们的QuickBooks公司文件导出到MySQL数据库(通过ConsoliBYTE的PHP DevKit).

但是,我对QuickBooks本身并不十分精通,所以我的问题是:为了计算准确的客户余额,我需要在哪些字段中存储QBXML响应以存储在数据库中?

我不知道哪种类型的交易可以促成或影响余额(除了发票),所以我不知道在InvoiceQuery和CustomerQuery之外要做出哪些QBXML请求.

我也意识到Keith Palmer 的这篇文章,它暗示发票余额本身并不一定可靠:

"发票余额可以更改而不会更改发票本身(因为余额是从其他记录计算的字段,而不是发票本身的字段)"

我不知道每次Web连接器运行时是否更好地替换数据库中的所有Invoice数据,或者自己从相关记录计算Invoice余额,在这种情况下,我需要哪些数据来计算Invoice余额?

答案

@ consolibyte的答案似乎是获得客户余额的最简单方法,所以我已经接受了它,即使它对我的具体用法不够冗长.

@Hpjchobbes的回答对于获取QuickBooks内置的Balance Detail报告非常有用.

我还添加了自己的答案,因为我需要提供一个完整的逐项清单.它似乎工作正常,但可能会出现失败的情况.

quickbooks qbxml

5
推荐指数
1
解决办法
1273
查看次数

得到错误-2147220472(无法启动Quickbooks)

我尝试连接到Quickbooks时收到错误-2147220472.该应用程序由Windows服务执行.日志文件如下:

I   8788    RequestProcessor    ========= Started Connection =========
I   8788    RequestProcessor    Request Processor, QBXMLRP2 v12.0
I   8788    RequestProcessor    Connection opened by app named 'QBWatcher'
I   8788    RequestProcessor    OS: Microsoft Professional (build 9200), 64-bit
I   8788    RequestProcessor    Current Process is elevated
I   8788    RequestProcessor    Current User is in AdminGroup
I   8788    RequestProcessor    Current Process is ran as Admin
I   8788    RequestProcessor    Current Process Integrity Level : 3000
I   8788    RequestProcessor    Previous instance of QB is going down..! Wait and retry to …
Run Code Online (Sandbox Code Playgroud)

c# service quickbooks qbxml

5
推荐指数
1
解决办法
2513
查看次数

QuickBooks Web连接器时间修改的偏移量不占夏时制时间

我正在使用QuickBooks Web Connector使用QBXML请求将员工记录从Windows 8.1计算机上的QuickBooks Desktop中拉出。是否有原因导致TimeModified时间戳返回的偏移量不占夏时制时间的原因?有没有一种方法可以获取主机系统上的当前时间?

即使当前时区已设置为“东部时间”并启用了“调整夏令时”,当前仍为TimeModified返回“ 2014-03-27T14:20:53-05:00”。偏移量应为-04:00。

QBXML请求:

<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="12.0"?>
<QBXML>
  <QBXMLMsgsRq onError="stopOnError">
    <EmployeeQueryRq metaData="MetaDataAndResponseData">
      <OwnerID>0</OwnerID>
    </EmployeeQueryRq>
  </QBXMLMsgsRq>
</QBXML>
Run Code Online (Sandbox Code Playgroud)

quickbooks qbxml datetimeoffset dst qbwc

5
推荐指数
1
解决办法
382
查看次数

有没有办法正确结束与QuickBooks/QBW32.exe的会话,所以它不会在后台运行?

我在许多程序上执行技术支持和一些开发,这些程序使用QuickBooks SDK来执行各种功能.最近我注意到当用户执行以下操作时:

先决条件: - QuickBooks未在桌面上打开,并且当前未运行. - 我的桌面程序未在QuickBooks集成应用程序列表中设置以自动登录.

1)打开我的一个程序.

2)执行启动与QuickBooks的连接和会话的操作.

3)QuickBooks界面返回一个错误,指出您必须打开QuickBooks并登录到公司文件才能执行此操作.

4)我的程序关闭会话和连接,然后向用户显示一些对话框,为他们提供故障排除提示.

结果:

QuickBooks本身继续作为QBW32.exe在后台运行,即使会话和连接都已关闭.

如果用户然后尝试打开QuickBooks桌面程序,则会收到错误消息,告诉他们QuickBooks已在运行.然后,他们必须在Windows中打开任务管理器并关闭正在运行的QBW32.exe,然后才能成功打开QuickBooks.

我已经使用我在下面编写的非常基本的C#程序重现了这一点.

在测试应用程序中,我使用以下步骤/方案:

先决条件:1)测试应用程序未设置为自动登录到QuickBooks.它设置为仅在用户打开QuickBooks桌面程序并且具有打开的公司文件时登录.

2)确保在下面的测试之前没有打开QuickBooks.

脚步:

1)打开测试C#应用程序

2)按下"打开连接"按钮.应通过QBXML互操作与QuickBooks的界面打开连接.

3)按"开始会话"按钮.应该使用QuickBooks启动会话.

4)假设上面的测试预先请求已经满足,您应该收到QuickBooks返回的错误消息,告诉您应用程序未设置为自动登录,您需要先打开QuickBooks才能尝试会话.

5)QBW32.exe现在应该在后台运行.

6)按下结束会话的按钮.这应该使用QuickBooks界面结束会话.无论如何,会话应该已经通过步骤3按钮中的try-catch结束.

7)按"关闭连接"按钮.这应该关闭与QuickBooks的所有连接.

8)即使会话和连接已经结束并关闭,QBW32.exe仍然在后台运行.

9)使用退出按钮关闭测试应用程序.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using Interop.QBXMLRP2;

namespace Open_Connection
{

    public partial class Form1 : Form
    {

        bool sessionBegun = false;
        bool connectionOpen = false;
        RequestProcessor2 rp = null;
        string ticket;


        public Form1()
        {
            InitializeComponent();
        }

        private …
Run Code Online (Sandbox Code Playgroud)

c# session quickbooks qbxml

5
推荐指数
1
解决办法
3923
查看次数

QBXML 中的 ReceivePaymentAddRq - 找不到请求中指定的对象 TxnID

我正在使用 QBXML 并尝试将付款应用于 ReceivePaymentAddRq 中的特定发票。我收到的消息显然很常见,“找不到请求中指定的对象 TxnID”。一旦将 ARAccountRef 字段添加到请求中,有关此主题的大多数其他论坛主题都会得到解决,这对我来说似乎没有什么影响。

我已查询了 TxnID 68B4-1290718970 的发票并验证了以下内容:

  • 我的请求的 ARAccountRef ListID 与 QueryRet 中的内容匹配
  • 我的请求的 CustomerRef ListID 与 QueryRet 中的内容匹配

我的 XML 请求如下。我缺少什么?

谢谢

<QBXML>
    <QBXMLMsgsRq onError = "continueOnError">
    <ReceivePaymentAddRq requestID = "0">
        <ReceivePaymentAdd>
            <CustomerRef>
                <ListID>80000111-1286514304</ListID>
            </CustomerRef>
            <ARAccountRef>
                <ListID>80000091-1273734429</ListID>
            </ARAccountRef>
            <TxnDate>2010-11-10</TxnDate>
            <RefNumber>2999      </RefNumber>
            <TotalAmount>15.95</TotalAmount>
            <PaymentMethodRef>
                <ListID>80000002-1273560098</ListID>
            </PaymentMethodRef>
            <Memo>_32T0DE94J</Memo>
            <DepositToAccountRef>
                <ListID>80000090-1273734138</ListID>
            </DepositToAccountRef>
            <AppliedToTxnAdd>
                <TxnID>68B4-1290718970</TxnID>
                <PaymentAmount>15.95</PaymentAmount>
            </AppliedToTxnAdd>
        </ReceivePaymentAdd>
    </ReceivePaymentAddRq>
    </QBXMLMsgsRq>
</QBXML>
Run Code Online (Sandbox Code Playgroud)

quickbooks qbxml qbfc

4
推荐指数
1
解决办法
4248
查看次数

使用 Web 连接器的 Quick books 中的迭代示例

我已经在 QBSDK_ProGuid.pdf 文件(第 117 页)上看到了有关迭代的文档。我很困惑如何再次发出相同的查询并将迭代器值设置为“继续”,并将 IteratorID 字段设置为从第一次查询迭代返回的 IteratorID 值。

 <?xml version="1.0" ?>
<?qbxml version="5.0" ?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<CustomerQueryRq requestID="5001" iterator="Continue"
iteratorID="{D7355385-A17B-4f5d-B34D-F34C79C3E6FC}">
<MaxReturned>10</MaxReturned>
<IncludeRetElement>ListID</IncludeRetElement>
</
CustomerQueryRq>
</QBXMLMsgsRq>
</QBXML>
Run Code Online (Sandbox Code Playgroud)

我正在关注由 intuit 提供的 WCWebService 示例...并获取客户数据..任何人都可以提供一个使用迭代概念的示例。谢谢 !

quickbooks qbxml

4
推荐指数
1
解决办法
1138
查看次数

我可以按名称和电子邮件查询速记本客户吗

我编写了一个代码,使用quickbooks Web连接器将购物车与quickbooks集成在一起。问题是,当我尝试找出按名称和电子邮件过滤的快速手册中是否有客户时。我尝试了这个:

<?xml version="1.0" encoding="utf-8"?>
<?qbxml version="9.0"?>
<QBXML>
    <QBXMLMsgsRq onError="continueOnError">
    <CustomerQueryRq>
        <FullName>Mladen Petrov</FullName>
        <Email>bksi@abf.cd</Email>
    </CustomerQueryRq>
    </QBXMLMsgsRq>
</QBXML>
Run Code Online (Sandbox Code Playgroud)

但是它给我返回了一个错误。有没有一种方法可以通过名称和电子邮件找到速记本客户,或者我必须获得所有QB客户并以某种方式将他们的QB ID存储到我的数据库中?

quickbooks qbxml

3
推荐指数
1
解决办法
2940
查看次数