0

vTiger CRM を Quickbooks 2010 と統合する必要があります。つまり、PHP です。vTiger を実行する QB サーバーと Linux ボックスが同じオフィスに置かれています。Web コネクタを使用せずに、PHP を QB サーバーと直接通信させる方法があるかどうかを調べてみました。リアルタイムのデータ アクセスが必要です。リアルタイムとは異なりますが、レポートは 5 ~ 30 秒程度で生成する必要があります。データの読み取りのみで、書き込みはありません。qbXML を QB サーバーに直接送受信する方法はありますか? 前もって感謝します。マイケル

4

1 に答える 1

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 にリレーできるコンポーネント リクエストをフィードして、レスポンスを返します。

QuickBooks で 5 秒ごとにレポートを生成すると、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
             ... 
        }
于 2013-01-30T00:37:46.343 に答える