Archives par mot-clé : Migration

Exemple d’import de produit (2/4)

Environnement
- OpenERP v8
- modules "ventes", "entrepôt" et "achats" installés
- Dans le menu "Configuration/Paramètres généraux", autoriser l'import CSV

- 2 fournisseurs créés : fournisseur1 , fournisseur2

Description
- Préparer le fichier csv d'import (les relations sont en fond "vert"):
* 1ères colonnes

   * colonnes suivantes

Le fichier CSV est accessible ici

- aller dans le menu "articles", se mettre dans la vue "liste" et cliquer sur "importer"

- sélectionner le fichier d'import

- cliquer sur "valider"

- après click sur "importer", l'article est créé

Points importants relatifs à l'import

- même si cela n'est pas obligatoire, il est judicieux de renseigner l'identifiant externe "id" pour servir d'identifiant unique et :
* permettre le rejeu du chargement (en cas d'ajout/ modification d'informations) sans faire de doublon
* pour faciliter les mises en relation avec d'autres tables chargées ultérieurement (après avoir chargé les articles, on peut charger la nomenclature en faisant référence à ces "id")

- cas d'une relation Many2One (ex: catégorie produit, compte de revenus et compte de dépenses)
* il faut que la table en relation soit déjà chargée dans OpenERP et ensuite, on utilise soit l'identifiant externe, soit le champ fonctionnel qui sert d'identifiant (s'il existe)

- cas d'une relation One2Many (ex: fournisseurs du produit)
* sauf pour la 1ère, il faut ajouter 1 ligne à chaque relation, avec uniquement les infos de la relation renseignées

- cas d'une relation Many2Many (ex: taxes à la vente et à l'achat)
* les différentes valeurs sont séparées par une virgule

Import de Dolibarr vers OpenERP 7

J'ai repris l'exemple de la migration Dolibarr vue précédemment pour le reproduire avec Pentaho-Kettle.

J'arrive à la transformation Kettle suivante :

Les étapes ("step") sont les suivantes :

  • traitement d'un fichier csv (produit par l'export Dolibarr) au format ISO-8859-1
  • concaténation des champs Nom et Prénom (avec encodage des infos en UTF-8)
  • transformation de la civilité en valeurs acceptées par OpenERP (Madam, Mister)
  • ajout d'une constante free_member=True pour caractériser un "partner" de type adhérent
  • écriture dans OpenERP

Interface Kettle 5.0 – OpenERP 7

Je ne vais finalement pas utiliser la solution TerminatOOOR pour interfacer Kettle (Pentaho Data Integration) à OpenERP.

En effet cette solution nécessite de développer des scripts en Ruby. Venant juste d'apprendre Python, je ne souhaite pas dans l'immédiat, apprendre un autre langage. Je verrai si besoin cette solution, ultérieurement.

Après recherche d'autres solutions s'interfaçant aux API OpenERP, je décide de retenir le plugin "OpenERP" qui va être fourni dans la prochaine version (v5.0) de Kettle.
Pour cela, je me procure cette version en cours de développement .

Le plugin OpenERP contient 3 nouveaux steps (au sens de Kettle) : input , output et delete .

Après avoir lancé l'interface graphique "spoon", nous voyons ces 3 nouveaux steps

L'import, export ou suppression dans OpenERP est alors grandement facilitée ... sachant que l'interface graphique Spoon est assez intuitive.

* Exemple d'import (à partir d'un fichier texte) :

* Exemple d'export (vers un fichier texte) :

Importer dans OpenERP 7 des données externes via un ETL

Nous avons vu précédemment une 1ère méthode pour importer des données d'un système externe vers OpenERP.
Nous allons regarder maintenant une solution de type ETL.

En effet, cette 1ère méthode a l'inconvénient :

  • de nécessiter le développement de scripts (en Python ou autre ) pour la préparation des données à importer (les mettre en format attendu par OpenERP)
  • d'être partiellement manuelle et donc peu industrialisée dans le cas d'import/export régulier (vers un logiciel de comptabilité par exemple)

J'ai retenu dans un 1er temps, le logiciel libre "Pentaho Data Integration" (appelé aussi Kettle) plutôt que Talend pour les raisons suivantes :

  • il existe (au moins) une solution nommée "TerminatOOOR" qui permet à Kettle de s'interfacer aux web services OpenERP (plutôt qu'à la BD) 
  • Pentaho propose d'autres modules intéressants et très répandus (décisionnel et moteur d'impression) complémentaires à OpenERP

Je vais donc passer quelques jours sur ce sujet en partant du wiki Pentaho.

A suivre ...