Gegevens exporteren en importeren

In Odoo is het soms nodig om gegevens te exporteren of importeren voor het opstellen van rapporten of om gegevens te wijzigen. Deze handleiding gaat over het exporteren en importeren van gegevens naar en vanuit Odoo.

Belangrijk

Soms krijgen gebruikers een ‘time-out’-fout, of wordt een record niet verwerkt vanwege de grootte ervan. Dit kan gebeuren bij grote exports, of in gevallen waar het importbestand te groot is. Om deze beperking met betrekking tot de grootte van de records te omzeilen, verwerk je exports of imports in kleinere batches.

Gegevens exporteren uit Odoo

When working with a database, it is sometimes necessary to export data in a distinct file. Doing so can aid in reporting on activities, although, Odoo provides a precise and easy reporting tool with each available application.

With Odoo, the values can be exported from any field in any record. To do so, activate the list view ( (list) icon), on the items that need to be exported, then select the records that should be exported. To select a record, tick the checkbox next to the corresponding record. Finally, click on Actions, then Export.

Weergave van de verschillende dingen die je moet inschakelen/aanklikken om gegevens te exporteren.

When clicking on Export, an Export Data pop-over window appears, with several options for the data to export:

Overzicht van opties om te overwegen bij het exporteren van gegevens in Odoo.
  1. With the I want to update data (import-compatable export) option ticked, the system only shows the fields that can be imported. This is helpful in the case where the existing records need to be updated. This works like a filter. Leaving the box unticked, gives many more field options because it shows all the fields, not just the ones that can be imported.

  2. Bij het exporteren kun je exporteren in twee formaten: .csv en .xls. Bij .csv worden items gescheiden door een komma, terwijl .xls informatie bevat over alle werkbladen in een bestand, inclusief inhoud en opmaak.

  3. These are the items that can be exported. Use the > (right arrow) icon to display more sub-field options. Use the Search bar to find specific fields. To use the Search option more efficiently, click on all the > (right arrows) to display all fields.

  4. The + (plus sign) icon button is present to add fields to the Fields to export list.

  5. The ↕️ (up-down arrow) to the left of the selected fields can be used to move the fields up and down, to change the order in which they are displayed in the exported file. Drag-and-drop using the ↕️ (up-down arrow) icon.

  6. The 🗑️ (trash can) icon is used to remove fields. Click on the 🗑️ (trash can) icon to remove the field.

  7. For recurring reports, it is helpful to save export presets. Select all the needed fields, and click on the template drop-down menu. Once there, click on New template, and give a unique name to the export just created. Click the 💾 (floppy drive) icon to save the configuration. The next time the same list needs to be exported, select the related template that was previously saved from the drop-down menu.

Tip

Het is handig om de externe identificatie van het veld te kennen. Bijvoorbeeld: Gerelateerd bedrijf in de exportgebruikersinterface is gelijk aan parent_id (external identifier). Dit is handig omdat dan alleen de gegevens worden geëxporteerd die moeten worden gewijzigd en opnieuw geïmporteerd.

Gegevens importeren in Odoo

Gegevens importeren in Odoo is enorm handig tijdens de implementatie of wanneer gegevens in bulk bijgewerkt moeten worden. De volgende documentatie legt uit hoe je gegevens in een Odoo-database importeert.

Waarschuwing

Imports zijn permanent en kunnen niet ongedaan worden gemaakt. Het is wel mogelijk om filters (aangemaakt op of laatst gewijzigd) te gebruiken om records te identificeren die door de import zijn gewijzigd of aangemaakt.

Tip

Als je de ontwikkelaarsmodus activeert, wijzigen de zichtbare importinstellingen in het linkermenu. Hierdoor wordt een menu Geavanceerd zichtbaar. Dit geavanceerde menu bevat twee opties: Geschiedenis bijhouden tijdens importeren en Matching met subvelden toestaan.

Geavanceerde importopties wanneer de ontwikkelaarsmodus is geactiveerd.

Als het model openchatter gebruikt, stelt de optie Geschiedenis bijhouden tijdens import abonnementen in en verstuurt meldingen tijdens de import, maar dit leidt tot een langzamere import.

Als de optie Matchen met subvelden toestaan is geselecteerd, dan worden alle subvelden binnen een veld gebruikt om te matchen onder het Odoo-veld tijdens het importeren.

Aan de slag

Gegevens kunnen worden geïmporteerd in elk Odoo-bedrijfsobject met behulp van de fomaten Excel (.xlsx) of CSV (.csv). Dit omvat: contacten, producten, bankafschriften, boekingen en orders.

Open the view of the object to which the data should be imported/populated, click the (gear) icon and select Import records.

Actiemenu geopend met de optie records importeren gemarkeerd.

Click Import Template for Customers at the center of the page to download a template and populate it with the company’s own data. Such templates can be imported in one click since the data mapping is already preconfigured.

To upload the downloaded template or your own file, follow the next steps:

  1. Klik op Gegevensbestand uploaden en selecteer het gewenste bestand.

  2. Pas de Opmaak-opties aan zoals nodig (alleen voor CSV-bestanden).

  3. Zorg ervoor dat alle gegevens in de Bestandskolom correct zijn toegewezen aan het juiste Odoo-veld en vrij zijn van fouten.

  4. (Optioneel) Klik op Gegevensbestand uploaden om hetzelfde bestand opnieuw te laden of een ander bestand te uploaden.

  5. Klik op Test om te controleren of de gegevens geldig zijn.

  6. Klik op Importeren.

Notitie

De Opmaak-opties verschijnen niet bij het importeren van Excel-bestandstypes (d.w.z. .xls of .xlsx).

Een sjabloon aanpassen

Importsjablonen worden aangeboden in de importtool voor de meest voorkomende te importeren gegevens (contacten, producten, bankafschriften, enz.). Je kunt ze openen met eender welke spreadsheetsoftware (Microsoft Office, OpenOffice, Google Drive, enz.).

Zodra het sjabloon is gedownload, volg je deze stappen:

  • Voeg kolommen toe, verwijder ze en sorteer ze om ze zo goed mogelijk aan je gegevensstructuur aan te passen.

  • Het wordt sterk aangeraden om de kolom Externe ID (ID) niet te verwijderen (in de volgende sectie lees je waarom).

  • Stel een unieke ID in voor elk record door de ID-reeks omlaag te slepen in de kolom Externe ID (ID).

Een animatie van de muis die de ID-kolom naar beneden sleept, zodat elk record een unieke ID heeft.

Notitie

Wanneer een nieuwe kolom wordt toegevoegd, kan Odoo deze mogelijk niet automatisch toewijzen als het label niet overeenkomt met een veld in Odoo. Nieuwe kolommen kunnen echter handmatig worden toegewezen wanneer de import wordt getest. Zoek in het vervolgkeuzemenu naar het bijbehorende veld.

Uitgevouwen vervolgkeuzemenu in het eerste importscherm van Odoo.

Gebruik vervolgens het label van dit veld in het importbestand om ervoor te zorgen dat toekomstige importen succesvol zijn.

Tip

Another useful way to find out the proper column names to import is to export a sample file using the fields that should be imported. This way, if there is not a sample import template, the names are accurate.

Importeren vanuit een andere applicatie

The External ID (ID) is a unique identifier for the line item. Feel free to use one from previous software to facilitate the transition to Odoo.

Het instellen van een ID is niet verplicht bij het importeren, maar het helpt in veel gevallen:

Om relaties tussen verschillende records opnieuw te creëren, moet de unieke identifier van de oorspronkelijke applicatie worden gebruikt om deze toe te wijzen aan de kolom External ID (ID) in Odoo.

Wanneer een ander record wordt geïmporteerd dat een link heeft met het eerste record, gebruik dan XXX/ID (XXX/Externe ID) voor de oorspronkelijke unieke identificatie. Dit record kan ook worden gevonden met behulp van zijn naam.

Waarschuwing

Let op: Conflicten treden op als twee (of meer) records dezelfde Externe ID hebben.

Veld ontbreekt om kolom toe te wijzen

Odoo probeert het type veld voor elke kolom in het geïmporteerde bestand te vinden, op basis van de eerste rijen van het bestand.

Als er bijvoorbeeld een kolom is die alleen getallen bevat, worden alleen de velden van het type geheel getal als opties weergegeven.

Dit is in de meeste gevallen nuttig, maar het is ook mogelijk dat het mislukt of dat de kolom wordt toegewezen aan een veld dat niet standaard wordt voorgesteld.

Als dit gebeurt, vink de optie Velden van relatievelden tonen (geavanceerd) aan, waarna een volledige lijst van velden beschikbaar wordt voor elke kolom.

Zoeken naar het veld om toe te wijzen aan de btw-kolom.

Importopmaak van gegevens wijzigen

Notitie

Odoo kan automatisch detecteren of een kolom een datum is en probeert het datumformaat te raden uit een set van de meest gebruikte datumformaten. Hoewel dit proces voor veel datumformaten kan werken, zijn sommige datumformaten niet herkenbaar. Dit kan verwarring veroorzaken door dag-maand omkeringen. Het is moeilijk te raden welk deel van een datumformaat de dag is en welk deel de maand is in een datum zoals 01-03-2016.

Bij het importeren van een CSV-bestand biedt Odoo Opmaak-opties.

Om te zien welke datumnotatie Odoo uit het bestand heeft gehaald, controleer je de Datumnotatie die wordt weergegeven wanneer je op opties klikt onder de bestandskiezer. Als dit formaat onjuist is, verander het dan naar het gewenste formaat met behulp van ISO 8601 om het formaat te definiëren.

Belangrijk

ISO 8601 is an international standard, covering the worldwide exchange, along with the communication of date and time-related data. For example, the date format should be YYYY-MM-DD. So, in the case of July 24th 1981, it should be written as 1981-07-24.

Tip

Bij het importeren van Excel-bestanden (.xls, .xlsx) kun je overwegen om datumcellen te gebruiken voor het opslaan van datums. Dit behoudt lokale datumnotaties voor weergave, ongeacht hoe de datum in Odoo is opgemaakt. Bij het importeren van een CSV-bestand kun je de sectie Opmaak van Odoo gebruiken om de datumnotatie van de te importeren kolommen te selecteren.

Getallen importeren met valutatekens

Odoo ondersteunt getallen tussen haakjes om negatieve tekens weer te geven, evenals getallen met valutasymbolen erbij. Odoo detecteert ook automatisch welk duizendtal-/decimaalscheidingsteken wordt gebruikt. Als een valutasymbool wordt gebruikt dat onbekend is bij Odoo, wordt het mogelijk niet herkend als een getal en crasht de import.

Notitie

Bij het importeren van een CSV-bestand verschijnt het menu Opmaak in de linkerkolom. Onder deze opties kan het Scheidingsteken voor duizendtallen worden gewijzigd.

Voorbeelden van ondersteunde getallen (met ‘tweeëndertigduizend’ als waarde):

  • 32.000,00

  • 32000,00

  • 32,000.00

  • -32000.00

  • (32000.00)

  • € 32.000,00

  • (32000.00 €)

Voorbeeld dat niet werkt:

  • ABC 32.000,00

  • € (32.000,00)

Belangrijk

() (haakjes) rond het getal geven aan dat het getal een negatieve waarde is. Het valutasymbool moet binnen het haakje worden geplaatst zodat Odoo het herkent als een negatieve valutawaarde.

Voorbeeldtabel voor import niet correct weergegeven

In het importvoorbeeld zijn komma’s standaard ingesteld als veldscheidingstekens en aanhalingstekens als tekstbegrenzer. Als het CSV-bestand deze instellingen niet heeft, pas dan de Opmaak-opties aan (weergegeven onder de Import CSV-bestandsbalk na het selecteren van het CSV-bestand).

Belangrijk

Als het CSV-bestand tabellen als scheidingsteken heeft, detecteert Odoo de scheidingen niet. De opties voor het bestandsformaat moeten worden aangepast in de spreadsheetapplicatie. Zie de volgende sectie CSV-bestandsformaat wijzigen.

CSV-bestandsformaat wijzigen in de spreadsheet-app

Bij het bewerken en opslaan van CSV-bestanden in spreadsheetapplicaties worden de regionale instellingen van de computer toegepast voor het scheidingsteken en de tekstbegrenzer. Odoo raadt aan om OpenOffice of LibreOffice te gebruiken, aangezien beide applicaties wijzigingen van alle drie de opties mogelijk maken (ga vanuit de LibreOffice-applicatie naar dialoogvenster ‘Opslaan als’ ‣ Vink het vakje ‘Filterinstellingen bewerken’ aan ‣ Opslaan).

Microsoft Excel kan de codering wijzigen bij het opslaan (dialoogvenster ‘Opslaan als’ ‣ vervolgkeuzemenu ‘Extra’ ‣ tabblad Codering).

Verschil tussen database-ID en externe ID

Sommige velden definiëren een relatie tot een ander object. Bijvoorbeeld, het land van een contact is een link naar een record van het ‘Land’-object. Wanneer dergelijke velden worden geïmporteerd, moet Odoo links tussen de verschillende records opnieuw creëren. Om het importeren van dergelijke velden te ondersteunen, biedt Odoo drie mechanismen.

Belangrijk

Slechts één mechanisme mag worden gebruikt per veld dat wordt geïmporteerd.

Om bijvoorbeeld te verwijzen naar het land van een contact, biedt Odoo drie verschillende velden om te importeren:

  • Land: de naam of code van het land

  • Land/Database-ID: de unieke Odoo-ID voor een record, gedefinieerd door de ID PostgreSQL-kolom

  • Land/Externe ID: de ID van dit record waarnaar wordt verwezen in een andere app (of het .XML-bestand waarmee het is geïmporteerd)

Voor het land ‘België’ gebruik je bijvoorbeeld een van deze drie manieren om te importeren:

  • Land: Belgium

  • Land/Database-ID: 21

  • Land/Externe ID: base.be

Gebruik een van deze drie manieren om records in relaties te plaatsen, afhankelijk van de behoefte van het bedrijf. Hier zie je welke manier wanneer kan worden gebruikte, afhankelijk van de behoefte:

  • Land gebruiken: dit is de makkelijkste manier wanneer gegevens afkomstig zijn uit CSV-bestanden die handmatig zijn aangemaakt.

  • Land/Database-ID gebruiken: dit moet zelden worden gebruikt. Het wordt vooral gebruikt door ontwikkelaars, aangezien het belangrijkste voordeel is dat er nooit conflicten zijn (er kunnen meerdere records met dezelfde naam zijn, maar ze hebben altijd een unieke database-ID)

  • Land/Externe ID gebruiken: gebruik Externe ID bij het importeren van gegevens uit een applicatie van derden.

Wanneer Externe ID’s worden gebruikt, importeer je CSV-bestanden met de kolom Externe ID (ID) die de Externe ID van elk geïmporteerd record definieert. Vervolgens kan naar dat record verwezen worden met kolommen zoals Veld/Externe ID. De volgende twee CSV-bestanden geven een voorbeeld voor producten en hun categorieën.

Relatievelden importeren

Een Odoo-object is altijd gerelateerd aan veel andere objecten (bv. een product is gekoppeld aan productcategorieën, kenmerken, leveranciers, enz.). Om die relaties te importeren, moeten de records van het gerelateerde object eerst worden geïmporteerd, vanuit hun eigen lijstmenu.

Dit kan worden bereikt door de naam van het gerelateerde record te gebruiken, of de ID ervan, afhankelijk van de omstandigheden. De ID wordt verwacht wanneer twee records dezelfde naam hebben. Voeg in zo’n geval / ID toe aan het einde van de kolomtitel (bv. voor productkenmerken: Productkenmerken / Kenmerk / ID).

Opties voor meerdere overeenkomsten met velden

Als er bijvoorbeeld twee productcategorieën zijn met de onderliggende naam Verkoopbaar (bv. Overige Producten/Verkoopbaar & Andere Producten/Verkoopbaar), wordt de validatie stopgezet, maar de gegevens kunnen nog steeds worden geïmporteerd. Odoo raadt echter aan om de gegevens niet te importeren omdat ze allemaal worden gekoppeld aan de eerste Verkoopbaar-categorie die wordt gevonden in de lijst Productcategorie (Overige Producten/Verkoopbaar). Odoo raadt in plaats daarvan aan om een van de dubbele waarden te wijzigen, of de productcategoriehiërarchie aan te passen.

Als het bedrijf echter de configuratie van productcategorieën niet wil wijzigen, raadt Odoo aan om gebruik te maken van de Externe ID voor dit veld, ‘Categorie’.

Many2many-relatievelden importeren

De labels moeten gescheiden worden door een komma, zonder spaties. Als een klant bijvoorbeeld gekoppeld moet worden aan beide labels: Producent en Verkoper, dan moet ‘Producent,Detailhandelaar’ worden gecodeerd in dezelfde kolom van het CSV-bestand.

One2many-relaties importeren

Als een bedrijf een verkooporder met meerdere orderregels wil importeren, moet voor elke orderregel een specifieke rij worden gereserveerd in het CSV-bestand. De eerste orderregel wordt geïmporteerd op dezelfde rij als de informatie over de order. Eventuele extra regels hebben een extra rij nodig waarin geen informatie staat in de velden die betrekking hebben op de order.

As an example, here is a CSV file of some quotations that can be imported, based on demo data:

The following CSV file shows how to import purchase orders with their respective purchase order lines:

The following CSV file shows how to import customers and their respective contacts:

Afbeeldingsbestanden importeren

Om afbeeldingsbestanden te importeren samen met het geüploade CSV- of Excel-bestand, volg je de volgende stappen:

  1. Voeg de bestandsnamen van de afbeeldingen toe aan de relevante Afbeelding-kolom in het gegevensbestand.

  2. Upload het gegevensbestand of herlaad het door op Gegevensbestand laden te klikken.

  3. Klik op Je bestanden uploaden onder de sectie Bestenden om te importeren.

  4. Selecteer de relevante afbeeldingsbestanden. Het aantal geselecteerde bestanden verschijnt naast de knop.

  5. Klik op Testen om te controleren of alle gegevens geldig zijn.

  6. Klik op Importeren. Tijdens het importproces voert Odoo een bestandscontrole uit om de geüploade afbeeldingen automatisch te koppelen aan het geïmporteerde gegevensbestand. Als er geen overeenkomst is, wordt het gegevensbestand geïmporteerd zonder afbeelding.

Notitie

  • The Files to import section is enabled if your product template has an Image column with all fields populated.

  • De bestandsnamen van de afbeeldingen in het gegevensbestand moeten overeenkomen met de geüploade afbeeldingsbestanden.

  • When importing a large number of images, you can specify the maximum batch size in megabytes and set a delay to prevent the system from becoming overloaded. To do so, enable the developer mode and fill in the Max size per batch and the Delay after each batch fields in the Files to import section. By default, the delay meets the RPC/API call limit defined in the Odoo Cloud - Acceptable Use Policy.

Records meermaals importeren

Als een geïmporteerd bestand een van deze kolommen bevat: Externe ID of Database-ID, worden records die al eens zijn geïmporteerd gewijzigd in plaats van aangemaakt. Dit is zeer handig omdat je zo hetzelfde CSV-bestand meerdere keren kunt importeren als je tussen twee imports wijzigingen hebt aangebracht.

Odoo zorgt voor het aanmaken of wijzigen van elke record, afhankelijk van of deze nieuw is of niet.

Dankzij deze functie kan een bedrijf de Import/Export-tool in Odoo gebruiken om een batch records te wijzigen in een spreadsheetapplicatie.

Geen waarde voor een specifiek veld

If all fields are not set in the CSV file, Odoo assigns the default value for every non-defined field. But, if fields are set with empty values in the CSV file, Odoo sets the empty value in the field, instead of assigning the default value.

Verschillende tabellen exporteren/importeren van een SQL-applicatie naar Odoo

Als gegevens uit verschillende tabellen moeten worden geïmporteerd, moeten relaties tussen records uit verschillende tabellen duidelijk worden gemaakt. Als bijvoorbeeld bedrijven en personen worden geïmporteerd, moet de link tussen elke persoon en het bedrijf waarvoor ze werken opnieuw worden gemaakt.

Om relaties tussen tabellen te beheren, gebruik je de Externe ID-functionaliteit van Odoo. De Externe ID van een record is de unieke identificatie van dit record in een andere applicatie. De Externe ID moet uniek zijn voor alle records van alle objecten. Het is een goede gewoonte om deze Externe ID te voorzien van een voorvoegsel met de naam van de applicatie of tabel (zoals ‘company_1’, ‘person_1’ - in plaats van ‘1’).

Stel bijvoorbeeld dat er een SQL-database is met twee tabellen die geïmporteerd moeten worden: bedrijven en personen. Elke persoon hoort bij één bedrijf, dus de link tussen een persoon en het bedrijf waarvoor hij werkt, moet opnieuw worden gemaakt.

Test dit voorbeeld met een voorbeeld van een PostgreSQL-database.

Exporteer eerst alle bedrijven en hun Externe ID. Schrijf in PSQL het volgende commando:

> 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;

Dit SQL-commando maakt het volgende CSV-bestand aan:

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

Om het CSV-bestand te maken voor personen die gekoppeld zijn aan bedrijven, gebruik je het volgende SQL-commando in 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

Dat produceert het volgende CSV-bestand:

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

In dit bestand werken Fabien en Laurence voor het bedrijf Bigees (company_1) en werkt Eric voor het bedrijf Organi. De relatie tussen personen en bedrijven wordt gemaakt met behulp van de Externe ID van de bedrijven. De Externe ID heeft als voorvoegsel de naam van de tabel om een conflict van ID’s tussen personen en bedrijven te voorkomen (person_1 en company_1, die hetzelfde ID ‘1’ deelden in de oorspronkelijke database).

De twee geproduceerde bestanden zijn klaar om zonder wijzigingen in Odoo te worden geïmporteerd. Na het importeren van deze twee CSV-bestanden zijn er vier contacten en drie bedrijven (de eerste twee contacten zijn gekoppeld aan het eerste bedrijf). Vergeet niet om eerst de bedrijven te importeren en daarna de personen.

Gegevens bijwerken in Odoo

Bestaande gegevens kunnen in bulk worden bijgewerkt via een gegevensimport, zolang de Externe ID consistent blijft.

Gegevensexport voorbereiden

To update data through an import, first navigate to the data to be updated, and select the (list) icon to activate list view. On the far-left side of the list, tick the checkbox for any record to be updated. Then, click Actions, and select Export from the drop-down menu.

Vink in het resulterende pop-upvenster Gegevens exporteren het selectievakje Ik wil gegevens bijwerken (import-compatibele export) aan. Dit neemt automatisch de Externe ID op in de export. Bovendien beperkt het de lijst Te exporteren velden tot alleen velden die geïmporteerd kunnen worden.

Notitie

Het veld Externe ID verschijnt niet in de lijst Te exporteren velden, tenzij het handmatig wordt toegevoegd, maar het wordt wel opgenomen in de export. Als het selectievakje Ik wil gegevens bijwerken (import-compatibele export) echter is aangevinkt, wordt het opgenomen in de export.

Selecteer de vereiste velden die in de export moeten worden opgenomen met behulp van de opties in het pop-upvenster en klik vervolgens op Exporteren.

Bijgewerkte gegevens importeren

Na het exporteren kun je de nodige wijzigingen aanbrengen in het gegevensbestand. Wanneer het bestand klaar is, kan het worden geïmporteerd door hetzelfde proces te volgen als bij een normale gegevensimport.

Gevaar

Bij het bijwerken van gegevens is het uiterst belangrijk dat de Externe ID consistent blijft, omdat het systeem hiermee een record identificeert. Als een ID wordt gewijzigd of verwijderd, kan het systeem een dubbel record toevoegen in plaats van het bestaande bij te werken.