Aangepaste rapporten

Odoo wordt geleverd met een krachtig en gebruiksvriendelijk rapportageframework. De engine stelt je in staat om 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.

Om een nieuw rapport te maken, open je de Boekhouding-app en navigeer je naar Configuratie ‣ Boekhoudkundige rapporten. Vanaf hier kun je een hoofdrapport 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 hoofdrapport aanmaakt, moet je er een menu-item voor aanmaken. Open hiervoor het rapport en klik op datzelfde rapport op het (Acties)-icoon en selecteer vervolgens Menu-item aanmaken. Ververs 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 hoofdrapport wordt geopend vanuit een van de hoofdmenu’s van de boekhoudingsapp, worden al zijn varianten weergegeven in de variantkiezer in de rechterbovenhoek van de weergave.

Example

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

Rapportregels

Nadat je een rapport hebt aangemaakt (root of variant), moet je het vullen met rapportregels. Je kunt een nieuwe aanmaken door te klikken op Voeg een regel toe, of een bestaande rapportregel wijzigen door erop te klikken. Alle rapportregels vereisen een Naam, en kunnen een optionele extra Code hebben (naar 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 aanmaken van een expressie moet je een Label toekennen dat gebruikt wordt om naar die expressie te verwijzen. Dit moet daarom uniek zijn onder de expressies van elke regel. Zowel een Rekenengine als een Formule moeten ook worden opgegeven. De engine bepaalt hoe je formule(s) en subformule(s) worden geïnterpreteerd. Het is mogelijk om expressies met verschillende rekenengines onder dezelfde regel te combineren als dat nodig is.

Notitie

Afhankelijk van de engine kunnen ook subformules vereist zijn.

‘Odoo Domain’-engine

Met deze engine 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 groepeerwaarde heeft, komt dit overeen met het aantal verschillende 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

‘Tax Tags’-engine

Een formule voor deze engine 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 tag_name is, matcht de engine belastinglabels +tag_name en -tag_name, en maakt ze aan indien nodig. Om dit verder te verduidelijken: twee labels worden gematcht door de formule. Als de formule A is, vereist (en maakt aan, indien nodig) het labels +A en -A.

‘Aggregate Other Formulas’-engine

Gebruik deze engine wanneer je rekenkundige bewerkingen moet uitvoeren op bedragen verkregen uit andere expressies. Formules bestaan hier uit verwijzingen naar expressies gescheiden door een van de vier basis 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.

cross_report(xml_id | rapport_id)

Wordt gebruikt om een expressie van een ander rapport te matchen dat wordt aangeduid door de xml_id of de rapport-ID zelf.

‘Prefix of Account Codes’-engine

Deze engine wordt gebruikt om bedragen te matchen die zijn gemaakt op rekeningen, waarbij de voorvoegsels van de codes van deze rekeningen worden gebruikt 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 de label met id 25 bevatten.

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

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.

‘External Value’-engine

De ‘external value’-engine wordt gebruikt om te verwijzen naar handmatige en voordrachtwaarden. 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 over 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.

Engine ‘Aangepaste Python-functie’

Deze engine is een middel voor ontwikkelaars om op basis van individuele gevallen aangepaste berekening 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 dictionary dat door deze functie wordt geretourneerd. Gebruik het 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.

Regels groeperen

Niet-standaard groepering is mogelijk door velden toe te voegen aan of te gebruiken die al bestaan in het model Boekingsregel, mits de velden gerelateerd en niet-opgeslagen zijn.

Notitie

Het groeperen van regels vereist dat het rapport expliciete rapportregels heeft die bewerkt kunnen worden. De uitgestelde rapporten ondersteunen bijvoorbeeld geen gegroepeerde regels omdat ze dynamische regels gebruiken die gegenereerd worden.

Maak een nieuw veld aan op boekingsregel

Om een niet-opgeslagen, gerelateerd veld aan te maken in het model Boekingsregel, ga je eerst naar Boekhouding ‣ Boekingsregels en klik je op het (bug) icoon, en vervolgens op Velden. Klik op Nieuw om een nieuw veld aan te maken en vul de volgende velden in:

  • Veldnaam: een technische naam voor het veld

  • Veldlabel: het label dat voor het veld weergegeven moet worden

  • Veldtype: het type veld waarnaar dit gerelateerde veld moet verwijzen

  • Opgeslagen: Laat dit veld niet aangevinkt, aangezien alleen niet-opgeslagen velden gebruikt kunnen worden om regels te groeperen.

  • Gerelateerd model: Als het veldtype one2many, many2many of many2one is, selecteer dan het model van het oorspronkelijke veld om op te groeperen.

  • Gerelateerde velddefinitie: het technische pad naar het veld waarop je wilt groeperen

    Example

    Om te groeperen op het verkoopteam van de commerciële partner, stel je de gerelateerde velddefinitie in op move_id.team_id.

Groepeer regels

Om regels te groeperen ga je naar het tabblad Regels van het gewenste rapport, klik je op de regel die je wilt groeperen en bewerk je het veld Groeperen op. Voer de technische naam (Veldnaam) in van het veld dat als groeperingssleutel moet worden gebruikt.

Tip

Om een lijst van alle velden van het model en hun technische namen te vinden, ga je naar Boekhouding ‣ Boekingsregels en klik je op het (bug) icoon, en vervolgens op Velden. De technische naam van elk veld wordt vermeld in de kolom Veldnaam.

Aangepaste btw-rapportconfiguratie

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 om deze secties te lezen voordat je een aangepast btw-rapport configureert.

Maak een aangepast btw-rapport door de app Boekhouding te openen, navigeer naar Configuratie ‣ Boekhoudkundige rapporten en klik vervolgens op Nieuw:

  • Voer een naam in voor je rapport.

  • Selecteer een Basisrapport.

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

Maak vervolgens een rapportregel door op Regel toevoegen te klikken. Zodra deze is gemaakt, klik je op die rapportregel om deze te configureren:

  • Klik opnieuw op Regel toevoegen 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 berekeningsengine. Odoo gebruikt dit veld om de rapportregel te koppelen aan je btw.

  • Typ in het veld Formule je korte rubriekeidentificatie (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 berekeningsengine. Odoo gebruikt dit veld om wiskunde uit te voeren op regels die al aanwezig zijn in het rapport in plaats van ruwe transacties te scannen.

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

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

Vul in het tabblad Opties van een expressie het veld Overdragen naar in met een formule om altijd saldi over te dragen of ze alleen over te dragen 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 te configureren voor je aangepaste btw-aangifte. Maak je Verkoop- en Inkoop-btw aan en vul de btw-rubrieken in voor alle btw met behulp van de aflettercode btw-rubrieken die je eerder hebt aangemaakt. Zorg er ten slotte voor dat je zowel een te betalen als een te vorderen btw-rekening opgeeft voor elke btw.

Example

Configuratie van btw-rubrieken.

Afsluiting

Om btw af te sluiten, moet voor elke btw die in je aangepaste btw-aangifte wordt gebruikt een btw-groep worden opgegeven. Open hiervoor de Boekhouding-app, navigeer naar Configuratie ‣ Btw, open een btw waarvoor een btw-groep vereist is, klik op het tabblad Geavanceerde opties en selecteer een groep in het veld Btw-groep. Klik zodra deze is toegewezen op het (pijl naar rechts)-icoon en stel zowel een Te betalen btw-rekening als een Te vorderen btw-rekening in.

Tip

  • Wanneer alles is ingesteld, zorg ervoor dat je je aangifte test door verkoopfacturen, leveranciersfacturen en creditnota’s aan te maken met de btw die specifiek is voor die aangifte. Test ten slotte de afsluiting zelf.

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