Giter VIP home page Giter VIP logo

dkv2's People

Contributors

derzyklop avatar frando avatar frnky avatar plant-hedgerows avatar schachigel avatar tamaloa avatar vopor avatar wipfl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

dkv2's Issues

Problems with hiding/showing columns in creditor and valid/deleted contract lists

I found the following problems:
a) When meta data was already set by using the select visible column feature and the data base is then updated to contain the new creditor fields the meta info is too short. In this case the selection info is not handled right (the read QBitArray of selected columns is not handled).
b) in creditor list the column index of telephone and eMail columns are mixed up.

Geldeingang bei hohen Direktkrediten auf zweite Nachkommastelle runden

Ein kleinerer Bug:

Bei Direktkrediten über 10.000 mit zwei Nachkommastellen (also exakten Centbeträgen):
Wenn ich den Geldeingang verbuche, wird auf die Zehnerstelle gerunden und dann bemängelt, dass Kredithöhe und Geld sich nicht decken. Es wäre daher schön, wenn beim Geldeingang bereits automatisch auf die zweite Nachkommastelle gerundet wird (passiert bereits bei direktkrediten unter 10.000)

Zinsauszahlung beim Zinsmodus "fest"

Einbehaltener Zins bei Verträgen, die die Zinsen zwar nicht auszahlen, aber auch nicht verzinsen (Zinsmodus "fest") soll ausbezahlt werden können, ohne dass sich die Höhe der Einlage verändert

Neue Briefe

Zu gängigen Aktionen sollte das Programm Briefe als PDF Dateien erzeugen können
Aktionen:

  • ! Geldeingang
  • Ein- und Auszahlung
  • Aktivierung der Zinsberechnung für Verträge mit verzögerter Zinszahlung
  • Änderung der Vertragslaufzeit / Kündigungsfrist

Vor der Erzeugung des Briefes sollte die Möglichkeit der Individualisierung bestehen (PDF Preview, Text Editor, Liste der Mustache Variablen).
Optional: Speicherung von Anrede und anderer Text Teile pro Kund*in.

Ältere Verträge hinzufügen

Was ist der beste Weg, bereits sei mehreren Jahren laufende Verträge hinzuzufügen?
Wenn ich einen Vertrag mit Anfangsdatum 1.1.12 eingebe, wirkt es, als müse ich erstmal eine Jahresendabrechnung der letzten 10 Jahre durchführen. Gibt es eine Möglichkeit, den Vertrag auf 1.1.12 zu datieren und direkt den heutigen Wert einzugeben? Oder ist es in dem Fall bessser einfach 1.1.22 als Vertragsdatum einzugeben?

Vielen Dank für die tolle Software!

Fortsetzung von 107: Berücksichtigung beendeter Verträge in Berechnungen zu Geldanlagen

(issue #107) ... Außerdem scheinen auch in der Übersicht der Anlagen beendete Verträge nicht berücksichtigt zu werden. Dies scheint mir Gefahrenpotential zur Verletzung der 20 Anteile / 100.000 pro Jahr Regelungen zu bieten. (durch das Kündigen eines Vertrages in einem 20er Zinssatz wird ja kein neuer Anteil frei;
Wenn der aber in der Übersicht nicht angezeigt wird, sieht es so aus als ob ein neuer angenommen werden kann und somit liefe man Gefahr mehr als 20 anzunehmen; genauso bei der 100.000er Regel; falls ein Kredit in einem Sonderfall kürzer als ein Jahr da ist, würde er in der Aufsummierung nach dem Beenden nicht mehr auftauchen und es könnte passieren, dass die 100.000 überschritten werden, da das Programm eine niedrigere Summe anzeigt)
Ist das gewolltes Verhalten?

Verwaltung Zinssätze mit max. 100.000€ in 12 Monaten

Mega cooles Tool! Wir überlegen auch mit unserer DK-Verwaltung von Excel umzusteigen. Was uns etwas verwundert hat, war wie die Zinssätze getrackt werden. Die mit max. 20 Anteilen passen soweit, aber bei denen die unter die Regelung "max. 100.000€ in 12 Monaten fallen" verstehen wir nicht ganz wie die getrackt werden sollen. Das Tool bietet ja nur die Möglichkeit die mit einem festen Zeitrahmen anzulegen. Wir werben aber kontinuierlich DKs ein, bis das halt voll ist, aber der Zinssatz kann durchaus länger als ein Jahr offen sein.
Hat es einen bestimmten Grund, dass das nur über einen fixen Zeitraum getrackt wird und nicht über die letzten 12 Monate immer? Siehst du eine Möglichkeit das anzupassen? (Ich hab C++ und Qt Erfahrung, kann mir das also auch selbst anschauen, wenn du mir vielleicht nen Tipp gibst wo im Code das zu finden ist und mir nen eigenen Fork erstellen, wenn das unerwünschte Funktionalität in dem Tool hier ist)
Vielen Dank!

Anmerkungsspalte

Hallo,
wir haben in letzter Zeit angefangen, vermehrt "Anmerkungen" bei Verträgen zu vergeben, teils mit etwas längerem Text. Funktioniert wunderbar! Allerdings "stört" das die Listenansicht der Verträge - entweder ist die Anmerkungsspalte sehr breit, oder wenn man sie kleiner zieht wird die Zeile höher weil der Text umbricht. Wir können die Spalte ausblenden, dann ist die Listenansicht wieder "normal" - allerdings ist dann die Anmerkung komplett unsichbar, was für die Alltagsarbeit auch wieder schwierig ist (weil dann eben die Anmerkung nicht berücksichtigt wird gegebenfalls).

Daher ein Feature Request:

  • Könnte man die Anmerkung für den jeweils aktiven Vertrag in der unteren Bildschirmhälfte anzeigen, da wo auch die Buchungen stehen?
  • Und / oder könnte die Anmerkungsspalte ganz nach rechts gezogen werden, so dass sie da dann einfach sehr breit sein kann, ohne die Bedienbarkeit der Listenansicht zu stören?

Viele Grüße! Franz

Änderung des Datums des Geldeingangs

Solange es keine weitere Buchungen gibt sollte man das Datum ändern können.
ggf. sollte das Datum auch "gelöscht" werden können, damit der Vertrag dann rückstandslos gelöscht wird.

Kreditgeber importieren

Hi,
ich hätte einen Feature Request: Kreditgeber aus einer CSV-Datei importieren.
Wie sicher viele andere auch haben wir nicht mit DKV2 gestartet, sondern mit einer Excel-Liste. Da sind unsere ca 100 Kreditgeber*innen drin. Die würden wir nun bald von Hand übertragen. Natürlich wäre es schöner, das aus einer CSV zu importieren. Könnte gerne auch sehr basic sein, d.h. z.B. vorgegebene Feldnamen, die irgendwo dokumentiert sind.
Ist das mit wenig Aufwand möglich?
Alternativ: Ich könnte mir auch vorstellen, ein (erstmal externes) Script dafür zu schreiben, das direkt in die sqlite-Datenbank schreibt. Wenn ich es richtig sehe, könnte ich in die Tabellen Kreditoren und Vertraege schreiben, plus evtl noch die Initialbuchung (Geldeingang) in Buchungen. Sollte das funktionieren, oder hat DKV2 da noch andere gespeicherte Sachen oder Referenzen oder ähnliches?
Danke!
Franz

Mehrere Instanzen von DKV2 gleichzeitig

Es ist manchmal nützlich DKV2 mehrfach laufen zu lassen, etwa um Daten von Verein und GmbH nebeneinander sehen zu können.
Dazu müsste allerdings das LOG File bereits beim Start anders als dkv2.log heißen

Angaben über bestehende Verträge erweitern

Verträge anlegen aus Geldanlagen:
Bei der Auswahl einer Anlage sollte folgende Info angezeigt werden:

  • Summe der Vertragswerte in dieser Anlage im Zeitraum / im letzten Jahr
  • Summe der Ein-/auszahlungen in dieser Anlage im Zeitraum / im letzten Jahr
  • Summe der Ein-/auszahlungen in der Anlage incl. Zinsen

Status:

  • Anzeige für Geldanlagen mit zeitl. Begrenzung ist defekt
  • Anzeige für fortlaufende Geldanlagen unvollständig

Docker build skript fails

Similar to #99, for which a fix is in my local branch https://github.com/quazgar/DKV2/tree/fix-docker-build

Yet, a few objects later, building dkdbcopy.o fails because it cannot find an empty constructor for dbForeignKey:

./dist_linux_docker.sh
...
86_64-linux-gnu-g++ -c -include DKV2 -pipe -O2 -std=gnu++1z -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_USE_QSTRINGBUILDER -DGIT_COMMIT=\"c8df4c4\" -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I../DKV2 -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o dkdbcopy.o ../DKV2/dkdbcopy.cpp
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qdebug.h:51,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QDebug:1,
                 from ../DKV2/pch.h:10:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h: In instantiation of 'void QVector<T>::reallocData(int, int, QArrayData::AllocationOptions) [with T = dbForeignKey; QArrayData::AllocationOptions = QFlags<QArrayData::AllocationOption>]':
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h:682:9:   required from 'void QVector<T>::append(const T&) [with T = dbForeignKey]'
../DKV2/dbtable.cpp:26:26:   required from here
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h:607:33: error: no matching function for call to 'dbForeignKey::dbForeignKey()'
  607 |                                 new (dst++) T();
      |                                 ^~~~~~~~~~~~~~~
In file included from ../DKV2/dbtable.h:4,
                 from ../DKV2/helpersql.h:4,
                 from ../DKV2/dbtable.cpp:3:
../DKV2/dbfield.h:56:5: note: candidate: 'dbForeignKey::dbForeignKey(const dbfield&, const QString&, const QString&, ODOU_Action, ODOU_Action)'
   56 |     dbForeignKey(const dbfield& local, const QString& parentTable, const QString& parentField, ODOU_Action delAction =NO_ACTION, ODOU_Action updAction =NO_ACTION)
      |     ^~~~~~~~~~~~
../DKV2/dbfield.h:56:5: note:   candidate expects 5 arguments, 0 provided
../DKV2/dbfield.h:47:5: note: candidate: 'dbForeignKey::dbForeignKey(const dbfield&, const dbfield&, ODOU_Action, ODOU_Action)'
   47 |     dbForeignKey(const dbfield& local, const dbfield& parent, ODOU_Action delAction =NO_ACTION, ODOU_Action updAction =NO_ACTION)
      |     ^~~~~~~~~~~~
../DKV2/dbfield.h:47:5: note:   candidate expects 4 arguments, 0 provided
../DKV2/dbfield.h:43:8: note: candidate: 'dbForeignKey::dbForeignKey(const dbForeignKey&)'
   43 | struct dbForeignKey
      |        ^~~~~~~~~~~~
../DKV2/dbfield.h:43:8: note:   candidate expects 1 argument, 0 provided
../DKV2/dbfield.h:43:8: note: candidate: 'dbForeignKey::dbForeignKey(dbForeignKey&&)'
../DKV2/dbfield.h:43:8: note:   candidate expects 1 argument, 0 provided
make: *** [Makefile:878: dbtable.o] Error 1

I made sure to work with a clean directory (removed build-dist-linux from previous builds) before running the build command.

Report and respect limits for Geldanlagen (100.000er and 20er)

Aus dem heutigen Call dieser feature request:

  • Jeder Direktkreditvertrag wird einer Geldanlage zugeordnet. Eine Geldanlage hat einen Zinssatz (der den Zinssatz für den DK-Vertrag bestimmt). Eine Geldanlage hat neben dem Zinssatz eine Art/Kategorie, entweder 100.000er oder 20er (plus vielleicht noch andere oder so).

Dann die relevante Auswertung je Geldanlage:

Für 100.000er:

  • Anzeige des Gesamtvolumens derjenigen Kreditverträge in dieser Geldanlage, die zwischen heute und heute vor einem Jahr abgeschlossen wurden. Diese Summe darf 100.000 nicht übersteigen. Anzeigen wieviel noch offen ist bis dahin.

Für 20er:

  • Wieviel Kreditverträge existieren in der Geldanlage. Limit dafür ist 20. Anzeigen wieviel noch offen ist bis dahin. Wichtig: Wenn ein 20er-Vertrag endet, darf der Counter NICHT reduziert werden. Sondern er darf nur zurück auf 0 gesetzt werden, wenn ALLE Verträge in der Geldanlage beendet sind.

Hilfreiche Extra-Features dazu:

  • Beim Anlegen eines neues Kredits je nach gewählter Geldanlage eine prominente Warnung anzeigen, wenn eine Grenze (s.o.) der Geldanlage durch den Kredit überschritten würde
  • Für 100.00er: Prognose. Wie sieht der Status der Geldanlage an zukünftigem Tag X aus, wenn sich durch einbehaltene Zinsen die Kreditsumme erhöhen? --> Frühwarnsystem. Evtl die Warnung beim anlegen eines neues Kredites so steuern, dass sie angezeigt wird, wenn mit dem neuen Direktkredit das Ergebnis der Prognose für in einem Jahr die 100.000-Euro-Grenze überschreiten würde
  • Für 100.00er: Audit. Für beliebigen Zeitraum/-punkt prüfen, ob die 100.000er-Grenze für alle 100.000er-Geldanlagen eingehalten wurde.

Feedback Anlagen

Hi,
ich habe heute die Funktion "Anlagen" ausprobiert. Vielen Dank für die Implementierung!

Wir haben diverse Verträge der Variante "100.000er". Hier ist noch ein Mismatch zwischen der rechtlichen Lage und der Darstellung in DKV2:

  • In der Anlagenübersicht wird unter "Summe (alle)" und "Summe (aktive)" jeweils der Nominalwert addiert. Das ist nicht korrekt, es müssten alle Einzahlungen addiert werden. Wir haben mehrere Verträge, die z.B. um 10.000 Euro aufgestockt wurden. Diese Einzahlungen sind Teil der Gesamtsumme der jeweiligen Anlage. Diese Summe darf (nach meinem Verständnis) die 100.000 während eines Jahres nicht überschreiten. Die Anzeige in DKV2 suggeriert hier, dass noch mehr "Platz" ist, als real der Fall.
  • Die Funktion "fortlaufend" scheint nicht korrekt zu funktionieren. Wenn ich eine Anlage mit "fortlaufend" statt Start- und Enddatum anlege und anschließend "Verträge automatisch zuordnen" klicke, wird die korrekte Anzahl an Verträgen zugeordnet. Allerdings steht in der Spalte "Anzahl (alle)" 1 (statt, wie korrekt, 18). Ebenfalls wird nur ein Vertrag in der Summenberechnung berücksichtigt. Wenn ich auf Rechtsklick -> Verträge anzeigen klicke werden alle Verträge angezeigt.

Buttonbeschriftungen in Fensterdialogen sind englisch

Kleinigkeit und überhaupt nicht wichtig, aber es ist mir gerade aufgefallen und ich dachte, ich nehme es als Anlass, hier mal in Kontakt zu kommen:
Die Buttons der Fensterdialoge sind auf englisch und ich frage mich, ob es an der Software oder meinem Betriebssystem liegt?
image

Ich nutze das AppImage unter NixOS, meine locale ist deutsch:

[nix-shell:~/Downloads]$ locale
LANG=de_DE.utf8
LC_CTYPE="de_DE.utf8"
LC_NUMERIC="de_DE.utf8"
LC_TIME="de_DE.utf8"
LC_COLLATE="de_DE.utf8"
LC_MONETARY="de_DE.utf8"
LC_MESSAGES="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"
LC_ALL=

Linux build fails

Hi,
when trying to build DKV2 locally using dist_linux_docker.sh, I get the following errors. I don't know enough C++ to make sense of them.

./dist_linux_docker.sh
Sending build context to Docker daemon  132.2MB
Step 1/13 : FROM ubuntu:20.04
 ---> f32fe8df6a4c
Step 2/13 : ENV TZ=Europe/Berlin
 ---> Using cache
 ---> 9d8d7c9c7c71
Step 3/13 : RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
 ---> Using cache
 ---> 5ca7d1a044a2
Step 4/13 : RUN apt update &&       apt install --assume-yes wget fuse binutils libglib2.0-0 software-properties-common git curl qt5-default qt5-qmake make g++
 ---> Using cache
 ---> 38e7439ea4ab
Step 5/13 : RUN apt-get update &&       apt-get install -y icnsutils libxcb-xfixes0 libxcb-icccm4-dev libxcb-icccm4 freetds-dev libsybdb5 libsybdb5 libxcb-image0 libxcb-image0-dev libgl1-mesa-dev libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-keysyms1-dev libxcb-render-util0 libxcb-xinerama0 libzstd-dev libcurl4-openssl-dev
 ---> Using cache
 ---> e4fe8f421157
Step 6/13 : RUN wget https://github.com/probonopd/linuxdeployqt/releases/download/7/linuxdeployqt-7-x86_64.AppImage --quiet --output-document=/usr/bin/linuxdeployqt && chmod +x /usr/bin/linuxdeployqt
 ---> Using cache
 ---> de98c6fdc50e
Step 7/13 : RUN apt-get install -y libfontconfig1 libegl1-mesa libcups2 libodbc1 libpq5 libgtk-3-0
 ---> Using cache
 ---> bfc0c98296ca
Step 8/13 : ENV QTDIR /usr/lib/x86_64-linux-gnu/qt5
 ---> Using cache
 ---> abebf3a87e7c
Step 9/13 : ENV QML_IMPORT_PATH="/qt/qml:/app/DKV2"
 ---> Using cache
 ---> 23e79f9235b7
Step 10/13 : ENV QML2_IMPORT_PATH="/qt/qml:/app/DKV2"
 ---> Using cache
 ---> 6903661a92dc
Step 11/13 : RUN git config --global --add safe.directory /app
 ---> Using cache
 ---> 6176e18acb7f
Step 12/13 : WORKDIR /app
 ---> Using cache
 ---> 6fb41c6abd7c
Step 13/13 : CMD /app/dist_linux.sh
 ---> Using cache
 ---> 7c07fac97722
Successfully built 7c07fac97722
Successfully tagged dkv2-build:latest
Building with QTDIR: `/usr/lib/x86_64-linux-gnu/qt5`
/app/build-dist-linux /app
x86_64-linux-gnu-g++ -c -include DKV2 -pipe -O2 -std=gnu++1z -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_USE_QSTRINGBUILDER -DGIT_COMMIT=\"ad13090\" -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I../DKV2 -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o contracttablemodel.o ../DKV2/contracttablemodel.cpp
x86_64-linux-gnu-g++ -c -include DKV2 -pipe -O2 -std=gnu++1z -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_USE_QSTRINGBUILDER -DGIT_COMMIT=\"ad13090\" -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I../DKV2 -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o dbtable.o ../DKV2/dbtable.cpp
x86_64-linux-gnu-g++ -c -include DKV2 -pipe -O2 -std=gnu++1z -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_USE_QSTRINGBUILDER -DGIT_COMMIT=\"ad13090\" -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I../DKV2 -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o dlgaskdate.o ../DKV2/dlgaskdate.cpp
x86_64-linux-gnu-g++ -c -include DKV2 -pipe -O2 -std=gnu++1z -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_USE_QSTRINGBUILDER -DGIT_COMMIT=\"ad13090\" -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I../DKV2 -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o dlgchangecontracttermination.o ../DKV2/dlgchangecontracttermination.cpp
x86_64-linux-gnu-g++ -c -include DKV2 -pipe -O2 -std=gnu++1z -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_USE_QSTRINGBUILDER -DGIT_COMMIT=\"ad13090\" -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I../DKV2 -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o dlgdisplaycolumns.o ../DKV2/dlgdisplaycolumns.cpp
x86_64-linux-gnu-g++ -c -include DKV2 -pipe -O2 -std=gnu++1z -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_USE_QSTRINGBUILDER -DGIT_COMMIT=\"ad13090\" -DQT_NO_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I../DKV2 -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtPrintSupport -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtSql -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o dlginterestletters.o ../DKV2/dlginterestletters.cpp
../DKV2/contracttablemodel.cpp: In function 'QDate {anonymous}::dateFromNP(const QString&)':
../DKV2/contracttablemodel.cpp:17:48: error: 'SkipEmptyParts' is not a member of 'Qt'
   17 |     QStringList lines =s.split(qsl("\xA"), Qt::SkipEmptyParts);
      | ^~~~~~~~~~~~~~
make: *** [Makefile:804: contracttablemodel.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from /usr/include/x86_64-linux-gnu/qt5/QtCore/qdebug.h:51,
                 from /usr/include/x86_64-linux-gnu/qt5/QtCore/QDebug:1,
                 from ../DKV2/pch.h:10:
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h: In instantiation of 'void QVector<T>::reallocData(int, int, QArrayData::AllocationOptions) [with T = dbForeignKey; QArrayData::AllocationOptions = QFlags<QArrayData::AllocationOption>]':
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h:682:9: required from 'void QVector<T>::append(const T&) [with T = dbForeignKey]'
../DKV2/dbtable.cpp:26:26:   required from here
/usr/include/x86_64-linux-gnu/qt5/QtCore/qvector.h:607:33: error: no matching function for call to 'dbForeignKey::dbForeignKey()'
  607 |                                 new (dst++) T();
      |                                 ^~~~~~~~~~~~~~~
In file included from ../DKV2/dbtable.h:4,
                 from ../DKV2/helpersql.h:4,
                 from ../DKV2/dbtable.cpp:3:
../DKV2/dbfield.h:56:5: note: candidate: 'dbForeignKey::dbForeignKey(const dbfield&, const QString&, const QString&, ODOU_Action, ODOU_Action)'
   56 |     dbForeignKey(const dbfield& local, const QString& parentTable, const QString& parentField, ODOU_Action delAction =NO_ACTION, ODOU_Action updAction =NO_ACTION)
      |     ^~~~~~~~~~~~
../DKV2/dbfield.h:56:5: note:   candidate expects 5 arguments, 0 provided
../DKV2/dbfield.h:47:5: note: candidate: 'dbForeignKey::dbForeignKey(const dbfield&, const dbfield&, ODOU_Action, ODOU_Action)'
   47 |     dbForeignKey(const dbfield& local, const dbfield& parent, ODOU_Action delAction =NO_ACTION, ODOU_Action updAction =NO_ACTION)
      |     ^~~~~~~~~~~~
../DKV2/dbfield.h:47:5: note:   candidate expects 4 arguments, 0 provided
../DKV2/dbfield.h:43:8: note: candidate: 'dbForeignKey::dbForeignKey(const dbForeignKey&)'
   43 | struct dbForeignKey
      |        ^~~~~~~~~~~~
../DKV2/dbfield.h:43:8: note:   candidate expects 1 argument, 0 provided
../DKV2/dbfield.h:43:8: note: candidate: 'dbForeignKey::dbForeignKey(dbForeignKey&&)'
../DKV2/dbfield.h:43:8: note:   candidate expects 1 argument, 0 provided
make: *** [Makefile:859: dbtable.o] Error 1

Assume people not know what 30/360 and act/act is

The interest calculation method screen says DKV2 supports 30/360 and act/act.

Here are two paragraphs that could be added to each option in order to give users a little bit more of a clue what they are doing, if they are just starting with the whole direct loans topic.

30/360

Die Deutsche Zinsmethode sieht vor, dass jeder Monat mit 30 Zinstagen und ein gesamtes Jahr mit 360 Zinstagen gerechnet wird.

act/act

Die taggenaue Zinsmethode sieht vor, dass sowohl die Anzahl der Zinstage also auch die Länge des Basisjahres immer kalendergenau bestimmt wird.

Finalize Contract: Interest calculation is wrong

In contract::finalize() the interest calculation is wrong for contracts with interestModel::fixed .
This is due to the fact that the interestModel is overwritten with interestModel::reinvest in the function contract::finalize().

Zinsberechnung bei auszahlenden Verträgen mit Einzahlung

Hallo,

folgende Situation:
Vertrag mit Zinsmodus "auszahlend", eröffnet am z.B. 1.1.2021 mit 1% Zins.
Erste Einzahlung am 1.1.2021 über 1000 Euro.
Zweite Einzahlung (Aufstockung) am 1.7.2021 über 2000 Euro.
Jetzt rechnet DKV2 zeitgleich zur zweiten Einzahlung die bis dahin angefallenen Zinsen an (also hier: 1000 * 1% * halbes Jahr = 5 Euro).
Dann wird bei der Jahresabrechnung der verbleibende Zins als Jahreszins gerechnet und als Auszahlung angegeben. Also hier 3000 EUR * 1% * 6 Monate = 15 Euro.
Es wird dann eine Auszahlung von 15 Euro verbucht (bzw 14,94 weil halbes Jahr minus 1 Tag). Der Gesamtwert des Vertrages steht dann auf 3005 Euro.

Nach unserem Verständnis sollten bei auszahlenden Verträgen die 5 Euro, die im ersten halben Jahr vor der Aufstockung an Zinsen anfielen, ebenfalls ausgezahlt werden. Also Auszahlung in diesem Fall 20 Euro, so dass die Gesamtsumme des Vertrages nach dem Jahreswechsel bei 3000 und nicht bei 3005 steht.

Ist das nachvollziehbar? Sehe ich das richtig, dass es im Moment keine Möglichkeit gibt, dass DKV2 das so rechnet?

Danke und schönen Gruß,
Franz

Zinsmodus (Zinseszins ja/nein) in den Zinsbriefen nennen

Es wäre toll wenn der Zinsmodus (Zinsen angespart und verzinst / Zinsen angespart aber nicht verzinst) in den jährlichen Zinsbriefen mit genannt wird.

Vor allem um unnötige Nachfragen zu vermeiden (so manche:r DK-Gebende hat ein Jahr später vergessen welche Zinsoption ausgewählt wurde).

Anbieten würde sich der Ort an dem im Template schon die Ausgabe von {{#zzAusgesezt}}(ausgesetzt bis Baugenehmigung){{/zzAusgesezt}} vorgesehen ist (im Screnshot rot umrandet).

Unbenannt

(hat natürlich keine hohe Priorität, aber falls wer sowieso etwas an den Templates macht :)

Lizenz festlegen (specify License)

Es wäre schön wenn für diese Software allen klar ist unter welcher Lizenz diese genutzt werden darf.

Toll wäre natürliche eine Open Source Lizenz :)

Vertragsliste als PDF ausgeben...

... schlägt fehl, wenn die Anmerkung Zeilenumbrüche enthalten. Die umbrochenen Zeilen erscheinen als Zeilen im csv.

Verträge -> Liste
Verträge -> Listen drucken -> Vertragstabelle (gefiltert)

Zinsmodus ändern (auszahlend/ansparend)

Hi,
wir hatten jetzt schon mehrfach die Anfrage, bei bestehenden Verträgen den Zinsmodus von auszahlend auf ansparend zu wechseln. Da das für uns auch eher vorteilhaft ist sind wir dem immer gerne nachgekommen. Ich habe dazu von Hand die sqlite-Datenbank bearbeitet (mit SQLitebrowser) und beim entsprechenden Vertrag "thesaurierend" von 0 auf 1 gestellt. Nach erster Prüfung scheint das korrekt zu funktionieren.
Denkst du, dass das irgendwie problematisch ist oder Logiken von DKV2 durcheinander bringt?
Wenn nein - wäre das hier ein Feature Request, das direkt in DKV2 zu ermöglichen.
Schöne Grüße Franz

Building on Linux fails

Hi,

thanks for this tool. I'm watching your presentation 🙂 and now tried building the project on Linux.

As there are no build instructions, and I'm not experienced with C++/Qt setups, I might be missing something obvious.

Here's what I did:

  • Install qtcreator
  • Open dkv2.pro with qtcreator
  • Click the Run button

qmake seems to run fine without errors, but the actual build then errors with the following log.

Environment:

  • Arch linux
  • QT Creator 4.14.1
  • main branch as of 2021-02-25
21:13:29: Running steps for project dkv2...
21:13:29: Configuration unchanged, skipping qmake step.
21:13:29: Starting: "/usr/bin/make" -j8
cd DKV2/ && ( test -e Makefile || /usr/bin/qmake -o Makefile /home/bit/Code/mhs/DKV2/DKV2/DKV2.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug ) && /usr/bin/make -f Makefile 
cd TESTS/ && ( test -e Makefile || /usr/bin/qmake -o Makefile /home/bit/Code/mhs/DKV2/TESTS/TESTS.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug ) && /usr/bin/make -f Makefile 
make[1]: Entering directory '/home/bit/Code/mhs/build-dkv2-Desktop-Debug/TESTS'
g++ -c -pipe -g -std=gnu++1y -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_TESTLIB_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR='"/home/bit/Code/mhs/build-dkv2-Desktop-Debug/TESTS"' -DQT_QML_DEBUG -I../../DKV2/TESTS -I. -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtTest -I/usr/include/qt/QtSql -I/usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o booking.o ../../DKV2/DKV2/booking.cpp
g++ -c -pipe -g -std=gnu++1y -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_TESTLIB_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR='"/home/bit/Code/mhs/build-dkv2-Desktop-Debug/TESTS"' -DQT_QML_DEBUG -I../../DKV2/TESTS -I. -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtTest -I/usr/include/qt/QtSql -I/usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o contract.o ../../DKV2/DKV2/contract.cpp
g++ -c -pipe -g -std=gnu++1y -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_TESTLIB_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR='"/home/bit/Code/mhs/build-dkv2-Desktop-Debug/TESTS"' -DQT_QML_DEBUG -I../../DKV2/TESTS -I. -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtTest -I/usr/include/qt/QtSql -I/usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o dbstatistics.o ../../DKV2/DKV2/dbstatistics.cpp
g++ -c -pipe -g -std=gnu++1y -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_TESTLIB_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR='"/home/bit/Code/mhs/build-dkv2-Desktop-Debug/TESTS"' -DQT_QML_DEBUG -I../../DKV2/TESTS -I. -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtTest -I/usr/include/qt/QtSql -I/usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o dkdbhelper.o ../../DKV2/DKV2/dkdbhelper.cpp
g++ -c -pipe -g -std=gnu++1y -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_TESTLIB_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR='"/home/bit/Code/mhs/build-dkv2-Desktop-Debug/TESTS"' -DQT_QML_DEBUG -I../../DKV2/TESTS -I. -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtTest -I/usr/include/qt/QtSql -I/usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o dkdbviews.o ../../DKV2/DKV2/dkdbviews.cpp
g++ -c -pipe -g -std=gnu++1y -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_TESTLIB_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR='"/home/bit/Code/mhs/build-dkv2-Desktop-Debug/TESTS"' -DQT_QML_DEBUG -I../../DKV2/TESTS -I. -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtTest -I/usr/include/qt/QtSql -I/usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o helperfin.o ../../DKV2/DKV2/helperfin.cpp
g++ -c -pipe -g -std=gnu++1y -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_TESTLIB_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR='"/home/bit/Code/mhs/build-dkv2-Desktop-Debug/TESTS"' -DQT_QML_DEBUG -I../../DKV2/TESTS -I. -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtTest -I/usr/include/qt/QtSql -I/usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o letterTemplate.o ../../DKV2/DKV2/letterTemplate.cpp
make[1]: Entering directory '/home/bit/Code/mhs/build-dkv2-Desktop-Debug/DKV2'
g++ -c -pipe -g -std=gnu++1y -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_USE_QSTRINGBUILDER -DQT_QML_DEBUG -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I../../DKV2/DKV2 -I. -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtSql -I/usr/include/qt/QtCore -I. -I. -I/usr/lib/qt/mkspecs/linux-g++ -o booking.o ../../DKV2/DKV2/booking.cpp
In file included from ../../DKV2/DKV2/booking.cpp:4:
../../DKV2/DKV2/contract.h:79:19: error: declaration of ‘interestModel contract::interestModel() const’ changes meaning of ‘interestModel’ [-fpermissive]
   79 |     interestModel interestModel() const { return fromInt(td.getValue(qsl("thesaurierend")).toInt());}
      |                   ^~~~~~~~~~~~~
../../DKV2/DKV2/contract.h:15:12: note: ‘interestModel’ declared here as ‘enum class interestModel’
   15 | enum class interestModel {
      |            ^~~~~~~~~~~~~
In file included from ../../DKV2/DKV2/dbstatistics.h:8,
                 from ../../DKV2/DKV2/dbstatistics.cpp:5:
../../DKV2/DKV2/contract.h:79:19: error: declaration of ‘interestModel contract::interestModel() const’ changes meaning of ‘interestModel’ [-fpermissive]
   79 |     interestModel interestModel() const { return fromInt(td.getValue(qsl("thesaurierend")).toInt());}
      |                   ^~~~~~~~~~~~~
../../DKV2/DKV2/contract.h:15:12: note: ‘interestModel’ declared here as ‘enum class interestModel’
   15 | enum class interestModel {
      |            ^~~~~~~~~~~~~
In file included from ../../DKV2/DKV2/booking.cpp:4:
../../DKV2/DKV2/contract.h:79:19: error: declaration of ‘interestModel contract::interestModel() const’ changes meaning of ‘interestModel’ [-fpermissive]
   79 |     interestModel interestModel() const { return fromInt(td.getValue(qsl("thesaurierend")).toInt());}
      |                   ^~~~~~~~~~~~~
../../DKV2/DKV2/contract.h:15:12: note: ‘interestModel’ declared here as ‘enum class interestModel’
   15 | enum class interestModel {
      |            ^~~~~~~~~~~~~
make[1]: Leaving directory '/home/bit/Code/mhs/build-dkv2-Desktop-Debug/DKV2'
make[1]: *** [Makefile:956: booking.o] Error 1
make: *** [Makefile:48: sub-DKV2-make_first] Error 2
make: *** Waiting for unfinished jobs....
g++ -c -pipe -g -std=gnu++1y -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_TESTLIB_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR='"/home/bit/Code/mhs/build-dkv2-Desktop-Debug/TESTS"' -DQT_QML_DEBUG -I../../DKV2/TESTS -I. -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtTest -I/usr/include/qt/QtSql -I/usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o helpersql.o ../../DKV2/DKV2/helpersql.cpp
In file included from ../../DKV2/DKV2/contract.cpp:7:
../../DKV2/DKV2/contract.h:79:19: error: declaration of ‘interestModel contract::interestModel() const’ changes meaning of ‘interestModel’ [-fpermissive]
   79 |     interestModel interestModel() const { return fromInt(td.getValue(qsl("thesaurierend")).toInt());}
      |                   ^~~~~~~~~~~~~
../../DKV2/DKV2/contract.h:15:12: note: ‘interestModel’ declared here as ‘enum class interestModel’
   15 | enum class interestModel {
      |            ^~~~~~~~~~~~~
In file included from ../../DKV2/DKV2/dkdbhelper.cpp:13:
../../DKV2/DKV2/contract.h:79:19: error: declaration of ‘interestModel contract::interestModel() const’ changes meaning of ‘interestModel’ [-fpermissive]
   79 |     interestModel interestModel() const { return fromInt(td.getValue(qsl("thesaurierend")).toInt());}
      |                   ^~~~~~~~~~~~~
../../DKV2/DKV2/contract.h:15:12: note: ‘interestModel’ declared here as ‘enum class interestModel’
   15 | enum class interestModel {
      |            ^~~~~~~~~~~~~
g++ -c -pipe -g -std=gnu++1y -Wall -Wextra -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_PRINTSUPPORT_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_TESTLIB_LIB -DQT_SQL_LIB -DQT_CORE_LIB -DQT_TESTCASE_BUILDDIR='"/home/bit/Code/mhs/build-dkv2-Desktop-Debug/TESTS"' -DQT_QML_DEBUG -I../../DKV2/TESTS -I. -I/usr/include/qt -I/usr/include/qt/QtPrintSupport -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtTest -I/usr/include/qt/QtSql -I/usr/include/qt/QtCore -I. -I/usr/lib/qt/mkspecs/linux-g++ -o csvwriter.o ../../DKV2/DKV2/csvwriter.cpp
make[1]: *** [Makefile:998: dbstatistics.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [Makefile:956: booking.o] Error 1
make[1]: *** [Makefile:970: contract.o] Error 1
make[1]: *** [Makefile:1029: dkdbhelper.o] Error 1
make[1]: Leaving directory '/home/bit/Code/mhs/build-dkv2-Desktop-Debug/TESTS'
make: *** [Makefile:73: sub-TESTS-make_first] Error 2
21:13:38: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project dkv2 (kit: Desktop)
When executing step "Make"
21:13:38: Elapsed time: 00:09.

Mandantenfähigkeit

getrennte verarbeitung von z.B. "Verein" und "GmbH" (und weitere) - jedoch in einer Datei mit gemeinsamer Kundenliste

Import existierender Datenbanken?

siehe auch: mehrere Instanzen von DKV2 erlauben

ContractLists: KreditorIn is shown as empty if Vorname is NULL

If no character is given in the Vorname (first name) field of a creditor the combination "Nachname, Vorname" is empty.
This is true for the list of valid contracts, deleted contracts and the selection list for possible creditor (when creating a new contract).

SegFault after Liste drucken/Zinsbriefe

There is an segmentation fault after printing the interest letters.
It happens in ContractTableModel::setCol13ExtraData() line 43.
Removing updateView() in MainWindow::on_action_menu_contracts_interestLetters_triggered () fixes this.
As this operation doesn't change the data and the view this should be OK.

Berücksichtigen von beendeten Verträgen in Übersichten

Wenn ich die Gesamtsumme der ausgezahlten Zinsen aus der csv-Datei, die bei der Jahresabrechnung erzeugt wird, mit der Übersicht "Ausgezahlte Zinsen pro Jahr" vergleiche, stimmen die Beträge nicht überein. Wenn ich die Zinsen der mittlerweile beendeten Verträge zusammenzähle, komme ich auf die Differenz der beiden Zahlen. Ähnliches Fehlen von bereits beendeten Verträgen erscheint mir auch in den restlichen Übersichten aufzutreten. Mir scheint es, dass beendete Verträge in den Übersichten nicht berücksichtigt werden?
Außerdem scheinen auch in der Übersicht der Anlagen beendete Verträge nicht berücksichtigt zu werden. Dies scheint mir Gefahrenpotential zur Verletzung der 20 Anteile / 100.000 pro Jahr Regelungen zu bieten. (durch das Kündigen eines Vertrages in einem 20er Zinssatz wird ja kein neuer Anteil frei; wenn der aber in der Übersicht nicht angezeigt wird, sieht es so aus als ob ein neuer angenommen werden kann und somit liefe man Gefahr mehr als 20 anzunehmen; genauso bei der 100.000er Regel; falls ein Kredit in einem Sonderfall kürzer als ein Jahr da ist, würde er in der Aufsummierung nach dem Beenden nicht mehr auftauchen und es könnte passieren, dass die 100.000 überschritten werden, da das Programm eine niedrigere Summe anzeigt)
Ist das gewolltes Verhalten?

Programm läuft unter Windows, in der Version 0.20.0.8

No current account value in contract list

There is no column that shows the current account value in the list of contracts - at least for interestless contracts.
If the contract is without interests the column 'Verzinsliches Guthaben' only shows 'Keine Verzinsung'.
Examples:
A contract of 1.000,- at the beginning, but 500,-- has been paid back.
A contract of 1.000,- and the creditor pays extra 500,-- into the same contract.

Possible solutions:
a) The column 'Verzinsliches Guthaben' shows the current account value instead of 'Keine Verzinsung'.
b) An extra column with the account total value to the last booking (sum of bookings of the contract).

Behandlung von Auszahlungen

(Ausnahmsweise deutsch, weil mein Finanz-Englisch nicht ausreicht.)
Bei einem Vertrag mit festem Zinsmodus (nicht auszahlend, nicht thesaurierend) wurden zu einem Zeitpunkt x die aufgelaufenen Zinsen gespendet an einen Dritten - also ausbezahlt.
Das stellt sich jetzt so dar:
1000,- Einzahlung
10,- Zinsen
10,- Zinsen
10,- Zinsen
30,- Auszahlung
Daraufhin zeigt die Vertragstabelle einen verzinslichen Saldo von 970,- Euro.
Das ist doch irgendwie ungerecht...
m.E. müsste es bei 'Ein-/Auszahlung' tatsächlich einen zusätzlichen Buchungsmodus 'Zinsauszahlung' geben, damit sauber zwischen Auszahlung vom eingelegtem Kredit und aufgelaufenen Zinsen unterschieden werden kann.

Ein-/ Auszahlungen ohne zinseszins Effekt

Ist Status:
Beim Ein- oder Auszahlen werden die bis dahin fällig gewordenen Zinsen des laufenden Jahres angerechnet. Dies führt zu einem Zinseszins Effekt bei der Berechnung der Jahresabrechnung.

Ziel Status:
Man hat die Möglichkeit / es ist das übliche Verhalten die Zinsen nicht anzurechnen, so dass kein Zinseszins Effekt auftritt. Dafür mus die Berechnung der Zinsen beim Vertragsende bzw. beim Jahreszins überarbeitet / erweitert werden. Um Kompatibilität zu erhalten bleibt die Zinsanrechnung als Option erhalten.

Warum?
Rechnet man die Zinsen bei einer E/A Zahlung an, so entsteht für diese Zinsen am Jahresende ein Zinseszins-Effekt.
Dieser ist für kleine Zinssätze geringfügig. Bei Verträgen mit regelm. Einzahlungen wird der Effekt aber größer, so dass man ihn nicht ignorieren sollte. Die angestrebte neue Methode ist in diesem Sinne zu bevorzugen.

Vergleich_Einzahlung_Mit-Ohne_Zinsanrechnung.ods

Kommazahlen für Ein-/Auszahlungen erlauben

Hallo, ich evaluiere gerade DKV2 für unser Projekt, gefällt mir sehr gut bis jetzt.
Ich hab versucht unsere bestehenden DKs damit abzubilden, dabei habe ich es nicht geschafft, eine Auszahlung mit Nachkommastellen hinzukriegen. Der Dialog scheint das zu unterdrücken.

Falsche Zinsbescheinigung, wenn längst beendete Verträge vorhanden sind

Wenn die Jahreszinsbescheinigungen ausgedruckt werden, dann ist die Summe der ausgezahlten Zinsen falsch, wenn der Kreditor Verträge hat, die schon vor der Zinsperiode beendet wurden.
Der Fehler wurde von Lukas (Solijanka) gemeldet.
Die Verträge müssen gefiltert werden, ob sie evtl. zu jung oder zu alt für die jeweilige Zinsperiode sind.

Option to update the Zinssatz

Hallo all,

I am living in an MHS project in Marburg and we are reaching the limits of our DK tracking with spreadsheets, so I am curious about possibly adopting DKV2 as our management tool.

The problem we have with our spreadsheet is that we see the need (with rising inflation and longer-term DKs) to be able to vary the interest rate / Zinssatz over time. Is that possible in DKV2 (I downloaded and had a look around, but I couldn't see the option)? Do you plan to add such a feature? (Or would you accept a pull request if I tried?)

Many thanks,

Arthur

Auflistung Verträge - rote Markierung

In der Liste mit den Verträgen sind ja manche Verträge rot markiert; soweit ich das erkennen kann, sollten das die Verträge sein bei denen ein Kündigungsdatum in der Vergangenheit eingetragen ist.
Allerdings sind bei uns auch eine ganze Menge anderer Verträge rot gefärbt, die kein Kündigungsdatum eingetragen haben, sondern einfach eine Kündigungsfrist von 6 Monaten. Nach einigem hin und her, habe ich festgestellt, dass alle Verträge ab dem 257. der eingetragen ist (habe in die Datenbank selbst reingeschaut und nach der ID sortiert) rot gefärbt sind.
Habe testweise mal DKs in den ersten 256 gelöscht und für jeden den ich lösche, verschwindet bei einem die rote Färbung, sodass es immer die ersten 256 sind, die korrekt dargestellt werden und alle danach sind rot.
Dass das eine 2er Potenz ist, ab der es schief geht hat mich misstrauisch gemacht...
Hast du eine Idee wo ich nach dem Problem weiter suchen könnte? Könnte das im Programm in der Darstellung liegen?

No link to creditor in list of ended contracts

In the list of ended contracts there is no column with the name of the creditor and no option to show the creditor.
So the is forced to guess to which creditor the ended contract belongs.
Wouldn't it be the easiest to use (nearly) the identical view for running and for ended contracts?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.