Berichte

Geschätzte Lektüre: 30 Minuten

Ein LIMBAS Bericht stellt die Daten einer Tabelle oder einer Abfrage im PDF-, ODT- (OpenOffice) oder XML-Format dar. Die Berichtvorlage wird in LIMBAS mit dem Berichteditor entworfen und kann diverse Gestaltungselemente (z.B. Grafiken, Kopf- und Fußzeilen) enthalten.

Berichteditor

Beim Aufruf des Berichteditors erscheint eine nach Tabellen sortierte Auflistung der vorhandenen Berichtvorlagen mit der Möglichkeit weitere Berichte hinzuzufügen.

  • ID: Eindeutige Identifikation der Berichtvorlage. Beim Hinzufügen einer neuen Berichtvorlage wird diese ID von LIMBAS selbst gesetzt.
  • Durch Mausklick auf das Editier-Symbol lässt sich die entsprechende Berichtvorlage bearbeiten.
  • löschen: Durch Mausklick auf das Papierkorb-Symbol wird die entsprechende Berichtvorlage nach Rückfrage gelöscht.
  • Bericht: Name der Berichtvorlage
  • für Tabelle: Tabelle, auf die die Berichtvorlage angewandt werden soll
  • Bericht-Erweiterung: Bietet eine Auswahl an php-Dateien des EXTENSIONS Order. Dieses eigene Skript wird anstelle des IMBAS Berichts ausgeführt. Die komplette Rechtestruktur bleibt erhalten.
  • Ablageordner: Für jeden neuen Bericht wird ein Ordner mit dem Namen des Berichts angelegt. Standardmäßig wird der Bericht in diesem Ordern abgelegt. Alternativ können auch Unterordner dieses Ordner als Ablageort über den Dateimanager hinzugefügt und als Ablageordner definiert werden. Es werden nur Unterordner des übergeordneten Hauptordners des jeweiligen Berichts zur Auswahl angezeigt. Es ist jedoch auch möglich die Ordner -ID direkt einzugeben was es ermöglicht jeden Ordner des Dateisystems auszuwählen. Ist der Ausgewählte Ordner ein Unterordner eines Tabellen-Feldes des Typs „Verknüpfung zu Dateisystem“ wird der erstellte Bericht zusätzlich in dieses Feld verknüpft.
  • Ablagename: Vordefinierter Name beim Abspeichern des Berichts. Der Name kann mit Variablen wie die Datensatz-ID ergänzt werden. Z.B. [„Rechnung_$ID“] oder [„Bericht_$ID_“.$session[user_id].“_“.date()]
  • Standardformat: Aktuell können Berichte als PDF, ODT oder XML generiert werden. Für ODT Berichte wird ein zusätzliches ODT Template benötigt.
  • Open Office Template: Auswahl des ODT Templates aus dem Dateisystem.

Berichtvorlage hinzufügen

  • Name: siehe oben „Bericht“
  • Tabelle: siehe oben „für Tabelle“
  • kopieren: Name einer bereits vorhandenen Berichtvorlage, dessen Berichtelemente in der neuen Berichtvorlage übernommen werden.

Bei Mausklick auf den Button „neuer Bericht“ lässt sich die neue Berichtvorlage bearbeiten.

Berichtvorlage bearbeiten

Auf der linken Seite des Berichteditors befindet sich die jeweils aktuelle Ansicht der Berichtvorlage. Eine gerade neu angelegte Berichtvorlage ist hier noch leer.

Auf der rechten Seite des Berichteditors befindet sich die Werkzeugleiste mit folgender Unterteilung:

  • Name der Berichtvorlage und der Tabelle, auf die die Berichtvorlage angewandt werden soll
  • Koordinaten, Breite und Höhe des selektierten Berichtelements
  • Globale Berichteinstellungen:
    • Z-Satz/Größe: Der hier eingestellte Zeichensatz und die hier eingestellte Zeichengröße werden als Voreinstellung für Berichtelemente, die Text beinhalten und dem Bericht neu hinzugefügt werden, verwendet.
    • Seitengröße (mm): Breite/Höhe definieren die Seitengröße des Berichts in Millimeter.
    • Seitenränder (mm): In der Ansicht der Berichtvorlage werden entsprechend den Einstellungen „oben:“/“unten:“/“links:“/“rechts:“ Linien für den Seitenrand als Editierhilfe eingeblendet. Für die Generierung des Berichts haben diese keine Bedeutung.
    • name:
    • Proportionen erhalten: Ist diese Eigenschaft gesetzt, so können Höhe und Breite des selektierten Berichtelements nur so geändert werden, dass dabei die Proportionen erhalten bleiben. Ansonsten können Höhe und Breite des selektierten Berichtelements auch unabhängig voneinander geändert werden.
    • Z-Index berücksichtigen: siehe zIndex
    • Z-Index erneuern: siehe zIndex
    • Sortierung: Diese Einstellung legt fest, wie die Seiten des Berichts generiert werden. Dies hat z.B. Auswirkungen darauf, welches Berichtelement bei sich überlappenden Elementen im Vorder- bzw. Hintergrund dargestellt wird.
      • Z-Index: Die Berichtelemente werden in der Reihenfolge ihres zIndex-Wertes auf der Seite platziert. Überlappende Elemente mit höherem zIndex werden somit vor denen mit niedrigerem zIndex dargestellt. Bei identischen Werten ist es dem Zufall überlassen, welches Element im Vorder- bzw Hintergrund gezeigt wird.
      • Y-Pos: Die Reihenfolge, in der die Berichtelemente auf der Seite platziert werden, wird durch die y-Koordinate der Berichtelemente bestimmt. Dabei wird das Element mit der niedrigsten y-Koordinate zuerst platziert. Bei sich überlappenden Berichtelementen wird daher das Element mit höherer y-Koordinate im Vordergrund sein. Bei identischen Werten ist es dem Zufall überlassen, welches Element im Vorder- bzw Hintergrund gezeigt wird.
  • Buttons zum Hinzufügen von Berichtelementen: Wird der Mauszeiger für kurze Zeit auf einem Button belassen, so wird die Funktionalität des Berichtelements eingeblendet.
  • Button „übernehmen“ zum Speichern der Berichtvorlage
  • Tabelle mit Auflistung der verwendeten Berichtelementen: Die Tabelle zeigt für jedes in der Berichtvorlage verwendete Berichtelement
    • die Element-Nr.
    • den Typ des Berichtelements
    • einen Hinweis auf den Inhalt des Berichtelements

Hinzufügen eines Berichtelements

Bei Mausklick auf einen Button zum Hinzufügen eines Berichtelements wird ein entsprechendes Element in der Ansicht in der oberen linken Ecke hinzugefügt, und zwar mit den für das jeweilige Element gültigen Default-Eigenschaften. Die Eigenschaften eines Berichtelements sind Typ-abhängig und lassen sich wie unten (Einstellen/Ändern der Eigenschaften eines Berichtelements) beschrieben ändern.

Soll sich ein Element in einer Tabelle befinden, so muss diese zuerst angelegt werden. Vor dem Hinzufügen des inneren Berichtelements muss das entsprechende Tabellenfeld selektiert sein. Das erste innere Berichtelement wird dann in der oberen linken Ecke des Tabellenfeldes platziert, weitere folgen je nach Breite der Tabellenspalte rechts oder unterhalb.

Die folgenden Elemente werden vom LIMBAS Berichteditor zur Platzierung auf einer benutzerdefinierten Berichtvorlage angeboten:

  • Textblock
  • Dateninhalte
    Bei Mausklick auf den Button für „Dateninhalte“ wird in der Werkzeugleiste unterhalb der Buttons ein Baum der Tabellenfelder eingeblendet. Erst bei Mausklick auf eines dieser Tabellenfelder wird das Berichtelement in der Ansicht der Berichtvorlage hinzugefügt.
  • Graphik
    Bei Mausklick auf den Button für „Graphik“ wird in der Werkzeugleiste unterhalb der Buttons ein Feld zur Eingabe einer Datei mit Pfad eingeblendet. Ist ein gültige Grafik-Datei eingetragen, so wird diese bei Mausklick auf „übernehmen“ in der Ansicht der Berichtvorlage hinzugefügt.
  • Rechteck
  • Tabelle
    Die Tabelle ermöglicht die geordnete Platzierung von Berichtelementen „Textblock“, „Dateninhalt“, „Datum“ und/oder „Formel“ nebeneinander. Bei der Generierung des Berichts werden momentan nur die Tabellenspalten berücksichtigt, die in der ersten Zeile ein inneres Berichtelement haben. Dabei ist leerer „Textblock“ ausreichend. Ein Tabellenfeld kann mehrere innere Berichtelemente aufnehmen. Ist dies der Fall, werden bei der Generierung des Berichts die Eigenschaften des ersten Berichtelementes (links oben) auch für alle weiteren Elemente in diesem Tabellenfeld verwendet.
  • Datum
  • Seiten-Nr
    Bei Berichten für mehrere Datensätze fängt die Seiten-Nr für jeden Datensatz wieder mit „1“ an, dann fortlaufend bis zur letzten Seite des Datensatzes.
  • Formel
  • Unterformular

Selektieren eines Berichtelements

Es kann immer nur ein Berichtelement selektiert sein. Dieses erkennt man daran, dass es

  • in der Tabelle mit den aktuell verwendeten Berichtelementen farblich hervorgehoben ist
  • in der Ansicht der Berichtvorlage an der unteren rechten Ecke ein Symbol zum auf/zusammenziehen hat

Das Selektieren eines Berichtelements ist somit möglich durch

  • Mausklick auf den entsprechenden Eintrag in der Tabelle mit den aktuell verwendeten Berichtelementen
  • Mausklick auf das entsprechende Element in der Ansicht der Berichtvorlage

Einstellen/Ändern der Eigenschaften eines Berichtelements

Beim Einstellen/Ändern der Eigenschaften eines Berichtelements ist zu beachten, dass bei der Generierung des Berichts die Elemente auf die folgenden Bereiche der Seite platziert werden:

  • Hintergrund
  • Kopfzeile
  • eigentlicher Inhalt
  • Fußzeile

Dabei kann der Hintergrund den Platz der gesamten Seite nutzen. Kopfzeile, eigentlicher Inhalt und Fußzeile überlappen sich normalerweise nicht (Ausnahme durch Option „Fixiere Position“, siehe unten).

Entsprechend den Einstellungen für „Hintergr“ und „versteckt“ (siehe unten) werden die Berichtselemente des Hintergrunds, der Kopfzeile und der Fußzeile auf allen Seiten, nur auf der ersten Seite, auf allen Folgeseiten, auf allen geraden Seiten oder allen ungeraden Seiten des Berichts eines Datensatzes dargestellt. Die Berichtelemente des eigentlichen Inhalts werden einmalig dargestellt. Sind nach Fertigstellung einer Seite noch weitere Berichtselemente im eigentlichen Inhalt zu platzieren, erfolgt nach der Fußzeile ein Seitenumbruch und eine weitere Seite wird dem Bericht hinzugefügt.


Voraussetzung für das Einstellen/Ändern der Eigenschaften eines Berichtelements ist, dass dieses selektiert ist.

  • Die Position lässt sich per Drag&Drop in der Ansicht der Berichtvorlage oder durch Eingabe der Koordinaten in der Werkzeugleiste ändern. Dabei entspricht X=0, Y=0 der oberen linken Ecke des Berichts. Handelt es sich um ein Berichtelement in einer Tabelle, so kann die Position nur durch Verschieben der ganzen Tabelle bzw. Ändern der Spaltenbreite verändert werden. Die X-/Y-Koordinaten werden für Elemente in einer Tabelle nicht gezeigt.
  • Die Höhe und Breite lässt sich durch auf/zusammenziehen in der Ansicht der Berichtvorlage oder durch Eingabe entsprechender Werte (in Pixel) in der Werkzeugleiste ändern. Bei Berichtelementen mit Text wird die Höhe im generierten Bericht allerdings automatisch dem Text angepasst, so dass bei diesen Elementen der hier dafür eingestellte Wert nur für die Ansicht im Berichteditor verwendet wird. Die Breite einer Tabelle sowie eines Berichtelements in einer Tabelle lässt sich nur über die Breite der zugehörigen Tabellenspalte(n) anpassen. Dazu muss der linke oder rechte Rand eines verwendeten (!) Tabellenfeldes mit der Maus entsprechend verschoben werden.


Beim Selektieren des Berichtelements öffnet sich ein Kontext-Menü, welches die Einstellung weiterer Eigenschaften ermöglicht.

Folgende Menüpunkte/Anzeigen/Einstellmöglichkeiten befinden sich bei allen Berichtelementen im Kontext-Menü:

  • Die Element-Nr. ist eine eindeutige Identifikation (positive ganze Zahl) für das Berichtelement. Beim Hinzufügen eines neuen Berichtelements wird diese nicht änderbare ID von LIMBAS selbst gesetzt.
  • Der zIndex-Wert
    • ist nur bei entsprechender Einstellung für Sortierung von Bedeutung.
    • wird durch die Menüpunkte in den Vordergrund bzw. in den Hintergrund entsprechend verändert.
    • wird bei gesetzter globaler Berichteinstellung Z-Index berücksichtigen beim Selektieren eines Berichtelements auf den in der Berichtvorlage aktuell höchsten Wert gesetzt.
    • wird durch Z-Index erneuern allen Berichtelementen neu zugewiesen, und zwar so dass es keine Lücken bei den zIndex-Werten gibt. Die bisherige Reihenfolge wird beibehalten.
  • Bei kopieren wird das Berichtelement mit den eingestellten Eigenschaften kopiert.
  • Für den Rahmen der Berichtelemente läßt sich neben der Rahmenfarbe, der Art und der Dicke auch einstellen, welche Kanten (links, rechts, oben, unten) gerahmt werden.
  • Transp. ermöglicht das Durchscheinen des Berichtelements im in Prozent eingestellten Grad.
  • Durch entsprechende Einstellung bei Hintergr wird das Berichtelement auf den Seiten-Hintergrund platziert. Es wird dann je nach Einstellung auf allen Seiten, nur auf der ersten Seite, auf allen Folgeseiten, auf allen geraden Seiten oder allen ungeraden Seiten des Berichts eines Datensatzes dargestellt.
  • Umbruch kann je nach Einstellung vor oder nach dem Berichtelement einen Seitenumbruch erzwingen.
  • Relativ legt fest, dass der Abstand des Berichtelements zum unteren Rand des hier referenzierten Elements immer dem Abstand entspricht, wie es in der Ansicht der Berichtvorlage eingestellt ist. Dies kann sinnvoll sein, wenn das referenzierte Berichtelement variablen Text enthält und daher eine variable Höhe hat.
  • Ist bei abhängig ein Berichtelement des Typs „Dateninhalt“ referenziert und ist dieses bei der Generierung des Berichts leer, so wird das eigentliche Berichtelement im generierten Bericht nicht hinzugefügt.
  • Das Berichtelement wird je nach Einstellung bei versteckt auf allen Seiten, nur auf der ersten Seite, auf allen Folgeseiten, auf allen geraden Seiten oder allen ungeraden Seiten des Berichts eines Datensatzes dargestellt. Das „Verstecken“ eines Berichtelements macht nur Sinn für sich wiederholende Elemente der Kopf-/Fußzeile oder des Hintergrunds.
  • Durch eine der Optionen Kopf oder Fuß wird das Berichtelement zur Kopf- bzw. Fußzeile hinzugefügt und wird nicht als Teil des eigentlichen Inhalts behandelt.
  • Die Option Fixiere Position ist nur sinnvoll für Berichtelemente des eigentlich Inhalts. Bei gesetzter Option werden diese im generierten Bericht an genau der gleichen Position wie in der Berichtvorlage platziert und können den Bereich der Kopf- oder Fußzeile überlappen.
  • Bei löschen wird das Berichtelement ohne weitere Rückfrage gelöscht.

Folgende Menüpunkte/Anzeigen/Einstellmöglichkeiten befinden sich abhängig vom Typ des Berichtelements im Kontext-Menü:

  • Bei Berichtelementen mit Text lässt sich der Font, die Größe, die Darstellung, die Fontfarbe und die Hintergrundfarbe des Textes einstellen. Weiter gibt es eine Einstellung für den Mindest-Abstand vom Rahmen zum Text.
  • Ist die Option Liste beim Berichtelement „Dateninhalt“ gesetzt, bewirkt dies
    • bei zugehörigen Tabellenfeldern vom Typ Verknüpfung, dass die Dateninhalte des jeweiligen Tabellenfeldes von allen verknüpften Datensätzen gelistet werden. Bei nicht gesetzter Option wird nur der erste verknüpfte Datensatz im Bericht berücksichtigt.
    • bei allen anderen zugehörigen Tabellenfeld-Typen, dass die Werte aller Datensätze des zugehörigen Tabellenfeldes gelistet werden.
  • Die bei Separator eingetragenen Zeichen haben zwei Verwendungszwecke:
    • Wird (wie oben beschrieben) beim Berichtelement „Dateninhalt“ der Inhalt aus mehreren Datensätzen gelistet, werden die eingetragenen Zeichen als Trennzeichen verwendet. Falls es keine Eintragung gibt, wird ein Zeilenumbruch eingefügt.
    • Falls in einem Tabellenfeld mehrere innere Berichtelemente vorhanden sind, werden die eingetragenen Zeichen im generierten Bericht zwischen diesen Elementen als Trennzeichen eingefügt. Falls es keine Eintragung gibt, wird in diesem Fall auch nichts eingefügt.
  • Durch Setzen der HTML-Option wird der Text in den Berichtelementen „Textblock“ und „Formel“ als HTML interpretiert. Dabei ist zu beachten, dass hierdurch andere Einstellungen aus dem Kontextmenü überschrieben und somit ungültig werden.
  • Wird bei beim Berichtelement „Dateninhalt“ das Häkchen für ersetzen gesetzt und sofort danach ein neues „Dateninhalt“-Berichtelement, das mit einem anderen Tabellenfeld verknüpft ist, erstellt, so wird das ursprüngliche Berichtelement gelöscht und dem neuen werden die Eigenschaften des ursprünglichen zugewiesen. Diese Funktionalität kann zusammen mit der Kopier-Funktion das Platzieren mehrerer „Dateninhalt“-Berichtelemente in dem Bericht erleichtern. Das Häkchen wird automatisch nach der folgenden Aktion gelöscht.
  • Die Anzahl der Spalten und Zeilen des Berichtelements „Tabelle“ wird durch die Angaben im Kontext-Menü festgelegt.
  • Durch Setzen von colspan bei einem Tabellenfeld kann sich dieses über mehrere Spalten hinweg erstrecken.
  • Bild-Infos zeigen die entsprechenden Informationen einer Graphik-Datei an.
  • proportional für Grafiken aus Dateninhalten
  • Durch Setzen des tagmode für das erste Berichtelement innerhalb eines Tabellenfeldes kann der Text dieses Tabellenfeldes im generierten Bericht über selbst definierte Tags formatiert werden. Ansonsten werden die Eigenschaften vom ersten Berichtelement des Tabellenfeldes für den Text des gesamten Tabellenfeldes verwendet. Die Tags werden in der Datei ./dependent/EXTENSIONS/system/report_tab_tags entsprechend folgendem Beispiel definiert:
    • <exampleTag> mit Schriftart Arial, italic, Textgröße 11, und Textfarbe : $pdf->SetTagStyle(„exampleTag“,“arial“,“I“,11,“0,151,200″);

      Ein Tag kann dann im Text eines Textblocks, Dateninhalts oder einer Formel auf folgende Weise verwendet werden:
    • Text ohne Tag, <exampleTag> dieser Text wird im generierten Bericht entsprechend der Tag-Definition dargestellt,</exampleTag> Text ohne Tag

Unterberichte

Über den Punkt Untermenü der Toolbox im Berichte-Editor können Unterberichte eingehängt werden. Dazu wählt man die Art des Unterberichts (einbetten oder einhängen) aus und den gewünschten Bericht.

  • Einbetten – versucht den Unterbericht direkt in den Hauptbericht zu integrieren als ob er Teil des Hauptberichts ist. Dabei wird Kopf und Fuß des Hauptbericht beibehalten. Elemente des Unterberichts werden einzeln in den Hauptbericht geschrieben. Es wird nur die Y Position des Elements berücksichtigt. Die X Position ergibt sich durch die Positionierung der Elemente des Unterberichts. Ebenso sind Formatierungen des Elements wie z.B. Rahmen oder Breite und Höhe nur über den Unterbericht selbst möglich.
    Ist ein Unterbericht Teil einer Verknüpfung wird Limbas versuchen diese zu finden, aufzulösen und somit nur die verknüpften Datensätze in den Unterbricht zu schreiben. Um dies zu ermöglichen dürfen in einer Tabelle des Unterberichts die Listenelemente nicht mit dem „Liste“ Parameter versehen werden. Bei Unterberichten des Typs „Einhängen“ muß der Parameter „Liste“ gesetzt werden da ansonsten keine Verknüpfungs-Ergebnisse angezeigt werden. Eigenschaften
    Es können aber auch eigenen Parameter übergeben werden welche die Ergebnisse des Unterberichts erzeugen. get_gresult()
    Soll eine eigene Ergebnismenge für den Unterbericht benutzt werden kann dies durch Übergabe eines Arrays mit den Gewünschten IDs geschehen.
  • Einhängen – erzeugt zuerst einen unabhängigen Bericht welcher dann in den Hauptbericht wie ein Bild eingehängt wird. Dies geschieht mittels fpdi. Formatierung sowie Kopf und Fuß können je nach Größe des Unterberichts variieren. Es wird die X und Y Position sowie die Größe des Elements berücksichtigt. Der Unterbericht wird dementsprechend verkleinert oder vergrößert. Dynamische Filter oder Parameter sind derzeit nicht möglich.

Beispiel Parameter

Parameter

$filter["anzahl"][$gtabid] = "all";
$filter["nolimit"][$gtabid] = 1;
$filter["order"][$gtabid][0] = array($gtabid,12,'DESC');
$gsr[$gtabid][12][0] = 'Meier';

Ergebnismenge

return array(1,2,3,4,5);

Html-Templates

Beschrieben unter Html-Templates. Voraussetzung hierfür ist ein Bericht des Formats tcpdf.

Es können eigene CSS-Klassen übergeben werden um das generierte Html eines Dateninhalts zu stylen:

${->Kunde->Name[class=border-red]}

Diese Klassen müssen in einer css-Datei unter EXTENSIONS/css definiert sein. Die Datei muss im Berichtseditor oben rechts bei „css Datei“ eingetragen sein.

Damit werden die Dateninhalte durch ein span-Element mit der angegebenen Klasse umschlossen. Falls statt einem span ein anderes Element (z.B. div) gewünscht ist, kann dies auch übergeben werden:

${->Kunde->Name[class=border-red][element=div]}

Template-Gruppen

Oft teilt ein großer Teil der Briefe das gleiche Layout und nur ein kleiner Teil wird ausgetauscht, z.B. Text-Inhalt oder wessen Unterschrift unten im Brief platziert wird. Für jeden unterschiedlichen Brief müsste ein eigener Limbas-Bericht erstellt werden.

Gruppen-Platzhalter im Wysiwyg-Editor

${{GruppenName}} bzw.

<lmb type="group" name="GruppenName" />

Template-Gruppen vereinfachen dieses Szenario. Es wird nur ein (Grund-)Bericht angelegt, in welchem ein Template-Gruppen-Tag (doppelte geschweifte Klammern, siehe oben) vorkommt. Dieses Tag steht für einen von mehreren Datensätzen der Template-Tabelle (also Text/Html) die zu der angegebenen Gruppe zugewiesen wurden. Soll der Bericht gedruckt werden, wird das Gruppen-Tag erkannt und der Nutzer kann den gewünschten Datensatz der Gruppe auswählen. Ein Datensatz einer Gruppe kann dabei auch selbst wieder Gruppen-Tags enthalten.


${{GruppenName[desc=Beschreibung][id=eindeutige_id]}} bzw.

<lmb type="group" name="GruppenName" title="Beschreibung" id="eindeutige_id" />

Hinter dem Gruppennamen kann eine leserliche Beschreibung des Gruppen-Tags angefügt werden. Diese wird anstelle des Gruppennamens im Druck-Menü angezeigt. Kommen in einem Bericht mehrere Tags der selben Gruppe vor, muss eine eindeutige ID pro Tag vergeben werden um eine korrekte Auflösung der Gruppen zu gewährleisten.

Dynamische Daten

Dynamische Daten-Platzhalter im Wysiwyg-Editor

Sollen in einem Bericht anstelle von Inhalten aus der Datenbank lieber freie Texte angezeigt werden, die der Nutzer vor dem Drucken des Berichts noch eingeben kann, wird folgende Platzhalter-Syntax verwendet:

${"Beschreibung des Textes"} bzw.
<lmb type="dynamicData" title="Beschreibung des Textes" />
Eingabe-Feld in der Berichtsvorschau

Beim Drucken wird dann die Beschreibung mit einem Textfeld angezeigt. Der Wert der in das Textfeld eingetragen wird, erscheint im Bericht anstelle des Platzhalters.

${"Beschreibung"[type=text]} bzw.
<lmb type="dynamicData" title="Beschreibung" data-type="text" />

Der Typ der Daten kann als Option mitgegeben werden. Neben dem Standard Text (text) kann auch die Eingabe einer Zahl (number) oder eines Datums (date) eingestellt werden. Die Syntax der eingegebenen Werte wird dadurch automatisch validiert.

${"Beschreibung"[type=select][select_id=42]} bzw.
<lmb type="dynamicData" title="Beschreibung" data-type="select" data-select_id="42" />

Außerdem können mit dem Typ select Werte aus einem Limbas-Pool zur Auswahl gestellt werden.

${"Beschreibung"[type=extension][function=selectUser]} bzw.
<lmb type="dynamicData" title="Beschreibung" data-type="extension" data-function="selectUser" />

Das System kann beliebig erweitert werden. In diesem Beispiel wird die Funktion report_selectUser (gespeichert in einer ext_report.inc Datei) aufgerufen. Die Funktion ist dann dafür zuständig, den Kontextmenü-Eintrag darzustellen. Am einfachsten geht das mit den pop_*-Funktionen aus der limbas_src/lib/context.lib, z.B. pop_input2 für ein Textfeld oder pop_select für ein Selectfeld. Möchte man freies Html anzeigen, kann folgendes Schema verwendet werden:

function report_name($name, $desc, $options) {
    pop_left();
    // echo ...
    pop_right();
}

Die Funktion muss 3 Parameter empfangen: $name Der erste Parameter ist der Name des input/select, den die Funktion darstellen soll. Stellt die Funktion kein input/select dar, sollte ein <input type="hidden" name="$name"> verwendet werden. $desc Der zweite Parameter ist die Beschreibung, die der Nutzer im Platzhalter angibt. Sie sollte dargestellt werden damit klar ist, um welchen Tag es sich handelt. $options Der dritte Parameter ist ein assoziatives Array aller Optionen des Platzhalters. So kann die Erweiterung flexibel gestaltet werden.

Seitenumbruch

Aus dem Html heraus kann man so einen Seitenumbruch erzwingen:

<br pagebreak="true">

Da der Wysiwyg-Editor ihm unbekannte Attribute wie „pagebreak“ rausfiltert, ist es einfacher in den Erweiterungen eine Template-Funktion zu erstellen und diese dann aus dem Template-Element aufzurufen:

function report_pagebreak() {
    return '<br pagebreak="true">';
}
beliebiges Html
${=pagebreak()}
beliebiges Html auf neuer Seite

Hintergrundbild

Aus dem Template heraus kann ein Hintergrundbild für den Bericht gesetzt werden. Es wird auf jeder Seite des Berichts im Hintergrund sein. Der erste Parameter ist entweder die Limbas Datei-ID oder ein Pfad im Limbas DMS. Es werden Bilder und PDFs unterstützt:

${=background(42)}
${=background("öffentlicher Ordner/Dokumente/Berichtsvorlage.png")}
${=background("öffentlicher Ordner/Dokumente/Berichtsvorlage.pdf")}

Es folgen 4 optionale Parameter (x, y, width, height) zur Positionierung und Größe.

X und Y geben die Position des Bildes ab der oberen linken Ecke des Berichts an. Wenn einer nicht angegeben wird (-1), wird automatisch der Abstand zum Rand genommen, welcher im Limbas-Bericht eingestellt ist. Möchte man das Bild ohne Abstände seitenfüllend anzeigen, kann man x und y auf 0 setzen.

Width und Height geben die Breite/Höhe des Bildes an. Wenn hier ein Parameter nicht angegeben wird (-1), wird er so berechnet, dass das Bild zentriert auf der Seite steht.

${=background(42)}                 // zentriert auf Seite mit Abstand zum Rand
${=background(42, 0, 0)}           // füllt Seite komplett
${=background(42, 0, -1, -1, 200)} // links und rechts bündig mit Seite, Abstand oben, Höhe 200
${=background(42, 200, 400)}       // kleines Kästchen in der Mitte der Seite

Ist bei dem Limbas-Bericht ein Abstand (page margin) gesetzt, kann ein Bild leider nicht auf die volle Breite skaliert werden. Es muss dann ein PDF als Hintergrund gewählt werden.

Diagramme

Ein Diagramm kann über die Werkzeugleiste und dem entsprechendem Diagrammsymbol eingebunden werden. Dabei muß vor dem Einfügen das Diagramm aus der Auswahlliste ausgewählt werden. Diagramme werden grundsätzlich aus dem gesamten Ergebnis der zugrundeliegenden Abfrage erstellt. Soll das Diagramm nach dem zu erstellenden Bericht gefiltert werden können die Filter über in die Parameter im Kontextmenü eingetragen werden. Es ist dabei möglich die Parameter $extension, $gsr und $filter zu übergeben. Sie haben die gleiche Struktur wie die get_gresult Funktion.

Beispiel Parameter

Das Beispiel filtert die Abfrage des Diagramms mit der ID 11 durch das Feld mit der ID 2 und dem Wert der Datensatz $ID mit dem der Bericht aufgerufen wurde sowie das Feld der ID 2 mit dem festen Wert ‚2019‘. siehe auch $gsr oder $extension

$gsr[11][1][0] = $ID;
$gsr[11][2][0] = '2019';

oder

$extension['where'][0] = "MYID = $ID AND YEAR = '2019'";

Formeln & Funktionen

Berichte können mit eigenen Funktionen oder Berechnungen erweitert werden. Ebenso kann direkt mit Hilfe der fpdf-Funktionen auf den Bericht Einfluss genommen werden. Umgesetzt werden kann dies mit Hilfe des Formel-Elements welches PHP Code enthalten kann. Formel-Elemente können als Einzelelemente oder auch in Tabellen genutzt werden.

Styledefinitionen

  • 0 = font-family;
  • 1 = font-style;
  • 2 = font-variant;
  • 3 = font-size;
  • 4 = font-weight;
  • 5 = word-spacing;
  • 6 = letter-spacing;
  • 7 = text-decoration;
  • 8 = text-transform;
  • 9 = color;
  • 10 = text-shadow;
  • 11 = line-height;
  • 12 = text-align;
  • 13 = (border)
  • 14 = border-style;
  • 15 = border-color;
  • 16 = border-width;
  • 17 = border-left;
  • 18 = border-right;
  • 19 = border-top;
  • 20 = border-bottom;
  • 21 = background-color;
  • 22 = cellpadding;
  • 23 = vertical-align;
  • 24 = opacity;

Zusatz-Style

  • 25 = line-reverse;
  • 26 = prop (proportional);
  • 27 = head;
  • 28 = foot;
  • 29 = hidden;
  • 30 = report_tab_rows;
  • 31 = report_tab_cells;
  • 32 = background;
  • 33 = list;
  • 34 = pagebreak;
  • 35 = lock pagebreak;
  • 36 = relativepos;
  • 37 = colspan;
  • 38 = rowspan;
  • 39 = display if element;
  • 40 = seperator of multible table-row elements;
  • 41 = tagmode;
  • 42 = html;
  • 43 = writing-mode

auf Variablen zugreifen

Auf Inhalte von Elementen im Bericht (auch versteckten) kann über das Formel-Element zugegriffen werden.

Einzelelement:

$glob_el[elid][number]
  • elid: Die eindeutige Element-ID. Ist über das Kontextmenü als erster Punkt „Element“ bei klick auf ein Element ersichtlich.
  • number: Die Element-Nummer. Aufsteigende Nummer beginnend mit „0“. Falls mehrere Werte vorhanden (Aus Verknüpfung) kann hier die Reihennummer gewählt werden, ansonsten immer „0“.

Tabellenelement:

$glob_rowel[elid][$ROWNR]
  • elid: Die eindeutige Element-ID. Ist über das Kontextmenü als erster Punkt „Element“ bei klick auf ein Element ersichtlich.
  • $ROWNR: Die Tabellen-Zeile. Aufsteigende Nummer beginnend mit „0“. Es kann direkt die Variable „$ROWNR“ genutzt werden um auf Elemente der Gleichen Zeile zuzugreifen.

Elementstyle bearbeiten:

$report['style'][$report['arg_result'][elid]][styleid] = 1; 
  • elid: Die eindeutige Element-ID. Ist über das Kontextmenü als erster Punkt „Element“ bei klick auf ein Element ersichtlich.
  • styleid: Die Style-Nummer. Die Nummer des Styles, den man verändern möchte. Siehe oben.

Funktionen

Die Rückgabe von Werten über Formel-Element wird durch „return“ oder durch die Variable „$arg_result“ definiert. Es können auch eigene Funktionen aufgerufen werden.

Beispiele














OpenOffice

Eine weitere Alternative, Berichte mit LIMBAS zu generieren, ist das Berichtsmodul für .odt Dokumente Mit dieser Erweiterung lässt sich ein OpenOffice-Dokument aus einer schon vorhandenen PDF-Vorlage erstellen. Dazu wird der Bericht zuerst als XML geschrieben, womit dann letztendlich die Vorlage ergänzt wird.
Um einen .odt Dokument zu generieren, benötigen wir eine Vorlage, die selbst ein .odt Dokument ist. Wir definieren lediglich die Platzhalter, die später ersetzt werden sollen. Zur Übersicht können wir uns den Bericht als XML ausgeben lassen und die Namen mit den Platzhaltern vergleichen. Danach speichern wir es im LIMBAS-Dateimanager in einem beliebigen Verzeichnis und wählen es im Admin-Bereich der Berichtsübersicht als Office-Vorlage aus. Bei Änderungen am Template kann das Template direkt im Dateimanager ausgewechlselt werden.
Es müssen alle Felder die im Template benötigt werden auch in der Limbas-Berichtvorlage vorhanden werden. Dabei wird die Positionierung und Formatierung der Elemente nicht berücksichtigt, wohl aber Verknüpfungen oder Listen. Es kann auch auch ein als PDF vorgesehener Bericht als Berichtvorlage genutzt werden und so zwischen dem PDF und odt Format gewechselt werden.
Zu beachten ist das die Vorlagen weitestgehend eigenhändig und weniger mit copy&paste aus anderen Dokumenten gefüllt werden. Ansonsten besteht die Gefahr das das Dokument nicht mehr von Limbas generiert werden kann.

Beispiel

Template Platzhalter:

${zeit_von} - ${zeit_bis}
Land: ${land}
Ort: ${ort}
PLZ: ${plz}
${positionen:name} ${positionen:preis} # für Tabellenausgaben

Hier die zugehörige XML-Ausgabe:

<report name=“Chronik“>
<item id=“1“>
<text name=“zeit_von“>17.10.1977</text>
<text name=“zeit_bis“>22.10.1977</text>
<text name=“land“>Schweiz</text>
<text name=“ort“/>
<text name=“plz“>12356</text>
</item>
</report>
Share this Doc

Berichte

Or copy link

CONTENTS