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 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:
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.
Bedrijfslogo: Klik op de knop Bewerken om het logo te uploaden of te wijzigen. Dit voegt het logo toe aan het bedrijfsrecord in het Company-model, dat je kunt openen via en vervolgens klikken op Info bijwerken in het gedeelte Bedrijven.
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.
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+ZenCTRL+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.
Selecteer een waarde om het bijbehorende resultaat te bekijken en indien nodig aan te passen.
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.
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.
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
one2manyofmany2manykunnen 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.
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.
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:
Je kunt voorwaarden wisselen met de editor om een voorbeeld van de uitvoer te bekijken:
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 deimg-tag; Bootstrap-klassen zijn beschikbaar.alt: alternatieve tekst van de afbeeldingstyle: 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.