Rechnungslayout

Subtitle

Florian Fischer

Design und Vorbereitung

Anforderungen

Wie bei jedem Projekt muss vor der technischen Umsetzung eingehend über Anforderungen, Design und Vorraussetzungen nachgedacht werden. Für Rechnungen bedeutet das, dass vor allem über die Anorderungen des eigenen Geschäfts an ein Rechnungslayout und Normen geredet werden muss. Obwohl es kein Gesetz dafür gibt, was eine Rechnung beinhalten muss, gibt einige Vorgaben und Normen, die eine Rechnung erfüllen sollte. Dazu gehören z.B. Umsatzsteuer-ID und Steuernummer aber natürlich auch das Ausstellungsdatum oder die Addresse des Rechnungsstellers. Eine genaue Auflistung kann hier gefunden werden.

Druck 

Auch wenn Rechnungen heutzutage meist per Email verschickt werden, sind sie trotzdem immer noch ein Druckobjekt und müssen daher Druckanforderungen genügen. Um ein erstes Layout zu erstellen sollte daher idealerweise ein Tool wie z.B. InDesign genutzt werden, dass speziell für den Druck gemacht wurde. So können Abstände, Ausrichtungen und Zeilenhöhen professionell gestaltet werden. Dazu gehören auch Formatvorlagen für Geschäftsbriefe. Soll z.B. ein Fensterbrief benutzt werden, muss darauf geachtet werden, Addresse und Absender richtig zu positionieren.  Genauere Informationen zur Briefgestaltung können Sie hier finden.

Iterationen Des Bloopark Layouts von Links nach rechts

Technische umsetzung

WKHTMLtoPDF

Odoo nutzt ein Plugin namens wkhtmltopdf um Rechnungen als PDFs zu generieren. Es gibt einen bekannten Bug, der verhindert, dass Header und Footer richtig in der Rechnung dargestellt werden. Um diesen zu beheben muss im Backend ein Systemparameter mit dem Key "report.url" und Value "http://127.0.0.1:8069" gesetzt werden (der Port muss natürlich an das jeweilige System angepasst werden). Desweiteren sollte darauf geachtet werden, dass die aktuelle Version von wkhtmltopdf installiert ist.

Odoo nutzt für das formatieren der Rechnungen - genauso wie für den Rest des Interfaces - Bootstrap 3. Das heißt, dass Klassen für Colums, Margins und Paddings genauso gesetzt werden können wie für Webviews.

HTML und PDF View

Den PDF View Ihrer Rechnung finden Sie im Odoo Backend unter Finanzen (Accounting). Dort können Sie einzelne Rechnungen erstellen, bestätigen und als PDF drucken. In Ihrer Addresszeile können Sie bei "/web#id=8..." die ID der Rechnung erkennen.

Um nicht für jede kleine Änderung eines Views den Server neu starten zu müssen, können Sie den HTML View der Rechnung unter http://ihre-addresse.de/report/html/account.report_invoice/8. Dabei steht die Nummer am Ende der URL, in diesem Fall 8, für die ID der Rechnung, welche Sie gerade bearbeiten wollen. So können Sie auch Chrome Dev Tools verwenden um Styles anzupassen.

Modul

Anpassungen sollten grundsätzlich nicht im Odoo Core gemacht werden, sondern immer über Addons installiert werden. 

Fonts

Während Fonts im Webview wie gewünscht dargestellt werden, kann es dabei Probleme bei der Konversion in PDFs geben. Um diese zu umgehen, müssen die Font Dateien in das Modul integriert werden (z.B. static > src > fonts) und dann wie folgt in das CSS eingebunden werden :

@font-face {
   font-family: 'Lato';
   src: url("/bp_reports/static/src/font/Lato-Regular.ttf");
   -fs-pdf-font-embed: embed;
   -fs-pdf-font-encoding: Identity-H;
   }
.regular-font {
    font-family: 'Lato';
    font-weight: 500;
    }

About Florian Fischer

Coding newbie but eager to learn/ Loves his sports but won't say no to a good party/ His coffee is black, one sugar.