Compartiendo conocimiento y experiencias

Drupal y Sugar CRM integración, módulo utilizando SOAP, nuSOAP

categoría:

Descripción de la necesidad a cubrir: Leer los datos de los proyectos existentes en SugarCRM y mostrarlos en un portal desarrollado con Drupal. Además cada elemento del listado debe enlazar a una página que muestre los datos del proyecto (una ficha).

Vamos a utilizar la librería nusoap, la ponemos en sites/all/libraries/nusoap

Creamos un módulo que hemos llamado sugarintegration

Ya en el módulo definimos las constantes de conexión con SOAP:

 

  1. define('sugarEntry', TRUE);
  2. define('FRONTENDSOAP','http://direccion/soap.php?wsdl');
  3. define('USUARIO', 'usuario');<br /> define('CLAVE', 'contraseña');

En el hook_menu definimos la opción donde mostraremos el listado de proyectos recuperados de SugarCRM.

  1. $items['oficina/proyectos'] = array(
  2.    'title' => 'Listado de proyectos',
  3.    'page callback' => 'sugarintegration_listado_proyectos',
  4.    'access callback' => TRUE,
  5.    'type' => MENU_NORMAL_ITEM,
  6. );

y finalmente definimos la función que realiza la conexión y consuta a través de nusoap:

  1. function sugarintegration_listado_proyectos() {
  2. $soapclient = new nusoapclient(FRONTENDSOAP,true);
  3. $user_auth = array(
  4.    'user_auth' => array(
  5.    'user_name' => USUARIO,
  6.    'password' => md5(CLAVE),
  7.    'version' => '.01')
  8. );
  9. $sesion = $soapclient->call('login',$user_auth);
  10.  
  11. $get_entry_params = array(
  12.    "session" => $sesion['id'],
  13.    "module_name" => "Project",
  14.    "query" => 'project.deleted=0',
  15.    "order_by" => 'project.name',
  16.    "select_fields" => array("name", "priority", "status"),
  17.    "max_results" => 0
  18. );
  19.  
  20. $result1 = $soapclient->call('get_entry_list', $get_entry_params);
  21. $soapclient->call('logout',$sesion['id']);
  22.    
  23. foreach($result1['entry_list'] as $r){
  24.    $name = $r['name_value_list'][0]['value'];
  25.    $id = $r['id'];
  26.    $items[] = l($name, 'oficina/proyectos/'.$id);
  27. }
  28.  
  29. $output = "<div class='view'>";
  30. $output .= theme('item_list',$items, NULL, 'ul', '');
  31. $output .= "</div>";
  32.  
  33. return $output;
  34. }

En $get_entry_params definimos:

  • session: el resultado del login en nusoap.
  • module_name: nombre del móduilo Srugar sobre el que hacemos la consulta.
  • query: la parte que va en el where.
  • order_by: la parte de la consulta del order bay.
  • select_fields: los campos que queremos recuperar.

Esta línea ejecuta la consulta a SUGARCRM

  1. $result1 = $soapclient->call('get_entry_list', $get_entry_params);

Y el resto de la función constuye una lista de items y se llama a la función de theming item_list.

Es sencillo, lo principal es conocer la API de la librería que se utilice y unos conocimientos básicos en el desarrollo de módulos de Drupal.

Cualquier consulta respondemos en los comentarios.

Enviar un comentario nuevo

El contenido de este campo se mantiene privado y no se mostrará públicamente.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Etiquetas HTML permitidas: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Saltos automáticos de líneas y de párrafos.

Más información sobre opciones de formato


CAPTCHA
Esta pregunta se hace para comprobar que es usted una persona real e impedir el envío automatizado de mensajes basura.
CAPTCHA de imagen
Enter the characters shown in the image.

Comentarios recientes

Apoyamos

Drupal Association

Drupalcamp Bacelona 2010

Cáceres 2016