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 . 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 .
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.
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:
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 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.
‘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
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 databestand, kan in plaats van het id een xmlid worden gebruikt.
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.‘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:
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=2Engine ‘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.
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 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 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 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 .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 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.
In dit scenario gebruikt je bedrijf geen btw-rubrieken. In plaats daarvan wordt alles strikt bijgehouden via grootboekrekeningen:
Selecteer Voorvoegsel van rekeningcodes als berekeningsengine: Odoo gebruikt dit voor regels die financiële totalen moeten ophalen. In plaats van te zoeken naar transactielabels, haalt Odoo live saldi rechtstreeks uit je grootboekschema op.
Typ in het veld Formule de begincijfers van de rekeningen die je wilt volgen (bv.
40haalt het gecombineerde totaal op van alle opbrengstrekeningen die beginnen met400000,401000, enz.).
Herhaal dit proces indien nodig. Klik vervolgens op Opslaan & Sluiten.
Je kunt ook:
Selecteer Andere formules samenvoegen als 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 basale algebra die verwijst naar je regelcodes (bv.
LINE_10 - LINE_20).
Herhaal dit proces indien nodig. Klik vervolgens op Opslaan & Sluiten.
In dit scenario heeft je bedrijf geavanceerde filtering, handmatige gebruikersoverschrijvingen of complexe algoritmische logica nodig die standaardlabels en rekeningvoorvoegsels niet aankunnen:
Selecteer Odoo Domain als berekeningsengine: Odoo gebruikt dit om btw-labels volledig te omzeilen en ruwe boekingsregels (
account.move.line) te filteren met behulp van standaard Odoo-zoeksyntaxis.Voer in het veld Formule een geldig domein in dat begint met vierkante haken om btw-vrijgestelde transacties voor specifieke partnercategorieën te isoleren.
Je kunt ook:
Selecteer Externe waarde als berekeningsengine. Odoo gebruikt dit om handmatige overschrijvingen of historische overdrachtwaarden te registreren.
Typ in het veld Formule ofwel
sum(om alle handmatige waarden samen te voegen over meervoudige perioderapporten) ofmost_recent(om alleen de laatste waarde weer te geven).Typ in het veld Subformule
editableom een bewerkingsicoon op het live rapport weer te geven, zodat gebruikers de waarde handmatig kunnen wijzigen. Daarnaast kun je getallen afronden doorrounding=xte typen.
Je kunt ook:
Selecteer Aangepaste Python-functie als 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 omvatten.
Voer in het veld Formule de exacte technische naam in van de Python-methode die is gedefinieerd in je aangepaste lokalisatiemodule.
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))Btw-configuratie¶
Ga vervolgens naar 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
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 , 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 , selecteer de btw en klik op het (instellingen aanpassen)-icoon. Vink daar het vakje Btw-afsluiting aan om de zichtbaarheid aan te passen.
Zie ook