Exporter et importer des données

Exporter des données depuis Odoo

Lorsque vous travaillez avec une base de données, il est parfois nécessaire d’exporter vos données dans un fichier distinct. Cela peut aider à faire des rapports sur vos activités (même si Odoo propose un outil de rapport précis et facile avec chaque application disponible).

Avec Odoo, vous pouvez exporter les valeurs de n’importe quel champ dans n’importe quel enregistrement. Pour ce faire, activez la vue liste sur les éléments à exporter, cliquez sur Action, puis sur Exporter.

Vue des différentes choses à activer/cliquer pour exporter des données

C’est assez simple, cette action s’accompagne tout de même de quelques spécificités. En effet, en cliquant sur Exporter, une fenêtre pop-up apparaît avec plusieurs options pour les données à exporter :

Aperçu de toutes les options à prendre en considération lors de l'exportation de données dans Odoo
  1. Avec l’option Je veux mettre à jour les données cochée, le système n’affiche que les champs qui peuvent être importés. Ceci est très utile si vous souhaitez mettre à jour des enregistrements existants. Fondamentalement, cela fonctionne comme un filtre. Ne pas cocher la case donne plus d’options de champ car elle affiche tous les champs, pas seulement ceux qui peuvent être importés.

  2. Lors de l’exportation, vous pouvez choisir entre deux formats : .csv et .xls. Avec .csv, les éléments sont séparés par une virgule, tandis que .xls contient des informations sur toutes les feuilles de calcul d’un fichier, y compris le contenu et la mise en forme.

  3. Ce sont les éléments que vous voudrez peut-être exporter. Utilisez les flèches pour afficher plus d’options de sous-champs. Bien sûr, vous pouvez utiliser la barre de recherche pour trouver plus facilement des champs spécifiques. Pour utiliser l’option de recherche plus efficacement, affichez tous les champs en cliquant sur toutes les flèches !

  4. Le bouton + est là pour ajouter des champs à la liste « à exporter ».

  5. Les « indicateurs » à côté des champs sélectionnés vous permettre de bouger les champs pour modifier l’ordre dans lequel ils doivent être affichés dans le fichier exporté.

  6. La corbeille est là si vous devez supprimer des champs.

  7. Pour les rapports récurrents, il peut être intéressant d’enregistrer des préréglages d’exportation. Sélectionnez tous ceux dont vous avez besoin et cliquez sur la barre de modèles. Là, cliquez sur Nouveau modèle et donnez un nom au vôtre. La prochaine fois que vous devrez exporter la même liste, sélectionnez simplement le modèle associé.

Astuce

Il est bon de garder à l’esprit l’identifiant externe du champ. Par exemple, Société liée est égal à parent_id. Cela permet d’exporter uniquement ce que vous souhaitez importer ensuite.

Importer des données dans Odoo

Comment démarrer

Vous pouvez importer des données vers n’importe quel objet d’Odoo business en utilisant soit le format Excel (.xlsx) soit le format CSV (.csv) : des contacts, des produits, des relevés bancaires, des écritures comptables et même des commandes !

Ouvrez la vue de l’objet que vous souhaitez remplir et cliquez sur Favoris ‣ Importer des enregistrements.

../../_images/import_button.png

Vous y trouverez des templates que vous pouvez facilement alimenter avec vos propres données. Ces templates peuvent être importés en un clic car la cartographie des données a déjà été faite.

Comment adapter le template

  • Ajoutez, supprimez et triez les colonnes pour qu’elles correspondent au mieux à votre structure de données.

  • Nous vous conseillons de ne pas supprimer la colonne ID (voyez pourquoi dans la section suivante).

  • Définissez un ID unique pour chaque donnée en tirant la séquence ID vers le bas.

../../_images/dragdown.gif
  • Lorsque vous ajoutez une nouvelle colonne, Odoo risque de ne pas pouvoir la cartographier automatiquement si son libellé ne correspond à aucun champ dans Odoo. Vous pouvez relier les nouvelles colonnes manuellement lorsque vous testez l’importation. Recherchez le champ correspondant dans la liste.

    ../../_images/field_list.png

    Utilisez ensuite le libellé de ce champ dans votre fichier pour qu’il fonctionne directement la prochaine fois.

Comment importer depuis une autre application

Pour recréer les relations entre les différentes données, vous devez utiliser l’identifiant unique de l’application initiale et le faire correspondre à la colonne ID (ID externe) dans Odoo. Lorsque vous importez une autre donnée qui est liée à la première donnée, utilisez XXX/ID (XXX/ID externe) pour l’identifiant unique initial. Vous pouvez également retrouver cette donnée via son nom mais vous serez bloqué si au moins deux données ont le même nom.

L’ID sera également utilisé pour mettre à jour l’importation originale si vous devez importer des données modifiées plus tard, il est donc conseillé de le spécifier lorsque c’est possible.

Je ne trouve pas le champ auquel je veux faire correspondre ma colonne

Odoo essaye de retrouver le type de champ pour chaque colonne de votre fichier en utilisant la méthode heuristique, et en se basant sur les dix premières lignes des fichiers. Par exemple, si vous avez une colonne qui ne contient que des nombres, seuls les champs de type entiers vous seront proposés. Bien que cela soit approprié et pratique la plupart du temps, il se peut aussi que cela ne fonctionne pas bien ou que vous vouliez faire correspondre votre colonne à un champ qui n’est pas proposé par défaut.

Si cela arrive, vous devez juste vérifier l’option ** Afficher les champs des champs de relation (avancé)**, vous pourrez ainsi choisir depuis la liste complète de champs pour chaque colonne.

../../_images/field_list.png

Où puis-je changer le format de la date d’importation?

Odoo peut détecter automatiquement s’il s’agit d’une colonne de dates et il essayera de deviner le format de date à partir d’une série contenant les formats de date les plus utilisés. Bien que ce processus puisse fonctionner pour beaucoup de formats de date, certains formats ne seront pas reconnus. Cela peut prêter à confusion à cause des inversions jour-mois, car il est difficile de deviner quelle partie du format de date correspond au jour et laquelle correspond au mois dans une date telle que “01-03-2016”.

Pour savoir quel format de date Odoo a détecté depuis votre fichier, vous pouvez vérifier le Format de date qui s’affiche lorsque l’on clique sur Options sous le sélecteur de fichiers. Si le format est incorrect vous pouvez le modifier selon vos préférences en utilisant l”ISO 8601 pour définir le format.

Note

Si vous importez un fichier Excel (.xls, .xlsx), vous pouvez utiliser les cellules de données pour mémoriser les dates car l’affichage des dates dans Excel est différent de leur stockage. Vous vous assurez ainsi que le format de date dans Odoo est correct quel que soit le format de date local.

Puis-je importer des nombres avec un symbole monétaire (par ex.: 32,00 $)?

Oui, nous prenons en charge des nombres avec une parenthèse pour représenter le signe moins ainsi que des nombres avec un symbole monétaire. Odoo détecte aussi automatiquement le séparateur décimal ou de milliers que vous utilisez (vous pouvez les modifier dans les options). Si vous utilisez un symbole monétaire inconnu d’Odoo, il se peut qu’il ne soit pas reconnu comme un nombre et qu’il se bloque.

Voici quelques exemples des nombres pris en charge (en utilisant trente-deux mille comme exemple) :

  • 32.000,00

  • 32000,00

  • 32,000.00

  • -32000.00

  • (32000.00)

  • $ 32.000,00

  • (32000.00 €)

Exemple de ce qui ne fonctionne pas :

  • ABC 32.000,00

  • $ (32.000,00)

Que puis-je faire lorsque le tableau d’aperçu de l’importation ne s’affiche pas correctement?

Par défaut, l’aperçu de l’importation est défini sur des virgules comme séparateurs de champs et sur des guillemets comme délimiteurs de texte. Si votre fichier CSV n’a pas cette configuration, vous pouvez modifier les Options de format de fichier (affichées dans la barre Parcourir le fichier CSV après avoir sélectionné votre fichier).

Notez que si votre fichier CSV possède une tabulation comme séparateur, Odoo ne détectera pas les séparations. Vous allez devoir modifier les options de format de fichier sur l’application tableur. Consultez la question suivante.

Comment puis-je modifier les options de format du fichier CSV lors de la sauvegarde dans mon application tableur?

Si vous éditez et sauvegardez des fichiers CSV dans des applications tableur, la configuration régionale de votre ordinateur sera appliquée au séparateur et au délimiteur. Nous vous conseillons d’utiliser OpenOffice ou LibreOffice Calc, car ils vous permettront de modifier les trois options (Dans “Enregistrer sous” boîte de dialogue ‣ Cochez la case “Modifier les paramètres du filtre” ‣ Sauvez).

Lors de la sauvegarde, Microsoft Excel vous permettra de modifier uniquement l’encodage (Dans “Enregistrer sous” boîte de dialogue ‣ cliquez sur liste déroulante des “Outils” ‣ Onglet d’encodage).

Quelle est la différence entre base de données ID et ID externe?

Certains champs définissent une relation avec un autre objet. Par exemple, le pays d’un contact est un lien pour l’enregistrement de l’objet “Pays”. Lorsque vous voulez importer de tels champs, Odoo devra recréer des liens entre les différents enregistrements. Pour vous aider à importer de tels champs, Odoo prévoit trois méthodes. Vous devez utiliser une seule de ces méthodes pour chaque champ que vous voulez importer.

Par exemple, pour référencer le pays d’un contact, Odoo vous propose trois différents champs pour importer :

  • Pays : le nom ou le code du pays

  • Pays/Base de données ID : l’ID unique d’Odoo pour une donnée, défini par la colonne ID PostgreSQL.

  • Pays/ID externe : l’ID de cette donnée référencé dans une autre application (ou le fichier .XML qui l’a importé).

Pour la Belgique, ces trois méthodes d’importation sont disponibles :

  • Pays : Belgique

  • Pays/Base de données ID : 21

  • Pays/Id. externe: base.be

Selon vos besoins, vous devez utiliser l’une de ces trois méthodes pour référencer les données dans les relations. Voici les situations où vous devez utiliser l’une ou l’autre :

  • Utilisez Pays : c’est la façon la plus facile lorsque vos données viennent d’un fichier CSV qui a été créé manuellement.

  • Utilisez Pays/Base de données ID : vous ne devez que rarement utiliser ce format. Il est surtout utilisé par les développeurs car son principal avantage est de ne jamais engendrer des conflits (vous pouvez avoir plusieurs données avec le même nom, mais elles ont toujours une ID de base de données unique).

  • Utilisez Pays/ID externe : utilisez l’ID externe lorsque vous importez des données à partir d’une application tierce.

Lorsque vous utilisez des IDs externes, vous pouvez importer des fichiers CSV en utilisant la colonne « ID externe » pour définir l’ID externe de chaque donnée que vous importez. Vous pourrez ensuite faire référence à ces données avec des colonnes telles que « Champ/ID externe ». Les deux fichiers CSV suivants vous donnent un exemple pour les produits et leurs catégories.

Fichier CSV pour les catégories.

Fichier CSV pour les produits.

Que puis-je faire si j’ai plusieurs correspondances pour un champ ?

Si, par exemple, vous avez deux catégories de produits qui ont pour thème enfant le mot « Vendable » (c’est-à-dire « Produits divers/Vendable » et « Autres produits/Vendable »), votre validation est interrompue mais vous pouvez toujours importer vos données. Cependant, nous vous recommandons de ne pas importer ces données car elles seront toutes liées à la première catégorie “Vendable” qui se trouve dans la liste des catégories de produits (« Produits divers/Vendable »). Nous vous recommandons de modifier l’une des valeurs des doublons ou votre hiérarchie de catégories de produits.

Cependant, si vous ne voulez pas modifier la configuration de vos catégories de produits, nous vous recommandons d’utiliser l’ID externe pour le champ “Catégorie”.

Comment puis-je importer un champ de relation many2many (par ex. un client qui possède différentes balises) ?

Les balises doivent être séparées par une virgule sans espacement. Par exemple, si vous souhaitez que votre client soit lié aux deux balises “Fabricant” et “Détaillant”, vous devez encoder « Fabricant, Détaillant » dans la même colonne de votre fichier CSV.

Fichier CSV pour Fabricant, Détaillant

Comment puis-je importer une relation d’un à plusieurs (par ex. plusieurs lignes de commande ou un ordre de vente)?

Si vous souhaitez importer une commande client comportant plusieurs lignes de commande, vous devez prévoir une ligne spécifique dans le fichier CSV pour chaque ligne de commande. La première ligne de commande sera importée sur la même ligne que les informations relatives à cette commande. Toute nouvelle ligne de commande aura besoin d’une ligne supplémentaire dont les champs relatifs à la commande ne contiennent aucune information. À titre d’exemple, voici le fichier de quelques devis que vous pouvez importer, sur la base de données de démonstration.``purchase.order_functional_error_line_cant_adpat.CSV`

Fichier pour certains devis.

Le fichier CSV suivant montre comment importer des commandes et leurs lignes de commande respectives :

Commandes d'achat avec leurs lignes de commande respectives.

Le fichier CSV suivant montre comment importer des clients et leurs contacts respectifs :

Les clients et leurs contacts respectifs.

Puis-je importer plusieurs fois le même enregistrement ?

Si vous importez un fichier qui contient une des colonnes « External ID » ou « Database ID », les enregistrements qui ont déjà été importés seront modifiés au lieu d’être créés. Ceci est très utile car cela vous permet d’importer plusieurs fois le même fichier CSV en ayant fait des modifications entre deux imports. Odoo se chargera de créer ou de modifier chaque enregistrement selon qu’il est nouveau ou non.

Cette fonctionnalité vous permet d’utiliser l’outil Import/Export d’Odoo pour modifier un lot de données dans votre application tableur favorite.

Que se passe t-il si je ne propose pas de valeur pour un champ spécifique?

Si vous ne définissez pas tous les champs dans votre fichier CSV, Odoo attribuera la valeur par défaut pour chaque champ non défini. Mais si vous définissez des champs avec des valeurs vides dans votre fichier CSV, Odoo définira la valeur VIDE dans le champ, au lieu d’assigner la valeur par défaut.

Comment exporter/importer des tableaux différents depuis une application SQL vers Odoo?

Si vous devez importer des données de différentes tables, vous devrez recréer des relations entre les données appartenant à différentes tables. (par exemple, si vous importez des sociétés et des personnes, vous devrez recréer le lien entre chaque personne et la société pour laquelle elle travaille).

Pour gérer les relation entre des tableaux, vous pouvez utiliser les fonctionnalités « ID externe » d’Odoo. L“« ID externe » d’une donnée est l’unique identificateur de cette donnée dans une autre application. Cet « ID externe » doit être unique pour toutes les données de tous les objets, il est donc recommandé de faire précéder cet « External ID » du nom de l’application ou de la table. (comme “entreprise_1”, “personne_1” au lieu de “1”).

Par exemple, supposons que vous ayez une base de données SQL avec deux tableaux que vous souhaitez importer : sociétés et personnes. Chaque personne appartient à une entreprise, vous devrez donc recréer le lien entre une personne et l’entreprise pour laquelle elle travaille. (Si vous voulez tester cet exemple, voici un dump d'une telle base de données PostgreSQL)

Nous allons importer d’abord toutes les entreprises ainsi que leur « ID externe ». Tapez la commande Dans PSQL :

> copy (select 'company_'||id as "External ID",company_name as "Name",'True' as "Is a Company" from companies) TO '/tmp/company.csv' with CSV HEADER;

Cette commande SQL va générer le fichier CSV suivant :

External ID,Name,Is a Company
company_1,Bigees,True
company_2,Organi,True
company_3,Boum,True

Pour créer les fichiers CSV pour des personnes, liées à des entreprises, nous allons utiliser la commande SQL suivante en PSQL :

> copy (select 'person_'||id as "External ID",person_name as "Name",'False' as "Is a Company",'company_'||company_id as "Related Company/External ID" from persons) TO '/tmp/person.csv' with CSV

Cela va générer le fichier CSV suivant :

External ID,Name,Is a Company,Related Company/External ID
person_1,Fabien,False,company_1
person_2,Laurence,False,company_1
person_3,Eric,False,company_2
person_4,Ramsy,False,company_3

Comment vous pouvez voir dans ce fichier, Fabien et Laurence travaillent pour l’entreprise Bigees (entreprise_1) et Eric travaille pour l’entreprise Organi. La relation entre les personnes et les entreprises se fait à l’aide de l’ID externe des entreprises. Nous avons du faire précéder l »ID externe » du nom du tableau pour éviter un conflit d’ID entre les personnes et les entreprises (personne_1 et entreprise_1 qui avaient le même ID 1 dans la base de données initiale).

Les deux fichiers créés sont prêts à être importés dans Odoo sans aucune modification. Après avoir importé ces deux fichiers CSV, vous aurez 4 contacts et 3 entreprises. (les deux premiers contacts sont liés à la première entreprise). Vous devez d’abord importer les entreprises et ensuite les personnes.

Comment adapter un template d’importation

Des templates d’importation sont fournis dans l’outil d’importation des données les plus courantes à importer (contacts, produits, relevés bancaires, etc.). Vous pouvez les ouvrir avec n’importe quel logiciel tableur (Microsoft Office, OpenOffice, Google Drive, etc.).

Comment personnaliser le fichier

  • Supprimez les colonnes dont vous n’avez pas besoin. Nous vous conseillons de ne pas supprimer la colonne ID (voyez pourquoi ci-dessous).

  • Définissez un ID unique pour chaque donnée en tirant la séquence ID vers le bas.

    ../../_images/dragdown.gif
  • Lorsque vous ajoutez une nouvelle colonne, Odoo risque de ne pas pouvoir la cartographier automatiquement si son libellé ne correspond à aucun champ du système. Dans ce cas, utilisez la fonction de recherche pour trouver le champ correspondant.

    ../../_images/field_list.png

    Utilisez ensuite le libellé que vous avez trouvé dans votre template d’importation pour le faire fonctionner directement la prochaine fois que vous essaierez d’importer.

Pourquoi utiliser une colonne “ID”

L”ID (ID externe) est un identifiant unique associé à chaque ligne. N’hésitez pas à utiliser celui de votre ancien logiciel pour faciliter la transition vers Odoo.

Vous n’êtes pas obligé de configurer un ID lors de l’importation mais cela peut être utile dans certains cas :

  • Importations de mise à jour : vous pouvez importer le même fichier plusieurs fois sans devoir créer un doublon;

  • Importer des champs de liens (voir ci-dessous).

Comment importer des champs de liens

Un objet Odoo est toujours lié à de nombreux autres objets (par ex. un produit est lié à des catégories de produits, à des caractéristiques, à des vendeurs, etc.). Pour importer ces relations, vous devez d’abord importer les données de l’objet lié depuis leur propre menu déroulant.

Pour ce faire, vous pouvez soit utiliser le nom de la donnée liée soit son ID. Lorsque deux données ont le même nom, il faut utiliser l’ID. Dans ce cas, ajoutez  » / ID » à la fin du titre de la colonne (par ex. pour les caractéristiques du produit : Caractéristiques du produit / Caractéristiques / ID).