Odoo Print Engine von Nexigo

Einrichtungs und Funktionsleitfaden für die Odoo Print Engine von Nexigo

Modulüberblick

Die Odoo Print Engine von Nexigo ermöglicht es, Drucklayouts für Odoo ERP über einen grafischen Designer ohne Programmierung zu erstellen. In Odoo selbst sind Anpassungen der Layouts meist nur begrenzt über Odoo Studio möglich. Alles was darüber hinaus geht, muss über Codeanpassungen umgesetzt werden und benötigt daher tiefes technisches Know-How in XML, XPATH und QWeb. Mit der Nexigo Print Engine wird dieser Aufwand stark reduziert, da Nutzer ihre Belege pixelgenau, inklusive komplexer Logik wie Summen mit Vor- und Überträgen, definieren können. Zudem basiert die Ausgabe nicht auf dem von Odoo genutzten HTML2PDF, sondern auf direktem PDF-Rendering, was präzisere Ergebnisse ermöglicht.

Funktionsumfang

  • Anpassung jedes Belegs: Es kann für jeden Beleg einzeln entschieden werden, ob er mit dem selbst definierten Template übersteuert werden soll
  • Hinzufügen von Informationen: Bestehende oder neu definierte Felder können sofort auf dem Beleg verwendet werden

Voraussetzungen

  • Odoo 19: Das Modul setzt eine Odoo-19-Installation voraus.
  • Rendering-Engine Hosting: Der Dienst wird von Nexigo gehostet.
  • JasperSoft Studio: Um Templates anpassen zu können wird eine lokal Installation der Software JasperSoft benötigt.
  • GitHub Account: Um angepasste Templates zu veröffentlichen, wird ein GitHub-Account benötigt.

Grundlegender Ablauf

Um Templates zu entwerfen und durch den Print Connector verfügbar zu machen, sind drei wesentliche Bestandteile notwendig:

Rendering-Engine

Die Rendering-Engine läuft als Dienst auf einer von Nexigo gehosteten Cloud-Instanz. Beim Druck aus Odoo wird geprüft, ob es ein Report-Mapping für diesen Beleg gibt. Ist ein Mapping vorhanden, sendet der Print Connector eine Anfrage an die Rendering-Engine und übergibt die Belegdaten als JSON-Payload. Die Rendering-Engine verarbeitet diese Daten, füllt damit das in JasperSoft definierte Template und liefert als Ergebnis das generierte PDF an Odoo zurück.

GitHub-Repository

Die erstellten Jasper-Templates werden in einem GitHub Repository verwaltet. Jeder Nutzer, der Anpassungen vornehmen möchte, benötigt dafür einen GitHub Account.

JasperSoft Studio

Über diese Software werden .jrxml-Dateien erstellt die als Templates für das spätere Rendering dienen. Für die Anpassung der Templates empfiehlt sich eine Schulung.

Screenshot: Konfigurationsmaske

Konfiguration

Schritt 1: Berechtigungen

Pro Benutzer kann hinterlegt werden, ob die Konfigurationen für die Print Engine eingesehen (Jasper-User) oder bearbeitet (Jasper Manager) werden können. Admin-Benutzer haben zusätzlich die Möglichkeit einige Stammdaten und die API-Einrichtung vorzunehmen.

Screenshot: Konfigurationsmaske

Schritt 2: API-Einrichtung

Für den Aufruf der Rendering-Engine, muss sowohl die API-URL als auch ein API-KEY hinterlegt werden. Über die Rendering-Engine wird der Beleg gerendert und erstellt.
Über den Button Update repo & compile changes werden die geänderten Templates aktualisiert, kompiliert und dadurch für den Druck verfügbar gemacht. Über den Button Recompile all reports in repository werden alle Templates kompiliert.

Screenshot: Konfigurationsmaske

Schritt 3: Footer Informationen

In den Einstellungen können außerdem Footer-Informationen definiert werden, die dann für alle Belege gelten. Zudem kann variabler statischer Inhalt angelegt werden.

Screenshot: Konfigurationsmaske

Schritt 4: Anlegen eines Report-Mappings

Um einen Beleg zu individualisieren muss neben den Templates ein Report-Mapping angelegt werden. Dort sind folgende Informationen anzugeben:

  • Name: Der Name des Mappings. Hat keinerlei steuernde Wirkung und dient lediglich der Zuordnung.
  • Odoo Report: Der Report der übersteuert werden soll.
  • Connector Report Path: Der Pfad unter dem das Template liegt.
  • Depth: Die Datentiefe der an den Beleg übergebenen Daten.
    Beispiel: Tiefe 1 enthält nur die Basisdaten, also ID und Namen des Kunden auf der Rechnung. Bei Tiefe 2 werden zusätzlich alle weiteren Felder aus der Kunden-Tabelle übergeben.
  • Locale Field: Die Belegsprache
  • Include Paths: Hier können Felder angegeben werden die durch die Definition der Tiefe eigentlich ausgeschlossen werden würden. Es empfiehlt sich allgemein eine Tiefe von 2 zu wählen und ausgewählte Felder als Include Path zu definieren.
Screenshot: Konfigurationsmaske

Schritt 5: JSON Payload generieren

Über den Button Generate JSON kann ein Beispiel-JSON für diesen Report generiert werden. Dabei kann ein beliebiger Datensatz aus dem System gewählt werden. Diese Funktion ist vor allem für Anpassungen der Templates relevant.

Screenshot: Konfigurationsmaske

Restriktionen

Die Darstellung der Belege kann teilweise von der Vorschau in JasperStudio abweichen.

HTML-Elemente

Die Daten aus Odoo werden über den Connector in Form einer JSON-Datei für die Belegerstellung bereitgestellt. Einzelne Felder innerhalb dieser JSON-Struktur können HTML-formatierten Inhalt enthalten, beispielsweise formatierte Artikel- oder Beschreibungstexte.

Bei der Verarbeitung und Darstellung der erhaltenen HTML-Inhalte können nicht alle Elemente korrekt aufgelöst werden. JasperReports verfügt über eine HTML-Markup-Unterstützung, jedoch nicht über einen vollständigen HTML-/CSS-Renderer wie ein Webbrowser. Dadurch können die aus Odoo gelieferten HTML-Inhalte nicht in jedem Fall 1:1 in der Belegausgabe dargestellt werden.

Einfache Formattierungen wie Fett oder Kursiv lassen sich direkt verwenden. Bei komplexeren Strukturen wie Tabellen, verschachtelten Elementen, Trennlinien oder bestimmten Formatierungsattributen ist die Unterstützung begrenzt. Für eine einheitliche Belegausgabe müssen solche Inhalte vereinfacht oder in unterstützte Strukturen umgewandelt werden.

Schriftarten

Zusätzlich kann es vorkommen, dass die Darstellung in der produktiven Umgebung von der Vorschau in Jaspersoft Studio abweicht, etwa bei der Fettdarstellung. Ursache ist meist eine Schriftart, die auf dem Server fehlt oder nicht korrekt eingebunden ist. Damit sie richtig angezeigt wird, müssen die benötigten Fonts, inklusive Fett- und Kursiv-Varianten, in der produktiven Jaspersoft-Umgebung installiert bzw. eingebunden werden.