Comment importer des données vers 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 l’écran de l’objet que vous voulez alimenter et cliquez sur Importer.

../../../_images/import_button.png

Vous trouverez des templates que vous pouvez facilement alimenter avec vos propres données. Ces templates peuvent être importés en un clic; 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 enregistrement 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 tracer automatiquement si son libellé ne correspond à aucun champ dans Odoo. Vous pouvez tracer 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 le faire fonctionner directement la prochaine fois.

Comment importer depuis une autre application

Pour recréer les relations entre les différents enregistrements, vous devez utiliser l’identifiant unique de la demande initiale et le relier à la colonne ID (ID externe) dans Odoo. Lorsque vous importez un autre enregistrement qui est lié au premier, utilisez XXX/ID (XXX/ID externe) pour l’identifiant unique initial. Vous pouvez également retrouver cet enregistrement via son nom mais vous serez bloqué si au moins deux enregistrements ont le même nom.

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

Je ne peux pas retrouver le champ avec lequel je veux relier ma colonne

Odoo essaye de retrouver par la méthode heuristique, en se basant sur les dix premières lignes des fichiers, le type de champ pour chaque colonne de votre fichier. Par exemple, si vous avez une colonne qui ne contient que des chiffres, seuls les champs de type entier vous seront proposés. Bien que cela soit approprié et pratique la plupart du temps, il est également possible que cela ne fonctionne pas bien ou que vous souhaitiez faire correspondre votre colonne à un champ qui ne vous 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 quel séparateur décimal ou de milliers vous utilisez (vous pouvez les modifier dans les options). Si vous utilisez un symbole monétaire qui est inconnu pour Odoo, il ne le reconnaîtra pas comme un nombre et il générera une erreur.

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 sr 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 sous 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 du 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 la boîte de dialogue “Enregistrer sous” > cochez la case “Modifier les paramètres du filtre” > Sauvez).

Lors de la sauvegarde, Microsoft Excel vous permettra de modifier uniquement l’encodage (dans la boîte de dialogue “Sauver sous” > 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 code du pays

  • Pays/Base de données ID : l’ID unique de Odoo pour un enregistrement, définit par la colonne ID PostgreSQL.

  • Pays/ID externe : l’ID de cet enregistrement référencé dans une autre application (ou le fichier .XML que l’a importé).

Pour la Belgique vous pouvez utiliser l’une de ces trois méthodes pour importer :

  • 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 enregistrements dans les relations. Voici les situations dans lesquelles vous devriez utiliser l’une ou l’autre, selon vos besoins :

  • 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 devriez rarement utiliser ce format. Il est le plus souvent utilisé par des développeurs car sa principale qualité est de ne jamais rencontrer de problèmes (vous pouvez avoir plusieurs données avec le même nom, mais elles ont toujours une base de données ID unique).

  • Utilisez Pays/ID externe : utilisez l’ID externe lorsque vous importez des données 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 par des colonnes telles que « Champ/ID externe ». Les deux fichiers CSV suivants vous donnent un exemple pour les produits et leurs catégories.

CSV file for categories.

CSV file for Products.

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 les données parce qu’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 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 de un à plusieurs (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.

CSV file for Manufacturer, Retailer

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

If you want to import sales order having several order lines; for each order line, you need to reserve a specific row in the CSV file. The first order line will be imported on the same row as the information relative to order. Any additional lines will need an additional row that does not have any information in the fields relative to the order. As an example, here is purchase.order_functional_error_line_cant_adpat.CSV file of some quotations you can import, based on demo data.

File for some Quotations.

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

Purchase orders with their respective purchase order lines.

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

Customers and their respective contacts.

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

If you import a file that contains one of the column « External ID » or « Database ID », records that have already been imported will be modified instead of being created. This is very useful as it allows you to import several times the same CSV file while having made some changes in between two imports. Odoo will take care of creating or modifying each record depending if it’s new or not.

Cette fonctionnalité vous permet d’utiliser l’outil Import/Export de 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 de tables différentes 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 » de 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”).

As an example, suppose you have a SQL database with two tables you want to import: companies and persons. Each person belong to one company, so you will have to recreate the link between a person and the company he work for. (If you want to test this example, here is a dump of such a PostgreSQL database)

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

> 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 les 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.