From caf336b0fab04f72adb35ac26fe17ce9117c8948 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer <126261667+JohannMaierhofer@users.noreply.github.com> Date: Wed, 15 Jan 2025 23:42:29 +0100 Subject: [PATCH] Fix Sepa Check (#571) * Fix Sepa Check * Kleiner Update --- .../gui/action/MitgliedLastschriftAction.java | 23 +++++++-------- .../jost_net/JVerein/io/AbrechnungSEPA.java | 28 +++++++++++-------- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/de/jost_net/JVerein/gui/action/MitgliedLastschriftAction.java b/src/de/jost_net/JVerein/gui/action/MitgliedLastschriftAction.java index cfcee8c16..6d355e133 100644 --- a/src/de/jost_net/JVerein/gui/action/MitgliedLastschriftAction.java +++ b/src/de/jost_net/JVerein/gui/action/MitgliedLastschriftAction.java @@ -122,7 +122,6 @@ private boolean checkSEPA(Mitglied m) throws RemoteException if (m.getZahlungsweg() == null || m.getZahlungsweg() != Zahlungsweg.BASISLASTSCHRIFT) { - abortDialog("Fehler", "Zahlungsweg ist nicht Basislastschrift"); return false; } @@ -136,22 +135,24 @@ private boolean checkSEPA(Mitglied m) throws RemoteException } } - // pruefe Sepa Gueltigkeit: Datum der letzen Abbuchung - Date letzte_lastschrift = m.getLetzteLastschrift(); - if (letzte_lastschrift != null) + // Pruefe Sepa Gueltigkeit: + // Bei Mandaten älter als 3 Jahre muss es eine Lastschrift + // innerhalb der letzten 3 Jahre geben + Calendar sepagueltigkeit = Calendar.getInstance(); + sepagueltigkeit.add(Calendar.MONTH, -36); + if (m.getMandatDatum().before(sepagueltigkeit.getTime())) { - Calendar sepagueltigkeit = Calendar.getInstance(); - sepagueltigkeit.add(Calendar.MONTH, -36); - if (letzte_lastschrift.before(sepagueltigkeit.getTime())) + Date letzte_lastschrift = m.getLetzteLastschrift(); + if (letzte_lastschrift == null + || letzte_lastschrift.before(sepagueltigkeit.getTime())) { - if (!confirmDialog("Letzte Lastschrift", - "Letzte Lastschrift ist älter als 36 Monate")) + if (!confirmDialog("Mandat abgelaufen", + "Das Mandat-Datum ist älter als 36 Monate und es erfolgte keine Lastschrift in den letzten 36 Monaten.")) { return false; } - } + } } - return true; } diff --git a/src/de/jost_net/JVerein/io/AbrechnungSEPA.java b/src/de/jost_net/JVerein/io/AbrechnungSEPA.java index a1f62b642..6bceef760 100644 --- a/src/de/jost_net/JVerein/io/AbrechnungSEPA.java +++ b/src/de/jost_net/JVerein/io/AbrechnungSEPA.java @@ -91,8 +91,6 @@ public class AbrechnungSEPA { - private final Calendar sepagueltigkeit; - private int counter = 0; public AbrechnungSEPA(AbrechnungSEPAParam param, ProgressMonitor monitor) @@ -117,8 +115,6 @@ public AbrechnungSEPA(AbrechnungSEPAParam param, ProgressMonitor monitor) Abrechnungslauf abrl = getAbrechnungslauf(param); - sepagueltigkeit = Calendar.getInstance(); - sepagueltigkeit.add(Calendar.MONTH, -36); Basislastschrift lastschrift = new Basislastschrift(); // Vorbereitung: Allgemeine Informationen einstellen lastschrift.setBIC(Einstellungen.getEinstellung().getBic()); @@ -981,20 +977,28 @@ private boolean checkSEPA(Mitglied m, ProgressMonitor monitor) { return true; } - Date letzte_lastschrift = m.getLetzteLastschrift(); - if (letzte_lastschrift != null - && letzte_lastschrift.before(sepagueltigkeit.getTime())) - { - monitor.log(Adressaufbereitung.getNameVorname(m) - + ": Letzte Lastschrift ist älter als 36 Monate."); - return false; - } + // Ohne Mandat keine Lastschrift if (m.getMandatDatum() == Einstellungen.NODATE) { monitor.log(Adressaufbereitung.getNameVorname(m) + ": Kein Mandat-Datum vorhanden."); return false; } + // Bei Mandaten älter als 3 Jahre muss es eine Lastschrift + // innerhalb der letzten 3 Jahre geben + Calendar sepagueltigkeit = Calendar.getInstance(); + sepagueltigkeit.add(Calendar.MONTH, -36); + if (m.getMandatDatum().before(sepagueltigkeit.getTime())) + { + Date letzte_lastschrift = m.getLetzteLastschrift(); + if (letzte_lastschrift == null + || letzte_lastschrift.before(sepagueltigkeit.getTime())) + { + monitor.log(Adressaufbereitung.getNameVorname(m) + + ": Das Mandat-Datum ist älter als 36 Monate und es erfolgte keine Lastschrift in den letzten 36 Monaten."); + return false; + } + } return true; }