Skip to content

Commit

Permalink
Familienangehörige mit Beitrag (#286)
Browse files Browse the repository at this point in the history
* Familenangehörige mit Beitrag

* ZAHLER entfernt, tests angepasst/erstellt

* Schreibfehler behoben

* FamilienbeitragView nur Familenitglieder anzeigen (Vollzahler,
Angehörige)

* Familieverband immer in Mitgliedcontrol anzeigen

* Zukünftige Beitragsgruppe bei Angehörigen anzeigen

* Bei Beitragsgruppenwechsel ggfs. zahlerid entfernen

* Mitglied nicht selbst als vollzahler anbieten

* Neuer Zahlungsweg "durch Vollzahler"

* Großschreibung

* Zahlungsweg Auswahl bei entfernen aus Familienverband

* Schreibfahler

* Manuelle Lastschrift ggfs. Zahler verwenden

* Großscheibung

* Texte angepasst
  • Loading branch information
lenilsas authored Sep 7, 2024
1 parent c7dbcd5 commit d580dde
Show file tree
Hide file tree
Showing 15 changed files with 214 additions and 153 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@

import de.jost_net.JVerein.Einstellungen;
import de.jost_net.JVerein.io.Adressbuch.Adressaufbereitung;
import de.jost_net.JVerein.keys.ArtBeitragsart;
import de.jost_net.JVerein.keys.Zahlungsweg;
import de.jost_net.JVerein.rmi.Mitglied;
import de.willuhn.jameica.gui.Action;
Expand All @@ -45,7 +44,7 @@ public void handleAction(Object context) throws ApplicationException
{
if (context == null || !(context instanceof Mitglied))
{
throw new ApplicationException("kein Mitglied ausgewählt");
throw new ApplicationException("Kein Mitglied ausgewählt");
}
Mitglied m = null; // Mitglied
Mitglied mZ = null; // Zahler
Expand All @@ -55,8 +54,7 @@ public void handleAction(Object context) throws ApplicationException
m = (Mitglied) context;

// pruefe wer der Zahler ist
if (m.getBeitragsgruppe() != null
&& m.getBeitragsgruppe().getBeitragsArt() == ArtBeitragsart.FAMILIE_ANGEHOERIGER)
if (m.getZahlungsweg() == Zahlungsweg.VOLLZAHLER && m.getZahlerID() != null)
{
// Mitglied ist Familienangehoeriger, hat also anderen Zahler
mZ = (Mitglied) Einstellungen.getDBService().createObject(
Expand Down
6 changes: 3 additions & 3 deletions src/de/jost_net/JVerein/gui/action/PersonalbogenAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -323,12 +323,12 @@ private void generiereMitglied(Reporter rpt, Mitglied m)
}
}
if (m.getBeitragsgruppe()
.getBeitragsArt() == ArtBeitragsart.FAMILIE_ZAHLER)
.getBeitragsArt() != ArtBeitragsart.FAMILIE_ANGEHOERIGER)
{
DBIterator<Mitglied> itbg = Einstellungen.getDBService()
.createList(Mitglied.class);
itbg.addFilter("zahlerid = ?", m.getID());
rpt.addColumn("Zahler für", Element.ALIGN_LEFT);
rpt.addColumn("Vollzahler mit Angehörigen", Element.ALIGN_LEFT);
String zahltfuer = "";
while (itbg.hasNext())
{
Expand All @@ -346,7 +346,7 @@ else if (m.getBeitragsgruppe()
{
Mitglied mfa = (Mitglied) Einstellungen.getDBService()
.createObject(Mitglied.class, m.getZahlerID() + "");
rpt.addColumn("Zahler", Element.ALIGN_LEFT);
rpt.addColumn("Vollzahlendes Familienmitglied", Element.ALIGN_LEFT);
rpt.addColumn(Adressaufbereitung.getNameVorname(mfa),
Element.ALIGN_LEFT);
}
Expand Down
10 changes: 10 additions & 0 deletions src/de/jost_net/JVerein/gui/boxes/MitgliedNextBGruppeChecker.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import org.eclipse.swt.widgets.Composite;

import de.jost_net.JVerein.Einstellungen;
import de.jost_net.JVerein.keys.ArtBeitragsart;
import de.jost_net.JVerein.keys.Zahlungsweg;
import de.jost_net.JVerein.rmi.Beitragsgruppe;
import de.jost_net.JVerein.rmi.Mitglied;
import de.jost_net.JVerein.rmi.MitgliedNextBGruppe;
Expand Down Expand Up @@ -289,6 +291,14 @@ private void aenderBeitragsGruppe(MitgliedNextBGruppe mitgliedBeitraege)
{
Mitglied mitglied = mitgliedBeitraege.getMitglied();
Beitragsgruppe beitragsGruppe = mitgliedBeitraege.getBeitragsgruppe();
//Wenn es bisher ein angehöriger war und jetzt nicht mehr zahlerid entfernen
if(mitglied.getBeitragsgruppe().getBeitragsArt() == ArtBeitragsart.FAMILIE_ANGEHOERIGER && beitragsGruppe.getBeitragsArt() != ArtBeitragsart.FAMILIE_ANGEHOERIGER)
{
mitglied.setZahlerID(null);
//Bei Zahlung über Vollzahler Zahlungsweg umstellen
if(mitglied.getZahlungsweg() == Zahlungsweg.VOLLZAHLER)
mitglied.setZahlungsweg(Einstellungen.getEinstellung().getZahlungsweg());
}
mitglied.setBeitragsgruppe(Integer.valueOf(beitragsGruppe.getID()));
mitglied.store();
mitgliedBeitraege.delete();
Expand Down
26 changes: 24 additions & 2 deletions src/de/jost_net/JVerein/gui/control/FamilienbeitragNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import de.jost_net.JVerein.Einstellungen;
import de.jost_net.JVerein.io.Adressbuch.Adressaufbereitung;
Expand Down Expand Up @@ -62,8 +64,25 @@ public FamilienbeitragNode(Input status) throws RemoteException
this.children = new ArrayList<>();
DBIterator<Beitragsgruppe> it = Einstellungen.getDBService()
.createList(Beitragsgruppe.class);
it.addFilter("beitragsart = ?",
new Object[] { ArtBeitragsart.FAMILIE_ZAHLER.getKey() });
it.addFilter("beitragsart != ?",
new Object[] { ArtBeitragsart.FAMILIE_ANGEHOERIGER.getKey() });

Set<String> set = new HashSet<String>();
DBIterator<Mitglied> angIt = Einstellungen.getDBService()
.createList(Mitglied.class);
angIt.addFilter("zahlerid is not null and zahlerid != 0");
if (status.getValue().equals("Angemeldet"))
angIt.addFilter("austritt is null");
if (status.getValue().equals("Abgemeldet"))
angIt.addFilter("austritt is not null");
while(angIt.hasNext())
{
Mitglied a = angIt.next();
if(!set.contains(a.getZahlerID().toString()))
{
set.add(a.getZahlerID().toString());
}
}
while (it.hasNext())
{
Beitragsgruppe bg = it.next();
Expand All @@ -78,6 +97,9 @@ public FamilienbeitragNode(Input status) throws RemoteException
while (it2.hasNext())
{
Mitglied m = it2.next();
//nur anzeigen wenn es angehörige gibt
if(!set.contains(m.getID()))
continue;
FamilienbeitragNode fbn = new FamilienbeitragNode(this, m);
children.add(fbn);
}
Expand Down
39 changes: 29 additions & 10 deletions src/de/jost_net/JVerein/gui/control/MitgliedControl.java
Original file line number Diff line number Diff line change
Expand Up @@ -567,14 +567,21 @@ public SelectInput getZahlungsweg() throws RemoteException
{
return zahlungsweg;
}
ArrayList<Zahlungsweg> weg = Zahlungsweg.getArray();
if(beitragsgruppe != null)
{
Beitragsgruppe bg = (Beitragsgruppe) beitragsgruppe.getValue();
if(bg != null && bg.getBeitragsArt() != ArtBeitragsart.FAMILIE_ANGEHOERIGER)
weg.remove(new Zahlungsweg(Zahlungsweg.VOLLZAHLER));
}
if (getMitglied().getZahlungsweg() != null)
{
zahlungsweg = new SelectInput(Zahlungsweg.getArray(),
zahlungsweg = new SelectInput(weg,
new Zahlungsweg(getMitglied().getZahlungsweg().intValue()));
}
else
{
zahlungsweg = new SelectInput(Zahlungsweg.getArray(),
zahlungsweg = new SelectInput(weg,
new Zahlungsweg(Einstellungen.getEinstellung().getZahlungsweg()));
}
zahlungsweg.setName("Zahlungsweg");
Expand Down Expand Up @@ -625,6 +632,17 @@ public void handleEvent(Event event)
});
return zahlungsweg;
}

private void refreshZahlungsweg() throws RemoteException
{
if(beitragsgruppe == null || zahlungsweg == null)
return;
ArrayList<Zahlungsweg> weg = Zahlungsweg.getArray();
Beitragsgruppe bg = (Beitragsgruppe) beitragsgruppe.getValue();
if(bg != null && bg.getBeitragsArt() != ArtBeitragsart.FAMILIE_ANGEHOERIGER)
weg.remove(new Zahlungsweg(Zahlungsweg.VOLLZAHLER));
zahlungsweg.setList(weg);
}

// Lösche alle Daten aus der Bankverbindungsmaske
private void deleteBankverbindung()
Expand Down Expand Up @@ -1073,7 +1091,7 @@ public void handleEvent(Event event)
}
}
else if (bg != null
&& bg.getBeitragsArt() == ArtBeitragsart.FAMILIE_ZAHLER)
&& bg.getBeitragsArt() != ArtBeitragsart.FAMILIE_ANGEHOERIGER)
{
boolean ist_neu = getMitglied().getID() == null;
getFamilienverband().setVisible(!ist_neu);
Expand Down Expand Up @@ -1105,8 +1123,8 @@ else if (bg != null
getZukuenftigeBeitraegeView().setVisible(true);
}
}

refreshFamilienangehoerigeTable();
refreshZahlungsweg();

}
catch (RemoteException e)
Expand Down Expand Up @@ -1258,7 +1276,7 @@ public Input getZahler(boolean force) throws RemoteException
// Beitragsgruppen ermitteln, die Zahler für andere Mitglieder sind
DBIterator<Beitragsgruppe> bg = Einstellungen.getDBService()
.createList(Beitragsgruppe.class);
bg.addFilter("beitragsart = ?", ArtBeitragsart.FAMILIE_ZAHLER.getKey());
bg.addFilter("beitragsart != ?", ArtBeitragsart.FAMILIE_ANGEHOERIGER.getKey());
while (bg.hasNext())
{
if (cond.length() > 0)
Expand All @@ -1271,7 +1289,8 @@ public Input getZahler(boolean force) throws RemoteException
}
DBIterator<Mitglied> zhl = Einstellungen.getDBService()
.createList(Mitglied.class);
zhl.addFilter(cond.toString());
zhl.addFilter("(" + cond.toString() + ")");
zhl.addFilter("id != ?",getMitglied().getID());
MitgliedUtils.setNurAktive(zhl);
MitgliedUtils.setMitglied(zhl);
zhl.setOrder("ORDER BY name, vorname");
Expand Down Expand Up @@ -1300,7 +1319,7 @@ public void handleEvent(Event event)
try
{
Mitglied m = (Mitglied) zahler.getValue();
if (m.getID() != null)
if (m != null && m.getID() != null)
{
getMitglied().setZahlerID(Long.valueOf(m.getID()));
}
Expand Down Expand Up @@ -1638,13 +1657,13 @@ public Part getFamilienangehoerigenTable() throws RemoteException
public String format(Object o)
{
// Alle Familienmitglieder, die eine Zahler-ID eingetragen haben, sind
// nicht selbst das zahlende Mitglied.
// Der Eintrag ohne zahlerid ist also das zahlende Mitglied.
// nicht selbst das vollzahlende Mitglied.
// Der Eintrag ohne zahlerid ist also das vollzahlende Mitglied.
Long m = (Long) o;
if (m == null)
return "";
else
return "beitragsbefreites Familienmitglied";
return "Familienmitglied";
}
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ private boolean isFamilienMitglied() throws RemoteException
{
Mitglied mitglied = getMitglied();
Beitragsgruppe beitragsGruppe = mitglied.getBeitragsgruppe();
return (beitragsGruppe.getBeitragsArt() == ArtBeitragsart.FAMILIE_ZAHLER);
return (beitragsGruppe.getBeitragsArt() == ArtBeitragsart.FAMILIE_ANGEHOERIGER);
}

public Input getBeitragsgruppeInput() throws RemoteException
Expand All @@ -173,15 +173,10 @@ public Input getBeitragsgruppeInput() throws RemoteException
DBIterator<Beitragsgruppe> list = Einstellungen.getDBService()
.createList(Beitragsgruppe.class);
list.setOrder("ORDER BY bezeichnung");
if (isFamilienMitglied())
list.addFilter("sekundaer = 0");
if (!isFamilienMitglied())
{
list.addFilter("beitragsart is not null");
list.addFilter("beitragsart = ?", ArtBeitragsart.FAMILIE_ZAHLER.getKey());
}
else
{
list.addFilter("beitragsart is null or beitragsart not in (?,?)",
ArtBeitragsart.FAMILIE_ZAHLER.getKey(),
list.addFilter("(beitragsart is null or beitragsart != ?)",
ArtBeitragsart.FAMILIE_ANGEHOERIGER.getKey());
}
beitragsgruppe = new SelectInput(list != null ? PseudoIterator.asList(list) : null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import de.jost_net.JVerein.Messaging.FamilienbeitragMessage;
import de.jost_net.JVerein.gui.control.FamilienbeitragNode;
import de.jost_net.JVerein.gui.control.MitgliedControl;
import de.jost_net.JVerein.keys.Zahlungsweg;
import de.jost_net.JVerein.rmi.Beitragsgruppe;
import de.jost_net.JVerein.rmi.Mitglied;
import de.willuhn.jameica.gui.Action;
Expand Down Expand Up @@ -81,6 +82,8 @@ protected void paint(Composite parent) throws Exception
LabelGroup lgBank = new LabelGroup(parent, "Bankverbindung");
lgBank.addLabelPair("IBAN", control.getIban());
lgBank.addLabelPair("BIC", control.getBic());
LabelGroup lgZahlungsweg = new LabelGroup(parent, "Zahlungsweg");
lgZahlungsweg.addLabelPair("Zahlungsweg", control.getZahlungsweg());
// lgBank.addLabelPair("Kontoinhaber", control.getKontoinhaber());
ButtonArea b = new ButtonArea();
b.addButton("Weiter", new Action()
Expand All @@ -102,6 +105,9 @@ public void handleAction(Object context)
// m.setKontoinhaber((String) control.getKontoinhaber().getValue());
m.setZahlerID(null);
m.setLetzteAenderung();
m.setIban(control.getIban().getValue().toString());
m.setBic(control.getBic().getValue().toString());
m.setZahlungsweg(((Zahlungsweg)control.getZahlungsweg().getValue()).getKey());
m.store();
Application.getMessagingFactory().sendMessage(
new FamilienbeitragMessage(m));
Expand Down
2 changes: 1 addition & 1 deletion src/de/jost_net/JVerein/gui/navigation/MyExtension.java
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ public void extend(Extendable extendable)
DBIterator<Beitragsgruppe> it = Einstellungen.getDBService()
.createList(Beitragsgruppe.class);
it.addFilter("beitragsart = ?",
new Object[] { ArtBeitragsart.FAMILIE_ZAHLER.getKey() });
new Object[] { ArtBeitragsart.FAMILIE_ANGEHOERIGER.getKey() });
if (it.size() > 0)
{
mitglieder.addChild(new MyItem(mitglieder, "Familienbeitrag",
Expand Down
8 changes: 4 additions & 4 deletions src/de/jost_net/JVerein/gui/parts/Familienverband.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,11 @@ public void paint(Composite parent) throws RemoteException
tab.setLayoutData(g);
TabGroup tg1 = new TabGroup(tab, "Familienverband");
control.getFamilienangehoerigenTable().paint(tg1.getComposite());
TabGroup tg2 = new TabGroup(tab, "Zahlendes Familienmitglied");
TabGroup tg2 = new TabGroup(tab, "Vollzahlendes Familienmitglied");
// erstelle neuen zahler: (force == true)
control.getZahler(true).setComment(
"Nur für Beitragsgruppenart: \"Familie: Angehörige\"");
tg2.addLabelPair("Zahler", control.getZahler());
"Nur für Beitragsgruppenart: \"Familienangehörige\"");
tg2.addLabelPair("Vollzahler", control.getZahler());

if (gruppe != null)
{
Expand Down Expand Up @@ -132,7 +132,7 @@ public void setBeitragsgruppe(Beitragsgruppe gruppe)
return;
try
{
if (gruppe.getBeitragsArt() == ArtBeitragsart.FAMILIE_ZAHLER)
if (gruppe.getBeitragsArt() != ArtBeitragsart.FAMILIE_ANGEHOERIGER)
tab.setSelection(0);
else if (gruppe.getBeitragsArt() == ArtBeitragsart.FAMILIE_ANGEHOERIGER)
tab.setSelection(1);
Expand Down
34 changes: 2 additions & 32 deletions src/de/jost_net/JVerein/gui/view/AbstractMitgliedDetailView.java
Original file line number Diff line number Diff line change
Expand Up @@ -585,55 +585,25 @@ private void zeichneMitgliedschaft(Composite parentComposite,
}

// Wenn es mindestens eine Beitragsgruppe mit Beitragsart
// "Familie: Zahler"
// oder "Familie: Angehöriger" gibt, zeige Familienverband-Part.
// "Familienangehöriger" gibt, zeige Familienverband-Part.
// Dieser Familien-Part soll über die komplette Breite angezeigt werden,
// kann daher nicht im SimpleVerticalContainer angezeigt werden.
DBIterator<Beitragsgruppe> it = Einstellungen.getDBService()
.createList(Beitragsgruppe.class);
it.addFilter("beitragsart = ? or beitragsart = ?",
ArtBeitragsart.FAMILIE_ZAHLER.getKey(),
it.addFilter("beitragsart = ?",
ArtBeitragsart.FAMILIE_ANGEHOERIGER.getKey());
if (it.hasNext())
{
// Verstecke Familienverband wenn aktuelles Mitglied nicht Teil einer
// Familie ist.
if (isBeitragsGruppeFuerFamilieAktiv() == false)
{
control.getFamilienverband().setVisible(false);
}
// Container lässt nur das Hinzufügen von Parts zu.
// Aus diesem Grund ist Part Familienverband dynamisch:
// Entweder wird der Familienverband angezeigt (setShow(true))
// oder ein leeres Composite (setShow(false))
container.addPart(control.getFamilienverband());
}
if (isBeitragsGruppeFuerZahlerAktiv() == false)
control.getZukuenftigeBeitraegeView().setVisible(false);
container.addPart(control.getZukuenftigeBeitraegeView());
}
}

private boolean isBeitragsGruppeFuerZahlerAktiv() throws RemoteException
{
Beitragsgruppe gruppe = control.getMitglied().getBeitragsgruppe();
if (null == gruppe)
return false;
if (gruppe.getBeitragsArt() == ArtBeitragsart.FAMILIE_ANGEHOERIGER)
return false;
return true;
}

private boolean isBeitragsGruppeFuerFamilieAktiv() throws RemoteException
{
Beitragsgruppe gruppe = control.getMitglied().getBeitragsgruppe();
if (null == gruppe)
return false;
if (gruppe.getBeitragsArt() == ArtBeitragsart.NORMAL)
return false;
return true;
}

/**
* Zeichnet GUI-Felder für Stammdaten. Wenn Kommunikationsdaten aktiviert
* sind, werden drei Spalten angezeigt, ansonsten zwei.
Expand Down
Loading

0 comments on commit d580dde

Please sign in to comment.