La solution "maquette" présentée ici, consiste à interfacer ODOO 8 à Magento 2 en utilisant l'ETL de Pentaho (appelée soit Kettle, soit Data Intégration, soit PDI) .
Cela ne remplace pas les connecteurs évoqués dans l'article précédent mais cela peut dépanner dans certains cas (ex: reprise de données) surtout dans la période actuelle où aucun connecteur gratuit ODOO-Magento 2 n'existe.
J'avais déjà rédigé des articles sur Pentaho Data Integration en août 2015.
Objet
Extraire les produits "actifs" de Magento pour les insérer dans ODOO, dans un contexte très simplifié ( pas de gestion des erreurs, attribut "name" seul renseigné ...)
Environnement
- Magento 2.0.2 installé sur un serveur mutualisé O2switch
- Odoo 8 installé sur un serveur VPS Debian 8.3
/!\ Cette solution ne fonctionne pas avec Odoo 9 CE car la dernière étape "OpenERP Object Output" est en échec
- Pentaho PDI v6.0.1 et Java JRE 1.7 installés sur un PC Linux Mint
- PDI téléchargé par : wget https://sourceforge.net/projects/pentaho/files/Data%20Integration/6.0/pdi-ce-6.0.1.0-386.zip
- JRE installé par : sudo apt-get install default-jre
Prérequis
Pour autoriser l'accès aux API REST de Magento, il faut créer une nouvelle "intégration"
... avec les droits suivants (à affiner selon le contexte)
Description
En résumé, cela consiste à créer une "transformation" dans PDI qui va appeler l'API REST "products" de Magento (interface "catalogProductRepositoryV1") pour ensuite appeler ODOO en XML-RPC .
Voici à quoi ressemble la transformation dans PDI :
Pour information, j'utilise pour développer et débugger, l'outil graphique "spoon.sh" de PDI.
Ensuite, il est possible de livrer le fichier "transformation" xxxx.ktr sur un serveur sans interface graphique (ex: VPS) et de l'exécuter avec le script "pan.sh" (ex: ./pan.sh -file=/your_directory/xxxx.ktr ).
Détaillons chacune des étapes :
* Etape "Generate Rows"
Le critère de sélection est de rechercher les produits avec le status "enabled" (produits actifs).
L'url Magento à appeler est : http://<votre url magento>/magento2/rest/V1/products?searchCriteria[filter_groups][0][filters][0][field]=status&searchCriteria[filter_groups][0][filters][0][value]=1&searchCriteria[filter_groups][0][filters][0][condition_type]=eq
* Etape "HTTP client"
Onglet "Général"
Onglet "Fields"
* Etape "Json Input"
Onglet "File"
Onglet "Fields"
Nous ne récupérerons dans le flux JSON que le champ "name" du produit .
Pour cela, l'expression JSON Path est : $..items[*].name
* Etape "OpenERP Object Output"
Exemple de connection "Odoo" (ne pas utiliser le user "admin" mais dédier un user créé pour l'occasion avec des droits adaptés)
Après avoir créé et relié ces 4 étapes, créé 2 produits dans Magento ...
... puis lancé la transformation PDI
... le résultat dans ODOO est celui attendu
Bonjour,
Merci pour cet article, très intéressant !
Comment avez-vous passé les paramètres oauth 1.0 demandé par l’API REST de magento 2 pour l’autorisation?
Merci,
Cdt,
Thomas ZAEPFFEL
Bonjour,
Je n’ai pas traité la problématique d’authentification car j’avais ouvert les API Magento à tout le monde (cf 2ème capture d’écran).
Ce n’était qu’un exemple simplifié.