Sugar CRM – Gestion des devises en automatique


Capture Sugar CRMDans cet article, je vais vous présenter un moyen de mettre à jour vos devises automatiquement. En effet, Sugar CRM intègre une gestion des devises mais pour mettre à jour les taux, il est nécessaire de le faire manuellement.

Contexte :

  • IDE de développement : Aptana IDE
  • Sugar CRM installé en local avec base de données « sugarcrm »
  • Prérequis : Connaissance programmation PHP, SQL, et connaissance de Sugar CRM

Préparation :

Avant toute chose, nous allons préparer notre projet. En ce qui concerne mes extension Sugar CRM, j’ai l’habitude de travailler dans un répertoire que j’ai appelé « sugar-scripts » et qui se trouve à la racine de mon serveur WEB.

Il faut ensuite se poser les bonnes questions :

  • Ou puis-je trouver les cours des devises
  • Comment récupérer ces données
  • Comment les traiter
  • Ou les envoyer
  • Comment automatiser la tâche

Répondre aux questions :

Où récupérer les données ?

Il n’est pas évident de trouver des ressources gratuites et accessibles depuis le WEB. Après quelques recherches, j’ai trouvé différentes solutions :

  • Une extraction depuis une page WEB (un peu compliqué…)
  • Une extraction depuis un fichier XML.

Sans m’étendre sur le langage XML, il apparait rapidement comme la meilleur slution :

  • On peu le traiter facilement avec PHP
  • Il est accéssible depuis le WEB
  • Il dispose de règles strictes

Ce fichier est accessible à l’adresse suivante : http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml

Il se compose de différentes balises. Celles qui nous intéressent sont incluent dans les tags « Cubes » avec les attributs « currency » et « rate ».

<Cube currency="USD" rate="1.2262"/>
<Cube currency="JPY" rate="109.59"/>
<Cube currency="BGN" rate="1.9558"/>
<Cube currency="CZK" rate="25.773"/>
<Cube currency="DKK" rate="7.4427"/>
<Cube currency="EEK" rate="15.6466"/>
<Cube currency="GBP" rate="0.81850"/>
<Cube currency="HUF" rate="283.78"/>
<Cube currency="LTL" rate="3.4528"/>
<Cube currency="LVL" rate="0.7085"/>
<Cube currency="PLN" rate="4.1207"/>
<Cube currency="RON" rate="4.2375"/>
<Cube currency="SEK" rate="9.5741"/>
<Cube currency="CHF" rate="1.3555"/>

Comment traiter les données ?

Nous allons récupérer ces données à l’aide de PHP et plus particulièrement l’extension simplexml. Simplexml est une bibliothèque permettant de traiter les données XML. Avant tout, créez un fichier PHP que vous nommerez « update-devises.php ».

Vous trouverez ci dessous le code commenté de mon script PHP.

Code PHP :

<?php
/**
 * Mise à jour auto de la table des devises
 * Récupération des données depuis flux XML puis injection dans la base de données
 * Création de la tâche par le programmateur Sugar CRM
 */
$user = "root";//Utilisateur MySql
$pass = ""; //Mot de passe MySql

//Source de données
$xml_source = "http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml";

//Récupérer le dollar par exemple
$usd = simplexml_load_file($xml_source);

//Récupération des noeuds contenant les informations
$devises = $usd->Cube->Cube->Cube;

//Initialise la var à récupérer
$usd_rate = null;

//On boucle l'ensembles des devises
foreach($devises as $devise => $att){
 //Recherche de l'attribut 'USD' dans le fichier xml
 if($att['currency'] == "USD"){
 //récupération du taux de l'USD
 $usd_rate = $att['rate'];

 }
}

L’opération est simple et nous aurions pu récupérer d’autre devises.

Comment et ou envoyer les données ?

Les données de devises sont stockées dans la base de données MySql ; avec un peu de recherche dans notre base, nous pouvons voir qu’il existe une table « currencies ». Cette table stock les informations que nus avons saisi dans Sugar CRM (ici, j’ai simplement renseigné ma devise USD à l’aide de la gestion des devises dans l’administration Sugar CRM). Vous trouverez en figure 1 une capture d’écran de ma table « currencies ».

Capture d'écran de la table MySql "currencies"

Figure 1

Cette table stock deux éléments importants :

  • iso4217 qui correspond au code unique de la devise
  • conversion_rate qui correspond au taux de conversion de notre devise

Nous allons donc devoir mettre à jour cette valeur ; pour cela, il nous suffi de réaliser une requête SQL

Code PHP :

//Connexion PDO
try {
 $dbh = new PDO('mysql:host=localhost;dbname=sugarcrm', $user, $pass);
 $query = "UPDATE `sugarcrm`.`currencies` SET conversion_rate = '$usd_rate' WHERE `currencies`.`iso4217` = 'USD' LIMIT 1";
 $dbh->exec($query);
 $dbh = null;
} catch (PDOException $e) {
 print "Erreur !: " . $e->getMessage() . "<br/>";
 die();
}
?>

Informations : Pour réaliser cette mise à jour, j’ai opté pour l’utilisation de PDO mais vous pouvez utiliser directement les fonctions MySql de PHP.

Nous venons de terminer notre script. Nous allons le tester en l’exécutant dans notre navigateur via l’adresse « http://localhost/sugar-scripts/update-devises.php ». Vous aurez une page blanche, ne vous inquiétez pas…

Regardons maintenat notre base de données MySql (via phpMyAdmin) et nous pouvons nous rendre compte que le taux a été mis à jour (voir figure 2).

Mise à jour de la devise dans la base de données

Figure 2 - Mise à jour de la devise dans la base de données

Comme vous pouvez le constater, notre table et notre champ est bien mis à jour.

Comment automatiser la tâche ?

Sugar CRM dispose d’un programmateur. Le programmateur est un outil qui permet d’exécuter des tâches programmées. Il est accessible depuis le panel d’administration Sugar CRM. Pour automatiser cette tâche, il suffit de la créer en spécifiant le lien de notre script php (voir figure 3). Une fois cette tâche créée, enregistrez la.

Sugar CRM -programmateur currencies

Figure 3 - Sugar CRM -programmateur currencies

Voilà, vous n’aurez plus qu’à vérifier demain que votre script s’exécute bien…

PS. Si vous travaillez en local, penser à exécuter cette tâche à un moment ou votre PC est allumé ;)

Share

, , ,

  1. Pas encore de commentaire.
(ne sera pas publié)