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 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 .
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.
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:
sumHet resultaat is de som van alle saldi van de gematchte boekingsregels.
sum_if_posHet resultaat is de som van alle saldi van de gematchte boekingsregels als dit bedrag positief is. Anders is het
0.sum_if_negHet resultaat is de som van alle saldi van de gematchte boekingsregels als dit bedrag negatief is. Anders is het
0.count_rowsHet 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.
‘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
21Example
21 + 10 - 521 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)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)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\()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)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)Je kunt ook rekenkundige expressies met labels gebruiken, eventueel in combinatie met prefixselecties.
Example
tag(my_module.my_tag) + tag(42) + 1010Achtervoegsels C en D kunnen op dezelfde manier worden gebruikt met labels.
Example
tag(my_module.my_tag)CPrefix-uitsluiting werkt ook met labels.
Example
tag(my_module.my_tag)\(10)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:
sumAls het resultaat de som moet zijn van alle externe waarden in de periode.
most_recentAls het resultaat de waarde moet zijn van de laatste externe waarde in de periode.
Daarnaast kunnen subformules op twee manieren worden gebruikt:
rounding=XAls je
Xvervangt door een getal, wordt het bedrag afgerond op X decimalen.editableGeeft 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‘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.
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 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 .Voer in het veld Subformule
basein om het onbelaste bedrag te rapporteren, oftaxom 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.
In dit scenario gebruikt je bedrijf geen btw-rubrieken. In plaats daarvan wordt alles strikt gevolgd via Grootboekrekeningen:
Selecteer Prefix van rekeningcodes als de berekeningsengine: Odoo gebruikt dit voor regels die financiële totalen moeten ophalen. In plaats van te zoeken naar transactielabels, haalt Odoo live saldi direct op uit je grootboekschema.
Typ in het veld Formule de begincijfers van de rekeningen die je wilt volgen (bv.
40haalt het gecombineerde totaal op van alle omzetrekeningen die beginnen met400000,401000, etc.).
Herhaal dit proces indien nodig. Klik vervolgens op Opslaan & sluiten.
Je kunt ook:
Selecteer Andere formules samenvoegen als de berekeningsengine. Odoo gebruikt dit om subtotalen, netto btw of eindtotalen te berekenen door je andere rapportregels op te tellen of af te trekken.
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.
In dit scenario vereist je bedrijf geavanceerde filtering, handmatige gebruikersaanpassingen of complexe algoritmische logica die standaard labels en rekeningprefixen niet aankunnen:
Selecteer Odoo-domein als de berekeningsengine: Odoo gebruikt dit om btw-labels volledig te omzeilen en onbewerkte dagboekregels (
account.move.line) te filteren met behulp van standaard Odoo-zoeksyntaxis.Typ in het veld Formule een geldig domein dat begint met vierkante haken om btw-vrijgestelde transacties voor specifieke relatiecategorieën te isoleren.
Je kunt ook:
Selecteer Externe waarde als de berekeningsengine. Odoo gebruikt dit om handmatige aanpassingen of historische overdrachtwaarden vast te leggen.
Typ in het veld Formule
sum(om alle handmatige waarden samen te voegen bij rapporten over meerdere perioden) ofmost_recent(om alleen de laatste waarde weer te geven).Typ in het veld Subformule
editableom een bewerkingspictogram weer te geven in het live rapport, zodat gebruikers de waarde handmatig kunnen wijzigen. Daarnaast kun je getallen afronden doorrounding=xte typen.
Je kunt ook:
Selecteer Aangepaste Python-functie als de berekeningsengine. Odoo gebruikt dit als uitvoeringsengine om specifieke berekeningen uit te voeren via backend-codering wanneer regels progressieve schijven, lussen of drempels met meerdere niveaus bevatten.
Typ in het veld Formule de exacte technische naam van de Python-methode die is gedefinieerd in je aangepaste lokalisatiemodule.
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))Btw-configuratie¶
Ga vervolgens naar 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
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 , 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 , 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.
Zie ook