Pojekte beginnen in verschiedenen Phasen DKV2 einzusetzten. Am einfachsten ist es natürlich, wenn DKV2 von Anfang an verwendet wird und die Daten sofort in DKV2 eingepflegt werden. DKV2 sorgt bei der Eingabe der Daten dafür, dass sie konsistent sind und für die spätere Verarbeitung - zum Beispiel bei der Jahresendabrechnung - verwendet werden können. Gibt es Inkonsistenzen oder sind Daten, die DKV2 erwartet, nicht vorhanden, so führt das unweigerlich zu Fehlern. DKV2 kann sich gegen diese Fehler nicht schützen.
Für Projekte, in denen DKV2 erst verzögert zum Einsatz kommt, schreibe ich hier ein paar Ratschläge auf, wie man vorgehen kann, um eine konsistente Datenbank zu haben.
Ihr habt schon ein paar duzent Verträge? Dann ist es einfach: Verwendet DKV2! Legt eine Datenbank an und verwendet die Benutzeroberfläche um die Daten einzugeben. Macht das zu zweit - nach dem 4 Augen Prinzip: Einer tippt, der andere liest vor und kontrolliert die Eingaben. So kann man sehr schnell Verträge eingeben.
DKV2 hat keine Import Funktionen. Aber es verwendet ein gängiges Datenbankformat, und natürlich gibt es Werkzeuge, mit denen man die Datenbank Datei von DKV2 (SQLite) bearbeiten kann. Ich verwende gelegentlich "DB Browser für SQLite". Ich nehme im Folgenden an, dass Ihr das auch tut. Zu anderen kann ich nicht viel sagen. Aber hier sei gewarnt: Wer an DKV2 "vorbei arbeitet" geht ein Risiko ein, für das Ihr die Verantwortung selbst tragt. Ich verspreche hier keine Unterstützung.
Wenn man sich also traut: Die Daten der Kundinnen und Kunden sind mühsamer einzugeben, als die Verträge. Und sie sind deutlich unproblematischer, als Verträge und Buchungen. Hier könnt ihr also mit relativ geringem Riskio einige Tipparbeit sparen.
Wie komme ich an eine leere Datenbank? Versucht nicht die Datenbank mit irgendeinem Programm oder Skript zu erstellen. Keiner kann das besser als DKV2. Es geht auch sehr schnell! Verwendet immer DKV2 um eine neue Datenbank anzulegen. Keiner weiß besser, was DKV2 braucht, als DKV2. Und DKV2 ist, das das Datenbank Layout angeht auch immer auf dem neusten Stand.
** WARNUNG ** Wenn Du nichts von Datenbanken verstehst und SQL eine Fremdsprache für Dich ist, dann ist es besser, wenn Du alles, was jetzt kommst nicht versuchst.
** WARNUNG ** Änderungen an Datenbanken werden von vielen Programmen immer sofort geschrieben - man sollte also häufige Sicherungskopien machen, falls man damit rechnet, dass auch mal etwas schief gehen kann. Im DB Browser muss man aber "Speichern" bevor Änderungen in der Datei sichtbar werden.
** WARNUNG ** DKV2 rechnet nicht damit, dass die Datenbank zur Laufzeit von anderen geändert werden. Bevor eine Datenbank bearbeitet wird, muss sie in DKV2 geschlossen werden. Um sie später wirder zu öffnen gibt es ja die "zuletzt verwendete Datenbanken" Funktion.
Am meisten Arbeit steckt wohl in den Daten der Kreditoren. Zum Glück ist diese Tabelle in der Datenbank recht einfach und kann relativ leicht aus MS EXCEL oder der Open / Libre Office Alternative erstellen.
Das empfohlene Vorgehen dabei ist:
Öffne die leere dkv2 Datenbank und exportiere die Kreditoren Tabelle nach CSV (In der Ansicht "Datenbankstruktur - Tabellen" (rechte Maus) "Als CSV exportieren" unter dem Namen "Kreditoren-leer.csv" mit den Optionen
Spaltennamen in der ersten Zeile (ausgewählt)
Feld Separator ";" (Semikolon)
String Zeichen " (Anführungszeichen)
Zeilenumbruch 'Windows "CR+LF"'
Erstelle eine Kopie der Datei mit dem Namen "Kreditoren.csv"
Öffne die CSV Datei "Kreditoren.csv" in Excel. Sie enthält nur eine Zeile mit den Feldnamen. Bei der Eingabe aller Daten ist zu beachten:
Das erste Feld mit dem Namen "id" sollte unbedingt leer gelassen werden. Alternativ MUSS es mit jeweils UNTERSCHIEDLICHEN ganzen Zahlen gefüllt sein - es darf also keine Dubletten in der ganzen Tabelle geben! Die kleinste Zahl muss größer als 0 sein.
Eines der Felder "Vorname" und "Nachname" muss gefüllt werden. Die Adressfelder "Strasse", "Plz" und "Stadt" müssen ausgefüllt werden.
Die Kombination aus Namensfelder und Adressfelder muss eindeutig sein.
Die Felder mit den Namen "Land", "Telefon", "Email", "Anmerkung", "Kontakt", "Buchungskonto", "IBAN", "BIC" und "Zeitstempel" können leer gelassen werden
Postleitzahlen und ggf. auch Telefonnummern werden von Excel als Zahlen gesehen, sollen aber als Zeichenketten ("Strings") verstanden werden. Das kann man korrigieren, indem man bei der Eingabe ein Hochkomma voranstellt. Excel zeigt das dann als möglichen Fehler an - das muss man ignorieren.
Eingaben sollten keine führenden oder nachgestellte Leerzeichen enthalten
Die Felder "Anmerkung" und "Kontakt" können mehrzeilig sein - aber das ist nicht so schön bei der späteren Formatierung in DKV2. In Excel wird der Zeilenumbruch mit <alt>-<enter> eingegeben.
Nach der Eingabe kann man die Datei speichern. Excel könnte vorschlagen, dass man einanderes Format verwenden sollte. Das darf man dann natürlich NICHT.
Die so gefüllte Datei kann nun mit dem DB Browser importiert werden:
Zunächst die von DKV2 erstellte Datenbank wieder öffnen (falls sie geschlossen wurde).
Datei -> Import -> Tabelle aus CSV Datei auswählen und im Datei Auswahldialog die CSV Datei auswählen.
Im folgenden Dialog den Tabellennamen auf "Kreditoren" (ohne die Anführungszeichen) ändern, falls etwas anderes vorgeschlagen wird.
Spaltennamen in der ersten Zeile auswählen (falls nicht bereits ausgewählt)
Feld Seperator ";" (Semikolon)
String Zeichen " (Anführungszeichen)
Codiernug "ISO-8869-1"
Felder Trimmen (auswählen).
Dann "OK" anwählen. Jetzt <Strg>-s drücken und die Datenbank schließen.
Jetzt kann man die Datenbank wieder in DKV2 öffnen. Mit Kreditgeber-> Liste kann man kontrolieren, ob die Daten angekommen sind. Das wars - viel Eingabearbeit gespart! Soweit ganz einfach
** WARNUNG ** Der Import von Vertragsdaten ist schieriger und kann zu Fehlern führen, die man nur schwer entdecken kann. Das Erstellen eines Vertrages mit DKV2 ist schnell, einfach und zuverlässig und sollte - wenn es keine sehr guten Gründe gibt - bevorzugt werden.
Wie schon bei den Kreditgeber*innen sollte man sich die "leere" CSV Datei mit Hilfe von DB Browser erstellen lassen. Danach müssen dann - z.B. in Excel - die Daten hinzugefügt werden. Folgendes ist zu beachten:
Das Feld id bleibt - wie schon bei den Kreditoren - am besten leer.
KreditorId muss eine ganze Zahl sein: Und zwar genau die Zahl, die als "id" der zugehörige Kreditor beim einlesen in die Datenbank bekommen hat. Mit diesem Feld wird die Kreditoren Tabelle mit den Verträgen verknüpft. Ein Fehler hier und schon gehört ein Vertrag dem falschen Kreditor.
Die Kennung kann im Prinzip beliebig sein, solange jede Kennung nur einmal in der Tabelle vorkommt. DKV2 erzeugt die Kennung so: Beim Anlegen der Datenbank wird ein Kürzel (z.B. ESP) und ein Startindex vergeben - etwa 2304. Wird jetzt der erste Vertrag im Jahr 2022 angelegt, so bekommt er die Kennung "DK-ESP-2022-2304". Für jeden folgenden Vertrag wird der Index erhöht. Wird der 100ste Vertrag in 2023 eingegeben, so hat er die Kennung "DK-ESP 2023-2403".
"Anmerkung" kann - wie auch in der Kreditoren Tabelle - mehrzeilig sein.
Der Zinssatz wird als ganze Zahl in hundertstel Prozent angegeben. Für 1% muss also 100 eingetragen werden. Zinssatz ist keine Zeichenkette - man darf also kein Hochkomma voranstellen, wie bei der Postleitzahl.
Der Betrag des Vertrags - also die Zahl, über die der Vertrag abgeschlossen wurde - wird als ganz Zahl in ct eingetragen: Für 1000 Euro wird 1000000 eingetragen. Der Betrag ist keine Zeichenkette - man darf also kein Hochkomma voranstellen, wie bei der Postleitzahl.
Das Feld "thesaurierend" gibt an, wie die Verzinsung verrechnet werden soll. Es muss eine der Zahlen 0. 1, 2 und 3 eingetragen werden.
0 steht für "auszahlend" - DKV2 nimmt also an, dass die Zinsen nach der Verzinsung ausbezahlt werden und erstellt zusätzlich zur Buchung "Zinsanrechnung" auch eine Buchung "Auszahlung".
1 steht für "thesaurierend" - der Zins wird also nach der Zinsphase zum verzinslichen Guthaben zugerechnet. DKV2 erzeugt eine Buchung vom Typ "Zinsanrechnung"
2 steht für "Zinsen werden einbehalten aber nicht weiter verzinst". Die Zinsen bleiben beim Projekt, werden aber nicht verzinst.
3 steht für "zinslos" - es werden 0 Euro Zinsen angerechnet.
Das "Vertragsdatum" muss angegeben werden. Wie alle Datumsangaben muss das Datum als Zeichenkette eingegeben werden in dem Format "JJJJ-MM-DD". Zum Beispiel 2021-12-02. Das Vertragsdatum muss vor allen Buchungsdaten liegen - also insbesondere vor der ersten Einzahlung.
"Kfrist" steht für Kündigungsfrist. Sie wird in Monaten angegeben. Wurde keine Kündigungsfrist vereinbart, so muss -1 eingetragen werden. Kfrist und Laufzeitende hängen zusammen. Wie genau steht bei "Laufzeitende
Das Feld "AnlagenId" verweist auf Einträge im Feld id rowid in der Tabelle "Geldanlagen". Da diese noch leer ist, muss dieses Feld leer bleiben. Die Geldanlagen können später in DKV2 leicht nachgepflegt werden.
Das Feld "Laufzeitende" hängt mit Kfrist zusammen:
Es enthält für unbefristete Verträge den Wert "9999-12-31". Für solche Verträge MUSS Kfrist einen ganze positive Zahl oder 0 enthalten.
Wird ein unbefristeter Vertrag gekündigt, so trägt DKV2 in Laufzeitende das geplante Vertragsende ein. Kfrist wird dann -1.
Ist für den Vertrag ein Laufzeitende vereinbart, wird es hier in dem üblichen Datumsformat eingetragen. Dann muss - wie bei Kfrist beschrieben - Kfrist -1 enthalten.
Zum Laufzeitende muss ein Vertrag vom Anwender "beendet" werden. Die Vertragsdaten werden dann in die Tabelle "exVertraege" verschoben. Das überlässt man am besten DKV2.
Das Feld "zAktiv" kann den Wert 1 oder 0 (als Zahl) enthalten. 1 steht für "die Zinsen für den Vertrag werden jährlich berechnet und angerechnet" der Wert 0 steht für "die Zinsen werden nicht angerechnet". Wann wird dieses Feld verwendet? Es gibt Verträge, die die Zinszahlung erst ab Baubeginn oder Einzug zusagen. So können Projekte in der Ansparphase Geld sparen. Soche Verträge haben zunächst den Wert 0 im Feld zAktiv. In DKV2 kann man dann später die "Zinszahlung aktivieren". Das Feld zAktiv enthält dann 1 und ab dann werden Zinsen berechnet.
Das Feld Zeitstempel bleibt wieder leer (oder enthält eine beliebige Uhrzeit / Datum im Format "JJJJ-MM-DD HH:MM:SS"
Wenn alle Daten richtig eingetragen sind kann man das CSV speichern und mit DB Browser in die Datenbank importieren.
** WARNUNG ** Der Import von Buchungen ist komplizierter als der Import von Kreditoren und Verträgen. Inkonsistenzen können zu Problemen mit DKV2 führen, zu denen ich Euch nicht unterstützen werde. Es ist vermutlich leichter die Buchungen mit DKV2 auszuführen. Sollte es z.B. bei der Zinsberechnung Diskrepanzen zu den in Vorjahren gezahlten Zinsen geben (z.B. durch Rundungsfehler), so kann man die von DKV2 berechneten Zinsen anpassen. Dazu später mehr. Zunächst eine Erklärung der Felder:
"id" ist wieder ein Zähler, der automatisch angelegt wird - bleibt also im CSV leer.
"VertragsId" ist ein Verweis auf das Feld "id" in der Tabelle Vertraege. Ein Fehler hier hat üble Konsequenzen
"Datum" ist das Datum der Buchungen.
Bei Einzahlungen / Auszahlungen ist das Wertstellungsdatum des Kontoauszugs zu verwenden. Zum gleichen Datum werden unterjährige Zinsen angerechnet.
Die Jahreszinsanrechnung erfolgt zum 31. Dezember. Bei Auszahlenden Verträgen wird auch die Auszahlung der Zinsen zu diesem Datum berechnet.
Dieses Datum ist natürlich sehr wichtig und muss chronologisch richtig sein.
"BuchungsArt" ist eine Zahl, die andeutet, um was für eine Buchung es geht. Es gibt bisher 5 Buchungsarten:
Der Wert 1 steht für Einzahlung
Der Wert 2 steht für Auszahlung
Der Wert 4 steht für unterjährigen Zinsen (bei Ein- oder Auszahlungen)
Der Wert 8 steht für die jährliche Zinszahlungen zum Jahresende
Der Wert 16 steht für das Aktivieren der Zinszahlung. So "merkt" sich DKV2, ab wann die Zinszahlung erfolgen soll. Sieh dazu das Feld "zAktiv" in der Vertragstabelle.
"Betrag" ist - leicht zu erraten - der Buchungsbetrag. Er ist wie zuvor eine ganze Zahl und gibt den Buchungswert in ct. Auszahlungen werden als negative Zahlen gespeichert.
Zeitstempel kann leer bleiben.
Ich empfehle, Buchungen mit DKV2 vorzunehmen und nicht zu importieren. Führt z.B. eine Jahresabrechnung zu einer Diskrepanz zwischen dem bereits bezahlten Zins und DKV2, so kann man die Datenbank in DKV2 schließen, im DB Browser öffnen und den Wert des Zinses ändern. Schon heute kann man in DKV2 Buchungen löschen. Unter Umständen wird DKV2 in Zukunft es auch erlauben, die Werte von Buchungen zu ändern. Die Verantwortung für die Werte liegt ja bei Euch und nicht bei DKV2.