HTML - Vorlagen
- Alle Dokumente, die der OrgaMon erzeugt sind .html Dateien
- Diese werden nicht aus eigener Kraft erstellt, sondern grundsätzlich anhand einer .html Vorlage-Datei "ausbelichtet" (HTMLVorlage)
- Dabei wird die Vorlage aus dem Verzeichnis ".\HTML Vorlagen\" geladen und alle
~Platzhalter~
durch einen echten Inhalt ersetzt - Für die Änderung der Vorlagen empfiehlt sich notepad++
- Damit können Sie einen rechten Mausklick auf die .html Vorlage machen und "Beabeiten mit notepad++" auswählen
Belege
- Belege steuern durch das Feld BSTATUS und VORLAGE_PREFIX den Dateinamen der Vorlage, die geladen wird
BSTATUS
BSTATUS HTML-Vorlage A Angebot.html G Garantie.html Z Zeitabrechnung.html ansonsten Rechnung.html
- Ist "als Lieferschein" angekreuzt heisst die Vorlage
Lieferschein.html
VORLAGE_PREFIX
- Vor den jeweiligen Dateinamen wird noch der VORLAGE_PREFIX gesetzt
- Besonders bei Verträgen kann im Vorlage-Beleg der Vorlage-Prefix geschickt gesteuert werden um auf der Rechnung das richtig Outfit festzulegen.
- Man beachte dass allein durch Wahl einer Motivation (bei der Belegneuanlage) auch der Vorlage-Prefix bestimmt werden kann!
- In der MOTIVATION kann eingeschlossen in eckigen Klammern der Vorlage-Prefix vorbereitet werden (z.B. "USA Besteller [US-]")
BLOCK
Ein "BLOCKS" ermöglicht es mehrzeilige Tabellen auszugeben. In der Vorlage markiert man einen Abschnitt als Block der beim Laden zunächst entfernt wird. "Braucht" die Ausbelichtung diesen Block wird er an einer "insert"-Marke eingefügt und ausbelichtet. Gibt es z.B. 3 Zeilen in einer Datenbank-Tabelle, so wird der Block 3 mal hintereinander mit unterschiedlichen Daten ausgegeben.
Variable
Je nach Context stellt der OrgaMon verschiedenen Variable zur Verfügung, die im Template verwendet werden können. Im Rahmen der Belichtung werden die Variable ersetzt, und es erscheinen anstelle des Variablennamen echte Inhalte. Es gibt vordefinierte Variablen Listen, die bei den meisten Dokumenten verfübgar sind.
Basis
~Datum~ heutiges Datum
Artikel
~Artikel~ TITEL ~No~ NUMERO ~Komponist~ e_r_MusikerName(KOMPONIST_R) ~KomponistNachname~ e_r_MusikerNurNachName(KOMPONIST_R) ~Arrangeur~ e_r_MusikerName(ARRANGEUR_R) ~ArrangeurNachname~ e_r_MusikerNurNachName(ARRANGEUR_R) ~Verlag~ e_r_Verlag(VERLAG_R) ~VerlagNo~ VERLAGNO ~Konto~ b_r_Konto(SORTIMENT_R) ~Lager~ e_r_LagerPlatzNameFromLAGER_R(LAGER_R) ~GEMA_WN~ GEMA_WN
Personen
~K#~ NUMMER ~H#~ HAUPT_NUMMER ~KontoAR~ KONTO_AR ~KontoER~ KONTO_ER ~Anrede~ ANREDE ~Ansprache~ ANSPRACHE ~Vorname~ VORNAME ~Nachname~ NACHNAME ~Name~ VORNAME ' ' NACHNAME ~Fax~ PERSON ~Telefon~ e_r_telefon(RID) ~Handy~ HANDY ~eMail~ USER_ID ~Versicherungsnummer~ VERSICHERUNGSNUMMER ~Adressat1~ e_r_Adressat(RID)[0] ~Adressat2~ e_r_Adressat(RID)[1] ~Adressat3~ e_r_Adressat(RID)[2] ~Adressat4~ e_r_Adressat(RID)[3] ~Name1~ NAME1 ~Name2~ NAME2 ~Strasse~ STRASSE ~Ort~ e_r_Ort(PRIV_ANSCHRIFT_R)
Formatierungen mit "!"
- Feldinhalte lassen sich noch in ihrem Format verändern, also ~B2~!
- siehe hier
Mehrseitigkeit
Bei mehrseitigen Dokumenten muss man 4 Typen von Seiten vorbereiten (Für jeden Typ einen BLOCK):
- PAGE_SINGLE: Die "erste" Seite für den Fall, dass alles auf einer Seite Platz hat
- PAGE_FIRST: Die "erste" Seite für den Fall, dass ein mehrseitiges Dokument ensteht
- PAGE_NEXT: Bei mehrseitigen Dokumenten, ist es die Seite 2 ff
- PAGE_LAST: Bei zumindest 2 seitigen Dokumenten ist es die letzte Seite
Einseitige Vorlage
<html>
<titel></titel>
Hallo Welt!
<br>
Heute ist der ~DATUM~!<br>
</html>
Blocks
- Mit "BEGIN BlockName" werden Blocks eingeleitet
- Mit "END BlockName" abgeschlossen
<
<!-- BEGIN ARTIKEL EVEN -->
< tr>
< td align=center height=10 bgcolor="#E8F4F8">< font face="Verdana" size=-1>~ArtNo~< /td>
< td height=10 bgcolor="#E8F4F8">< font face="Verdana" size=-3>~AusgabeArt~~ArtTxt~< /font>< /td>
< td align=right height=10 bgcolor="#E8F4F8">< font face="Verdana" size=-1>~Menge~ < /font>< /td>
< td align=right height=10 bgcolor="#E8F4F8">< font face="Verdana" size=-1>~Wert~ < /font>< /td>
< td align=right height=10 bgcolor="#E8F4F8">< font face="Verdana" size=-1>~Percent~ < /font>< /td>
< td align=right height=10 bgcolor="#E8F4F8">< font face="Verdana" size=-1>~Anteil~ < /font>< /td>
<!-- END ARTIKEL EVEN -->
<!-- BEGIN ARTIKEL ODD -->
~ArtNo~
~AusgabeArt~~ArtTxt~
~Menge~
~Wert~
~Percent~
~Anteil~
<!-- END ARTIKEL ODD -->
<!-- INSERT ARTIKEL -->
Includes
- Rechnung, Mahnung, Bestellung - sie alle teilen sich oft identische Vorlagen-Anteile, diese können zentral in einer eigenen Datei abgelegt werden, und von den "grossen" Vorlagen einbezogen werden. An die Stelle des Befehles
<!-- INCLUDE datei.html -->
wird die komplette Datei "datei.html" eingelesen und an diesem Platz eingefügt. - Wird "INCLUDE datei.html" z.B. inerhalb der Vorlage Rechnung.html verwendet, so wird zunächst
- im ersten Rang die Datei Rechnung.html.datei.html gesucht, wird sie nicht gefunden so wird
- im zweiten Rang die Datei datei.html gesucht
<!-- BEGIN PAGE_SINGLE --> <!-- SET MAXLINES 28 PunkteText,Text,MW --> <br> <table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td width=5%> </td> <td width=95%> <font face="Verdana" size=3><b>OrgaMon-App Projektentwicklung Umlagebeleg ~R#~</b><br> <br> <!-- INCLUDE header.html --> <!-- INCLUDE tablesumme.html --> <!-- INCLUDE footer.html --> </td> </tr> </table> <!-- END PAGE_SINGLE -->
Mehrseitige Vorlage
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <HEAD> <title></title> <META HTTP-EQUIV="Pragma" content="no-cache"> <META HTTP-EQUIV="Cache-Control" content="no-cache, must-revalidate"> <META HTTP-EQUIV="Expires" content="0"> <STYLE TYPE="text/css"> <!-- P.breakhere {page-break-before: always} --> </STYLE> </HEAD> <body bgcolor="#ffffff" text="#000000" link="#cc0000" vlink="#999999" alink="#ffcc00"> <!-- BEGIN PAGE_SINGLE --> <!-- SET MAXLINES 16 ArtTxt --> <br> <br> <br>... <!-- END PAGE_SINGLE --> <!-- BEGIN PAGE_FIRST --> <!-- SET MAXLINES 18 ArtTxt --> <P class="breakhere"></P> <!-- END PAGE_FIRST --> <!-- BEGIN PAGE_NEXT --> <!-- SET MAXLINES 29 ArtTxt,!MW --> <P class="breakhere"></P> <!-- END PAGE_NEXT --> <!-- BEGIN PAGE_LAST --> <!-- SET MAXLINES 18 ArtTxt,MW --> <!-- END PAGE_LAST --> <!-- INSERT PAGE --> </body> </html>
MAXLINES
COSUMER - Begriff
- Consumer sind ~Platzhalter~, die im Falle einer Ausbelichtung Platz benötigen
- "!" sind Nicht-Consumer, die nicht auf eine Seite ausbelichtet werden dürfen
Implementierung
// konstante Daten, die auf jeder Seite gleich sind DatenSammlerGlobal: TStringList; //
// lokale Block-Daten, die wechseln DatenSammlerLokal: TStringList; //
Kommandos
local
pagebreak
- Erzeugt einen Seitenumbruch
save&delete
- sucht und speichert einen Block intern
- löscht den Block aus der Vorlage
- der Block wird später in der Regel mit
load
an einer definierten insert Stelle in der Vorlage geladen
set
- setzt eine Systemvariable auf den angegebenen Wert
set Anlagenverzeichnis J:\Fotos\stadtwerke\ set Kontext 2882317 set Referenz 95437997 set Z#$E4hlwerkeAusbauIst 1 set Z#$E4hlwerkeEinbauIst 1 set Referenzquelle J:\xml\Referenz.xml
load FROMBLOCK[{|OTHERBLOCK}][,ASBLOCK]
- Lädt den definierten BLOCK "FROMBLOCK" und fügt ihn an der Insert-Position bei "ASBLOCK" ein.
- Ist "ASBLOCK" nicht definiert, so wird der Block an der Insert-Position "FROMBLOCK" eingefügt.
- Ist "FROMBLOCK" undefiniert wird der Block Namens "ASBLOCK" benutzt, so kann man speziell benannte optionale Blocks definieren, der load gelingt aber dennoch sollte der spezielle Block nicht vorhanden sein
- ein oder mehrere
OTHERBLOCK
können zusätzlich angegeben werden- von links nach rechts wird dann geprüft, ob es der angegebenen Block existiert und auch Inhalt hat, ist das so, wird er benutzt
- existiert keiner, so wird ASBLOCK benutzt
write
- wie load, löscht jedoch die insert Marke
save
- Block suchen und intern abspeichern
clear
- Block aus der Vorlage löschen
delete
- wie clear, jedoch Fehlertolerant, den Block muss es nicht unbedingt geben
dereference
- Werte aus einer externen Datenquelle auflösen
Blocks
BEGIN
END
INSERT
INCLUDE
cHTML_MaxLines = '