0

我是 python 开发人员,不是 QB 用户,所以请原谅我使用了糟糕的术语。

我们有一个内部 Web 应用程序,财务人员使用它来识别特定收款人的少量付款请求。然后,他们使用 QB 生成支票以支付该收款人。然后他们手动将支票号码和日期输入到网络应用程序中。我正在修改 Web 应用程序,以便财务人员可以使用该应用程序将付款请求捆绑在一起,并且 - 我希望 - 向 QB 发送支票请求,每个收款人一张。要发送的数据将是收款人信息、支票金额以及其他任何需要的数据。从 QB(稍后)返回的数据将是支票号码和支票日期以及一些标识符,我可以使用这些标识符将其与之前发送的请求相匹配。

与 QB 进行这种沟通的最佳方式是什么?

4

2 回答 2

2

我使用 python3 来构造 qbXML 查询,并使用 Elementree 来解析响应。我也使用非 Windows 机器进行开发。我发现我确实需要在 Windows VM 中同时使用 QB 和 Python 才能取得进展。QB 和 COM 都需要它。

以下是 Python 3.1 中的几个片段来展示我是如何做到的:

首先,使用 COM 连接到 QuickBooks 并断开与 QuickBooks 的连接。

import win32com.client

def start(external_application_name):
    """Connect a QuickBooks instance using COM. Start QB if needed"""

    SessionManager = win32com.client.Dispatch("QBXMLRP2.RequestProcessor")
    # Example only - insecure!
    SessionManager.OpenConnection('', external_application_name)
    return SessionManager

def stop(SessionManager):
    """Disconnect from the existing Quickbooks instance."""
    SessionManager.CloseConnection()
    return

接下来,我使用 python 执行逻辑,构造 qbXML 查询,并将响应解析为 ElementTree。

import xml.etree.ElementTree as etree

def xml_query(QB_SessionManager, company_file_path, qbXML_query_string):
    """
    Do a QuickBooks QBXML query.
    The query must be valid - this function doesn't do error checking.
    Return an ElementTree of the XML response.
    """
    ticket = QB_SessionManager.BeginSession(company_file_path, 0)
    response_string = QB_SessionManager.ProcessRequest(ticket, qbXML_query_string)
    #print(response_string)   # Debug tool
    SessionManager.EndSession(ticket)
    QBXML = etree.fromstring(response_string)
    response_tree = QBXML.find('QBXMLMsgsRs')
    #etree.dump(QBXML)        # Debug tool
    return response_tree

检查查询的实际 qbXML 查询字符串和响应字符串在https://member.developer.intuit.com/qbSDK-current/Common/newOSR/index.html的 qbXML 参考中 ,您将看到可以下载按收款人、日期范围、支票号码范围等过滤的支票数据。

您可以将多个 XML 查询或事务链接到一个大型 XML 文件中。为每个请求分配一个唯一的请求编号(示例:<CustomerQueryRq requestID="1">),以便您找到正确的响应。

使用<IncludeRetElement>标签限制回复大小,并极大地加快搜索速度。

于 2013-06-09T12:30:42.340 回答
1

由于您的应用程序不是 SaaS 应用程序,因此您可以将 qbsdk 用于此用例。sdk 下载链接 - https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits

不再支持 IIF 文件。IIF 文件可以直接导入 QB,但会绕过所有业务逻辑。

于 2013-06-04T15:07:34.070 回答