Comment faire communiquer OpenERP et Magento

le 19/04/2011 par Ahmed Mseddi
Tags: Software Engineering

Dans un précédent article, nous vous présentions une vue d'ensemble du progiciel de gestion intégré (en anglais Enterprise Resource Planning) OpenERP. Ce dernier tend à s'imposer comme une alternative sérieuse et open source aux solutions propriétaires de PGI. Le temps est donc venu d'étudier la manière de l'intégrer aux autres briques du SI, et pour cela je prendrai dans cet article l'exemple de la plateforme libre d'e-commerce Magento. Rappelons que ce dernier est très utilisé pour créer des sites de vente en ligne et est apprécié pour son Front-Office. En revanche, son Back-Office et notamment tout ce qui tient de la gestion comptable, de la gestion des stocks et de la gestion des réapprovisionnements est souvent critiqué.  D'où l'idée de le synchroniser avec OpenERP pour lui déléguer ces tâches.

Établissement de la connexion

Côté Magento

La version 1.3.2.4 de Magento étant celle qui est la mieux prise en compte par le module côté OpenERP, c'est celle ci qui est utilisée. Il est possible d'utiliser des versions plus récentes en modifiant le code source du module OpenERP mais il est conseillé d'attendre les mises à jour officielles. Le serveur doit utiliser une version de PHP comprise entre 5.2.0 et 5.3.0 pour pouvoir installer l'extension via l'interface d'administration sinon il faudra l'installer à la main.

Pour permettre l'échange de données avec OpenERP il faut :

  • Dans l'interface d'administration de Magento, aller dans System > Magento connect > Magento Connect Manager.
  • Dans l'onglet Settings définir le Preferred State à Beta. En effet, l'extension qu'on s'apprête à installer est encore en Bêta mais a déjà été utilisée en production et est stable.
  • Installer l'extension OpenERP connector en utilisant la clé suivante : magento-community/Openlabs_OpenERPConnector
  • Enfin, créer un utilisateur des Web Services dans System > Web Services > Users et lui attribuer un rôle ayant tous les droits. Cet utilisateur est nécessaire pour permettre à OpenERP d'effectuer les synchronisation entre les deux outils. (Il faudra bien sûr veiller à choisir les login et mot de passe en respectant les règles de sécurité pour ne pas créer de faille dans Magento)

Côté OpenERP

La version utilisée d'OpenERP et dernière  à savoir la 6.0.2 (Il existe une version du module pour la v5 d'OpenERP mais l'effort de développement est concentré sur la v6). Il faut installer le module magentoerpconnect disponible à l'adresse suivante : https://launchpad.net/magentoerpconnect ou directement en utilisant bazaar :

bzr branch lp:magentoerpconnect

Ce module dépend de quelques un des modules officiels (lp:openobject-addons/6.0) disponibles dans l'archive du serveur OpenERP et les modules suivants disponibles dans les modules supplémentaires (lp:openobject-addons/extra-6.0)

  • base_external_referentials
  • base_sale_multichannels
  • product_images_olbs
  • product_m2mcategories

Il faut ensuite créer une instance Magento dans le menu Magento-Connection > Core Settings > Magento Instances :

  • Name : Choisir un nom  pour cette instance
  • Referential Type : seul le_1.3.2.4+_ est disponible.
  • Location : adresse URL de Magento (exemple http://localhost/magento)
  • Cliquer sur Reload Referential Mapping Templates
  • Dans l'onglet Authentication, saisir les User Name et Password de l'utilisateur des Web Services créé dans la quatrième étape de l'installation de l'extension côté Magento
  • Cliquer sur Synchronise Referential Settings
  • (Optionnel) Il est possible d'effectuer l'import initial des Partners, Partner Categories, Products, Product Categories,... L'import initial des catégories de produit à partir d'une base de démo Magento donne bien la même hiérarchie comme le montre la figure suivante :

Échange des données

Régulièrement

A la fin de l'installation, huit Actions Planifiées (en anglais Scheduled Actions) seront disponibles dans le menu : Administration > Configuration > Planificateur > Actions planifiés :

  • Magento Export Catalog
  • Magento Export Newsletter UnSubscription
  • Magento Export Shipping
  • Magento Export Stock Levels Only
  • Magento Import Newsletter Subscription
  • Magento Import Orders
  • Magento Update Orders Status
  • Magento Updates Images

Il est donc possible d'activer les Actions qui nous intéressent et d'en définir la récurrence.

Manuellement

Il est aussi possible d'effectuer ces mêmes Actions à la  main dans le menu Ventes > Configuration > Ventes > Magasin et en sélectionnant le Main Store de Magento.

Par push

Une dernière possibilité est de permettre à OpenERP de mettre à jour le statut des Bons de Commande dans Magento si ce dernier évolue dans le serveur OpenERP. Cette option s'active dans l'onglet "Magento Information" dans le menu V_entes > Configuration > Ventes > Magasin_ (Screenshot précédent) en cochant la case "Allow Magento Order Status push".

Conclusion

A la fin de cette configuration, un achat en ligne entrainera la création d'un bon de commande côté OpenERP. Après confirmation, la vente suivra le flux défini par le vendeur dans OpenERP. Une fois la commande expédiée et la facture créée, ces informations seront remontées au client pour lui permettre de suivre sa commande.

Cette synchronisation a déjà été mise en place chez plusieurs entreprises de ventes en ligne et les retours sont positifs. Les demandes d'intégrations Magento/OpenERP étant en constante augmentation, Akretion et Camptocamp ont annoncé à l'occasion des OpenERP Community & Partners Days 2011 qu'ils étaient entrain de réfléchir à une roadmap pour améliorer les fonctionnalités du connecteur. Ces améliorations concerneraient entre autre l'import initial, la gestion des factures et la synchronisation des produits du catalogue.