PDF-rapporten

Met Studio kun je bestaande pdf-rapporten bewerken (bv. verkoopfacturen, offertes, enz.) of nieuwe maken.

Standaard Template

De standaard lay-out van rapporten wordt buiten Studio beheerd. Ga naar Instellingen en klik in het gedeelte Bedrijven van de hoofdpagina op Documentlay-out configureren. Lay-outinstellingen zijn bedrijfsspecifiek, maar gelden voor alle rapporten.

Tip

Je kunt aan de rechterkant van het venster Configureer je documentlay-out in het rapportvoorbeeld zien hoe de verschillende instellingen de rapportlay-out beïnvloeden. Bij het maken of bewerken van een rapport kun je een voorbeeld van het rapport bekijken door aan de linkerkant van het scherm op Afdrukvoorbeeld te klikken.

Gebruik de volgende instellingen:

  • Lay-out: Er zijn zeven lay-outs beschikbaar:

    Light rapportlay-outvoorbeeld
  • Achtergrond: De volgende achtergronden zijn beschikbaar:

    • Leeg: Er wordt niets weergegeven.

    • Demologo: Een demologo wordt op de achtergrond weergegeven.

    • Aangepast: Upload een aangepaste achtergrondafbeelding.

  • Tekst: Er zijn acht lettertypen beschikbaar: Lato, Roboto, Open Sans, Montserrat, Oswald, Raleway, Tajawal (ondersteunt Arabische en Latijnse scripts) en Fira Mono. Ga naar de Google Fonts-website om een voorbeeld te bekijken.

  • Kleuren: Wijzig de primaire en secundaire kleuren die worden gebruikt om rapporten te structureren. De standaardkleuren worden automatisch gegenereerd op basis van de kleuren van het logo.

  • Adres: De bedrijfsnaam en het adres worden weergegeven in de header van externe rapporten. Je kunt meerdere regels tekst toevoegen.

  • Tagline: Dit wordt weergegeven in de header van externe rapporten bij gebruik van de lay-outs Light, Striped, Bubble, Wave en Folder en in de footer van externe rapporten bij gebruik van de lay-outs Boxed en Bold. Je kunt meerdere regels tekst toevoegen.

  • Papierformaat: Dit definieert het standaardpapierformaat van rapporten. Je kunt kiezen tussen A4 (21 cm x 29,7 cm) en US Letter (21,59 cm x 27,54 cm). Dit kan ook worden gedefinieerd voor individuele rapporten in het veld Papierformaat in Studio.

    Notitie

    Andere papierformaten kunnen beschikbaar zijn, afhankelijk van welke apps of modules je hebt geïnstalleerd, bv. labelbladen voor de Voorraad-app of eventbadges voor de Evenementen-app.

Nieuwe pdf-rapporten maken

Om een nieuw rapport voor een model te maken (bv. verkooporders), open je het model, klik je op de knop (Studio in-/uitschakelen) en klik je vervolgens op Rapporten. Klik op Nieuw en selecteer in het pop-upvenster dat verschijnt het type rapport. Dit wordt alleen gebruikt om te bepalen wat er in de header en footer wordt weergegeven:

Nadat je het rapport hebt gemaakt, kun je beginnen met het bewerken.

Pdf-rapporten bewerken

Om de beschikbare rapporten voor een model te openen, open je het model, klik je op de knop (Studio in-/uitschakelen) en klik je vervolgens op Rapporten. Selecteer een bestaand rapport om het te openen.

Je kunt ook Studio openen, op Rapporten klikken en zoeken naar een specifiek rapport of model.

Belangrijk

Het wordt sterk aanbevolen om het standaardrapport te dupliceren en wijzigingen aan te brengen in de gedupliceerde versie. Om een rapport te dupliceren, beweeg je de muisaanwijzer naar de rechterbovenhoek van het rapport, klik je op het icoon (verticale ellips) en selecteer je vervolgens Dupliceren.

Een pdf-rapport dupliceren

Opties

Nadat je een rapport hebt geselecteerd of gemaakt, kun je de opties in het linkergedeelte van het scherm gebruiken om:

  • De Rapportnaam te wijzigen: De nieuwe naam wordt overal toegepast (in Studio, in het menu Afdrukken onder het icoon (tandwiel) in de formulierweergave en in de naam van het pdf-bestand).

  • Het Papierformaat te wijzigen: Als geen waarde is geselecteerd, wordt het formaat gebruikt dat is gedefinieerd in de standaard lay-out.

  • Tonen in afdrukmenu: om het rapport toe te voegen aan het menu Afdrukken in de formulierweergave.

  • Opnieuw laden uit bijlage: om het rapport als bijlage op de record op te slaan wanneer het voor de eerste keer wordt gegenereerd en de originele versie van het rapport opnieuw te laden bij elke volgende keer. Dit is wettelijk verplicht voor verkoopfacturen en wordt vooral in dit geval gebruikt.

  • Zichtbaarheid beperken tot groepen: om de beschikbaarheid van het pdf-rapport te beperken tot specifieke gebruikersgroepen.

  • Bronnen bewerken: het rapport rechtstreeks in het XML-bestand aanpassen.

  • Rapport herstellen: alle wijzigingen aan het rapport annuleren en het herstellen naar de standaardversie.

  • Afdrukvoorbeeld: een rapportvoorbeeld genereren en downloaden.

Rapporteditor

De rapporteditor stelt je in staat om de inhoud en opmaak van het rapport aan te passen.

Tip

  • Je kunt wijzigingen Ongedaan maken of Opnieuw toepassen met de bijbehorende knoppen of de sneltoetsen CTRL + Z en CTRL + Y.

  • Wijzigingen worden automatisch opgeslagen wanneer je het rapport verlaat of handmatig met de knop Opslaan.

  • Je kunt het rapport herstellen naar de standaardversie door op de knop Rapport herstellen in het linkergedeelte van het scherm te klikken.

Belangrijk

De header en footer van een rapport aanpassen heeft invloed op alle standaard- en aangepaste rapporten.

Voorwaardelijke blokken

De gestippelde rechthoeken vertegenwoordigen voorwaardelijke blokken (if/else-instructies). Deze worden gebruikt om inhoud te tonen of te verbergen op basis van specifieke voorwaarden. Klik op het blok om de voorwaarden te bekijken.

Bekijk voorwaarden die op een blok zijn toegepast.

Selecteer een waarde om het bijbehorende resultaat te bekijken en indien nodig aan te passen.

Bekijk het resultaat van een andere voorwaarde.

Notitie

Voorwaarden kunnen alleen worden bewerkt in de XML.

Overige inhoud

Er zijn twee soorten tekstinhoud in rapporten:

  • Statische tekst, dus de tekst die niet blauw gemarkeerd is, die rechtstreeks in de editor kan worden aangepast.

  • Dynamische tekst, dus de tekst die blauw gemarkeerd is, die wordt vervangen door :doc:`veld </applications/studio/fields>`waarden wanneer het rapport wordt gegenereerd, bv. het verkoopordernummer of de offertedatum.

Je kunt inhoud (bv. velden, lijsten, tabellen, afbeeldingen, banners, enz.) aan het rapport toevoegen met commando’s. Typ / om de powerbox te openen, typ vervolgens de naam van het commando of selecteer het uit de lijst.

Typ de tekst waar je die wilt om statische tekst aan het rapport toe te voegen.

Voor geavanceerdere wijzigingen kun je het rapport rechtstreeks in de XML bewerken.

Een veld toevoegen

Typ / en selecteer de opdracht Veld om een veld toe te voegen. Selecteer of zoek het veld in de lijst die opent. Klik op de pijl naar rechts naast de veldnaam om indien nodig de lijst met gerelateerde velden te openen. Geef vervolgens de standaardwaarde op die wordt weergegeven als het veld niet is ingevuld in het record en druk op Enter.

Selecteer een gerelateerd veld.
Een tabel toevoegen of bewerken

Er zijn twee soorten tabellen in rapporten:

  • Statische tabellen, die worden gebruikt om statische tekst of velden weer te geven. Voor dit type tabel bepaal je het aantal kolommen en rijen bij het toevoegen van de tabel.

  • Dynamische tabellen, die worden gebruikt om gegevens uit relationele velden weer te geven. Voor dit type tabel bepaal je alleen het aantal kolommen bij het toevoegen van de tabel. Het aantal rijen in het gegenereerde rapport wordt bepaald door het aantal records in het gerelateerde model dat is gekoppeld aan het huidige model.

    Example

    In een verkooporderrapport wordt een dynamische tabel gebruikt om de orderregels te tonen die gerelateerd zijn aan de verkooporder. Als de verkooporder 10 orderregels bevat, heeft de tabel in het gegenereerde rapport 10 rijen. Als hij twee orderregels bevat, heeft de tabel twee rijen.

Een statische tabel toevoegen of bewerken

Typ / en selecteer de opdracht Tabel om een statische tabel toe te voegen. Bepaal het aantal kolommen en rijen voor de tabel. Zodra de tabel is toegevoegd, kun je beginnen met bewerken.

Je kunt kolommen en rijen invoegen, verplaatsen en verwijderen met de tabelgereedschappen. Plaats de cursor boven de kolom of links van de rij, klik op de paarse rechthoek en selecteer een optie.

Lijst met beschikbare opties voor het bewerken van de tabelstructuur.

Sleep de kolomrand naar de gewenste positie om een kolom te vergroten of verkleinen. Herstel alle kolommen naar hun standaardgrootte door Grootte herstellen te selecteren in de tabelgereedschappen.

Voeg het veld naar keuze toe in een cel of voeg statische tekst toe door te typen.

Tip

Je kunt kolommen gebruiken om tekst op een gestructureerde manier toe te voegen zonder een tabel te gebruiken. Voeg kolommen toe door / te typen en de juiste opdracht te selecteren: 2 kolommen, 3 kolommen of 4 kolommen.

Een dynamische tabel toevoegen of bewerken

Notitie

  • Alleen relaties van het type one2many of many2many kunnen worden weergegeven als dynamische tabellen.

  • Een bestaande dynamische tabel in een standaardrapport heeft een complexere structuur dan een dynamische tabel die je zelf toevoegt. Voor zulke tabellen is het mogelijk om kolommen in te voegen of te verwijderen. Het is niet mogelijk om kolommen te verplaatsen of om rijen in te voegen, te verplaatsen of te verwijderen.

Typ / en selecteer de opdracht Dynamische tabel om een dynamische tabel toe te voegen. Selecteer of zoek de relatie waarop de tabel wordt gebaseerd in de lijst die opent en druk op Enter. Zodra de tabel is toegevoegd, kun je beginnen met bewerken.

Je kunt kolommen invoegen, verplaatsen en verwijderen met de tabelhulpmiddelen, net als bij een statische tabel. Het is ook mogelijk om statische rijen in te voegen die boven of onder de gegenereerde rijen verschijnen.

Om een veld aan een cel toe te voegen, verwijder je eerst de placeholder-tekst en voeg je vervolgens het veld van je keuze toe. Het dialoogvenster dat verschijnt toont het bronobject voor het veld (bv. het model Orderregels) en de lijst met beschikbare velden.

Lijst met beschikbare velden voor het model verkooporderregels.

Vervang het label Column name door het label van je keuze.

Notitie

De standaardrij doorloopt automatisch de inhoud van het veld en genereert een rij in het rapport voor elke veldwaarde (bv. één rij per orderregel).

Opmaak

Om tekst in het rapport te formatteren, selecteer je deze en formatteer je deze met de opties in de teksteditor.

Formatteer tekst met de teksteditor.

De XML van het rapport bewerken

Waarschuwing

Het rechtstreeks wijzigen van de XML kan problemen met het rapport veroorzaken tijdens upgrades. Als dit gebeurt, kopieer je simpelweg je wijzigingen van de oude database naar je geüpgradede database.

Om de XML van het rapport te bewerken, klik je op Edit sources in het linkerpaneel.

Voorbeelden

Om te wijzigen hoe gegevens in je rapport worden weergegeven, kun je de standaard widget van een veld handmatig aanpassen. In onderstaand voorbeeld toont de orderdatum standaard de datum en tijd, terwijl de eenheidsprijs standaard een precisie van twee decimalen heeft.

<div class="oe_structure">
 <span t-field="doc.date_order"/>
 <span t-field="doc.price_unit"/>
</div>

Door t-options te gebruiken, in dit geval de widget-optie, kunnen deze velden worden aangepast om respectievelijk alleen de datum en een precisie van vier decimalen te tonen:

<div class="oe_structure">
 <span t-field="doc.date_order" t-options="{'widget': 'date'}"/>
 <span t-field="doc.price_unit" t-options="{'widget': 'float', 'precision': 4}"/>
</div>

Als je inhoud wilt tonen of verbergen op basis van specifieke voorwaarden, kun je handmatig if/else-besturingsstatements toevoegen aan de rapport-XML.

Als je bijvoorbeeld een aangepaste gegevenstabel wilt verbergen als er geen labels zijn, kun je het attribuut t-if gebruiken om de voorwaarde te definiëren, die vervolgens wordt geëvalueerd als True of False. De tabel wordt niet weergegeven als er geen labels in de offerte staan.

<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
    <!-- thead = table header, the row with column titles -->
    <thead>
        <!-- table row element -->
        <tr>
            <!-- table header element -->
            <th>ID</th>
            <th>Name</th>
        </tr>
    </thead>
    <!-- table body, the main content -->
    <tbody>
        <!-- we create a row for each subrecord with t-foreach -->
        <tr t-foreach="doc.tag_ids" t-as="tag">
            <!-- for each line, we output the name and price as table cells -->
            <td t-out="tag.id"/>
            <td t-out="tag.name"/>
        </tr>
    </tbody>
</table>

Als je een ander blok wilt weergeven wanneer de t-if-statement wordt geëvalueerd als False, kun je dit specificeren met de t-else-statement. Het t-else-blok moet direct volgen op het t-if-blok in de documentstructuur. Je hoeft geen voorwaarde op te geven in het t-else-attribuut. Laten we als voorbeeld een korte boodschap tonen die uitlegt dat er geen labels op de offerte staan:

<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
    <!-- thead = table header, the row with column titles -->
    <thead>
        <!-- table row element -->
        <tr>
            <!-- table header element -->
            <th>ID</th>
            <th>Name</th>
        </tr>
    </thead>
    <!-- table body, the main content -->
    <tbody>
        <!-- we create a row for each subrecord with t-foreach -->
        <tr t-foreach="doc.tag_ids" t-as="tag">
            <!-- for each line, we output the name and price as table cells -->
            <td t-out="tag.id"/>
            <td t-out="tag.name"/>
        </tr>
    </tbody>
</table>
<div class="text-muted" t-else="">No tag present on this document.</div>

Door de t-if/t-else-notatie te gebruiken, herkent de rapporteditor dat deze secties elkaar uitsluiten en als voorwaardelijke blokken moeten worden weergegeven:

Uitvoervoorbeeld als er labels zijn.

Je kunt voorwaarden wisselen met de editor om een voorbeeld van de uitvoer te bekijken:

Uitvoervoorbeeld als er geen labels zijn.

Als je meerdere opties wilt hebben, kun je ook t-elif-instructies gebruiken om tussenliggende voorwaarden toe te voegen. Dit is bijvoorbeeld hoe de titel van verkooporderrapporten verandert op basis van de status van het onderliggende document.

<h2 class="mt-4">
    <span t-if="env.context.get('proforma', False) or is_pro_forma">Pro-Forma Invoice # </span>
    <span t-elif="doc.state in ['draft','sent']">Quotation # </span>
    <span t-else="">Order # </span>
    <span t-field="doc.name">SO0000</span>
</h2>

De titel Pro-Forma Invoice wordt gebruikt afhankelijk van bepaalde contextuele voorwaarden. Als deze voorwaarden niet worden voldaan en de status van het document draft of sent is, dan wordt Quotation gebruikt. Als aan geen van deze voorwaarden wordt voldaan, is de titel van het rapport Order.

Werken met afbeeldingen in een rapport kan uitdagend zijn, omdat precieze controle over de grootte en het gedrag van afbeeldingen niet altijd voor de hand ligt. Je kunt afbeeldingsvelden invoegen met de rapporteditor (door het Veld-commando te gebruiken), maar het invoegen ervan in XML met de t-field-directive en bijbehorende t-options-attributen biedt betere controle over grootte en positionering.

De volgende code geeft bijvoorbeeld het veld image_128 van het product van de regel weer als een afbeelding van 64px breed (met een automatische hoogte op basis van de beeldverhouding van de afbeelding).

<span t-field="line.product_id.image_128" t-options-widget="image" t-options-width="64px"/>

De volgende opties zijn beschikbaar voor afbeeldingswidgets:

  • width: breedte van de afbeelding, meestal in pixels of CSS-lengte-eenheden (bv. rem) (laat leeg voor automatische breedte).

  • height: hoogte van de afbeelding, meestal in pixels of CSS-lengte-eenheden (bv. rem) (laat leeg voor automatische hoogte).

  • class: CSS-klassen die worden toegepast op de img-tag; Bootstrap-klassen zijn beschikbaar.

  • alt: alternatieve tekst van de afbeelding

  • style: style-attribuut; hiermee kun je stijlen vrijer overschrijven dan met Bootstrap-klassen.

Deze attributen moeten strings bevatten, d.w.z. tekst tussen aanhalingstekens binnen aanhalingstekens, bv. t-options-width="'64px'" (of, als alternatief, een geldige Python-expressie).

Notitie

De afbeeldingswidget kan niet worden gebruikt op een img-tag. Stel in plaats daarvan de t-field-directive in op een span-node (voor inline inhoud) of div-node (voor blokinhoud).

Voeg bijvoorbeeld een kolom toe met de productafbeelding in de offertetabel:

<table class="table table-sm o_main_table table-borderless mt-4">
    <thead style="display: table-row-group">
        <tr>
            <th>Image</th>
            <th name="th_description" class="text-start">Description</th>
            <th>Product Category</th>
            <th name="th_quantity" class="text-end">Quantity</th>
            <th name="th_priceunit" class="text-end">Unit Price</th>
[...]
        <t t-foreach="lines_to_report" t-as="line">
            <t t-set="current_subtotal" t-value="current_subtotal + line.price_subtotal"/>
            <tr t-att-class="'bg-200 fw-bold o_line_section' if line.display_type == 'line_section' else 'fst-italic o_line_note' if line.display_type == 'line_note' else ''">
                <t t-if="not line.display_type">
                   <td>
                       <span t-field="line.product_template_id.image_128"
                             t-options-widget="'image'"
                             t-options-width="'64px'"
                             t-options-class="'rounded-3 shadow img-thumbnail'"
                           />
                   </td>
                    <td name="td_name"><span t-field="line.name">Bacon Burger</span></td>
                    <td t-out="line.product_id.categ_id.display_name"/>

Het attribuut t-options-width beperkt de breedte van de afbeelding tot 64 pixels, en de Bootstrap-klassen die worden gebruikt in t-options-class creëren een miniatuurachtige rand met afgeronde hoeken en een schaduw.

Voeg een kolom toe met de productafbeelding in de offertetabel.