Das Drucksystem von kivitendo benutzt von Haus aus LaTeX-Vorlagen.
Um drucken zu können, braucht der Server ein geeignetes LaTeX System. Am
einfachsten ist dazu eine texlive
Installation. Unter
debianoiden Betriebssystemen installiert man die Pakete mit:
apt install texlive-base-bin texlive-latex-recommended texlive-fonts-recommended \ texlive-latex-extra texlive-lang-german ghostscript
Für Fedora benötigen Sie die folgenden Pakete:
dnf install texlive-collection-latex texlive-collection-latexextra \ texlive-collection-latexrecommended texlive-collection-langgerman \ texlive-collection-langenglish
Für openSUSE benötigen Sie die folgenden Pakete:
zypper install texlive-collection-latex texlive-collection-latexextra \ texlive-collection-latexrecommended texlive-collection-langgerman \ texlive-collection-langenglish
Anmerkung | |
---|---|
kivitendo erwartet eine aktuelle TeX Live Umgebung, um PDF/A zu erzeugen. Aktuelle Distributionen von 2020 erfüllen diese. Überprüfbar ist dies mit dem Aufruf des installation_check.pl mit Parameter -l:
scripts/installations_check.pl -l
|
kivitendo bringt drei alternative Vorlagensätze mit:
RB
marei
rev-odt
Der ehemalige Druckvorlagensatz "f-tex" wurde mit der Version 3.5.6 entfernt, da er nicht mehr gepflegt wird.
Es lässt sich ein initialer Vorlagensatz erstellen. Die LaTeX-System-Abhängigkeiten hierfür kann man prüfen mit:
./scripts/installation_check.pl -lv
Der Angemeldete Benutzer muss in einer Gruppe sein, die über das Recht "Konfiguration -> Mandantenverwaltung" verfügt. Siehe auch Abschnitt 2.11.4, „Gruppen anlegen“.
Im Userbereich lässt sich unter: "
-> -> " die Option "Neue Druckvorlagen aus Vorlagensatz erstellen" auswählen.
Vorlagen auswählen
: Wählen Sie hier den
Vorlagensatz aus, der kopiert werden soll
(RB
, marei
oder
odt-rev
.)
Neuer Name
: Der Verzeichnisname für den
neuen Vorlagensatz. Dieser kann im Rahmen der üblichen Bedingungen
für Verzeichnisnamen frei gewählt werden.
Nach dem Speichern wird das Vorlagenverzeichnis angelegt und ist
für den aktuellen Mandanten ausgewählt. Der gleiche Vorlagensatz kann,
wenn er mal angelegt ist, bei mehreren Mandanten verwendet werden.
Eventuell müssen Anpassungen (Logo, Erscheinungsbild, etc) noch
vorgenommen werden. Den Ordner findet man im Dateisystem unter
./templates/[Neuer Name]
Anmerkung | |
---|---|
Die aktuelle Dokumentation inkl. dem Foliensatz vom kivi-Treffen im August 2023 befindet sich hier: https://peitex.de/materialien/2023-08-04_kivitendo/ |
Pfad zu Angaben über Mandant*innen (default: firma)
Logo/Briefpapier, falls für alle Mandant*innen in gleicher Struktur. Sonst in der ident.tex
.
Layout der Kopf/Fußzeile
innerhalb dieser Datei werden auch die folgenden Dateien geladen:
firma/ident.tex
Mandant*innenspezifische Konfiguration, Adressdaten
firma/$währungskürzel_account.tex
insettings.tex
:
Sprache/Übersetzungen.\\Es muss mindestens eine Sprache angelegt werden!
\item[deutsch.tex] Textschnipsel für Deutsch\\ Dafür eine Sprache mit Vorlagenkürzel DE anlegen \item[english.tex] Textschnipsel für Englisch\\ Dafür eine Sprache mit Vorlagenkürzel EN anlegen
Alle dokumententypspezifischen Einstellungen müssen in der jeweiligen Template-Datei modifiziert werden.
Die Grundstruktur besteht je Dokumententyp aus einer Basisdatei und verschiedenen Setup-Dateien.
Die Basis wurde so überarbeitet, dass Dokumente nun generell auf
der Dokumentenklasse scrartcl.cls
basieren und
das Paket kiviletter.sty
benutzen.
Mandant*innenspezifische Konfiguration findet sich in der Datei insettings.tex
und
dem Ordner eines spezifischen Mandant*innen (default=*firma/*).
Um gleiche Vorlagen für verschiedene Firmen verwenden zu können, wird je
nach dem Wert der Kivitendo-Variablen \kivivar{kivicompany} ein
Firmenverzeichnis ausgewählt (siehe insettings.tex
), in dem Briefkopf,
Identitäten und Währungs-/Kontoeinstellungen hinterlegt sind.
\kivivar{kivicompany} enthält den Namen des verwendeten Mandant*innendaten.
Ist kein Firmenname eingetragen, so wird das
generische Unterverzeichnis *firma* verwendet.
In jedem Firmen-Unterverzeichnis soll eine Datei ident.tex
vorhanden sein, die mit |\newcommand| Werte für |\telefon|, |\fax|,
|\firma|, |\strasse|, |\ort|, |\ustid|, |\email| und |\homepage| definiert.
Für jede Währung (siehe insettings.tex
) soll eine Datei vorhanden
sein, die das Währungssymbol (|\currency|) und folgende Angaben für
ein Konto in dieser Währung enthält |\kontonummer|, |\bank|,
|\bankleitzahl|, |\bic| und |\iban|.
So kann in den Dokumenten je nach Währung ein anderes Konto
angegeben werden.
Nach demselben Schema können auch weitere, alternative Bankverbindungen
angelegt werden, die dann in insettings.tex
als Variable in der Fußzeile eingefügt werden.
Als Fallback (falls kivitendo keine Währung an das Druckvorlagen-System übergibt)
ist Euro eingestellt. Dies lässt sich in der insettings.tex
über das optionale Argument
von |\setupCurrencyConfig| anpassen, z.B.
\setupCurrencyConfig[chf]{\identpath}{\lxcurrency}
für Schweizer Franken als Standardwährung.
Eine Hintergrundgrafik oder ein Logo kann in Abhängigkeit vom Medium (z.B. nur beim Verschicken mit E-Mail) eingebunden werden.
Desweiteren sind (auskommentierte) Beispiele enthalten für eine Grafik als Briefkopf, nur ein Logo, oder ein komplettes A4-PDF als Briefpapier.
Absolute Positionierung innerhalb des Brief-Layouts ist über die entsprechende Dokumentation des scrlayer-Paketes möglich.
Da die Voreinstellungen bereits einige Sonderfälle automatisch berücksichtigen ist mit den Anpassungen Vorsicht geboten.
Sämtliche Einstellungen sollten jedoch außerhalb der *.sty-Dateien vorgenommen werden.
Anpassungen der insettings.tex
betreffen hierbei alle Mandant*innen. Spezifischere Einstellungen sind über die zugehörige Konfigurationsdatei (ident.tex
) möglich.
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.
Die Tabelle im Fuß verwendet die Angaben aus firma/ident.tex
und
*firma/\_account.tex
. Ihre Struktur wird in der insettings.tex
definiert.
Sie kann anschließend auch Mandant*innenspezifisch überschrieben werden.
Das Seitenlayout wird über \pck{scrlayer-scrpage} bestimmt. Die ausführliche Dokumentation findet sich in \cite{scrguide}.
Es existieren in der Datei insettings.tex
einige Hinweise zu den Anpassungen. Die Basiskonfiguration ist ebenfalls dort eingetragen.
Neben den in Abschnitt \ref{sec:options} beschriebenen Optionen zum Abschalten der Fußzeile kann der Inhalt der Fußzeile über die \pck{scrlayer-scrpage} Makros, wie
\cfoot[|\meta{Inhalt auf der ersten Briefseite}|]{|\meta{Inhalt auf folgenden Briefseiten}|}
geändert werden.
Die Kopfzeile unterscheidet sich von Dokumententyp zu Dokumententyp leicht, da diese über Datenbankvariablen befüllt wird.
Hierfür wird das Makro |\ourhead| in der insettings.tex
definiert.
\DescribeMacro{\ourhead}\marg{Bezeichner}\marg{Eintrag}\marg{Titel}\marg{Nummer}\marg{Datum}
Diese Definition kann ebenfalls über die insettings.tex
angepasst oder auch nachträglich überschrieben werden:
\newcommand{\ourhead}[5] {% \chead{% \makebox[\textwidth]{% \Ifstr{#1}{}{}{#1: #2 \hspace{0.7cm}}% #3% \Ifstr{#4}{}{}{~\nr: #4}% \Ifstr{#5}{}{}{\vom ~ #5}% \hspace{0.7cm} - \seite ~ \thepage/\letterlastpage ~-% }% }% }
In der Standard-Einstellung sieht eine Kopfzeile mit obigen Aufruf dann folgendermaßen aus:
\newcommand{\ourhead}[5] {% \makebox[\textwidth]{% \Ifstr{#1}{}{}{#1: #2 \hspace{0.7cm}}% #3% \Ifstr{#4}{}{}{~\nr: #4}% \Ifstr{#5}{}{}{\vom ~ #5}% \hspace{0.7cm} - \seite ~ \thepage/\letterlastpage ~-% }% } \begingroup \def\letterlastpage{50} \ourhead{arg1}{arg2}{arg3}{arg4}{arg5} \smallskip Erzeugt mit dem Aufruf \ourhead{arg1}{arg2}{arg3}{arg4}{arg5} \endgroup
Die Absenderergänzung wird über die Variable |location| in der |kiviletter.sty| folgendermaßen belegt:
\setkomavar{location}{ \Ifkomavarempty{transaction}{}{{ \usekomafont{transaction} \usekomavar{transaction} } } \par \medskip \parbox{\useplength{locwidth}}{ \locationentry{date} \locationentry{myref} \locationentry{customer} \locationentry{yourref} \locationentry{delivery} \locationentry{quote} \locationentry{orderID} \locationentry{projectID} \locationentry{taxpoint} \locationentry[\ansprechpartner]{fromname} \locationentry{fromphone} \locationentry*{fromemail} } }
Um die Reihenfolge der Variablenausgabe zu verändern, kann diese Definition als Basis in
die insettings.tex
oder ident.tex
(Falls nur für eine Firma) kopiert und dort entsprechend modifiziert werden.
Das Vorgehen geht für alle vorbelegten Variablen analog.
\LaTeX{} kann grundsätzlich beliebige Schriftarten verwenden. Hierfür sollte allerdings immer darauf geachtet werden, dass die Lizenz der Schriftart das einbetten von Glyphen erlaubt. Dies liegt in der Verantwortung der Anwender*innen. Darüber hinaus ist wichtig, welches Kompilierungsprogramm verwendet werden muss. Um TrueType oder OpenType Schriftarten zu nutzen sollte |lualatex| verwendet werden. Bei Type1 Schriftarten, die speziell für \LaTeX{} installiert wurden, ist pdfLaTeX möglich. Da man heutzutage nur noch moderne Schriftformate Verwenden sollte, wird hier lediglich die Variante für |lualatex| aufgelistet.
Die Konfiguration läuft hierbei über das \pck{fontspec} Paket (Doku siehe \cite{fontspec}).
Dann hängt es davon ab, ob die Basisschriftart eine Serifenschriftart ist oder nicht.
In jedem Fall wird die Änderung entweder in der insettings.tex
, sofern sie für alle
Mandant*innen gelten soll oder in der Mantant*innenspezifischen Konfigurationsdatei gsesetzt.
Wenn möglich sollte die Schriftart über ein entsprechendes Konfigurationspaket gesetzt werden. Ob ein solches existiert kann man sehr leicht über eine Suche nach dem Namen unter \url{ctan.org} herausfinden.
\setmainfont{|\meta{Name der Schriftart, z.B. SourceSerifPro}|}
Hierbei handelt es sich um einen vollständigen LaTeX Dokumentensatz mit alternativem Design. Die odt oder html-Varianten sind nicht gepflegt.
Die konzeptionelle Idee der Vorlagen wird hier auf Folie 5 bis 10 vorgestellt. Informationen zur Anpassung an die eigenen Firmendaten finden sich in der Datei Readme.tex im Vorlagenverzeichnis.
Eine kurze Übersicht der Features:
Mehrsprachenfähig, mit Deutscher und Englischer Übersetzung
Zentrale Konfigurationsdateien, die für alle Belege benutzt werden, z.B. für Kopf- und Fußzeilen, und Infos wie Bankdaten
mehrere vordefinierte Varianten für Logos/Hintergrundbilder
Berücksichtigung für Steuerzonen "EU mit USt-ID Nummer" oder "Außerhalb EU"
Hierbei handelt es sich um einen Dokumentensatz der mit odt-Vorlagen erstellt wurde. Es gibt in dem Verzeichnis eine Readme-Datei, die eventuell aktueller als die Dokumentation hier ist. Die odt-Vorlagen in diesem Verzeichnis "rev-odt" wurden von revamp-it, Zürich erstellt und werden laufend aktualisiert. Ein paar der Formulierungen in den Druckvorlagen entsprechen dem Schweizer Sprachgebrauch, z.B. "Offerte" oder "allfällig".
Hinweis zum Einsatz des Feldes "Land" bei den Stammdaten für KundInnen und LieferantInnen, sowie bei Lieferadressen: Die in diesem Vorlagensatz vorhandenen Vorlagen erwarten für "Land" das entsprechende Kürzel, das in Adressen vor die Postleitzahl gesetzt wird. Das Feld kann auch komplett leer bleiben. Wer dies anders handhaben möchte, muss die Vorlagen entsprechend anpassen.
odt-Vorlagen können mit LibreOffice oder OpenOffice editiert und den eigenen Bedürfnissen angepasst werden. Wichtig beim Editieren von if-Blöcken ist, dass immer der gesamte Block überschrieben werden muss und nicht nur Teile davon, da dies sonst oft zu einer odt-Datei führt, die vom Parser nicht korrekt gelesen werden kann.
Mahnungen können unter folgenden Einschränkungen mit den odt-Vorlagen im Vorlagensatz rev-odt erzeugt werden:
als Druckoption steht nur 'PDF(OpenDocument/OASIS)' zur Verfügung, das heisst, die Mahnungen werden als PDF-Datei ausgegeben.
für jede Rechnung muss eine eigene Mahnung erzeugt werden (auch wenn bei einzelnen KundInnen mehrere überfällige Rechnungen vorhanden sind).
Mehrere Mahnungen für eine Kundin / einen Kunden werden zu einer PDF-Datei zusammengefasst
Die Vorlagen zahlungserinnerung.odt sowie mahnung.odt sind für das Erstellen einer Zahlungserinnerung bzw. Mahnung selbst vorgesehen, die Vorlage mahnung_invoice.odt für das Erstellen einer Rechnung über die verrechneten Mahngebühren und Verzugszinsen.
Zur Zeit gibt es in kivitendo noch keine Möglichkeit, odt-Vorlagen bei Briefen und Pflichtenheften einzusetzen. Entsprechende Vorlagen sind deshalb nicht vorhanden.
Fehlermeldungen, Anregungen und Wünsche bitte senden an: empfang@revamp-it.ch
In den allermeisten Installationen sollte das Drucken jetzt schon funktionieren. Sollte ein Fehler auftreten, wirft TeX sehr lange Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste Zeile, die mit einem Ausrufezeichen anfängt. Häufig auftretende Fehler sind zum Beispiel:
! LaTeX Error: File `eurosym.sty' not found. Die entsprechende LaTeX-Bibliothek wurde nicht gefunden. Das tritt vor allem bei Vorlagen aus der Community auf. Installieren Sie die entsprechenden Pakete.
! Package inputenc Error: Unicode char \u8:... set up for use with LaTeX. Dieser Fehler tritt auf, wenn sie versuchen mit einer Standardinstallation exotische utf8 Zeichen zu drucken. TeXLive unterstützt von Haus nur romanische Schriften und muss mit diversen Tricks dazu gebracht werden andere Zeichen zu akzeptieren. Adere TeX Systeme wie XeTeX schaffen hier Abhilfe.
Wird gar kein Fehler angezeigt, sondern nur der Name des
Templates, heißt das normalerweise, dass das LaTeX Binary nicht
gefunden wurde. Prüfen Sie den Namen in der Konfiguration (Standard:
latexmk --pdflatex
), und stellen Sie sicher, dass
latexmk (oder das von Ihnen verwendete System) vom Webserver ausgeführt
werden darf.
Wenn sich das Problem nicht auf Grund der Ausgabe im Webbrowser verifizieren lässt:
editiere [kivitendo-home]/config/kivitendo.conf und ändere "keep_temp_files" auf 1
keep_temp_files = 1;
bei fastcgi oder mod_perl den Webserver neu Starten
Nochmal einen Druckversuch im Webfrontend auslösen
wechsel in das users Verzeichnis von kivitendo
cd [kivitendo-home]/users
LaTeX Suchpfad anpassen:
export TEXINPUTS=".:[kivitendo-home]/templates/[aktuelles_template_verzeichniss]:"
Finde heraus, welche Datei kivitendo beim letzten Durchlauf erstellt hat
ls -lahtr ./1*.tex
Es sollte die letzte Datei ganz unten sein
für besseren Hinweis auf Fehler texdatei nochmals übersetzen
pdflatex ./1*.tex
in der *.tex datei nach dem Fehler suchen.