Bei tiefen parse_filters with_objects mit prefix bauen.
[kivitendo-erp.git] / doc / 2011-12-14_alternatives_vorlagensystem_f-tex.txt
1 README lx-office Fancy-LaTeX  (f-tex)
2
3 # Revision 1.0-u  (16.11.2011)
4 # Revision 0.9  (13.11.2011)
5 # Revision 0.8  (12.09.2011)
6 # Revision 0.7  (12.07.2011)
7 # Revision 0.6  (16.06.2011)
8 # Revision 0.5  (15.04.2011)
9 # Revision 0.4  (14.02.2011)
10 # Revision 0.3  (03.01.2011)
11 # Revision 0.2  (24.12.2010)
12 # Revision 0.1  (03.11.2009)
13
14
15 # Einleitung
16
17   Es gibt ein alternatives LaTeX Vorlagensystem im Verzeichnis
18     templates/f-tex
19   Fuer das Einrichten der Vorlagen gibt es ein Setup-Script
20
21
22 # Voraussetzung:
23
24   - funktionierende Lx-Office Intallation
25   - mindestens eine Mandantendatenbank
26   weiter ist es hilfreich:
27   - mindestens einen Benutzer mit Verweis auf ein Vorlagenverzeichs
28   - Bereits angelegte Sprachkuerzel, wenn mehrsprachige Dokumente erstellt
29     werden sollen.
30
31 # Feature Uebersicht
32
33   - einfach Nutzung durch mitgeliefertes Setup-Script
34   - Keine Retundanz. Es wird ein und die selbe Latex-Vorlage fuer alle
35     briefartigen Dokumente verwendet. Also Angebot, Rechnung,
36     Performarechnung, Lieferschein, aber eben nicht fuer Paketaufkleber
37     etc..
38   - Leichte Anpassung an das Firmen Layout durch verwendung eines Hintergrund-PDF
39     dieses kann leicht mit dem eigenen Lieblingsprogramm erstellt werden
40     (Openoffice, Inkscape, Gimp, Adobe*)
41   - Hintergrundpdf um schaltbar auf "nur erste Seite" (default) oder "alle Seiten"
42     (option "bgPdfFirstPageOnly" in Datei letter.lco)
43   - Hintergrundpdf fuer Ausdruck auf bereits bedrucktem Briefpapier Abschaltbar,
44     es wird dann nur bei per email versendeten Dokumenten eingebunden.
45     (Option "bgPdfEmailOnly" in Datei letter.lco)
46   - Nutzung der Layout-Funktionen von Latex fuer Seitenumbruch,
47     wiederholung von Kopfzeilen, Zwischensummen etc. (danke an Kai-Martin fuer
48     die Vorarbeit)
49   - Anzeige des Empfaengerlandes im Adressfeld nur, wenn es vom Land des
50     eigenen Unternehmens abweicht (also die Rechnung das Land verlaesst).
51   - Multisprachfaehig leicht um weitere Sprachen zu erweitern, alle
52     Übersetzungen in der Datei translatinos.tex.
53   - Auflistung von Bruttopreisen fuer Endverbraucher.
54
55
56
57
58 # die Installation
59
60   Wenn es noch keine LaTeX installation gibt, installiere die folgenden Pakete
61   (Debian)
62     aptitude install \
63       texlive-base-bin \
64       texlive-latex-recommended \
65       texlive-fonts-recommended \
66       texlive-latex-extra \
67       texlive-lang-german \
68       texlive-generic-extra
69   (Info fuer != Debian Installationen: die Abhaengigkeiten werden waehrend des
70   Setups nochmals geprueft)
71
72   Rufe das folgende Script auf:
73    [lxo-home]/templates/f-tex/setup.sh
74   und folge den Anweisungen.
75
76   Erstelle eine pdf-Hintergrund Datei und verlinke sie nach ./letter_head.pdf
77
78   Editiere den Bereich "settings" in der datei letter.lco ""
79
80   # oder etwas Detaillierter:
81   Es wird eine Datei sample.lco erstellt und diese nach letter.lco verlinkt.
82   Eigentlich ist dies die Datei die fuer die Firmenspezifischen Anpassungen
83   gedacht ist.  Da die Einstiegshuerde in LaTeX nicht ganz niedrig ist, wird in
84   dieser Datei auf ein Hintergrundpdf verwiesen. Ich empfehle ueber dieses pdf
85   die persoenlichen Layoutanpassungen vorzunehmen und sample.lco unveraendert zu
86   lassen. Die die Anpassung ueber eine *.lco Datei die letztlich auf letter.lco
87   verlinkt ist ist aber auch moeglich.
88
89   Es wird eine Datei sample_head.pdf mit ausgeliefert, diese wird nach
90   letter_head.pdf verlinkt. Damit gibt es schon mal eine Funktionsfaehige
91   Vorlage. Schau Dir nach Abschluss der Installation die Datei sample_haed.pdf
92   an und erstelle ein entsprechendes pdf passend zum Briefkopf Deiner Firma,
93   diese dann im Template Verzeichniss ablegen und statt sample_head.pdf nach
94   letter_head.pdf verlinken.
95
96   per default erstellt das Setupscript einen symbolischen Link
97   ./sample_head.pdf -> ./letter_head.pdf
98   letzlich muss ./letter_head.pdf auf das passende Hintergrundpdf verweisen,
99   welches gewuenschten Briefkopf enthaelt. Bei Updates oder nach erneutem
100   Aufruf des setup Scripts werden bestehende Links nicht ohne Rueckfrage
101   ersetzt, wer also schon seinen Briefkopf verlinkt hat, braucht diesen Link
102   nicht immer wieder neu anlegen. Das gleiche Prinzip gilt fuer letter.lco.
103
104   Es wird eine Datei mydata.tex erstellt, sie ist mit der aus
105   lp (Label Print in erp) kompatibel. Diese braucht man also nur einmal
106   fuer jedes template Verzeichnis zu generieren.
107   Bei Formatierungsschwierigkeiten bitte mit
108   [lxo-home]/templates/f-tex/mydata.tex.example vergleichen.
109
110   Alle Anpassungen zum Briefkopf, Fusszeilen, Firmenlogos, etc.
111   sollten ueber die Hintergrund pdf datei oder die *.lco Datei erfolgen.
112
113
114 # einheitliche Latex-Vorlagen -- Background
115
116   Das Konzept von lx-office sieht vor, fuer jedes Dokument
117   (Auftragsbestaetigung, Lieferschein, Rechnung, etc.) eine
118   Latex-Vorlage vorzuhalten, dies ist sehr Wartungsunfreundlich. Auch
119   das Einlesen einer einheitlichen Quelle fuer den Briefkopf bringt nur
120   bedingte Vorteile, da hier leicht die Pflege der Artikel-Tabellen aus
121   dem Ruder laeuft. Bei dem vorliegenden Ansatz wird fuer alle
122   Briefartigen Dokumente mit Artikel-Tabellen eine einheitliche
123   Latexvorlage verwendet, welche ueber Codeweichen die Besonderheiten
124   der jeweiligen Dokumente Beruecksichtigt
125     - Tabellen mit oder ohne Preis
126     - Sprache der Tabellenueberschriften etc.
127     - Anpassung der Bezugs-Zeile (z.B. Rechnungsnummer versus
128       Angebotsnummer)
129     - Darstellung von Brutto oder Netto-Preisen in der Auflistung
130       (Endverbraucher versus Gewerblicher Kunde)
131   Dies laesst sich in lx-office nur ueber einen Kunstgriff realisieren,
132   da zum einen die perl-Anwendung nach latex-Vorlagen mit bestimmten
133   Namen sucht (z.B. sales_order_de.tex fuer die deutschsprachige
134   Auftragsbestaetigung -- wenn deutsch mit dem Vorlagenkuerzel de
135   angelegt wurde) und zum Anderen die Information um welches Dokument es
136   sich handelt nicht direkt innerhalb von Latex zur Verfuegung steht.
137
138   Umgesetzt wurde dies hier nun ueber symbolische Links im Dateisystem.  Es
139   gibt also eine Vorlage letter.tex (die ihrerseits weitere tex-Dateien
140   einbindet) und fuer jeden Dokumenttyp der durch letter.tex abgedeckt on von
141   jedem dieser wiederum in jeder verfuegbaren Sprache legt das setup Script einen
142   link in der lx-office Namenskonvention an, der auf die Datei letter.tex
143   verweist. Die Datei letter.tex wertet den Namen der Aufgerufenen Datei aus und
144   passt ihre Ausgabe dementsprechend an. Wenn zum Beispiel lx-office die Datei
145   packing_list_de.tex aufruft (die ja nur ein Link nach letter.tex ist) liegt die
146   Information des aktuellen Dokumentnamen (packing_list_de.tex) vor und latex
147   weiss, keine Preise, Lieferscheinnummer anzeigen, deutsche sprachumgebung, usw.
148
149   Es liegt mit der Datei setup.sh ein script vor, welches die Abhaengigkeiten
150   im System prueft und die benotigten Dateien und symbolischen Links erstellt.
151   Das script ist so aufgebaut, dass es bei Updates auch auf bestehende f-tex
152   Vorlagenordner angewendet werden kann, ohne vorhandene Personalisierungen zu
153   ueberschreiben. Die Benoetigten Informationen wie Template-Verzeichniss,
154   vorhandene Sprachkuerzel, etc werden waerend des setupprozesses abgefragt. Der
155   Setupprozess kann also sooft wie benoetigt wiederholt werden, auch wenn bereits
156   ein templateverzeichniss existiert.
157
158
159   Nachteil:
160   Ja, alles hat seinen Preis ...
161   Latex hat ohnehin eine sehr steile Lehrnkurve. Die Datei letter.tex
162   ist sehr komplex und verstaerkt damit diesen Effekt noch einmal erheblich.
163   Wer Latex-Erfahrung hat, oder geuebt ist Scriptsparachen nachzuvollziehen kann
164   natuerlich auch innerhalb der Tabellendarstellung gut persoenliche Anpassungen
165   vornehmen. Aber man kann sich hier bei Veraenderungen sehr schnell haeftig in
166   den Fuss schiessen.
167   Wer nicht so tief in die Materie einsteigen will oder leicht zu
168   frustrieren ist, sollte sein Hintergrund PDF auf Basis der mitglieferten
169   Datei sample_head.pdf erstellen, und sich an der Form der dargestellten Tabellen
170   wie sie ausgeliefert werden, erfreuen.
171   Kleiner Tipp:
172
173     Nicht zu viel auf einmal wollen, lieber kleine kontinuierliche
174     Schritte gehen.
175
176   Alternativ kann man sich natuerlich fuer die Latex-Vorlagen
177   professionelle Hilfe hohlen.
178
179
180 Bruttopreise fuer Endvorbraucher
181   Der auszuweisende Bruttopreis wird innerhalb der LaTeX Umgebung berechnet.
182
183   - Background:
184     es gibt zwar ein Feld um bei Auftraegen "alle Preise Brutto" auszuwaehlen,
185     aber:
186       - hierfuer muessen die Preise auch in Brutto in der Datenbank stehen
187         (ja -- das laesst sich ueber die Preisgruppen und die Zuordung einer Default-Preisgruppe
188         handhaben)
189       - man darf beim Anlegen des Vorgangs nicht vergessen Dieses Haekchen zu setzen.
190         (das ist in der Praxis wenn man sowohl Endverbraucher- wie Gewerbekunden beliefert
191        der eigentliche Knackpunkt)
192
193   Es gibt mit f-tex eine weitere Alternative. Die Information ob Brutto oder
194   Nettorechnung wird mit den Zahlarten verknuepft. Zahlarten bei denen
195   Rechnungen, Angebote, etc, in Brutto ausgegeben werden sollen enden mit "_E"
196   (fuer Endverbraucher) Falls identische Zahlarten fuer Gewerbekunden und
197   Endverbraucher vorhanden sind legt man diese einfach doppelt an (einmal mit
198   der Namensendung "_E")
199   - Gewinn:
200     - die Entscheidung ob Netopreise ausgewiesen werden ist nicht mehr fix
201       mit einer Preisliste Verbunden.
202     - die Default-Zahlart kann im Kundendatensatz hinterlegt werden und man
203       muss nicht mehr daran denken "alle Preise Netto" auszuwaehlen.
204     - Die Entscheidung ob Netto/Oder Bruttopreise ausgewiesen werden kann direkt
205       beim Drucken reviediert werden, ohne dass sich der Auftragswert aendert.
206
207 Lieferadressen
208
209   - in Lieferscheinen kommen shipto* -Variablen im Adressfeld zum Einsatz
210   - wenn die shipto*variable leer ist wird die entsprechende
211     Adressvariable eingesetzt.  Wenn Also die Lieferadresse in Strasse,
212     Hausnummer und Ort abweicht, muessen auch nur diese Felder in der
213     Lieferadresse ausgefuellt werden. Fuer den Firmenname wird der Wert der
214     Hauptadresse angezeigt.
215
216 Troubleshooting -- Fehler suchen:
217   Wenn sich das Problem nicht auf Grund der ausgabe im Webbrowser verifizieren laesst:
218
219     editiere [flxo-home]/config/lx_office.conf und aendere "keep_tmp_files" auf 1
220           keep_temp_files = 1;
221
222     bei fastcgi oder mod_perl den Webserver neu Starten
223
224     Nochmal einen Druckversuch im Webfrontend ausloesen
225
226     wechsele in das users Verzeichnis von lxo
227       cd [lxo-home]/users
228
229     LaTeX Suchpfad anpassen:
230       export TEXINPUTS=".:[lxo-home]/templates/[aktuelles_template_verzeichniss]:"
231
232     Finde herraus welche datei lxo beim letzten Durchlauf erstellt hat
233       ls -lahtr ./1*.tex
234     Es sollte die letzte Datei ganz unten sein
235
236     fuer besseren Hinweis auf Fehler texdatei nochmals uebersetzen
237       pdflatex ./1*.tex
238
239     in der *.tex datei nach dem Fehler suchen.
240
241 Changelogeintrag fuer offiziellen tree:
242   Kleine Verbesserungen:
243      Zusaetzliches alternatives LaTeX Templatesystem
244
245