Viele Kunden machen erstmal grosse Augen, wenn sie hören, wie viel Zeit in der Odoo-Implementierung für ihre benutzerdefinierten PDF-Berichte budgetiert ist. So lange für einfache PDFs? Das kann doch nicht sein. Doch, es kann sein. Und die Wahrheit ist leider noch viel schwieriger: Viele Agenturen und Freelancer kriegen auch mit grossem Budget keine sauberen PDF-Berichte hin. Es gibt immer Überschneidungen, das Layout ist nicht sauber, unschöne Zeilenumbrüche, Anpassungen sind schwierig.
Der Grund? In Odoo sind PDF-Berichte nicht weiter als eine Website, die zu einem PDF gerendert wird. Mit QWeb, HTML und CSS wird das PDF dynamisch gestaltet. Es gibt keine vordefinierten Bausteine, alles wird von Grund auf neu gemacht. Der Vorteil: Du kannst die PDF-Berichte komplett nach deinen Wünschen gestalten. Es gibt keine Limiten oder Einschränkungen. Der Nachteil: Du musst wissen, wie es geht. Und es dauert seine Zeit.
So wirst du zum Odoo PDF Report Profi:
1Erwartungen
Habe realistische Erwartungen. Einen PDF-Report von Grund auf neu zu bauen, dauert 5-10 Stunden. Wenn du bereits ein Grundlayout hast und nur einige Positionen anpassen musst, dauert es 1 bis 2 Stunden. Am längsten dauert der Feinschliff, alle Abstände, Absätze genau auszurichten, das Design wirklich schön zu machen und alle Übersetzungen, Sonderfälle etc. abzudecken. Das dauert meist länger als das Grundlayout. Akzeptiere es, es lohnt sich, denn die PDFs sehen später sehr viele Kunden, jede Stunde Arbeit ist gut investiert.
2Grundlagen
Verstehe, wie Odoo PDF-Berichte funktionieren. Report-Action, Templates, Template-Calls und vererbte Templates. Mehr dazu in
diesem Blogbeitrag.
3Papierformat
Starte mit dem Papierformat. Das bestimmt die Seitenränder und den Platz für Header und Footer. Du kannst diese Einschränkungen später im Template nicht mehr ändern. Das Papierformat ist die Basis.
4Bausteine
Schreibe alle wiederverwendeten Elemente (z. B. Header und Footer) in ein separates Template, welches du dann von den Haupt-Templates aufrufst. So sparst du dir viel Aufwand, du hast ein konsistentes Erscheinungsbild der PDFs und Anpassungen sind einfacher machbar.
5Eigene Struktur statt XPath
Versuche nicht, die bestehenden Odoo Report-Templates mit XPath anzupassen. Kleine Dinge kannst du so verändern, aber du wirst damit nur Probleme haben. Dafür sind die Report-Templates zu komplex. Baue stattdessen deine eigene Template-Struktur auf, sodass deine Reports komplett unabhängig von den Odoo Report-Templates und Stylesheets funktionieren. Das dauert am Anfang länger, dafür hast du nachher eine saubere Basis für alle PDF-Berichte, die du auch auf andere Odoo Systeme transferieren kannst. Mehr dazu in
diesem Blogbeitrag.
6Inline-Styles
Verwende keine Stylesheets im Code, sondern Inline-Styles direkt im Report. Stylesheets machen für eine Website absolut Sinn, um ein einheitliches Design zu erreichen. PDF-Berichte beschränken sich meistens auf ein bis zwei Seiten und da funktionieren Inline-Styles einfach schneller, besser und sind für andere Personen einfacher nachvollziehbar.
7Schnell iterieren
Speichere deine Reports im Code (wenn du auf
Odoo.sh oder On-Premise bist), aber bearbeite sie zum Testen direkt in der Datenbank (Einstellungen / Technisch / Benutzerschnittstelle / Ansichten). So kannst du deine Änderungen direkt testen. Für einen guten Report musst du >100 Anpassungen machen und testen. Das geht so viel schneller. Erst wenn du eine funktionierende Version hast, speichere die Templates im Code.
8Tabellen als Basis
Verwende HTML-Tabellen, wo immer du kannst. Tabellen (borderless oder mit Border) machen ein Report-Layout viel einfacher zu gestalten, anzupassen und geben dir eine stabile Struktur. Nahezu alles kann in Tabellen integriert werden. Die Tabellenränder kannst du ausblenden, so bleibt dir die geordnete, schöne Struktur, ohne die störenden Ränder. Mit Tabellen kannst du Texte viel einfacher ausrichten, es gibt keine Überschneidungen oder Verschiebungen von divs. Tipp: benutze
table-layout: fixed, um die Spaltenbreiten zu fixieren, so vermeidest du Zeilenumbrüche in Tabellen-Headern.
9In den Flow integrieren
Mache keinen eigenständigen Report, sondern setze deine Custom-Templates mit XPath in den Standard Odoo Report-Flow ein. So kannst du deine Custom-Reports nahtlos in alle Odoo Workflows integrieren, zum Beispiel die Rechnung direkt mit dem „Print“-Button drucken.