Article written

How-to: Integrando Symfony e SugarCRM 4

Jul19

O SugarCRM é uma interessante aplicação open source para Gestão de Relacionamento com o Cliente (CRM). Mesmo que muitas características avançadas sejam reservadas às versões pagas (Professional e Enterprise), sua versão livre possui recursos muito completos de customização de módulos, plugins, entre outros, e desempenha muito bem a sua função. Um dos recursos que viabiliza grande parte de plugins e integrações é um Webservice construído em NuSOAP, para que outras aplicações interajam com os dados do SugarCRM.

Supondo um endereço de intranet, o WSDL deste webservice estaria disponível na URL:

  • http://intranet/sugarcrm/soap.php?wsdl

Este how-to abrange a integração do SugarCRM com o Symfony. Neste cenário, uma aplicação deve manter os mesmos registros de contas (Accounts) que existem no SugarCRM. Vamos apenas gerar um array onde a chave será o ID da conta e o valor será o nome da conta.

Uma curiosa surpresa ao iniciar a integração foi descobrir que havia um plugin para o Symfony chamado sfSugarCRM, constituído de duas classes:

  • sfSugarCRMSOAPClient: Classe com um método no padrão Singleton que retorna a instância de SoapClient conectada ao WSDL do SugarCRM.
  • sfSugarCRM: Classe que abstrai algumas requisições ao Webservice do SugarCRM.

Importante: este plugin não utiliza NuSOAP, mas sim as bibliotecas SOAP distribuídas nas versões do PHP5 e posteriores. Certifique-se que a extensão SOAP está instalada.

Inicialmente, seguindo a breve documentação de exemplo do sfSugarCRM, vamos instalar o plugin:

./symfony plugin-install http://plugins.symfony-project.com/sfSugarCRMPlugin
./symfony cc

Pulemos os passos de criação da aplicação e do módulo no Symfony, o código abaixo conecta ao Webservice:

$sugar = new sfSugarCRM("http://intranet/sugarcrm/soap.php?wsdl");
$sugar->setUsername("usuario");
$sugar->setPassword("senha");

O trecho acima armazena o usuário e a senha em variáveis de instância, e as utiliza para a chamada de alguns métodos do servidor SOAP, que são:

  • Localizar contatos pelo nome: searchContactsByName()
  • Localizar contatos pelo e-mail: searchContactsByEmail()
  • Retornar lista de usuários: getUserList()
  • Métodos para criação de registros: createLead(), createContact(), createAccount(), createOpportunity(), createCase()

Um detalhe a importante é que os métodos acima enviam usuário e senha a cada requisição ao Webservice. Alguns métodos do Webservice, entretando, exigem como parâmetro o ID do login, uma string gerada com a chamada ao método login() do Webservice. Como a classe sfSugarCRM não implementa nenhum método para isso, abaixo um patch que cria essa função:

Para aplicar o patch, entre na raiz do projeto e digite:

patch -p0 < patch.txt

Após aplicado o patch, você tem os novos métodos na classe sfSugarCRM: getLoginId() e doLogin() , que facilitam a chamada para diversos métodos do Webservice. Dessa forma, é só criar novos métodos na classe sfSugarCRM! Criei um método chamado getEntryList() (que utiliza o método get_entry_list() do webservice), veja como retornar todos os clientes:

$params = array(
  "module_name" => "Accounts",
  "order_by" => "name ASC",
  "offset" => 0,
  "select_fields" => array("name"),
  "max_results" => 1000
);
$sugar->getEntryList($params);
$response = $sugar->getResponse();
$contas = array();
foreach ($response->entry_list as $entry) {
    $contas[$entry->id] = $entry->name_value_list[0]->value;
}
print_r($contas);

Então é isso! Este material não será de uso constante, mas fica como referência quando um cenário semelhante surgir ;)

Referências:

subscribe to comments RSS

There are 4 comments for this post

  1. [...] How-to: Integrando Symfony e SugarCRM [...]

  2. weelsokPere says:

    Great website. I hope you like my wagging metal Oh, good joke) How many computer programmers does it take to change a light bulb? Are you kidding? That’s a hardware problem!

  3. btw .. looks like sugar 6.2 is going to have some great improvements :)

Please, feel free to post your own comment

* these are required fields

Jony dos Santos Kostetzer is powered by WordPress and FREEmium Theme.
developed by Dariusz Siedlecki and brought to you by FreebiesDock.com