Microsoft Dynamics GP 10 Web サービスの使用を検討しており、PHP を使用して顧客と販売を作成/更新したいと考えています... 質問は、これは可能ですか? もしそうなら、適切なドキュメントを知っている人はいますか?
PHP を使用しても何も見つかりません。この質問の別の部分はセキュリティ資格情報であり、PHP が必要なログインを正しく渡し、GP の Web サービスと完全にやり取りできるかどうかです。
アイデアや既知のリソースはありますか?
Microsoft Dynamics GP 10 Web サービスの使用を検討しており、PHP を使用して顧客と販売を作成/更新したいと考えています... 質問は、これは可能ですか? もしそうなら、適切なドキュメントを知っている人はいますか?
PHP を使用しても何も見つかりません。この質問の別の部分はセキュリティ資格情報であり、PHP が必要なログインを正しく渡し、GP の Web サービスと完全にやり取りできるかどうかです。
アイデアや既知のリソースはありますか?
価値のあることとして、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; }
私はまだ 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 コードを生成する