DE · AT · CHAnleitung

PDF-Berichte und Vorlagen in Odoo anpassen

Aktualisiert:

Gilt für: Odoo 20.0; Community im Eigenbetrieb, Enterprise auf Odoo Online, Odoo.sh oder im Eigenbetrieb; Studio nur Enterprise; eigene QWeb-Module nicht auf Odoo Online

Kurz gesagt

Rechnungs- und Angebotslayouts ändern Sie in Odoo 20.0 auf drei Ebenen: Kopf, Fuß und Papierformat im Dialog Dokumentlayout konfigurieren, den Inhalt des einzelnen Berichts im Berichtseditor von Odoo Studio, größere Anpassungen über eine QWeb-Vorlage in einem eigenen Modul. Studio gehört zur Enterprise-Edition; ein eigenes Modul lässt sich nur auf Odoo.sh und auf einer eigenen Installation betreiben, nicht auf Odoo Online.

Das Wichtigste

  • Kopf, Fuß, Logo, Farben, Schrift und Vorgabe-Papierformat stehen im Dokumentlayout je Unternehmen.
  • Den Inhalt eines Berichts ändert der Berichtseditor von Studio; Studio gehört zur Enterprise-Edition.
  • Den Standardbericht duplizieren Sie zuerst, statt die Standardfassung selbst zu ändern.
  • Ein Papierformat am einzelnen Bericht schlägt die Vorgabe aus dem Dokumentlayout.
  • Eine QWeb-Vorlage erben Sie mit inherit_id und xpath in einem eigenen Modul; auf Odoo Online ist das nicht möglich.
  • Ein einmal erzeugter Bericht kann als Anhang gespeichert und danach erneut geladen werden.

Ein geändertes Rechnungs- oder Angebotslayout trifft alle Dokumente des Unternehmens oder nur einen Bericht; in Odoo 20.0 entscheidet das die Ebene, auf der Sie ändern. Version 20 hat Odoo im September 2026 veröffentlicht; der Artikel führt beide Wege durch und nennt nach jedem Schritt den sichtbaren Endzustand.

Was Sie vorab brauchen

  • Ein Odoo-20.0-System; die Angaben wurden am 14. Oktober 2026 in der deutschsprachigen Dokumentation 20.0 gelesen.
  • Für den Weg ohne Code ein Konto mit Zugriff auf die Einstellungen. Studio gehört zur Enterprise-Edition; was es umfasst, ordnet der Studio-Überblick.
  • Für den Weg mit Code ein eigenes Modul (Repository oder Dateisystem) und XML-Kenntnisse.
  • Den Entwicklermodus für die App-Liste: Einstellungen ‣ Entwicklertools ‣ Entwicklermodus aktivieren; die App Apps verlangt Rechte der Systemverwaltung.
  • Eine Kopie der Datenbank für den Test, siehe Testumgebung.

Drei Ebenen: Dokumentlayout, Bericht, Papierformat

Diese Ebenen sind Funktionen der Datenbank; nationale Gestaltung kommt über Lokalisierungsmodule hinzu, für Deutschland etwa das DIN-5008-Layout (Modul l10n_din5008).

Ebene Was sie festlegt Wo Sie sie ändern
Dokumentlayout, je Unternehmen Kopf und Fuß, Logo, Farben, Schrift, Firmenanschrift, Slogan, Vorgabe-Papierformat Einstellungen ‣ Unternehmen ‣ Dokumentlayout konfigurieren
Bericht, je Modell Inhalt der Vorlage, Papierformat des Berichts, Name, Sichtbarkeit im Druckmenü Berichtseditor in Studio oder eine QWeb-Vorlage im eigenen Modul
Papierformat, Datensatz Blattgröße, Ausrichtung, Ränder, Auflösung Feld am Bericht, mit Code als Datensatz report.paperformat

Ohne Code: Dokumentlayout und Berichtseditor

Schritt 1: Dokumentlayout einstellen

Öffnen Sie Einstellungen ‣ Abschnitt Unternehmen ‣ Dokumentlayout konfigurieren (Configure Document Layout). Die Einstellungen gelten je Unternehmen und für alle Berichte dieses Unternehmens. Zur Auswahl stehen sieben Layouts (Light, Boxed, Bold, Striped, Bubble, Wave, Folder), drei Hintergründe, acht Schriften, Logo, Primär- und Sekundärfarbe, Firmenanschrift im Kopf, Slogan und Fußzeilentext. Papierformat: A4 (21 cm × 29,7 cm) oder US Letter; weitere Formate können aus installierten Apps kommen, etwa Etikettenbögen. Den Dialog bringt das Modul web des öffentlichen Community-Repositorys mit; er hängt nicht an Studio.

Ergebnis: Die Vorschau im Dialog zeigt Kopf, Fuß, Logo, Anschrift und Farben; jeder neu erzeugte Bericht übernimmt diese Vorgaben. Das Vorgabe-Papierformat gilt nur, solange am Bericht kein eigenes Papierformat gesetzt ist (paperformat_id); sonst druckt der Bericht im eigenen Format (Schritt 4 und Schritt 7).

Schritt 2: Bericht in Studio öffnen und duplizieren

Öffnen Sie die App und ein Dokument, etwa ein Angebot im Verkauf, und klicken Sie oben rechts auf Studio umschalten (Toggle Studio); links wählen Sie Berichte. Alternativ öffnen Sie Studio und suchen dort nach Bericht oder Modell. Fahren Sie über die obere rechte Ecke des Standardberichts und wählen Sie über das Symbol mit den drei Punkten Duplizieren (Duplicate); die Dokumentation empfiehlt das ausdrücklich. Über Neu legen Sie einen weiteren Bericht an und wählen Extern, Intern oder Leer; die Art bestimmt, was in Kopf- und Fußzeile erscheint.

Ergebnis: Neben dem Standardbericht steht Ihre Kopie; die Standardfassung bleibt unberührt und ließe sich über Bericht zurücksetzen (Reset report) wiederherstellen.

Schritt 3: Inhalt ändern und Vorschau prüfen

Statischer Text steht nicht in Blau und wird direkt getippt; dynamischer Text ist blau und wird bei der Erzeugung durch Feldwerte ersetzt. Ein Schrägstrich öffnet die Powerbox mit den Befehlen, darunter Feld (setzt ein Feld ein und fragt nach einem Standardwert für leere Datensätze), Tabelle, Dynamische Tabelle (aus einer one2many- oder many2many-Beziehung) und Spaltenbefehle für 2, 3 oder 4 Spalten. Gestrichelte Rechtecke sind bedingte Blöcke, also if/else-Anweisungen; die Bedingung ändern Sie laut Dokumentation nur in den XML-Quellen. Der Editor speichert beim Verlassen oder über Speichern, Vorschau drucken (Print preview) erzeugt ein PDF.

Ergebnis: Das Vorschaupdf zeigt den Text an der Stelle, an die Sie ihn gesetzt haben; bedingte Blöcke blenden Abschnitte abhängig von den Daten aus.

Schritt 4: Bericht bereitstellen

Die Optionen am linken Rand steuern die Veröffentlichung: Berichtname (gilt in Studio, im Menü Drucken unter dem Zahnrad-Symbol und im Dateinamen des PDF), Papierformat (ohne Eintrag gilt das Format aus dem Standardlayout), Im Druckmenü anzeigen, Sichtbarkeit auf Gruppen beschränken, Erneut aus Anhang laden, Quellen bearbeiten (XML) und Bericht zurücksetzen. Änderungen an Kopf oder Fuß im Berichtseditor betreffen laut Dokumentation alle Standard- und eigenen Berichte des Unternehmens.

Ergebnis: Der Bericht erscheint am Datensatz unter dem Zahnrad-Symbol im Menü Drucken. Für den Fensterumschlag kommt die Position der Empfängeranschrift hinzu; diese Werte behandelt der Artikel zum Angebotsdruck in DIN 5008.

Mit Code: eigenes Modul mit QWeb-Vorlage

Die folgenden Schritte brauchen Zugriff auf den Quellcode und eine Entwicklerumgebung. Nach der Dokumentation ist Odoo Online mit eigenen Modulen und mit Modulen aus dem Apps Store unvereinbar; ein Berichtsmodul gehört daher auf Odoo.sh oder in eine eigene Installation.

Schritt 5: Modul anlegen

Auf Odoo.sh erzeugen Sie im Editor einen Entwicklungszweig und darin die Modulstruktur mit odoo-bin scaffold my_module ~/src/user/; lokal läuft derselbe Aufruf über ./odoo-bin. Für einen Bericht legen Sie einen Ordner report an; die Entwicklerdokumentation stellt die Vorlage (…_templates.xml) und die Berichtsaktion (…_reports.xml) als zwei getrennte Dateien dorthin. Tragen Sie beide im __manifest__.py in der Liste data ein; Odoo lädt diese Dateien in der angegebenen Reihenfolge.

Ergebnis: Das Modulverzeichnis enthält den Ordner report mit beiden Dateien; der Manifest nennt sie.

Schritt 6: Vorlage erben und ergänzen

QWeb-Berichte sind HTML-Vorlagen. Eine bestehende Vorlage erweitern Sie, ohne sie zu kopieren: Die erbende Vorlage nennt im Attribut inherit_id die Vorlage, die sie ergänzt, und wählt mit xpath die Stelle darin — dieselben xpath-Elemente wie bei der Ansichtsvererbung. Aufbau (die Fundstelle in expr ersetzen Sie durch den Knoten Ihrer Vorlage):

<template id="report_saleorder_note" inherit_id="sale.report_saleorder_document">
  <xpath expr="…" position="after">
    <p>Zusätzlicher Absatz im Angebotsbericht</p>
  </xpath>
</template>

Globales CSS hängen Sie laut Dokumentation über die Vorlage des Hauptlayouts ein (inherit_id="report.style"). Werte außerhalb des Datensatzes ergänzt ein Modell report.<modul>.<bericht> über _get_report_values.

Ergebnis: Mit aktualisiertem Modul zeigt das PDF die Ergänzung; die Standardvorlage bleibt unverändert, weil Sie eine erbende Vorlage einsetzen.

Schritt 7: Papierformat als Datensatz anlegen

Ein Papierformat ist ein Datensatz des Modells report.paperformat mit den Feldern name (Pflicht), format (A4, Letter oder custom), orientation, margin_top, margin_bottom, margin_left, margin_right (Millimeter), dpi (Standard 90), header_line und header_spacing. Eigene Blattmaße tragen Sie als custom mit page_height und page_width ein; ein vorgegebenes Format neben eigenen Maßen lässt die Dokumentation nicht zu. Beispiel eines eigenen Formats auf A4:

<record id="paperformat_angebot" model="report.paperformat">
  <field name="name">Angebot A4</field>
  <field name="format">A4</field>
  <field name="orientation">Portrait</field>
  <field name="margin_top">20</field>
</record>

Der Bericht verweist über das Feld paperformat_id auf dieses Format; ohne Angabe gilt das Papierformat des Unternehmens aus dem Dokumentlayout.

Ergebnis: Der Bericht druckt im gewählten Format und mit den gesetzten Rändern.

Schritt 8: Modul installieren und aktualisieren

Öffnen Sie die App Apps und suchen Sie das Modul; die Liste zeigt standardmäßig nur Apps, deshalb wechseln Sie auf den Filter Extra. Klicken Sie auf der Modulkarte auf Aktivieren. Fehlt es in der Liste, schalten Sie den Entwicklermodus ein und wählen Apps ‣ App-Liste aktualisieren, danach Aktivieren. Nach einer Änderung am Modulcode wählen Sie in Apps beim Modul über die drei Punkte Upgrade.

Ergebnis: Das Modul steht als installiert in der App-Liste, und das PDF zeigt die Fassung aus Ihrem letzten Upgrade.

So prüfen Sie das Ergebnis

  • Erzeugen Sie ein neues PDF und öffnen Sie es selbst; einen als Anhang gespeicherten Bericht (Option Erneut aus Anhang laden) zeigt Odoo weiter im alten Stand.
  • Prüfen Sie zwei Datensätze: einen mit gefülltem Feld, einen ohne; im zweiten muss der Standardwert aus dem Feldbefehl stehen.
  • Sehen Sie nach einer Kopf- oder Fußänderung mindestens einen zweiten Bericht an; die Änderung wirkt unternehmensweit.
  • Prüfen Sie die Blattgröße am Ausdruck, wenn am Bericht ein eigenes Papierformat steht: dann gilt nicht der Wert aus dem Dokumentlayout.
  • Mit mehreren Gesellschaften prüfen Sie das Dokumentlayout über den Firmenwechsler, siehe mehrere Gesellschaften.
  • Berichte sind Webseiten: Die Dokumentation nennt die Adressen /report/html/<bericht>/<id> und /report/pdf/<bericht>/<id>; die Rechteprüfung der Datenbank gilt dabei weiter.

Wenn etwas nicht klappt

Symptom Ursache Abhilfe
Das PDF zeigt weiter den alten Stand Der Bericht wurde als Anhang gespeichert und von dort geladen Frisches PDF erzeugen; Option Erneut aus Anhang laden prüfen
Der Bericht fehlt im Menü Drucken Im Druckmenü anzeigen ist nicht aktiv Option am Bericht einschalten
Studio lässt sich nicht öffnen Studio gehört zur Enterprise-Edition Enterprise nutzen oder die Anpassung an eine Entwicklung geben
Das Modul fehlt in der App-Liste App-Liste nach den neuen Dateien nicht aktualisiert Entwicklermodus, Apps ‣ App-Liste aktualisieren, dann Aktivieren
Nach einem Upgrade ist die Änderung weg Direkte XML-Änderungen können laut Dokumentation beim Upgrade stören Änderungen aus der alten Datenbank übertragen oder Bericht zurücksetzen
Die geerbte Vorlage wirkt nicht Modul nicht aktualisiert oder xpath trifft keinen Knoten Upgrade ausführen und die Fundstelle in expr prüfen

Wann Sie Hilfe holen sollten

Für den Weg mit Code holen Sie eine Entwicklung oder Ihren Odoo-Partner dazu, wenn die Vorlage eigene Logik braucht, ein neues Modell beteiligt ist oder mehrere Gesellschaften und Sprachen betroffen sind. Geänderte Berichte gehören vor jedem Versionswechsel in die Kopie der Datenbank. Ob ein Rechnungsbericht über die Gestaltung hinaus Anforderungen erfüllen muss, klären Sie mit Ihrer Steuerberatung; dieser Artikel beschreibt Layout und Technik, nicht das Rechnungsrecht.

Häufige Fragen

Kann ich das Rechnungslayout ändern, ohne Studio zu kaufen?

Für Kopf, Fuß, Logo, Farben, Schrift und Papierformat ja: Diese Einstellungen liegen im Dialog Dokumentlayout konfigurieren und brauchen kein Studio. Den Inhalt einzelner Berichte ändert der Berichtseditor, der zur Enterprise-Edition mit Studio gehört. Ohne Studio bleibt dafür ein eigenes Modul, das auf Odoo Online nicht möglich ist.

Warum zeigt eine bereits gedruckte Rechnung noch den alten Stand?

Odoo kann einen Bericht bei der ersten Erzeugung als Anhang am Datensatz speichern und danach aus diesem Anhang laden; dafür steht die Option Erneut aus Anhang laden am Bericht. Ihre Layoutänderung wirkt dann erst bei einem neu erzeugten PDF. Prüfen Sie die Option, bevor Sie sie umstellen.

Können Angebot und Rechnung unterschiedliche Layouts haben?

Je Bericht ja: In Studio duplizieren Sie den Standardbericht und ändern Inhalt und Papierformat der Kopie. Vorlage sowie Kopf- und Fußzeile aus dem Dialog Dokumentlayout konfigurieren gelten dagegen für alle Berichte des Unternehmens, deshalb wirken Änderungen dort auch auf Ihre Kopie. Ohne Studio bleibt für einen zweiten Bericht nur ein eigenes Modul.

Bleiben meine Anpassungen nach einem Upgrade erhalten?

Die in Studio duplizierte Berichtsfassung bleibt zunächst bestehen. Die Dokumentation warnt aber, dass direkte Änderungen an den XML-Quellen über Quellen bearbeiten beim Upgrade Probleme verursachen können. Übertragen Sie Ihre Änderungen dann aus der alten Datenbank in die aktualisierte, oder setzen Sie den Bericht mit Bericht zurücksetzen auf die Standardfassung zurück.

Quellen

  1. PDF-Berichte (Dokumentation 20.0, deutschsprachige Fassung)Odoo S.A. · abgerufen am
  2. Unternehmen (Dokumentation 20.0, deutschsprachige Fassung), Abschnitt DokumentlayoutOdoo S.A. · abgerufen am
  3. QWeb-Berichte (Entwicklerdokumentation 20.0)Odoo S.A. · abgerufen am
  4. PDF-Berichte erstellen (Tutorial der Entwicklerdokumentation 20.0)Odoo S.A. · abgerufen am
  5. Aktionen: Berichtsaktionen ir.actions.report (Entwicklerdokumentation 20.0)Odoo S.A. · abgerufen am
  6. Apps und Module (Dokumentation 20.0, deutschsprachige Fassung)Odoo S.A. · abgerufen am
  7. Entwicklermodus (Dokumentation 20.0, deutschsprachige Fassung)Odoo S.A. · abgerufen am
  8. Odoo Online (Dokumentation 20.0): Unvereinbarkeit mit eigenen ModulenOdoo S.A. · abgerufen am
  9. Odoo.sh: Create a module (Dokumentation 20.0)Odoo S.A. · abgerufen am
  10. Editionsvergleich Community / Enterprise, Zeilen Customization (Studio) und General (Hosting)Odoo S.A. · abgerufen am
  11. Preise und Tarife (odoo.com, deutschsprachige Fassung): Tarif Custom mit Odoo Online, Odoo.sh und On-PremiseOdoo S.A. · abgerufen am
  12. Odoo Release Notes: Version 20, Released September 2026Odoo S.A. · abgerufen am
  13. Modul web, Branch 20.0: base_document_layout.py (Dialog Dokumentlayout im öffentlichen Community-Repository)Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am
  14. Modul l10n_din5008, Branch 20.0: Manifest (Lokalisierungsmodul mit Berichtsvorlage DIN 5008, Länder de und ch)Odoo S.A., öffentlicher Quellcode (Community) · abgerufen am