8a272bd05b08e6ef0de47eaa180d66d501f91bbd
[kivitendo-erp.git] / templates / print / marei / Readme.md
1
2 # Bemerkungen zum Vorlagensatz
3 ### © 2020 by Marei Peischl (peiTeX TeXnical Solutions)
4
5 ## Quickstart (wo kann was angepasst werden?):
6
7   * insettings.tex : Pfad zu Angaben über Mandanten (default: firma)
8                      Logo/Briefpapier
9                      Layout der Kopf/Fußzeile
10                      innerhalb dieser Datei werden auch die folgenden Dateien geladen:
11                          firma/ident.tex        : Angaben über Mandanten
12                          firma/<währungskürzel>_account.tex
13
14 * Es muß mindestens eine Sprache angelegt werden!
15   -  deutsch.tex    : Textschnipsel für Deutsch
16                      Dafür eine Sprache mit Vorlagenkürzel DE anlegen
17   -  english.tex    : Textschnipsel für Englisch
18                      Dafür eine Sprache mit Vorlagenkürzel EN anlegen
19
20
21
22 ## Aufbau:
23 Die Grundstruktur besteht je Dokumententyp aus einer Basisdatei und verschiedenen Setup-Dateien.
24
25 Die Basis wurde so überarbeitet, dass Dokumente nun generell auf der Dokumentenklasse *scrartcl.cls* basieren und das Paket *kiviletter.sty* benutzen.
26
27 Mandantenspezifische Konfiguration findet sich in der Datei *insettings.tex* und dem Ordner eines spezifischen Mandanten (default=*firma/*). 
28
29
30 ### Struktur der Basisdatei (je Dokumententyp eine)
31
32 1. Dokumentenklasse
33 2. *kiviletter.sty*
34 3. Einstellungen, die über Variablen gesetzt werden: Mandant, Währung, Sprache
35 4. `\input{insettings.tex}` Anteil der spezifischen Anpassungen, die von den Variablen unter 2. abhängig sind. Geladen werden darin die Dateien:
36    - Sprache: lädt die entsprechende Sprachdatei, falls DE -> *deutsch.tex*, falls EN *englisch.tex* und setzt die babel Optionen. Die Datei enthält Übersetzungen von Einzelbegriffen und Textbausteinen.
37    - Lädt die Konfigurationsdatei, ohne spezielle Mandanten ist der Suchpfad zur Konfiguration der Unterordner *firma/*
38    - Lädt die Datei *ident.tex*, sowie die Abbildung Briefkopf.
39                 
40 #### Mandanten / Firma:
41
42 Um gleiche Vorlagen für verschiedene Firmen verwenden zu können, wird je
43 nach dem Wert der Kivitendo-Variablen `<%kivicompany%>` ein
44 Firmenverzeichnis ausgewählt (siehe *insettings.tex'), in dem Briefkopf,
45 Identitäten und Währungs-/Kontoeinstellungen hinterlegt sind.
46 `<%kivicompany%>` enthält den Namen des verwendeten Mandantendaten.
47 Ist kein Firmenname eingetragen, so wird das
48 generische Unterverzeichnis *firma* verwendet.
49
50 #### Identitäten:
51
52 In jedem Firmen-Unterverzeichnis soll eine Datei *ident.tex*
53 vorhanden sein, die mit `\newcommand` Werte für \telefon, `\fax`,
54 `\firma`, `\strasse`, `\ort`, `\ustid`, `\email` und `\homepage` definiert.
55
56 #### Währungen / Konten:
57 Für jede Währung (siehe *insettings.tex*) soll eine Datei vorhanden
58 sein, die das Währungssymbol (`\currency`) und folgende Angaben für
59 ein Konto in dieser Währung enthält `\kontonummer`, `\bank`,
60 `\bankleitzahl`, `\bic` und `\iban`.
61 So kann in den Dokumenten je nach Währung ein anderes Konto
62 angegeben werden.
63 Nach demselben Schema können auch weitere, alternative Bankverbindungen
64 angelegt werden, die dann in *insettings.tex* als Variable in der Fußzeile eingefügt werden.
65     
66 #### Briefbogen/Logos:
67 Eine Hintergrundgrafik oder ein Logo kann in Abhängigkeit vom
68 Medium (z.B. nur beim Verschicken mit E-Mail) eingebunden
69 werden.
70
71 Desweiteren sind (auskommentierte) Beispiele enthalten für eine
72 Grafik als Briefkopf, nur ein Logo, oder ein komplettes DinA4-PDF
73 als Briefpapier.
74     
75 #### Fusszeile:
76 Die Tabelle im Fuß verwendet die Angaben aus *firma/ident.tex* und
77 *firma/*_account.tex*. Ihre Struktur wird in der *insettings.tex* definiert.
78
79 #### Seitenstil/Basislayout:
80 Das Seitenlayout wird über scrlayer-scrpage bestimmt. Es existieren in der Datei *insettings.tex* einige Hinweise zu den Anpassungen. Die Basiskonfiguration ist ebenfalls dort eingetragen.
81
82 Die Kopfzeile unterscheidet sich von Dokumententyp zu Dokumententyp leicht, da diese über Datenbankvariablen befüllt wird. Hierfür wird das Makro `\ourhead` definiert. Diese Definition kann ebenfalls über die *insettings.tex* geändert werden.
83         
84 ### Tabellen:
85
86 Die Tabellenstruktur wurde komplett überarbeitet. Der Vorlagensatz verfügt über Tabellen, die automatisch die Breite der Textbreite anpassen und zusätzlich Seitenumbrüche erlauben.
87
88 #### SimpleTabular
89
90 Der einfache Tabellentyp ist die Umgebung `SimpleTabular`. die ist eine Tabelle basieren auf dem xltabular-Paket, die die sich der Textbreite anpasst. Sie wird in den Dateien *zahlungserinnerung_invoice.tex*, *zahlungserinnerung.tex* und *statement.tex* verwendet.
91
92 Sie verfügt über ein optionales Argument um die Spaltenkonfiguration und die Kopfzeile anzupassen. Die Voreinstellung (also ohne optionales Argument) entspricht der, der folgenden Angabe:
93
94 ```
95 \begin{SimpleTabular}[colspec=rrX,headline={\bfseries\position & \bfseries\menge & \bfseries\bezeichnung}]
96
97 ```
98
99 ##### Tabellenkopfzeile
100 Die Kopfzeile wird über den Optionsschlüssel headline angepasst. Entsprechend dem LaTeX-Standard werden Tabellen Spalten mit `&` getrennt. `\bfseries` setzt den Tabellenkopf zusätzlich in Fettschrift.
101
102 ##### Spaltenkonfiguration (fortgeschrittene Nutzer)
103 Die voreingestellte Spaltenkonfiguration entspricht `rrX`, also zwei rechtsbündigen Spalten und einer Blocksatzspalte, die die restliche Breite einnimmt. Soll von dieser Spaltenkonfiguration abgewichen werden, steht der Optionsschlüssel `colspec` zur Verfügung. Das folgende Beispiel tauscht die beiden rechtsbündigen Spalten in linksbündige:
104
105 ```
106 \begin{SimpleTabular}[colspec=llX]
107
108 ```
109 Als Spaltentypen sind Konfigurationen aus den folgenden Einträgen am sinnvollsten:
110 * `l`, `r`, `c`: Linksbündig, rechtsbündig, zentriert. Spaltenbreite passt sich dem Inhalt an.
111 * `X`: Blocksatz, Spaltenbreite füllt den übrigen Platz auf. Bei mehreren `X`-Spalten wird gleichmäßig aufgeteilt
112
113 Zusätzlich ist es möglich die Währung automatisch in der Spalte zu ergänzen.
114 Der Mechanismus ist so kontruiert, dass diese nicht in der Kopfzeile sondern lediglich in den Inhaltszeilen eingefügt wird.
115 In diesem Fall wird die Spaltenspezifikation durch `<{\tabcurrency}` ergänzt.
116 Eine rechtsbündige Spalte mit Währungsangabe wird somit durch `r<{\tabcurrency}` erzeugt.
117
118
119 #### PricingTabular
120
121 `PricingTabular` wurde entwickelt um Tabellen für Rechnungen vereinfacht erstellen zu können.
122 Die Voreinstellung verfügt über die Spalten `pos`, `id`, `desc`, `amount`, `price`, `pricetotal'.
123 Alle Spalten, außer der Spalte `desc` haben eine Feste Breite.
124
125 Die Einstellungen können Entweder als Optionales Argument zu `\begin{PricingTabular}[<Optionen>]` vorgenommen werden oder über das Makro `\SetupPricingTabular{<Optionen>}` für alle folgenden Umgebungen gesetzt werden.
126
127
128 ###### Spaltenbreiten
129
130 Die Spaltenbreiten werden angepasst indem der Spaltenname verwendet wird.
131 Um die Positionsspalte zu ändern ist somit die Option `pos=<Breite>` notwendig.
132 Hier können alle Längenangaben verwendet werden, die LaTeX versteht. (cm, mm, em, ex, …)
133
134 Die Spaltenbreite der Spalte `desc` für die Artikelbeschreibung nimmt dabei jeweils den übrigen Platz ein.
135
136 ##### Kopfzeileneinträge
137
138 Die Kopfzeileneinträge werden über die Option `<Spaltenname>/header=<Neue Beschriftung>` angepasst.
139 Vorbelegt ist die Konfiguration: 
140
141 ```
142 \SetupPricingTabular{
143         pos/header=\position,
144         id/header=\artikelnummer,
145         desc/header=\bezeichnung,
146         amount/header=\menge,
147         price/header=\einzelpreis,
148         pricetotal/header=\gesamtpreis
149 }
150 ```
151
152 ##### Reihenfolge/Anzahl der Spalten ändern
153
154 Die Reihenfolge wurde über die Option `columns` festgelegt.
155 Soll daher eine Tabelle mit nur drei Spalten und lediglich bestehend aus Produktnummer, Beschreibung und Menge genutzt werden, ist dies mit der Option `columns={id,desc,amount}` möglich.
156
157 Einzelne Spalten können auch über `<Spaltenname>=false` abgeschaltet werden. Dies ist z.B. dann hilfreich, wenn die Angabe einer Produktnummer aus platzgründen nicht sinnvoll ist (`id=false`).
158
159
160
161
162