2

Microsoft Dynamics GP 10 Web サービスの使用を検討しており、PHP を使用して顧客と販売を作成/更新したいと考えています... 質問は、これは可能ですか? もしそうなら、適切なドキュメントを知っている人はいますか?

PHP を使用しても何も見つかりません。この質問の別の部分はセキュリティ資格情報であり、PHP が必要なログインを正しく渡し、GP の Web サービスと完全にやり取りできるかどうかです。

アイデアや既知のリソースはありますか?

4

2 に答える 2

4

価値のあることとして、eConnect と呼ばれる一連のストアド プロシージャを使用して GP 統合を行います。これは最も洗練されたソリューションではないかもしれませんが、かなりうまく機能します。eConnect は、Microsoft によっても十分に文書化されています。

この種の統合を使用することを選択した場合は、Dexterity アプリケーションに慣れることが賢明です。Dexterity アプリケーションを学習すると、オブジェクトとテーブルのマッピングに大いに役立ちます。Customer Source から無料でダウンロードできます。

以下は、顧客レコードを作成するための eConnect ストアド プロシージャの例です。

$sql = "declare @p115 int
set @p115=0
declare @p116 varchar(255)
set @p116=''                                                                                                             
exec dbo.taUpdateCreateCustomerRcd
@I_vCUSTNMBR = '123456',
@I_vCUSTNAME = 'Company Name',
@O_iErrorState = @p115 OUTPUT,                                                                  
@oErrString = @p116 OUTPUT                                                                                       

select @p115, @p116";

実行するには、次のようにします (この例では PHP ADODB を使用しています)。

    gp_execute_sp($sql);


    function gp_execute_sp($sql, $transactions = true) {
        global $DBGP;

        if($transactions)
            $DBGP->StartTrans();
            $rs = $DBGP->Execute($sql);
                if(is_object($rs) && !$rs->EOF) {
                        if($rs->fields['computed'] != 0) {
                if($transactions)
                                    $DBGP->FailTrans();
                                throw new Exception(get_error_desc($rs->fields['computed']));            

                        }                                                                                                
                } elseif(!is_object($rs)) {                                                                              
            if($transactions)                                                                                            
                            $DBGP->FailTrans();                                                                          
                        throw new Exception("Database Connection Error.");

                } else {                                                                                                 
                    if($transactions)                                                                                    
                    $DBGP->FailTrans();                                                                                  
                        throw new Exception("Stored proceedure did not return a result.");                               
                }                                                                                                        

                if($transactions)                                                                                        
                    $DBGP->CompleteTrans(); 
   }

   function get_error_desc($value) {
        global $DBGP;

        if(is_numeric($value)) {
            $result = "No Error Available";
            $sql = "SELECT ErrorDesc FROM DYNAMICS..taErrorCode WHERE ErrorCode=?";
            $rs = $DBGP->execute($sql, array($value));
            if(!$rs->EOF) {
                $result = $rs->fields['ErrorDesc'];
            }
        } else {
            $result = $value;
        }

        return $result;
    }
于 2011-12-17T07:13:20.143 に答える
0

私はまだ Dynamics GP を使用していませんが、開発者ガイドを読み直すと、レガシー エンドポイントとネイティブ エンドポイントがありますが、どちらも SOAP サービスであるため、PHP の SOAP クライアントを使用できない理由はわかりません。

$client = new SoapClient('http://machine_name:<port_number>/Dynamics/GPService');
$result = $client->GetCompanyList(...);

何が起こるかはわかりませんが、SOAP は PHP を含むほとんどの言語で動作するように設計されているため、上記が可能でない理由はありません。可能な限り単純ではありません。

編集: WSDL to PHP クラス ジェネレーターを使用すると役立つ場合があります。参照: wsdl から php コードを生成する

于 2013-07-09T20:07:03.567 に答える