Ich habe hierzu mehrere Commits gemacht, die das Problem erst mal
deutlich sauberer machen, als es vorher war. Ich schließe diesen Bug
daher.
Mein Ziele waren, die Maske deutlich widerstandsfähiger gegenüber
Fehlbedienungen sowie der BenutzerIn transparenter zu machen, was bei
Problemen passiert.
Weitere Verbesserungen sind natürlich OK, z.B. dass in der Maske
bereits festgelegt werden kann, welche Rechnungen wie unterzahlt
verbucht werden sollen, wenn eine Zahlung eben nicht gleich der Summe
der offenen Beträge ist.
- 66d468b093e7c4510722f22b4a0c069cb95e6117 »Bankauszug verbuchen: Warnungen/Fehler anzeigen; pro Zeile eine DB-Transaktion«
Hier wird zum Einen eine Datenbank-Transaktion eingeführt, die
verhindern, dass grobe Fehler mit inkonsistentem Datenbankzustand
belohnt werden.
Weiterhin wird hier der Grundstein dafür gelegt, dass während der
Bearbeitung auftretende Fehler und Warnungen der BenutzerIn
nachträglich in Tabellenform übersichtlich angezeigt werden, anstatt
die Funktion gleich komplett abzubrechen (bei Exceptions) oder nur
unübersichtlich angzeigt werden (Warnungen als Flash).
Das Datenbank-Transkations-Verhalten ist wie folgt:
1. Bei einer Ausnahme: Rollback und Anzeige in Tabelle als Fehler
2. Bei einem Fehler: Rollback und Anzeige in Tabelle als Fehler
3. Bei einer Warwnung: Commit und Anzeige in Tabelle als Warnung
4. Wenn kein Problem auftrat: Commit, keine Anzeige in Tabelle
Wenn in keiner der Zahlungen Warnungen oder Fehler auftreten, so wird
die Fehlertabelle auch nicht angezeigt.
- 0631432e58e8c70312adae94db3e41dd36bc6e30 »Bankauszug: Transaktionsrichtung mit Belegrichtung abgleichen«
Es war möglich, einer Transaktion beliebige Einkaufs- und
Verkaufsrechnungen zuzuweisen. Somit war es problemlos machbar, einer
erhaltenen Zahlung eine Verkaufsrechnung zuzuweisen.
Mit diesem Commit werden falsche Zahlungsrichtungen abgewiesen und gar
nicht durchgeführt. Zugelassen ist: erhaltene Zahlungen mit
Verkaufsrechnungen und stornierten Einkaufsrechnungen; gemachte
Zahlungen mit Einkaufsrechnungen und stornierten Verkaufsrechnungen.
»Abgewiesen« heißt: die Zahlung wird als Fehler in der Fehlertabelle
angezeigt und nicht verbucht.
- 0c93bf2085b5cca69cb831fd90a50ed0ec6b8601 »Bankauszug: Unterzahlung mehrerer Rechnungen verhindern«
Wenn mehrere Rechnungen ausgewählt werden, so verteilt der Algorithmus
schlicht den Betrag der Überweisungen auf die Rechnungen in der
Reihenfolge, in der die Rechnungen ausgewählt wurden. Dabei wird so
lange der volle offene Betrag bezahlt wie möglich, der Rest kommt auf
die folgende Rechnung.
Allerdings ist für das Programm nicht ersichtlich, welche Anteile
welcher Rechnungen des Kunden/Lieferanten tatsächlich damit beglichen
wurden.
Also muss verhindert werden, dass das passiert; eine Warnung genügt
nicht. Die Zahlung wird daher als Fehler in der Fehlertabelle
angezeigt und nicht verbucht.
Ist nur eine Rechnung zugewiesen, so bleiben Unterzahlungen problemlos
möglich und auch sinnvoll (z.B. Abschlagszahlungen, regelmäßige
Teilzahlungen, Irrtümer).
Dieser Commit kann nachträglich natürlich noch entschärft werden, wenn
z.B. die Masken so erweitert werden, dass die BenutzerIn im Vorfeld
genau steuern kann, welche Rechnungen unterzahlt werden sollen.
- 20392548f2e8ed92478542893df9852d6987e031 »Bankeinzug: bei Überzahlung eine Warnung ausgeben«
Eine Überzahlung ist oftmals OK oder unvermeidbar, sollte aber von der
BenutzerIn begutachtet werden. Daher wird die Zahlung durchaus
verbucht und im Anschluss an das Verbuchen eine Warnung in besagter
Tabelle angezeigt, aus der die BenutzerIn die Möglichkeit hat, die
Rechnungen direkt anzusteuern.