Berichte
Aus Limbas Wiki
Admin->Berichte → zurück zu LIMBAS Admin
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.
Inhaltsverzeichnis |
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äßt 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 Limbas Berichts ausgeführt. Die komplette Rechtestruktur bleibt erhalten.
- Ablageordner: Für jeden neuen Bericht wird ein Ordner mit dem Namen des Berichts angelegt. Standartmäßig wird der Bericht in diesem Ordern abgelegt. Alternativ kann auch Unterordner dieses Ordner als Ablageort definiert werden.
- 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äßt 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/Grröß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 plaziert. Ü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 plaziert werden, wird durch die y-Koordinate der Berichtelemente bestimmt. Dabei wird das Element mit der niedrigsten y-Koordinate zuerst plaziert. 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 muß diese zuerst angelegt werden. Vor dem Hinzufügen des inneren Berichtelements muß das entsprechende Tabellenfeld selektiert sein. Das erste innere Berichtelement wird dann in der oberen linken Ecke des Tabellenfeldes plaziert, 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 Plazierung 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
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 enstprechenden 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 plaziert 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 plazieren, 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äßt 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äßt 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 angepaßt, 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äßt 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 plaziert. 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 plaziert 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äßt 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 Plazieren 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 generieriten Bericht entsprechend der Tag-Definition dargestellt,</exampleTag> Text ohne Tag
Formeln & Funktionen
Berichte können mit eigenen Funktionen oder Berechnungen erweitert werden. Ebenso kann direkt mit Hilfe der fpdf-Funktionen auf den Bericht einfluß 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.
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ält 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.
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
Beispiel 1
Ein Rechnungsbericht hat unter anderem die Elemente (Name, Vorname und Anrede) für die Adresszeile. Im Bericht soll eine spezifische Anrede genutzt werden. Die Elemente haben die folgenden IDs : Name:1; Vorname:2; Anrede:3. Es wird ein neues Formel-Element mit folgendem Inhalt hinzugefügt:
if($glob_el[3][0] == 'Frau'){
$arg_result = "Sehr geehrte Frau ".$glob_el[2][0];
}elseif($glob_el[3][0] == 'Herr'){
$arg_result = "Sehr geehrter Herr ".$glob_el[2][0];
}else{
$arg_result = "Sehr geehrte Damen und Herren";
}
Beispiel 2
Berechnung eines Wertes über eine eigene Funktion. Es kann das ganze Elemnt-Array "$glob_el" übergeben werden. Die Funktion "getMyExtZF()" kann über die Skript-Erweiterungen hinzugefügt werden.
return getMyExtZF($glob_el);
Beispiel 3
Berechnung des Bruttowertes von Rechnugspositionen einer Berichts-Tabelle. Es existiert ein Tabellenelement des Nettowertes mit der Element-ID 12 in der gleichen Zeile wie das Formelelement
$arg_result = ($glob_rowel[12][$ROWNR]*1.19);
Beispiel 4
Berechnung der Summe von Rechnugspositionen einer Berichts-Tabelle.
$arg_result = number_format(array_sum($glob_rowel[12]),'2',',','.')." €";
Beispiel 5
Tabellen-Zeile bei Bedingung nicht anzeigen:
if($glob_rowel[4][$ROWNR] > 100){
$arg_result="#HIDEROW";
}
Beispiel 6
Einen weiteren Bericht mit der Bericht-ID 6 anhängen. Kopf und Fuß werden vom ersten Bericht übernommen und in den Folgeberichten ignoriert
append_report(6,$ID);
