Aangepaste rapporten

Odoo komt met een krachtig en gebruiksvriendelijk rapportageframework. De engine stelt je in staat nieuwe rapporten te maken, zoals btw-rapporten, of balansen en resultatenrekeningen met specifieke groeperingen en lay-outs.

Belangrijk

Activeer de ontwikkelaarsmodus om toegang te krijgen tot de interface voor het maken van boekhoudkundige rapporten.

Open de Boekhouding-app en navigeer naar Configuratie ‣ Boekhoudkundige rapporten om een nieuw rapport aan te maken. Vanaf hier kun je een basisrapport of een variant aanmaken.

Basisrapporten

Basisrapporten kunnen worden beschouwd als generieke, neutrale boekhoudkundige rapporten. Ze dienen als modellen waarop lokale boekhoudkundige versies zijn gebaseerd. Als een rapport geen basisrapport heeft, wordt het zelf als basisrapport beschouwd.

Example

Een btw-rapport voor België en de VS zou beide dezelfde generieke versie als basis gebruiken en deze aanpassen aan hun binnenlandse regelgeving.

Wanneer je een nieuw basisrapport aanmaakt, moet je er een menu-item voor aanmaken. Open het rapport en klik op hetzelfde rapport op het (Acties)-icoon en selecteer vervolgens Menu-item aanmaken. Vernieuw de pagina; het rapport is nu beschikbaar onder Boekhouding ‣ Rapportage.

Notitie

Gevallen waarin je een nieuw basisrapport moet maken zijn zeldzaam, zoals wanneer de belastingautoriteiten van een land een nieuw en specifiek type rapport vereisen.

Varianten

Varianten zijn landspecifieke versies van basisrapporten en verwijzen daarom altijd naar een basisrapport. Om een variant te maken, selecteer je een generiek (basis)rapport in het veld Basisrapport bij het aanmaken van een nieuw rapport.

Wanneer een basisrapport wordt geopend vanuit een van de hoofdmenu’s van de boekhouding-app, worden al zijn varianten weergegeven in de variantkiezer rechtsboven in de weergave.

Example

In de volgende afbeelding is Btw-rapport (BE) de variant van het basis Generiek belastingrapport.

Rapportregels

Nadat je een rapport hebt aangemaakt (basisrapport of variant), moet je het vullen met rapportregels. Je kunt een nieuwe aanmaken door op Voeg een regel toe te klikken, of een bestaande rapportregel wijzigen door erop te klikken. Alle rapportregels vereisen een Naam, en kunnen een optionele extra Code hebben (naar jouw keuze) als je hun waarde in formules wilt gebruiken.

Regelengine-opties.

Uitdrukkingen

Elke rapportregel kan een of meerdere expressies bevatten. Expressies kunnen worden gezien als subvariabelen die nodig zijn voor een rapportregel. Klik op Voeg een regel toe binnen een rapportregel om een expressie aan te maken.

Bij het maken van een expressie moet je een Label toekennen die wordt gebruikt om naar die expressie te verwijzen. Dit label moet daarom uniek zijn binnen de expressies van elke regel. Ook een Berekeningsmotor en een Formule moeten worden aangegeven. De motor bepaalt hoe je formule(s) en subformule(s) worden geïnterpreteerd. Het is mogelijk om onder dezelfde regel expressies te combineren die verschillende berekeningsmotor gebruiken als dat nodig is.

Notitie

Afhankelijk van de engine kunnen ook subformules vereist zijn.

‘Odoo-domein’ motor

Met deze motor wordt een formule geïnterpreteerd als een Odoo-domein gericht op account.move.line objecten.

Met de subformule kun je definiëren hoe de boekingsregels die overeenkomen met het domein worden gebruikt om de waarde van de expressie te berekenen:

sum

Het resultaat is de som van alle saldi van de gematchte boekingsregels.

sum_if_pos

Het resultaat is de som van alle saldi van de gematchte boekingsregels als dit bedrag positief is. Anders is het 0.

sum_if_neg

Het resultaat is de som van alle saldi van de gematchte boekingsregels als dit bedrag negatief is. Anders is het 0.

count_rows

Het resultaat is het aantal subregels van deze expressie. Als de rapportregel een groepeer-op-waarde heeft, komt dit overeen met het aantal unieke groeperingssleutels in de overeenkomende boekingsregels. Anders is het het aantal overeenkomende boekingsregels.

Je kunt ook een - teken aan het begin van de subformule plaatsen om het teken van het resultaat om te keren.

Expressieregel binnen een regelrapport

‘Belastinglabels’ motor

Een formule voor deze motor bestaat uit een naam die wordt gebruikt om belastinglabels te matchen. Als dergelijke labels niet bestaan bij het aanmaken van de expressie, worden ze aangemaakt.

Bij het evalueren van de expressie kan de berekening grofweg worden uitgedrukt als: (bedrag van de boekingsregels met + label) - (bedrag van de boekingsregels met - label).

Example

Als de formule label_naam is, matcht de motor belastinglabels +label_naam en -label_naam, en maakt ze indien nodig aan. Om het verder te verduidelijken: twee labels worden gematcht door de formule. Als de formule A is, vereist (en maakt indien nodig aan) het labels +A en -A.

‘Aggregeer andere formules’ motor

Gebruik deze motor wanneer je rekenkundige bewerkingen moet uitvoeren op de bedragen die zijn verkregen voor andere expressies. Formules bestaan hier uit verwijzingen naar expressies gescheiden door een van de vier elementaire rekenkundige operatoren (optellen +, aftrekken -, delen / en vermenigvuldigen *). Om naar een expressie te verwijzen, typ je de code van de rapportregel gevolgd door een punt . en het label van de expressie (bijv. code.label).

Subformules kunnen een van de volgende zijn:

if_above(CUR(bedrag))

De waarde van de rekenkundige expressie wordt alleen geretourneerd als deze groter is dan de opgegeven grens. Anders is het resultaat 0.

if_below(CUR(bedrag))

De waarde van de rekenkundige expressie wordt alleen geretourneerd als deze lager is dan de opgegeven grens. Anders is het resultaat 0.

if_between(CUR1(bedrag1), CUR2(bedrag2))

De waarde van de rekenkundige expressie wordt alleen geretourneerd als deze strikt tussen de opgegeven grenzen ligt. Anders wordt deze teruggebracht naar de dichtstbijzijnde grens.

if_other_expr_above(REGELCODE.EXPRESSIELABEL, CUR(bedrag))

De waarde van de rekenkundige expressie wordt alleen geretourneerd als de waarde van de expressie aangegeven door de opgegeven regelcode en expressielabel groter is dan de opgegeven grens. Anders is het resultaat 0.

if_other_expr_below(REGELCODE.EXPRESSIELABEL, CUR(bedrag))

De waarde van de rekenkundige expressie wordt alleen geretourneerd als de waarde van de expressie aangegeven door de opgegeven regelcode en expressielabel lager is dan de opgegeven grens. Anders is het resultaat 0.

CUR is de valutacode in hoofdletters, en bedrag is het bedrag van de grens uitgedrukt in die valuta.

Je kunt ook de subformule cross_report gebruiken om een uitdrukking te vinden die in een ander rapport voorkomt.

‘Prefix van rekeningcodes’ motor

Deze motor wordt gebruikt om bedragen te matchen die zijn gemaakt op rekeningen door de prefixen van deze rekeningcodes te gebruiken als variabelen in een rekenkundige expressie.

Example

21
Rekenkundige expressies kunnen ook een enkel voorvoegsel zijn, zoals hier.

Example

21 + 10 - 5
Deze formule telt de saldi op van de boekingsregels gemaakt op rekeningen waarvan de codes beginnen met 21 en 10, en trekt het saldo af van die op rekeningen met het voorvoegsel 5.

Het is ook mogelijk om een selectie van subvoorvoegsels te negeren.

Example

21 + 10\(101, 102) - 5\(57)
Deze formule werkt op dezelfde manier als het vorige voorbeeld, maar negeert de voorvoegsels 101, 102 en 57.

Je kunt ‘subfiltering’ toepassen op credits en debets met behulp van de C- en D-achtervoegsels. In dit geval wordt een rekening alleen beschouwd als het voorvoegsel overeenkomt, en als het totale saldo van de boekingsregels gemaakt op deze rekening credit/debet is.

Example

Rekening 210001 heeft een saldo van -42 en rekening 210002 heeft een saldo van 25. De formule 21D komt alleen overeen met rekening 210002 en geeft daarom 25 terug. 210001 komt niet overeen, omdat het saldo credit is.

Prefix-uitsluitingen kunnen worden gecombineerd met de achtervoegsels C en D.

Example

21D + 10\(101, 102)C - 5\(57)
Deze formule telt de saldi op van de boekingsregels op rekeningen waarvan de code begint met 21 als het debet (D) is en 10 als het credit (C) is, maar negeert de prefixen 101, 102, en trekt het saldo af van rekeningen met het prefix 5, waarbij prefix 57 wordt genegeerd.

Om de letter C of D in een prefix te matchen en niet als achtervoegsel te gebruiken, gebruik je een lege uitsluiting ().

Example

21D\()
Deze formule komt overeen met rekeningen waarvan de code begint met 21D, ongeacht het teken van hun saldo.

Naast het gebruik van codeprefixen om rekeningen op te nemen, kun je ze ook matchen met rekeninglabels. Dit is bijvoorbeeld vooral handig als je land geen gestandaardiseerd grootboekschema heeft, waarbij hetzelfde prefix voor verschillende doeleinden kan worden gebruikt bij verschillende bedrijven.

Example

tag(25)
Deze formule matcht rekeningen waarvan de gekoppelde labels degene bevatten met id 25.

Als het label waarnaar je verwijst is gedefinieerd in een gegevensbestand, kan een xmlid worden gebruikt in plaats van het id.

Example

tag(my_module.my_tag)
Deze formule komt overeen met rekeningen waarvan de gekoppelde labels het label aangeduid met my_module.my_tag bevatten.

Je kunt ook rekenkundige expressies met labels gebruiken, eventueel in combinatie met prefixselecties.

Example

tag(my_module.my_tag) + tag(42) + 10
De saldi van rekeningen gelabeld als my_module.my_tag worden opgeteld bij die van rekeningen gekoppeld aan het label met ID 42 en rekeningen met het codeprefix 10

Achtervoegsels C en D kunnen op dezelfde manier worden gebruikt met labels.

Example

tag(my_module.my_tag)C
Deze formule komt overeen met rekeningen met het label my_module.my_tag en een creditsaldo.

Prefix-uitsluiting werkt ook met labels.

Example

tag(my_module.my_tag)\(10)
Deze formule komt overeen met rekeningen met het label my_module.my_tag en een code die niet begint met 10.

‘Externe waarde’ motor

De ‘externe waarde’ motor wordt gebruikt om te verwijzen naar handmatige en overdrachtswaarden. Deze waarden worden niet opgeslagen met account.move.line, maar met account.report.external.value. Elk van deze objecten wijst direct naar de expressie die het beïnvloedt, dus er hoeft hier heel weinig te worden gedaan aan hun selectie.

Formules kunnen een van de volgende zijn:

sum

Als het resultaat de som moet zijn van alle externe waarden in de periode.

most_recent

Als het resultaat de waarde moet zijn van de laatste externe waarde in de periode.

Daarnaast kunnen subformules op twee manieren worden gebruikt:

rounding=X

Als je X vervangt door een getal, wordt het bedrag afgerond op X decimalen.

editable

Geeft aan dat deze expressie handmatig kan worden bewerkt, wat de weergave van een icoon in het rapport triggert, waarmee de gebruiker deze actie kan uitvoeren.

Notitie

Handmatige waarden worden aangemaakt op de date_to die momenteel in het rapport is geselecteerd.

Beide subformules kunnen worden gecombineerd door ze te scheiden met een ;.

Example

editable;rounding=2
is een correcte subformule die beide gedragingen combineert.

‘Aangepaste Python-functie’ motor

Deze motor is een middel voor ontwikkelaars om op individuele basis aangepaste berekeningen van expressies te introduceren. De formule is de naam van een python-functie om aan te roepen, en de subformule is een sleutel om op te halen in het woordenboek dat door deze functie wordt geretourneerd. Gebruik dit alleen als je je eigen aangepaste module maakt.

Kolommen

Rapporten kunnen een onbepaald aantal kolommen hebben om weer te geven. Elke kolom haalt zijn waarden uit de expressies die op de regels zijn gedeclareerd. Het veld expression_label van de kolom geeft het label van de expressies waarvan de waarde wordt weergegeven. Als een regel geen expressie in dat veld heeft, wordt er niets voor weergegeven in deze kolom. Als meerdere kolommen vereist zijn, moet je verschillende expressie-labels gebruiken.

Kolommen van het rapport.

Bij gebruik van de functie perioden vergelijken onder het tabblad Opties van een boekhoudrapport worden alle kolommen herhaald in en voor elke periode.

Aangepaste btw-rapportage instellen

Rapportconfiguratie

Tip

Alle technische termen en functies van de rapportage-engine van Odoo worden uitgelegd in de vorige secties van deze pagina. We raden sterk aan deze secties te lezen voordat je een aangepaste btw-rapportage instelt.

Open de Boekhouding-app om een aangepaste btw-rapportage te maken, navigeer naar Configuratie ‣ Boekhoudkundige rapporten en klik op Nieuw:

  • Voer een naam in voor je rapport.

  • Selecteer een hoofdrapport.

  • Selecteer onder het veld Beschikbaarheid de optie Land komt overeen en selecteer vervolgens het land dat overeenkomt met je bedrijf.

Maak vervolgens een rapportregel aan door te klikken op Voeg een regel toe. Klik na het aanmaken op die rapportregel om deze te configureren:

  • Klik opnieuw op Voeg een regel toe om een expressie te maken en geef deze een naam.

  • Selecteer in het tabblad Definitie een berekeningsengine voor die expressie, afhankelijk van de volgende scenario’s:

In dit scenario gebruikt je bedrijf btw-rubrieken:

  • Selecteer btw-labels als de berekeningsengine. Odoo gebruikt dit veld om de rapportregel te koppelen aan je btw.

  • Typ in het veld Formule je korte rubriekidentificatie (bv. vat_sales_base). Odoo genereert automatisch de +- en --varianten van dit label, zodat je deze kunt koppelen in Configuratie ‣ btw.

  • Voer in het veld Subformule base in om het onbelaste bedrag te rapporteren, of tax om het werkelijke geïnde/betaalde btw-bedrag te rapporteren.

Herhaal dit proces indien nodig. Klik vervolgens op Opslaan & sluiten.

Je kunt ook:

  • Selecteer Andere formules samenvoegen als de berekeningsengine. Odoo gebruikt dit veld om berekeningen uit te voeren op regels die al aanwezig zijn in het rapport in plaats van ruwe transacties te scannen.

  • Gebruik in het veld Formule eenvoudige algebra die verwijst naar je regelcodes (bv. LINE_10 - LINE_20).

Herhaal dit proces indien nodig. Klik vervolgens op Opslaan & sluiten.

Vul op het tabblad Opties van een Expressie het veld Overdragen naar in met een formule om saldi altijd over te dragen of alleen wanneer het bedrag negatief is. Laat dit veld leeg als je deze functie niet wilt gebruiken.

Example

if_below(EUR(0))
Deze formule draagt alleen bedragen onder 0,00 EUR over.

Btw-configuratie

Ga vervolgens naar Configuratie ‣ Btw en klik op Nieuw om nieuwe btw-tarieven voor je aangepaste btw-rapport te maken en configureren. Maak je Verkoop- en **Inkoop**btw aan en vul de Btw-rubrieken in voor alle btw-tarieven met behulp van de bijpassende btw-rubrieken die je eerder hebt gemaakt. Zorg er ten slotte voor dat je voor elk btw-tarief zowel een te betalen als een te ontvangen btw-rekening opgeeft.

Example

Configuratie van btw-rubrieken.

Afsluiting

Om btw af te sluiten, moet een btw-groep opgegeven worden voor elke btw die in je aangepaste btw-aangifte gebruikt wordt. Open hiervoor de app Boekhouding, ga naar Configuratie ‣ BTW, open een btw die een btw-groep vereist, klik op het tabblad Geavanceerde Opties en selecteer een groep in het veld BTW-groep. Zodra toegewezen, klik je op het (pijl naar rechts) icoon en stel je zowel een Te Betalen BTW-rekening als een Te Ontvangen BTW-rekening in.

Tip

  • Controleer wanneer alles ingesteld is je aangifte door verkoopfacturen, leveranciersfacturen en creditnota’s aan te maken met de btw specifiek voor die aangifte. Test ten slotte de afsluitboeking zelf.

  • Als je een specifieke rekening wilt verbergen in de btw-afsluitboeking, ga je naar Configuratie ‣ BTW, selecteer je de btw en klik je op het (instellingen aanpassen) icoon. Vink daar het vakje BTW-afsluitboeking aan om de zichtbaarheid aan te passen.