Gegevens exporteren en importeren

Gegevens exporteren uit Odoo

Wanneer je met een database werkt, is het soms nodig om je gegevens in een apart bestand te expoteren. Dit kan helpen bij het maken van rapportages over je activiteiten (zelfs als Odoo een nauwkeurige en eenvoudige rapportagetool biedt bij elke beschikbare applicatie).

Met Odoo kan je de waarden van elk veld in elk record exporteren. Activeer hiervoor de lijstweergave op de items die geëxporteerd moeten worden, klik op Actie en vervolgens op Exporteren.

weergave van de verschillende dingen die je moet inschakelen/waarop je moet klikken om gegevens te exporteren

Deze actie is vrij eenvoudig, maar heeft toch enkele bijzonderheden. Als je op Exporteren klike verschijnt er een pop-upvenster met verschillende opties voor de te exporteren gegevens:

weergave van alle opties waarmee je rekening moet houden bij het exporteren van gegevens in Odoo
  1. Als je de optie Ik wil gegevens bijwerken aanvinkt, toont het systeem alleen de velden die kunnen geïmporteerd worden. Dit is erg handig ald je bestaande records wilt bijwerken. In principe werkt dit als een filter. Als je het vakje niet aanvinkt, krijg je veel meer veldopties omdat alle velden worden getoond, niet alleen de velden die geïmporteerd kunnen worden.

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

  3. Dit zijn de items die je mogelijk wilt exporteren. Gebruik de pijltjes om meer subveldopties weer te geven. Natuurlijk kan je de zoekbalk gebruiken om specifieke velden gemakkelijker te vinden. Om de zoekoptie efficiënter te gebruiken, toon je alle velden door op alle pijltjes te klikken!

  4. De + knop is er om velden toe te voegen aan de “te exporteren” lijst.

  5. Met de “hendels” naast de geselecteerde velden kan je de velden omhoog en omlaag verplaatsen om de volgorde te veranderen waarin ze moeten worden weergegeven in het geëxporteerde bestand.

  6. De prullenbak is er als je velden moet verwijderen.

  7. Voor terugkerende rapporten kan het interessant zijn om exportvoorinstellingen op te slaan. Selecteer alle benodigde instellingen en klik op de sjabloonbalk. Klik dan op Nieuw sjabloon en geef de jouwe een naam. De volgende keer dat je dezelfde lijst moet exporteren, selecteer je gewoon de gerelateerde sjabloon.

Tip

Het is goed om de externe identificatiecode van het veld te onthouden. Gerelateerd bedrijf is bijvoorbeeld gelijk aan parent_id. Zo kan je alleen exporteren wat je vervolgens wilt importeren.

Gegevens importeren in Odoo

Hoe starten

U kunt gegevens importeren in elk Odoo’s business object met behulp van Excel (.xlsx) of CSV (.csv) bestanden: contactpersonen, producten, bankafschriften, journaalboekingen en zelfs bestellingen!

Open de weergave van het object dat je wilt vullen en klik op Favorieten ‣ Records importeren.

../../_images/import_button.png

Daar vindt u sjablonen die u gemakkelijk kunt invullen met uw eigen gegevens. Dergelijke sjablonen kunnen met één klik worden geïmporteerd; De data mapping is reeds gedaan.

Hoe de template wijzigen

  • Voeg kolommen toe, verwijder ze en soort ze zodat ze zo goed mogelijk bij uw datastructuur passen.

  • We adviseren u om het veld ID niet weg te halen (waarom ziet u in de volgende sectie).

  • Stel een unieke ID in voor elke record door de ID sequentie naar beneden te slepen.

../../_images/dragdown.gif
  • Wanneer u een nieuwe kolom toevoegt, kan Odoo het mogelijk niet automatisch toewijzen als het label in Odoo niet als een bestaand veld herkend wordt. Maar geen zorgen! U kunt nieuwe kolommen handmatig toewijzen wanneer u de import test. Zoek in de lijst naar het overeenkomstige veld.

    ../../_images/field_list.png

    Gebruik vervolgens dit veld zijn label in uw bestand om het de volgende keer direct te doen werken.

Hoe importeren vanuit een andere applicatie

Om relaties tussen verschillende records opnieuw te maken, moet je de unieke identificatiecode gebruiken van de originele applicatie en deze toewijzgen aan de ID (Externe ID) kolom in Odoo. Wanneer je een ander record importeert dat koppelt aan het eerste, gebruik XXX/ID (XXX/Externe ID) voor de originele unieke identificatiecode. Je kan dit record ook vinden aan de hand van de naam, maar dan kom je vast te zitten als minstens 2 records dezelfde naam hebben.

De ID wordt ook gebruikt om de originele import bij te werken als je later gewijzigde gegevens opnieuw moet importeren, het is dus een goede gewoonte om deze waar mogelijk op te geven.

Ik kan het veld niet vinden dat ik wens te koppelen aan mijn kolom

Odoo probeert dankzij heuristiek, gebaseerd op de eerste tien regels van de bestanden, het soort veld te vinden voor elke kolom in je bestand. Als je bijvoorbeeld een kolom hebt die alleen getallen bevat, zullen alleen de velden van het type Gehele getallen worden weergegeven om uit te kiezen. Hoewel dit gedrag in de meeste gevallen goed en gemakkelijk is, is het ook mogelijk dat het fout gaat of dat je je kolom wilt toewijzen aan een veld dat standaard niet wordt voorgesteld.

Wanneer dat gebeurt, dien je gewoon de Tonen van velden van relatie velden (geavanceerd) optie aan te vinken, vervolgens zal je de mogelijkheid hebben om te kiezen uit de complete lijst van velden voor iedere kolom.

../../_images/field_list.png

Waar kan ik het datum invoerformaat wijzigen?

Odoo kan automatisch detecteren of een kolom een datum is en zal proberen de datumnotatie te raden uit een set van meest gebruikte datumnotaties. Hoewel dit proces voor veel datumnotaties werkt, worden sommige datumnotaties niet herkend. Dit kan verwarring veroorzaken door dag-maand omkeringen; het is moeilijk om te raden welk deel van een datumnotatie de dag is en welk deel de maand is in een datum zoals ‘01-03-2016’.

Om te zien welke datumnotatie Odoo heeft gevonden uit je bestand, kan je de Datumnotatie controleren dat wordt getoond als je klikt op Opties onder de bestandsselector. Als deze notatie niet correct is kan je ze naar wens wijzigen met behulp van de ISO 8601 om de aanduiding te definiëren.

Notitie

Als je een Excel bestand (.xls, .xlsx) importeert, kan je datumcellen gebruiken om data op te slaan, omdat de weergave van data in Excel anders is dan de manier waarop ze worden opgeslagen. Op die manier weet je zeker dat de datumnotatie correct is in Odoo, ongeacht je lokale datumnotatie.

Kan ik nummers importeren met een valuta-teken (bvb.: $ 32,00)?

Ja, we ondersteunen getallen volledig met haakjes om een negatief teken weer te geven, evenals getallen waaraan het valutateken vast wordt geschreven. Odoo detecteert ook automatisch welke scheidingstekens je gebruikt voor honderdtallen en duizendtallen (je kan deze tekens veranderen in de opties). Als je een valutateken gebruikt dat Odoo niet herkend, kan het zijn dat het niet wordt herkend als een getal en het zal crashen.

Voorbeelden van ondersteunde cijfers (gebruikt 32000 als voorbeeld):

  • 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)

Wat kan ik doen als de tabel Importeervoorbeeld niet correct wordt weergegeven?

Standaard gebruikt het importvoorbeeld komma’s als veldscheidingstekens en aanhalingstekens als tekstscheidingstekens. Als je csv-bestand deze instellingen niet heeft, kan je de bestandsformaatopties aanpassen (weergegeven onder de balk Bladeren door CSV-bestand nadat je je bestand hebt geselecteerd).

Als uw CSV-bestand een tabellering heeft als scheidingsteken zal Odoo de scheidingen niet detecteren. U moet de bestandsindeling opties wijzigen in uw spreadsheet applicatie. Zie de volgende vraag.

Hoe kan ik het CSV bestandsformaat wijzigen wanneer ik deze bewaar in de spreadsheet applicatie?

Als je CSV-bestanden bewerkt en opslaat in spreadsheet-applicaties, worden de regionale instellingen van je computer toegepast voor de scheidingstekens. We raden je aan op OpenOffice of LibreOffice Calc te gebruiken, omdat je daarmee alle drie de opties kunt wijzigen (in het dialoogvenster ‘Opslaan als’ ‣ Klik het selectievakje ‘Filterinstellingen bewerken’ aan ‣ Opslaan).

Microsoft Excel laat je enkel toe de codering te wijzigen tijdens het opslaan (in het dialoogvenster ‘Opslaan als’ ‣ klik op de vervolgkeuzelijst ‘Tools’ ‣ tabblad Codering).

Wat is het verschil tussen Database ID en Extern ID?

Sommige velden definiëren een relatie met een ander object. Het land van een contactpersoon is bijvoorbeeld een link naar een record van het object ‘Land’. Als je zulke velden wilt importeren, moet Odoo de links tussen de verschillende records opnieuw maken. Om je te helpen zulke velden te importeren, biedt Odoo drie mechanismen. Je moet één mechanisme gebruiken per veld die je wilt importeren.

Bijvoorbeeld, om te verwijzen naar het land van een contactpersoon, stelt Odoo u 3 verschillende en importeerbare velden voor:

  • Land: de naam of code van het land

  • Land/Database ID: de unieke Odoo ID voor een record, bepaald door de kolom ID postgresql

  • Land/Externe ID: de ID van dit record waarnaar verwezen wordt in een andere applicatie (of het .XML bestand dat het geïmporteerd heeft)

Het land België kunt op één van deze drie manieren importeren:

  • Land: België

  • Land/Database ID: 21

  • Land/Externe ID: base.be

Afhankelijk van wat je nodig hebt, moet je één van deze 3 manieren gebruiken om naar records in relaties te verwijzen. Dit is waarom je de ene of de andere manier moet gebruiken, afhankelijk van wat je nodig hebt:

  • Gebruik land: Dit is de makkelijkste manier wanneer uw gegevens komen vanuit een CSV bestand dat handmatig is aangemaakt.

  • Gebruik Land/Database ID: Deze notatie wordt slechts zelden gebruikt. Het wordt meestal gebruikt door ontwikkelaars omdat het belangrijkste voordeel is dat er nooit conflicten zijn (je kan meerdere records hebben met dezelfde naam, maar ze hebben altijd een unieke Database ID)

  • Gebruik Land/Externe ID: Gebruik externe ID wanneer u data importeert vanuit een externe applicatie.

Als je Externe ID’s gebruikt, kan je CSV-bestanden importeren met de kolom “Externe ID” om de Externe ID van elke records die je importeert te definiëren. Vervolgens kan je naar deze record verwijzen met kolommen als “Veld/Externe ID”. De volgende twee CSV-bestanden geven je een voorbeeld voor Producten en hun Categorieën.

CSV-bestand voor categorieën.

CSV-bestand voor Producten.

Wat moet ik doen als ik verschillende matches heb voor een veld?

Als je bijvoorbeeld twee productcategorieën hebt met de onderliggende naam “Verkoopbaar” (ie. “Diverse Producten/Verkoopbaar” & “Andere Producten/Verkoopbaar”), wordt je validatie stopgezet, maar kan je nog steeds de gegevens importeren. We raden je echter aan om de gegevens niet te importeren omdat ze allemaal worden gekoppeld aan de eerste categorie ‘Verkoopbaar’ in de Productcategorielijst (“Diverse Producten/Verkoopbaar”). We raden je aan om de waarden van een van de duplicaten of de hiërarchie van je productcategorieën te aan te passen.

Maar als u de configuratie van de productcategorieën niet wilt wijzigen, raden wij u aan gebruik te maken van de externe ID voor dit veld ‘Categorie’.

Hoe kan ik een many2many relatieveld importeren (bijvoorbeeld een klant met meerdere labels)?

Labels moeten gescheiden worden door een komma zonder enige spatie. Bijvoorbeeld, als u een klant zowel het label ‘Fabrikant’ als ‘Retailer’ wil geven, dan moet u zowel ‘Fabrikant, Retailer’ in dezelfde kolom ingeven in uw CSV bestand.

CSV-bestand voor Fabrikant, Retailer

Hoe kan ik een one2many relatie importeren (bijvoorbeeld verkooporderlijnen op een verkooporder)?

Als je een verkooporder met meerdere orderregels wilt importeren, moet je voor elke orderregel een specifieke regel voorbehouden in het CSV-bestand. De eerste orderregel wordt geïmporteerd op dezelfde regel als de informatie op de order. Alle bijkomende regels hebben een extra regel nodig die geen informatie bevat over de velden op de order. Als voorbeeld is hier het bestand purchase.order_functional_error_line_cant_adpat.CSV met enkele offertes die je kan importeren, gebaseerd op demodata.

Bestand met enkele offertes.

Het volgende CSV bestand toont u hoe u aankooporders met hun respectievelijke aankooporderlijnen importeert:

Inkooporders met hun respectievelijke inkooporderregels.

Het volgende CSV bestand laat zien hoe klanten en de bijbehorende contactpersonen te importeren:

Klanten en hun respectievelijke contactpersonen.

Kan ik meerdere malen hetzelfde record importeren?

Als je een bestand importeert dat één van de kolommen “Externe ID” of “Database ID” bevat, worden records die reeds geïmporteerd zijn gewijzigd in plaats van aangemaakt. Dit is erg handig omdat je zo meerdere keren hetzelfde CSV-bestand kan importeren nadat je wijzigingen hebt aangebracht tussen de twee importen. Odoo zorgt ervoor dat nieuwe records worden aangemaakt en bestaande records worden gewijzigd.

Deze optie geeft u de mogelijkheid om de importeer en exporteer functie van Odoo te gebruiken voor het bewerken van een hele reeks record in uw favoriete spreadsheet applicatie.

Wat gebeurd er als ik geen waarde voor een specifiek veld ingeef?

Als u niet alle velden in uw CSV file een waarde geeft, zal Odoo de standaard waarde voor ieder niet-gedefinieerd veld gebruiken. Voor velden zonder waarde in de CSV file, zal Odoo het veld LEEG maken, in plaats van het veld de standaard waarde toe te kennen.

Hoe verschillende tabellen exporteren/importeren vanuit een SQL applicatie naar Odoo?

Als u gegevens moet importeren van verschillende tabellen, dient u de relaties tussen de records van de verschillende tabellen aan te maken. (bijv. als u bedrijven en personen importeert dient u de koppeling tussen ieder persoon en het bedrijf te maken.

Om de relaties tussen tabellen te beheren, kan je de “Externe ID” opties van Odoo gebruiken. De “Externe ID” van een record is de unieke identificatiecode van dit record in een andere applicatie. Deze “Externe ID” moet uniek zijn voor alle records van alle objecten, dus het is een goede gewoont om deze “Externe ID” vooraf te laten gaan door de naam van de applicatie of de tabel (zoals ‘bedrijf_1’, ‘persoon_1’ in plaats van ‘1’).

Stel bijvoorbeeld dat je een SQL database hebt met twee tabellen die je wilt importeren: bedrijven en personen. Elke persoon hoort bij één bedrijf, dus moet je de link tussen een persoon en het bedrijf waar hij/zij voor werkt opnieuw maken. (Als je dit voorbeeld wilt testen, is hier een dump van zo'n PostgreSQL database)

We zullen eerst alle bedrijven en hun “Externe ID” exporteren. In PSQL, schrijf 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;

Het SQL commando zal het volgende CSV-bestand aanmaken:

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

Om het CSV bestand aan te maken voor contacten, gekoppeld aan bedrijven, gebruiken we 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

Dit levert het volgende CSV-bestand op:

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

Zoals je kan zien in dit bestand, werken Fabien en Laurence voor het bedrijf Bigees (bedrijf_1) en Eric voor het bedrijf Organi. De relatie tussen de personen en de bedrijven wordt gelegd met behulp van de Externe ID van de bedrijven. We moesten de “Externe ID” vooraf laten gaan door de naam van de tabel om een ID-conflict te vermijden tussen personen en bedrijven (persoon_1 en bedrijf_1 die dezelfde ID 1 delen in de oorspronkelijke database).

De twee aangemaakte bestanden zijn gereed om te worden geïmporteerd in Odoo, zonder enige aanpassing. Na het importeren van deze twee CSV bestanden heeft u 4 contactpersonen en 3 bedrijven. (De eerste 2 contactpersonen zijn gekoppeld aan het eerste bedrijf). U dient eerst de bedrijven en dan de personen te importeren.

Hoe een importeer sjabloon te wijzigen

Importeer sjablonen zijn beschikbaar in de importeer tool voor de meest voorkomende data om te importeren (contacten, producten, bankafschriften, enz). U kan ze met eender welke spreadsheet software openen (Microsoft Office, OpenOffice, Google Drive, enz).

Hoe het bestand aanpassen

  • Verwijder kolommen die u niet nodig heeft. We raden u aan om het veld ID niet te verwijderen (zie hieronder waarom).

  • Stel een unieke ID in voor elke record door de ID sequentie naar beneden te slepen.

    ../../_images/dragdown.gif
  • Wanneer je een nieuwe kolom toevoegt, zou het kunnen dat Odoo niet in staat is om dit automatisch in kaart te brengen wanneer het label niet overeen komt met een veld in het systeem. Indien dat het geval is, zoek dan het overeenkomend veld door de zoekfunctie te gebruiken.

    ../../_images/field_list.png

    Gebruik vervolgens het label dat u gevonden heeft in uw importeer sjabloon zodat het direct werkt bij uw volgende importeer poging.

Waarom een “ID” kolom

De ID (“Externe ID”) is een unieke identificatiecode voor een regelitem. Gebruikt gerust de ID van je vorige software om de overgang naar Odoo gemakkelijker te maken.

Het instellen van een ID is niet verplicht bij invoer maar is in veel gevallen handig:

  • Update imports: U kan hetzelfde bestand meerdere keren importeren zonder duplicaten aan te maken;

  • Relatievelden importeren (zie hieronder).

Hoe relatievelden importeren

Een Odoo object is altijd gelinkt aan vele andere objecten (b.v. een product is gelinkt aan de product categorieën, attributen, leveranciers, etc.). Om deze relaties te importeren moet je de records van het gerelateerde object eerst importeren vanuit hun eigen lijst menu.

Je kan dit doen met behulp van de naam van het gerelateerde record of zijn ID. De ID wordt verwacht als twee records dezelfde naam hebben. Voeg in dat geval ” / ID” aan het einde van de kolomtitel (bijv. voor productattributen: Productattributen / Attribuut / ID).