Веб-сервисы Microsoft Dynamics GP 10, использующие PHP - PullRequest
2 голосов
/ 24 августа 2011

Мы рассматриваем вопрос об использовании веб-служб Microsoft Dynamics GP 10 и хотим использовать PHP для создания / обновления клиентов и продаж ... Поэтому возникает вопрос: возможно ли это и знает ли кто-нибудь о хорошей документации?

Я не нахожу ничего с использованием PHP, другой частью этого вопроса будут учетные данные безопасности, и если PHP сможет правильно передать необходимый логин и полностью взаимодействовать с веб-сервисом GP?

Любые идеи или известные ресурсы?

Ответы [ 2 ]

4 голосов
/ 17 декабря 2011

Для этого я использую набор хранимых процедур eConnect для интеграции GP. Возможно, это не самое элегантное решение, но оно работает довольно хорошо. eConnect также хорошо документирована Microsoft.

Если вы решите использовать этот вид интеграции, имеет смысл ознакомиться с Приложением Ловкости. Изучение Приложения Ловкости очень помогает при сопоставлении объектов и таблиц, и его следует бесплатно загрузить из 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;
    }
0 голосов
/ 10 июля 2013

Я еще не использовал Dynamics GP, но, исходя из переиздания руководства разработчика, существует устаревшая конечная точка и собственная конечная точка, но обе они являются службами SOAP, поэтому я не вижу причин, по которым вы не могли использовать PHP-клиент SOAP. *

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

Я не знаю, что происходит ... но, опять же, нет никаких причин, по которым вышеупомянутое не должно быть возможным, поскольку SOAP предназначен для работы с большинством языков, включая PHP, просто он не будет таким простым, как мог бы будет.

РЕДАКТИРОВАТЬ: Может быть полезно использовать генератор классов WSDL to PHP. Смотрите: генерируйте php код из wsdl

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...