Druckvorlagen marei: euro als Kontenstandard setzen, Readme ergänzt
[kivitendo-erp.git] / templates / print / marei / Readme.md
1 # Bemerkungen zum Vorlagensatz
2 ### © 2020–2021 by Marei Peischl (peiTeX TeXnical Solutions)
3
4 ## Quickstart (wo kann was angepasst werden?):
5
6   * insettings.tex : Pfad zu Angaben über Mandanten (default: firma)
7                      Logo/Briefpapier
8                      Layout der Kopf/Fußzeile
9                      innerhalb dieser Datei werden auch die folgenden Dateien geladen:
10                      firma/ident.tex        : Angaben über Mandanten
11                      firma/<währungskürzel>_account.tex
12
13 * Es muß mindestens eine Sprache angelegt werden!
14   -  deutsch.tex    : Textschnipsel für Deutsch
15                       Dafür eine Sprache mit Vorlagenkürzel DE anlegen
16   -  english.tex    : Textschnipsel für Englisch
17                       Dafür eine Sprache mit Vorlagenkürzel EN anlegen
18
19
20
21 ## Aufbau:
22 Die Grundstruktur besteht je Dokumententyp aus einer Basisdatei und verschiedenen Setup-Dateien.
23
24 Die Basis wurde so überarbeitet, dass Dokumente nun generell auf der Dokumentenklasse *scrartcl.cls* basieren und das Paket *kiviletter.sty* benutzen.
25
26 Mandantenspezifische Konfiguration findet sich in der Datei *insettings.tex* und dem Ordner eines spezifischen Mandanten (default=*firma/*).
27
28
29 ### Struktur der Basisdatei (je Dokumententyp eine)
30
31 1. Dokumentenklasse
32 2. *kiviletter.sty*
33 3. Einstellungen, die über Variablen gesetzt werden: Mandant, Währung, Sprache
34 4. `\input{insettings.tex}` Anteil der spezifischen Anpassungen, die von den Variablen unter 2. abhängig sind. Geladen werden darin die Dateien:
35    - 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.
36    - Lädt die Konfigurationsdatei, ohne spezielle Mandanten ist der Suchpfad zur Konfiguration der Unterordner *firma/*
37    - Lädt die Datei *ident.tex*, sowie die Abbildung Briefkopf.
38
39 #### Mandanten / Firma:
40
41 Um gleiche Vorlagen für verschiedene Firmen verwenden zu können, wird je
42 nach dem Wert der Kivitendo-Variablen `<%kivicompany%>` ein
43 Firmenverzeichnis ausgewählt (siehe *insettings.tex'), in dem Briefkopf,
44 Identitäten und Währungs-/Kontoeinstellungen hinterlegt sind.
45 `<%kivicompany%>` enthält den Namen des verwendeten Mandantendaten.
46 Ist kein Firmenname eingetragen, so wird das
47 generische Unterverzeichnis *firma* verwendet.
48
49 #### Identitäten:
50
51 In jedem Firmen-Unterverzeichnis soll eine Datei *ident.tex*
52 vorhanden sein, die mit `\newcommand` Werte für \telefon, `\fax`,
53 `\firma`, `\strasse`, `\ort`, `\ustid`, `\email` und `\homepage` definiert.
54
55 #### Währungen / Konten:
56 Für jede Währung (siehe *insettings.tex*) soll eine Datei vorhanden
57 sein, die das Währungssymbol (`\currency`) und folgende Angaben für
58 ein Konto in dieser Währung enthält `\kontonummer`, `\bank`,
59 `\bankleitzahl`, `\bic` und `\iban`.
60 So kann in den Dokumenten je nach Währung ein anderes Konto
61 angegeben werden.
62 Nach demselben Schema können auch weitere, alternative Bankverbindungen
63 angelegt werden, die dann in *insettings.tex* als Variable in der Fußzeile eingefügt werden.
64 Als Fallback (falls kivitendo keine Währung an das Druckvorlagen-System übergibt)
65 ist Euro eingestellt. Dies lässt sich simpel in kiviletter.sty in dieser Zeile anpassen:
66 ```
67   \tl_if_empty:NT  \g_kivi_currency_tl {
68     \tl_gset:Nn \g_kivi_currency_tl {euro}% hier dann bspw. usd oder chf eintragen
69 }
70 ```
71
72 #### Briefbogen/Logos:
73 Eine Hintergrundgrafik oder ein Logo kann in Abhängigkeit vom
74 Medium (z.B. nur beim Verschicken mit E-Mail) eingebunden
75 werden.
76
77 Desweiteren sind (auskommentierte) Beispiele enthalten für eine
78 Grafik als Briefkopf, nur ein Logo, oder ein komplettes DinA4-PDF
79 als Briefpapier.
80
81 Absolute Positionierung innerhalb des Brief-Layouts ist über die entsprechende Dokumentation des scrlayer-Paketes möglich.
82 Da die Voreinstellungen bereits einige Sonderfälle automatisch berücksichtigen ist mit den Anpassungen Vorsicht geboten.
83 Sämtliche Einstellungen sollten jedoch außerhalb der *.sty-Dateien vorgenommen werden.
84 Anpassungen der insettings.tex betreffen hierbei alle Mandanten. Mandantenspezifische Einstellung sind über die zugehörige Konfigurationsdatei möglich.
85 In diesem Fall kann zum Ende der insettings eine weitere Konfigurationsdatei über die Verwendung von \identpath geladen werden. Ein Beispiel ist in der insettings.tex enthalten.
86
87 #### Fußzeile:
88 Die Tabelle im Fuß verwendet die Angaben aus *firma/ident.tex* und
89 *firma/*_account.tex*. Ihre Struktur wird in der *insettings.tex* definiert.
90
91 #### Seitenstil/Basislayout:
92 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.
93
94 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.
95
96 ### Tabellen:
97
98 Die Tabellenstruktur wurde komplett überarbeitet. Der Vorlagensatz verfügt über Tabellen, die automatisch die Breite der Textbreite anpassen und zusätzlich Seitenumbrüche erlauben.
99
100 #### SimpleTabular
101
102 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.
103
104 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:
105
106 ```
107 \begin{SimpleTabular}[colspec=rrX,headline={\bfseries\position & \bfseries\menge & \bfseries\bezeichnung}]
108
109 ```
110
111 ##### Tabellenkopfzeile
112 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.
113
114 ##### Spaltenkonfiguration (fortgeschrittene Nutzer)
115 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:
116
117 ```
118 \begin{SimpleTabular}[colspec=llX]
119
120 ```
121 Als Spaltentypen sind Konfigurationen aus den folgenden Einträgen am sinnvollsten:
122 * `l`, `r`, `c`: Linksbündig, rechtsbündig, zentriert. Spaltenbreite passt sich dem Inhalt an.
123 * `X`: Blocksatz, Spaltenbreite füllt den übrigen Platz auf. Bei mehreren `X`-Spalten wird gleichmäßig aufgeteilt
124
125 Zusätzlich ist es möglich die Währung automatisch in der Spalte zu ergänzen.
126 Der Mechanismus ist so kontruiert, dass diese nicht in der Kopfzeile sondern lediglich in den Inhaltszeilen eingefügt wird.
127 In diesem Fall wird die Spaltenspezifikation durch `<{\tabcurrency}` ergänzt.
128 Eine rechtsbündige Spalte mit Währungsangabe wird somit durch `r<{\tabcurrency}` erzeugt.
129
130
131 #### PricingTabular
132
133 `PricingTabular` wurde entwickelt um Tabellen für Rechnungen vereinfacht erstellen zu können.
134 Die Voreinstellung verfügt über die Spalten `pos`, `id`, `desc`, `amount`, `price`, `pricetotal'.
135 Alle Spalten, außer der Spalte `desc` haben eine Feste Breite.
136
137 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.
138
139
140 ###### Spaltenbreiten
141
142 Die Spaltenbreiten werden angepasst indem der Spaltenname verwendet wird.
143 Um die Positionsspalte zu ändern ist somit die Option `pos=<Breite>` notwendig.
144 Hier können alle Längenangaben verwendet werden, die LaTeX versteht. (cm, mm, em, ex, …)
145
146 Die Spaltenbreite der Spalte `desc` für die Artikelbeschreibung nimmt dabei jeweils den übrigen Platz ein.
147
148 ##### Kopfzeileneinträge
149
150 Die Kopfzeileneinträge werden über die Option `<Spaltenname>/header=<Neue Beschriftung>` angepasst.
151 Vorbelegt ist die Konfiguration:
152
153 ```
154 \SetupPricingTabular{
155   pos/header=\position,
156   id/header=\artikelnummer,
157   desc/header=\bezeichnung,
158   amount/header=\menge,
159   price/header=\einzelpreis,
160   pricetotal/header=\gesamtpreis
161 }
162 ```
163
164 ##### Farbige Tabellen
165 Versionen ab Juli 2021 enthalten die Möglichkeit farbige Tabellen zu nutzen.
166 Die Optionen für die `PricingTabular` Umgebung können wie folgt konfiguriert werden:
167 ```
168   color-rows=<true/false>,% false
169   rowcolor-odd=<Farbname>,% black!10
170   rowcolor-even=<Farbname>,% leer, also keine Farbbox wird erzeugt
171   rowcolor-header=<Farbname>,% black!35
172   rowcolor-total=<Farbname>,% black!35
173 ```
174 Die Angabe hinter dem Kommentarzeichen entspricht der Voreinstellung.
175
176 #### Trennlinien zwischen den Einträgen
177 Die Umgebung `PricingTabular` hat die möglichkeit horizontale Linien zwischen den Einträgen der `\FakeTable` einzuziehen.
178 Die einfachste Möglichkeit hierfür ist die Option hrule, sie setzt automatisch eine Linie der Dicke `\lightrulewidth`.
179 Da diese Linie formal nicht innerhalb der Tabelle platziert wird, können Linienmakros für Tabellen heir nicht verwendet werden.
180 Falls dennoch eine manuelle Anpassung der Maße notwendig ist, kann direkt der Code zur Erzeugung der Linie übergeben werden.
181 Die Option `hrule` entspricht der Angabe
182 ```
183   rowsep={
184     \vskip\aboverulesep
185     \hrule\@height\lightrulewidth
186     \vskip\belowrulesep
187   }
188 ```
189 Es wird somit auch der Abstand davor und danach mit eingefügt. In Kombination mit Farbigen Tabellen ist hier vorsicht geboten, da der Abstand nicht mit zur farbigen Box gerechnet wird.
190
191
192 ##### Reihenfolge/Anzahl der Spalten ändern
193
194 Die Reihenfolge wurde über die Option `columns` festgelegt.
195 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.
196
197 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`).
198
199
200
201
202