Wie erstellt man einen neuen Report für OpenZ?

Um einen Report für OpenZ zu erstellen wird JasperSoft Studio benötigt.

Jaspersoft Studio einrichten

  • Eine aktuelle Version von Jaspersoft Studio(6.3.1) herunterladen
  • Linux: Entpacken des Archivs und die Datei "Jaspersoft Studio" ausführen
  • Windows: Entsprechendes Archiv herunterladen und .exe ausführen

Jaspersoft Studio konfigurieren

Damit Jaspersoft Studio ordentlich funktioniert müssen ein paar Eigenschaften eingestellt werden.

  • Die JasperReport-Eigenschaft net.sf.jasperreports.awt.ignore.missing.font auf true setzen
  • Keine Scriplet-Klassen verwenden
  • Groovy als Standard-Sprache verwenden

Den Klassenpfad einrichten

In Jaspersoft Studio sollte jeder Report Teil eines Projekts sein. Also muss zunächst ein neues Projekt angelegt werden (File > New > Project).

Das Projekt hat nun einen Klassenpfad und dort können die benötigten .jar-Dateien hinzugefügt werden.

  • Rechtsklick auf den Projektnamen: Properties > Java Build Path
  • Gehe zu Libraries tab
  • Klick auf Add External Jars
  • Die gewünschte Bibliothek hinzufügen
  • Klick auf OK

Eine Vorlage erstellen

  • Gehe zu Datei > New
  • Jasper Report auswählen
  • Der New Report Wizard wird geöffnet

Eine Report-Vorlage auswählen

  • Eine Report Vorlage auswählen(Blank, um unserem Beispiel zu folgen)
  • Einen Report Namen definieren
  • Speicherort der Datei innerhalb des Projekts festlegen

Später kann diese .jrxml-Datei in das für den Report vorgesehene OpenZ Module kopiert und die benötigte Konfiguration in das Application Dictionary eingetragen werden.

  • Report Daten-Quelle festlegen: durch Klick auf "New" kann eine neue Datenbank-Verbindung über den Data Adapter Wizard erstellt werden
  • Klick auf New
  • Database JDBC Connection auswählen und klick auf Next
  • alle Felder befüllen:
    • Name: openz (oder beliebig)
    • JDBC Driver: PostgreSQL(org.postgresql.Driver).
    • JDBC URL: jdbc:postgresql://localhost:5432/openz  "5432" ist der Port, den PostgresSQL benutzt und openz ist die SSID der Datenbank
    • Username: tad(in den Openbravo.properties kann die Einstellung überprüft werden)
    • Password: tad
  • Klick auf Finish um JDBC Verbindung zu erzeugen
  • Verbindung testen
  • Abspeichern

Datenbank-Adapter erstellen

Jetzt muss die Query angepasst werden: vorhandene Produkte aus der Datenbank sollen angezeigt werden

  • Rechtsklick auf das Report Outline menu und Dataset und Query auswählen. Hier wird die Query des Reports eingestellt und es ist außerdem möglich die Query durch Wechsel der Datenbank-Verbindung auszutesten.

Query-Dialog öffnen

  • Produkte werden in der M_Produkt Tabelle gespeichert

SELECT m_product_id, value name FROM m_product

  • Die Felder, die innerhalb der Report-Query verwendet werden, müssen noch hinzugefügt werden:
    • m_product_id
    • value
    • name

Query-Dialog bearbeiten

  • Klick auf OK
  • Scriptlet-Klasse leeren und die Sprache anpassen
  • Rechtsklick auf das Report Outline menu und Show Properties auswählen
  • Folgende Anpassungen in den Report-Eigenschaften auf der rechten Seite vornehmen:
    • Scriptlet-Klasse leeren
    • Groovy als Sprache auswählen
  • Anpassungen abspeichern

Report-Eigenschaften anpassen

Jetzt kann das Layout des Reports festgelegt werden

  • Einen statischen Text als Report-Titel einfügen: Produkt Liste
  • Felder im "Detail"-Band und einen Titel im "Column Header"-Band platzieren
  • Änderungen abspeichern

Report-Felder anlegen

  • Für eine Report-Vorschau zum Preview-Unterreiter wechseln

Report-Vorschau anzeigen

Einen Report in Openz einfügen

Mittels Jasperreport ist es möglich eigene Reports/Templates (Dokumentenvorlagen) zu erstellen, die man in OpenZ einfügen kann. So können z.B. für Rechnungen mehrere Reports mit jeweils eigenem Layout erstellt werden. Benötigt ein Kunde ein spezielles Rechnungslayout, so kann dieses dann beim Druck ausgewählt werden. Bitte beachten sie zu der Thematik die technischen Hinweise ganz unten.

Wurde ein Report erstellt, muss die entsprechende Datei im ersten Schritt auf dem Server abgespeichert werden z.B. unter dem Pfad:

<Pfad zu Tomcat>/webapps/<Instanzname>/src-loc/design/org/openbravo/zsoft/smartui/printing

Beispiel:

/var/lib/tomcat7/webapps/openz/src-loc/design/org/openbravo/zsoft/smartui/printing

Im zweiten Schritt muss dann noch in OpenZ eine Einstellung erfolgen, damit die Datei richtig zugeordnet wird.

Dazu folgenden Pfad wählen:

  • Pfad: Einstellungen || System-Stammdaten || Dokument-Typ  ||  Belegarten
Dokumenten-Typ auswählen
Dokumenten-Typ auswählen

Die 4 am häufigsten genutzten Dokumente sind:

Order (PO) = Bestellungen (Einkaufsseitig)

Proposal = Angebote

Standard Order (SO) = Auftragsbestätigungen (Verkaufsseitig)

Invoice (AR) = VK Rechnungen

  • auswählen des benötigten Dokumententyps
  • wechseln in Unterreiter "Report Vorlagen"
Reportvorlage wählen
Reportvorlage wählen

  • anlegen "neuer Datensatz"
  • vergeben, Name für den neuen Datensatz
  • anhaken "Aktiv"
  • eintragen, "Templateverzeichnis" (dort kann durchaus der Pfad der Standard Templates benutz werden)
  • eintragen, "Template Dateiname"
  • eintragen, "Report Dateiname" (der Dateiname des zu erzeugenden Dokumentes)
  • speichern

Hier einige Befehle mit denen der Report Dateiname dynamisch versehen werden kann.

@cus_name@ --> Kundenname
@our_ref@ --> Doknummer
@unique_id@ --> Eindeutiger Identifier (Datum im Format: YYDDDSSSSS)
@timestamp@ --> Datestamp 20121127-161313

Aneinanderreihungen sind möglich.

Darüber hinaus besteht natürlich auch die Möglichkeit feste Zeichenketten zu verwenden.
Ein Ausdruck des gewünschten Reports bewirkt dann den vordefinierten Dateinamen.

Das System verlangt, dass jedem Datensatz der Report Vorlage eine "Email Definition" zugeordnet ist. Es kann sich dabei auch um einen Dummy handeln, es muss nur ein entsprechender Datensatz vorhanden sein.

  • wechseln in den Unterreiter "Email Definition"
  • anlegen "Neuer Datensatz"
  • Felder füllen wie im Bild unten
E-Mail Definition
E-Mail Definition

Wird nun für ein entsprechendes Dokument das Drucksymbol angewählt, so kann in dem entsprechenden Pop-up Fenster im Feld "Dokumenten Typ"   unter verschiedenen Reporten ausgewählt werden, wenn mehrere vorhanden sind.

Belegartenwahl
Belegartenwahl

Ein Firmenlogo im Report andrucken

Es gibt in OpenZ zwei Möglichkeiten um ein Firmenlogo für den Andruck im Report festzulegen.

Folgendes ist dabei zu beachten:

Wenn in der Druck-Konfiguration ein Bild festgelegt wurde, dann wird dieses dem Bild in den Organisations-Details gegenüber bevorzugt. Über eine generelle(in dem Feld Organisation steht *) Druck-Konfiguration ist es dadurch möglich für alle Organisationen dasselbe Firmenlogo zu verwenden.

1. Über die Detail-Einstellungen einer Organisation

Dazu folgenden Pfad wählen:

  • Pfad: Einstellungen || Unternehmen || Organisation || Organisation
  • Dann den Tab Details wählen
  • Klick auf das Bild-Icon
  • Nun öffnet sich der "Image selector"-Dialog
  • Klick auf Durchsuchen und ein Bild auswählen
  • Klick auf Upload um das Bild hochzuladen

Firmenlogo über Organisations-Details hochladen

2. Über die Druck-Konfiguration(ab Version 3.2.22)

Dazu folgenden Pfad wählen:

  • Pfad: Einstellungen || System-Stammdaten || Druck-Konfiguration || Druck-Konfiguration
  • Zwischen folgenden Optionen wählen
    • Eine neue Druck-Konfiguration anlegen, dabei die gewünschte Organisation zuordnen
    • Eine bestehende Druck-Konfiguration mit gewünschter Organisation auswählen
  • Klick auf das Systembild-Icon
  • Nun öffnet sich der "Image selector"-Dialog
  • Klick auf Durchsuchen und ein Bild auswählen
  • Klick auf Upload um das Bild hochzuladen

Firmenlogo über Druck-Konfiguration hochladen

Technischer Hinweis
Es wurde die Jasperreportengine getauscht, sowie das Reportingtool zur Bearbeitung der Reports.
 
Bis Version 3.0.14
Jasperreport Version 4.02

Reportingtool: IReport 4.02

Ab Version 3.0.16 
Jasperreport Version 6.10

Reportingtool: Tibco Jaspersoft Studio 6.3.1

Bekannte Probleme
JasperStudio setzt bei Bearbeitung der Report-Query die Feld Klasse "java.io.InputStream" auf "java.lang.Object",
dadurch kann dieses Feld nicht mehr von OpenZ ausgewertet werden.

Das manuelle Zurücksetzen auf die zuvor verwendete Feld-Klasse behebt diesen Fehler.