kivitendo unterstützt die Verwendung von Vorlagen im
OpenDocument-Format, wie es LibreOffice oder OpenOffice (ab Version 2)
erzeugen. kivitendo kann dabei sowohl neue OpenDocument-Dokumente als
auch aus diesen direkt PDF-Dateien erzeugen. Um die Unterstützung von
OpenDocument-Vorlagen zu aktivieren muss in der Datei
config/kivitendo.conf
die Variable
opendocument
im Abschnitt
print_templates
auf ‘1
’ stehen.
Dieses ist die Standardeinstellung.
Während die Erzeugung von reinen OpenDocument-Dateien keinerlei weitere Software benötigt, wird zur Umwandlung dieser Dateien in PDF LibreOffice oder OpenOffice benötigt. Soll dieses Feature genutzt werden, so muss neben LibreOffice oder OpenOffice auch der “X virtual frame buffer” (xvfb) installiert werden. Bei Debian ist er im Paket “xvfb” enthalten. Andere Distributionen enthalten ihn in anderen Paketen.
Nach der Installation müssen in der Datei
config/kivitendo.conf
im Abschnitt
applications
zwei weitere Variablen angepasst
werden:
openofficeorg_writer
muss den vollständigen
Pfad zu LibreOffice oder OpenOffice enthalten. Dabei dürfen keine
Anführungszeichen eingesetzt werden.
Beispiel für Debian oder Ubuntu:
openofficeorg_writer = /usr/bin/libreoffice
xvfb
muss den Pfad zum “X virtual frame buffer”
enthalten.
Zusätzlich gibt es zwei verschiedene Arten, wie kivitendo mit
LibreOffice bzw. OpenOffice kommuniziert. Die erste Variante, die
benutzt wird, wenn die Variable $openofficeorg_daemon
gesetzt ist, startet ein LibreOffice oder OpenOffice, das auch nach der
Umwandlung des Dokumentes gestartet bleibt. Bei weiteren Umwandlungen
wird dann diese laufende Instanz benutzt. Der Vorteil ist, dass die Zeit
zur Umwandlung deutlich reduziert wird, weil nicht für jedes Dokument
ein LibreOffice bzw. OpenOffice gestartet werden muss. Der Nachteil ist,
dass diese Methode Python und die Python-UNO-Bindings benötigt, die
Bestandteil von LibreOffice bzw. OpenOffice sind.
Anmerkung | |
---|---|
Für die Verbindung zu LibreOffice bzw. OpenOffice wird
normalerweise der Python-Interpreter
Zusätzlich ist es möglich, Pfade anzugeben, in denen Python
neben seinen normalen Suchpfaden ebenfalls nach Modulen gesucht wird,
z.B. falls sich diese in einem gesonderten LibreOffice- bzw.
OpenOffice-Verzeichnis befinden. Diese zweite Variable heißt
|
Ist $openofficeorg_daemon
nicht gesetzt, so
wird für jedes Dokument LibreOffice bzw. OpenOffice neu gestartet und
die Konvertierung mit Hilfe eines Makros durchgeführt. Dieses Makro muss
in der Dokumentenvorlage enthalten sein und
“Standard.Conversion.ConvertSelfToPDF()” heißen. Die Beispielvorlage
‘templates/print/rev-odt/invoice.odt
’ enthält ein
solches Makro, das in jeder anderen Dokumentenvorlage ebenfalls
enthalten sein muss.
Als letztes muss herausgefunden werden, welchen Namen OpenOffice
bzw. LibreOffice dem Verzeichnis mit den Benutzereinstellungen gibt.
Unter Debian ist dies momentan ~/.config/libreoffice
.
kivitendo verwendet das Verzeichnis
users/.openoffice.org2
. Eventuell muss dieses
Verzeichnis umbenannt werden.
Dieses Verzeichnis, wie auch das komplette
users
-Verzeichnis, muss vom Webserver beschreibbar
sein. Dieses wurde bereits erledigt (siehe Manuelle Installation des Programmpaketes), kann aber erneut
überprüft werden, wenn die Konvertierung nach PDF fehlschlägt.
OpenDocument Vorlagen können Makros enthalten, welche komplexere Aufgaben erfüllen.
Der Vorlagensatz "rev-odt" enthält solche Vorlagen mit Schweizer Bank-Einzahlungsscheinen (BESR). Diese Makros haben die Aufgabe, die in den Einzahlungsscheinen benötigte Referenznummer und Kodierzeile zu erzeugen. Hier eine kurze Beschreibung, wie die Makros aufgebaut sind, und was bei ihrer Nutzung zu beachten ist (in fett sind nötige einmalige Anpassungen aufgeführt):
Damit beim Erstellen von Rechnungen und Aufträgen neben der Standardvorlage ohne Einzahlungsschein weitere Vorlagen (z.B. mit Einzahlungsschein) auswählbar sind, muss für jedes Vorlagen-Suffix ein Drucker eingerichtet werden:
Druckeradministration → Drucker hinzufügen
Mandant wählen
Druckerbeschreibung → aussagekräftiger Text: wird in der Auftrags- bzw. Rechnungsmaske als Auswahl angezeigt (z.B. mit Einzahlungsschein Bank xy)
Druckbefehl → beliebiger Text (hat für das Erzeugen von Aufträgen oder Rechnungen als odt-Datei keine Bedeutung, darf aber nicht leer sein)
Vorlagenkürzel → besr bzw. selbst gewähltes Vorlagensuffix (muss genau der Zeichenfolge entsprechen, die zwischen "invoice_" bzw. "sales_order_" und ".odt" steht.)
speichern
Wer den Ausdruck mit Einzahlungsschein als Standardeinstellung im Rechnungs- bzw. Auftragsformular angezeigt haben möchte, kann dies persönlich für sich bei den Benutzereinstellungen konfigurieren:
Programm → Benutzereinstellungen → Druckoptionen
Standardvorlagenformat → OpenDocument/OASIS
Standardausgabekanal → Bildschirm
Standarddrucker → gewünschte Druckerbeschreibung auswählen (z.B. mit Einzahlungsschein Bank xy)
Anzahl Kopien → leer
speichern
In der Vorlage sind als Modul "BESR" 4 Makros gespeichert, die aus dem von kivitendo erzeugten odt-Dokument die korrekte Referenznummer inklusive Prüfziffer sowie die Kodierzeile in OCRB-Schrift erzeugen und am richtigen Ort ins Dokument schreiben.
Für den Einzahlungsschein ist die letzte Seite des Dokuments reserviert
Direkt über dem Einzahlungsschein enthält die Vorlage eine Zeile mit folgenden Angaben (Bank-Konto-Identifikationsnummer und Postkonto-Nummer der Bank müssen gemäss Angaben der jeweiligen Bank angepasst werden):
DDDREF: 4 Werte zum Bilden der Referenznummer (jeweils durch einen Leerschlag getrennt):
erster Wert: Bank-Konto-Identifikation (nur Ziffern, maximal 6), muss angepasst werden.
zweiter Wert: <%customernumber%> (Kundennummer: nur Ziffern, maximal 6)
dritter Wert: <%ordnumber%> (Auftragsnummer bei Auftragsvorlage sales_oder_besr.odt, sonst 0) maximal 7 Ziffern, führende Buchstaben werden vom Makro entfernt
vierter Wert: <%invnumber%> (Rechnungsnummer bei Rechnungsvorlage invoice_besr.odt, sonst 0) maximal 7 Ziffern, führende Buchstaben werden vom Makro entfernt
DDDKONTO: Postkonto-Nummer der Bank, muss angepasst werden.
DDDBETRAG: <%total%> Einzahlungsbetrag oder 0, falls Einzahlungsschein ohne Betrag
DDDEND: muss am Ende der Zeile vorhanden sein
Im Einzahlungsschein selbst müssen der Name und die Adresse der Bank, die Postkonto-Nummer der Bank, sowie der eigene Firmenname und die Firmenadresse angepasst werden. Dabei ist darauf zu achten, dass sich die Positionen der Postkonto-Nummern der Bank, sowie der Zeichenfolgen dddfr, DDDREF1, DDDREF2, 609, DDDKODIERZEILE nicht verschieben.
Im Fussbereich der Rechnungsmaske muss neben Rechnung, OpenDocument/OASIS und Bildschirm die im Adminbereich erstellte Druckerbeschreibung ausgewählt werden, falls diese nicht bereits bei den Benutzereinstellungen als persönlicher Standard gewählt wurde.
Falls beim Öffnen einer von kivitendo erzeugten odt-Rechnung die Meldung kommt, dass Makros aus Sicherheitsgründen nicht ausgeführt werden, so müssen folgende Einstellungen in LibreOffice angepasst werden:
Extras → Optionen → Sicherheit → Makrosicherheit
Sicherheitslevel auf "Mittel" einstellen (Diese Einstellung muss auf jedem Computer durchgeführt werden, mit dem von kivitendo erzeugte odt-Rechnungen oder Aufträge geöffnet werden.)
Beim Öffnen einer odt-Rechnung oder eines odt-Auftrags bei der entsprechenden Nachfrage "Makros ausführen" auswählen.
Wichtig: die Makros sind so eingestellt, dass sie beim Öffnen der Vorlagen selbst nicht ausgeführt werden. Das heisst für das Ansehen und Bearbeiten der Vorlagen sind keine speziellen Einstellungen in LibreOffice nötig.
Mit der Version 3.5.9 unterstützt Kivitendo die Erstellung von Schweizer QR-Rechnungen gemäss Swiss Payment Standards, Version 2.2. Implementiert sind hierbei die Varianten:
QR-IBAN mit QR-Referenz
IBAN ohne Referenz
Der Vorlagensatz "rev-odt" enthält die Vorlage
invoice_qr.odt
, welche für die Erstellung von
QR-Rechnungen vorgesehen ist. Damit diese verwendet werden kann muss
wie obenstehend beschrieben ein Drucker hinzugefügt werden (siehe
Abschnitt 2.13.1.2, „Vorbereitungen im Adminbereich“
). Alternativ kann die Vorlage umbenannt werden in
invoice.odt
.
Die Vorlage invoice_qr.odt
kann beliebig
angepasst werden. Zwingend muss diese jedoch das QR-Code Platzhalter
Bild, als eingebettetes Bild, enthalten. Da dieses beim
Ausdrucken/Erzeugen der Rechnung durch das neu generierte QR-Code
Bild ersetzt wird.
Unter System → Mandatenkonfiguration → Features. Im Abschnitt Einkauf und Verkauf, beim Punkt Verkaufsrechnungen mit Schweizer QR-Rechnung erzeugen, die gewünschte Variante wählen.
Unter System → Bankkonten muss bei mindestens einem Bankkonto die Option Nutzung mit Schweizer QR-Rechnung auf Ja gestellt werden.
Tipp | |
---|---|
Für die Variante QR-IBAN mit QR-Referenz muss dieses Konto unter IBAN eine gültige QR-IBAN Nummer enthalten. Diese unterscheidet sich von der regulären IBAN. Zusätzlich muss eine gültige Bankkonto Identifikationsnummer angegeben werden (6-stellig). Diese werden von der jeweiligen Bank vergeben. |
Sind mehrere Konten ausgewählt wird das erste verwendet.
Die Adressdaten zum Zahlungsempfänger werden aus der Mandantenkonfiguration entnommen. Unter System → Mandantenkonfiguration → Verschiedenes, Abschnitt Firmenname und -adresse.
Die Adressdaten zum Zahlungspflichtigen stammen aus den Kundendaten der jeweiligen Rechnung.
Diese können in der Vorlage mit den jeweiligen Variablen eingetragen werden. Siehe auch: Abschnitt 3.3, „Dokumentenvorlagen und verfügbare Variablen“
Der erzeugte QR-Code verwendet Adress-Typ "K" (Kombinierte Adressfelder, 2 Zeilen).
Die Referenznummer wird in Kivitendo erzeugt und setzt sich wiefolgt zusammen:
Bankkonto Identifikationsnummer (6-stellig)
Kundennummer (6-stellig, mit führenden Nullen aufgefüllt)
Auftragsnummer (7-stellig, mit führenden Nullen aufgefüllt)
Rechnungsnummer (7-stellig, mit führenden Nullen aufgefüllt)
Prüfziffer (1-stellig, berechnet mittels modulo 10, rekursiv)
Es sind lediglich Ziffern erlaubt. Allfällige Prefixe mit Buchstaben werden entfernt und fehlende Stellen werden mit führenden Nullen aufgefüllt.
Zusätzlich zu den in der Vorlage standardmässig verfügbaren Variablen (siehe Abschnitt 3.3, „Dokumentenvorlagen und verfügbare Variablen“), werden die folgenden Variablen erzeugt:
Referenznummer formatiert mit Leerzeichen, z.B.: 21 00000 00003 13947 14300 09017
IBAN formatiert mit Leerzeichen
Betrag formatiert mit Tausendertrennzeichen Leerschlag, z.B.: 1 005.55