Seite 1 von 1
Zusatzbeiträge bei Neumitglied wird nicht abgerechnet die 2.
Verfasst: Donnerstag 20. Oktober 2011, 12:44
von Danzelot
Hallo Heiner,
ich habe neue Mitglieder am 19.10. mit Eintrittsdatum 18.10. erfasst und wollte für diese auch sofort die Mitgliedsbeiträge einziehen. So weit so gut. Alle Mitgliedsbeiträge wurden in die DTAUS übernommen.
Bei einem Mitglied habe ich noch einen Zusatzbeitrag mit Fälligkeit 18.10. erfasst. Dieser wurde nicht abgerechnet. Erst als ich den Stichtag auf den 20.10. gesetzt habe, wurde der Zusatzbeitrag abgerechnet.
Nach der suche im Code ist mir auch klar, warum das so ist. In der Klasse Abrechnung#abbuchenZusatzbetraege(...) ist folgende Prüfung enthalten:
Code: Alles auswählen
if ((m.getEingabedatum() == null || m.getEingabedatum().before(
param.stichtag))
&& (m.getAustritt() == null || m.getAustritt().before(
param.stichtag)))
{
Warum wird hier auf das Erfassungsdatum und nicht auf das Eintrittsdatum geprüft? Wann das Mitglied erfasst wurde ist für die Abrechnung doch irrelevant. Wichtig ist, dass das Mitglied zum Stichtag eingetreten ist, oder?
Gruß
Danzelot
Re: Zusatzbeiträge bei Neumitglied wird nicht abgerechnet di
Verfasst: Freitag 21. Oktober 2011, 14:43
von heiner
Hallo Danzelot,
du hast Recht. Ich habe es jetzt so
Code: Alles auswählen
if ((m.getEintritt() == null || m.getEintritt().before(param.stichtag) || m
.getEintritt().equals(param.stichtag))
&& (m.getAustritt() == null || m.getAustritt().before(
param.stichtag)))
umgebaut.
Heiner
Re: Zusatzbeiträge bei Neumitglied wird nicht abgerechnet di
Verfasst: Freitag 21. Oktober 2011, 15:23
von Danzelot
Hallo Heiner,
genau so habe ich mir das gedacht. So kann bereits am Eintrittstag abgerechnet werden.
Gruß
Danzelot
Re: Zusatzbeiträge bei Neumitglied wird nicht abgerechnet di
Verfasst: Sonntag 25. Dezember 2011, 15:33
von Max
Hallo Heiner,
ich habe den Quellcode betrachtet und mir ist folgendes aufgefallen... Muss in dem Code-Abschnitt
Code: Alles auswählen
if ((m.getEintritt() == null || m.getEintritt().before(param.stichtag) || m
.getEintritt().equals(param.stichtag))
&& (m.getAustritt() == null || m.getAustritt().before(
param.stichtag)))
nicht m.getAustritt().after(param.stichtag) anstatt m.getAustritt().before(param.stichtag) stehen. Stichtag muss doch zwischen Eintritt und Austritt liegen oder?
Grüße,
Max
Re: Zusatzbeiträge bei Neumitglied wird nicht abgerechnet di
Verfasst: Montag 26. Dezember 2011, 10:25
von heiner
Hallo Max,
mit der Abfrage werden die Mitglieder ausgewählt, deren
- Eintrittsdatum leer ist oder deren Eintrittsdatum vor dem Stichtag liegt. Wenn es nach dem Stichtag liegt, ist es am Abrechnungsstichtag noch kein Mitglied
- Austrittsdatum leer ist (Mitglied hat noch nicht gekündigt) oder deren Austrittsdatum vor dem Stichtag liegt (Austritt ist noch nicht wirksam, z. B. Kündigung zum 31.12., Abrechnung mit Stichtag zum 1.11. = Beitrag muss noch abgerechnet werden)
Das ist schon alles in Ordnung.
Heiner
Re: Zusatzbeiträge bei Neumitglied wird nicht abgerechnet di
Verfasst: Dienstag 27. Dezember 2011, 12:40
von Max
Hallo Heiner,
vielen Dank für die Aufklärung! Genauso habe ich die Logik auch verstanden. Ich habe bestimmt ein Verständnisproblem aber ich sehe immer noch einen Fehler im Code bei dem m.getAustritt().before(param.stichtag). Ich habe eine Skizze der Zeitachse als Beispiel gemacht mit drei Punkte drauf (Eintritt, Stichtag und Austritt). Nach meinem Verständnis muss Austrittsdatum NACH dem Stichtag liegen. Dann ist der Austritt an dem Abrechnungsstichtag noch nicht wirksam und der Beitrag muss noch abgerechnet werden. Dies wird mit dem Ausdruck m.getAustritt().after(param.stichtag) sichergestellt.
----Eintritt(1.3)----------------------Stichtag(1.11)------------Austritt(31.12)---->
Für das Bild oben gilt folgendes:
m.getAustritt().before(param.stichtag) == false
m.getAustritt().after(param.stichtag) == true
m.getEintritt().before(param.stichtag) == true
Grüße,
Max
Re: Zusatzbeiträge bei Neumitglied wird nicht abgerechnet di
Verfasst: Dienstag 27. Dezember 2011, 17:51
von heiner
Hallo Max,
in der aktuellen Entwicklerversion sieht die Abfrage wie folgt aus:
Code: Alles auswählen
if ((m.getEintritt() == null || m.getEintritt().before(param.stichtag) || m
.getEintritt().equals(param.stichtag))
&& (m.getAustritt() == null || m.getAustritt().before(
param.stichtag)))
Es hat an dieser Stelle eine Korrektur gegeben (siehe weiter oben).
Heiner