【问题标题】:Quickbooks integration (intranet)Quickbooks 集成(内联网)
【发布时间】:2013-01-12 18:32:33
【问题描述】:

我需要将 vTiger CRM 与 Quickbooks 2010 集成。所以它是 PHP。 QB 服务器和运行 vTiger 的 Linux 机器位于同一个办公室。我试图弄清楚是否有一种方法可以让 PHP 在不使用 Web 连接器的情况下直接与 QB 服务器对话。我们需要实时数据访问。不像真正的“实时”,但需要在 5-30 秒内生成报告。只读取数据,不写入。有什么方法可以直接向 QB 服务器发送/接收 qbXML? 提前致谢。 迈克尔

【问题讨论】:

    标签: php integration intranet quickbooks


    【解决方案1】:

    这是可以做到的……但请注意,QuickBooks 并不总是最可靠的软件,可与之集成以进行实时数据访问 - 与 QuickBooks 的连接往往既缓慢又脆弱,这就是为什么您通常会看到带有 Web 连接器的排队模型。

    您可以做的是编写一个自定义 C# 组件(查看 SDK 中包含的示例,特别是这个:C:\Program Files (x86)\Intuit\IDN\QBSDK12.0\samples\qbdt\c- sharp\qbXML\CustomerAdd) 打开与 QuickBooks 的连接,然后执行任何操作。

    “随便”可能是这样的:

    • 对 QuickBooks 运行查询,然后通过 HTTP POST 将数据发送回 vTiger

    • 打开一个套接字并监听传入的请求,在这种情况下,PHP 可以连接到该套接字并将组件请求提供给它可以中继到 QuickBooks,然后返回响应

    请注意,每 5 秒在 QuickBooks 中生成一份报告可能会大大降低 QuickBooks 的速度。根据您正在谈论的数据量和过滤器,甚至可能无法让 QuickBooks 快速生成报告。

    同样,请注意某些事情会导致与 QuickBooks 的连接失败,因此您必须妥善处理这些问题。具体来说:

    • QuickBooks 自动更新将锁定集成应用程序
    • 如果您有太多用户同时登录,您将被锁定
    • 如果其他人进入单用户模式,您将被锁定

    等等

    如果您能提供更多关于为什么需要如此频繁地访问报告的详细信息,我们可以提供一些额外的信息。

    您的代码将如下所示:

            while (true)
            {
                string input = "your fancy qbXML request goes here";
    
                RequestProcessor2 rp = null; 
                string ticket = null;
                string response = null;
                try 
                {
                    rp = new RequestProcessor2 ();
                    rp.OpenConnection("", "Your App Name");
                    ticket = rp.BeginSession("", QBFileMode.qbFileOpenDoNotCare );
                    response = rp.ProcessRequest(ticket, input);
                }
                catch( System.Runtime.InteropServices.COMException ex )
                {
                    MessageBox.Show( "COM Error Description = " +  ex.Message, "COM error" );
                    return;
                }
                finally
                {
                    if( ticket != null )
                    {
                        rp.EndSession(ticket);
                    }
                    if( rp != null )
                    {
                        rp.CloseConnection();
                    }
                };
    
                // Do something with the response here
                 ... 
            }
    

    【讨论】:

    • 基思感谢您的回复。我检查了您的网站和您为 QB 创建的 PHP 软件。真的好一个。不幸的是(对我来说)它需要网络连接器而不是“实时”。
    • 我不需要每5秒查询一次QB服务器,我没有说清楚我猜...我只需要拉一些数据,例如:这是projectID,我需要拉所有付款由客户制作。有了这些数据,我使用 vTiger 功能创建了一个报告。所以实际获取数据需要快,比如 5-30 秒。如果公司文件处于单用户模式(是否只需要阅读有关系吗?)我只显示错误消息。到目前为止,我认为使用 QODBC
    • 是的,QODBC 是我上面描述的商业实现。您可能仍然会遇到性能问题,具体取决于运行 QuickBooks 的机器的速度/您正在处理的数据量。对您来说更好的解决方案(我们经常为客户构建的解决方案)可能是将所有 QuickBooks 付款的记录本地缓存在您的 SQL 数据库中,并显示缓存中的数据。这使您可以快速访问数据,然后您可以让 Web 连接器(或 QODBC,或自定义 COM 应用程序)每隔一段时间刷新缓存的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多