Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Spendenbescheinigung auf Zahler ausstellen #493

Open
wants to merge 40 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
0dd6c4c
Zwischenstand
Nov 22, 2024
eb1ac16
Zwischenstand
Nov 23, 2024
c94ed3c
Update Migration
Nov 25, 2024
85e4eb6
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Nov 25, 2024
b29501e
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Nov 25, 2024
ac599fc
Update
Nov 26, 2024
325b1e4
Klammern bei if
Nov 26, 2024
26de33b
Noch eine Klammer
Nov 26, 2024
80376f9
Fix Sollbuchung Zuordnung Dialog
Nov 26, 2024
76bbca5
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Nov 27, 2024
a08550a
Query noch vereinfacht
Nov 27, 2024
e6b4ac9
Update SollbuchungQuery.java
Nov 27, 2024
405bd63
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Nov 28, 2024
52e103a
Differenzfilter korrigiert
Nov 28, 2024
c1c0335
Noch ein isEmpty entfernt
Nov 28, 2024
ef3f26c
Update SollbuchungQuery.java
Nov 28, 2024
82d996a
Update SollbuchungQuery.java
Nov 28, 2024
e5979f4
Filter für Mitglied und Zahler gleichzeitig
Dec 4, 2024
02c9006
Update MitgliedDeleteAction.java
Dec 4, 2024
c0a3394
Sollbuchung und Spendenbescheinigung nicht editierbar
Dec 4, 2024
ff4f791
Update SollbuchungQuery.java
Dec 4, 2024
f16d616
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Dec 14, 2024
6cc983c
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Dec 17, 2024
c0ba4e8
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Dec 18, 2024
a59d546
Update Update0453.java
Dec 19, 2024
051647e
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Dec 19, 2024
695a2ea
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Dec 19, 2024
a51de31
Update Update0454.java
Dec 20, 2024
eba2ec1
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Dec 20, 2024
d1162af
Sollbuchung nicht editierbar rückgängig gemacht
Dec 22, 2024
d34015c
Formatierung
Dec 22, 2024
66cb818
Update Update0455.java
Dec 26, 2024
1395740
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Dec 26, 2024
9383546
Update Update0456.java
Dec 26, 2024
e5758ff
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Dec 26, 2024
4a050ac
Update Update0457.java
Jan 18, 2025
2d99993
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Jan 18, 2025
0587287
Update Update0459.java
Jan 21, 2025
f06ecdf
Merge branch 'master' into Spendenbescheinigung_auf_zahler_ausstellen
Jan 21, 2025
9159a1f
Abrechnung SEPA angepasst
Jan 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
245 changes: 140 additions & 105 deletions src/de/jost_net/JVerein/Queries/SollbuchungQuery.java

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,15 @@ else if (open instanceof Mitglied)
mk.setBetrag(betrag);
mk.setDatum(b[0].getDatum());
mk.setMitglied(m);
Long zahlerId = m.getZahlerID();
if (zahlerId != null)
{
mk.setZahlerId(zahlerId);
}
else
{
mk.setZahler(m);
}
mk.setZahlungsweg(Zahlungsweg.ÜBERWEISUNG);
mk.setZweck1(b[0].getZweck());
mk.store();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ else if(context instanceof Mitglied[])
d.setSideImage(SWTUtil.getImage("dialog-warning-large.png"));
String text = "Wollen Sie diese" + (mitglieder.length > 1 ? "":"s") + " Mitglied" + mehrzahl + " wirklich löschen?"
+ "\nDies löscht auch alle Mitglied bezogenen Daten wie"
+ "\nz.B. Sollbuchungen, Spendenbescheinigungen, Mails etc."
+ "\nz.B. Sollbuchungen, Mails etc."
+ "\nDiese Daten können nicht wieder hergestellt werden!";
d.setText(text);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,6 @@ else if (context != null && (context instanceof Mitgliedskonto))
"Fehler bei der Erzeugung einer neuen Sollbuchung", e);
}
}
GUI.startView(new SollbuchungDetailView(MitgliedskontoNode.SOLL), mk);
GUI.startView(new SollbuchungDetailView(), mk);
}
}
18 changes: 13 additions & 5 deletions src/de/jost_net/JVerein/gui/action/SollbuchungNeuAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -44,18 +44,26 @@ public void handleAction(Object context) throws ApplicationException
mkn = (MitgliedskontoNode) context;
try
{
Mitglied m = (Mitglied) Einstellungen.getDBService().createObject(
Mitglied.class, mkn.getID());
mk = (Mitgliedskonto) Einstellungen.getDBService().createObject(
Mitgliedskonto.class, null);
Mitglied m = (Mitglied) Einstellungen.getDBService()
.createObject(Mitglied.class, mkn.getID());
mk = (Mitgliedskonto) Einstellungen.getDBService()
.createObject(Mitgliedskonto.class, null);
mk.setZahlungsweg(m.getZahlungsweg());
mk.setMitglied(m);
if (m.getZahlerID() != null)
{
mk.setZahlerId(m.getZahlerID());
}
else
{
mk.setZahler(m);
}
}
catch (RemoteException e)
{
throw new ApplicationException(
"Fehler bei der Erzeugung einer Sollbuchung");
}
GUI.startView(new SollbuchungDetailView(MitgliedskontoNode.SOLL), mk);
GUI.startView(new SollbuchungDetailView(), mk);
}
}
68 changes: 22 additions & 46 deletions src/de/jost_net/JVerein/gui/action/SpendenbescheinigungAction.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@
import de.jost_net.JVerein.Einstellungen;
import de.jost_net.JVerein.gui.control.MitgliedskontoNode;
import de.jost_net.JVerein.gui.view.SpendenbescheinigungView;
import de.jost_net.JVerein.io.Adressbuch.Adressaufbereitung;
import de.jost_net.JVerein.keys.Spendenart;
import de.jost_net.JVerein.rmi.Buchung;
import de.jost_net.JVerein.rmi.Mitglied;
import de.jost_net.JVerein.rmi.Spendenbescheinigung;
import de.jost_net.JVerein.util.SpbAdressaufbereitung;
import de.willuhn.datasource.rmi.DBService;
import de.willuhn.datasource.rmi.ResultSetExtractor;
import de.willuhn.jameica.gui.Action;
Expand Down Expand Up @@ -70,7 +70,7 @@ public void handleAction(Object context) throws ApplicationException
if (context != null && (context instanceof Mitglied))
{
Mitglied m = (Mitglied) context;
adressaufbereitung(m, spb);
SpbAdressaufbereitung.adressaufbereitung(m, spb);
if (spendenart == Spendenart.GELDSPENDE)
{
handleMitglied(m);
Expand All @@ -79,12 +79,8 @@ public void handleAction(Object context) throws ApplicationException
else if (context != null && (context instanceof MitgliedskontoNode))
{
MitgliedskontoNode mkn = (MitgliedskontoNode) context;
if (mkn.getMitglied() != null)
{
// Mitglied aus Mitgliedskonto lesen
Mitglied m = mkn.getMitglied();
adressaufbereitung(m, spb);
}

// Istbuchung in Mitgliedskonto ausgewählt
if (mkn.getType() == MitgliedskontoNode.IST)
{
// Buchung eintragen
Expand All @@ -98,13 +94,29 @@ else if (context != null && (context instanceof MitgliedskontoNode))
throw new ApplicationException(
"Die Buchung ist bereits auf einer Spendenbescheinigung eingetragen!");
}
if (b.getMitgliedskonto() != null)
{
// Zahler aus Sollbuchung lesen
Mitglied zahler = b.getMitgliedskonto().getZahler();
if (zahler != null)
{
SpbAdressaufbereitung.adressaufbereitung(zahler, spb);
}
}
spb.setBuchung(b);
spb.setSpendedatum(b.getDatum());
spb.setAutocreate(Boolean.TRUE);
}
}
// Mitglied in Mitgliedskonto ausgewählt
else if (mkn.getType() == MitgliedskontoNode.MITGLIED)
{
if (mkn.getMitglied() != null)
{
// Mitglied aus Mitgliedskonto lesen
Mitglied m = mkn.getMitglied();
SpbAdressaufbereitung.adressaufbereitung(m, spb);
}
if (spendenart == Spendenart.GELDSPENDE)
{
handleMitglied(spb.getMitglied());
Expand Down Expand Up @@ -139,43 +151,6 @@ else if (mkn.getType() == MitgliedskontoNode.MITGLIED)
}
}

private void adressaufbereitung(Mitglied m, Spendenbescheinigung spb)
throws RemoteException
{
ArrayList<String> adresse = new ArrayList<>();
spb.setMitglied(m);
if (m.getAnrede() != null && m.getAnrede().length() > 0)
{
adresse.add(m.getAnrede());
}
adresse.add(Adressaufbereitung.getVornameName(m));
if (m.getAdressierungszusatz() != null
&& m.getAdressierungszusatz().length() > 0)
{
adresse.add(m.getAdressierungszusatz());
}
adresse.add(m.getStrasse());
adresse.add(m.getPlz() + " " + m.getOrt());
adresse.add(m.getStaat());
switch (adresse.size())
{
case 7:
spb.setZeile7(adresse.get(6));
case 6:
spb.setZeile6(adresse.get(5));
case 5:
spb.setZeile5(adresse.get(4));
case 4:
spb.setZeile4(adresse.get(3));
case 3:
spb.setZeile3(adresse.get(2));
case 2:
spb.setZeile2(adresse.get(1));
case 1:
spb.setZeile1(adresse.get(0));
}
}

private void handleMitglied(Mitglied mg) throws RemoteException, ApplicationException
{
/* Ermitteln der Buchungen zu der neuen Spendenbescheinigung */
Expand All @@ -200,7 +175,7 @@ public Object extract(ResultSet rs) throws RemoteException, SQLException
+ " JOIN buchungsart ON buchung.buchungsart = buchungsart.id "
+ " JOIN mitgliedskonto ON buchung.mitgliedskonto = mitgliedskonto.id "
+ "WHERE buchungsart.spende = true "
+ " AND mitgliedskonto.mitglied = ? "
+ " AND mitgliedskonto.zahler = ? "
+ " AND buchung.spendenbescheinigung IS NULL "
+ " AND buchung.mitgliedskonto IS NOT NULL "
+ "ORDER BY buchung.datum";
Expand Down Expand Up @@ -237,4 +212,5 @@ public Object extract(ResultSet rs) throws RemoteException, SQLException
+ "Siehe Einstellungen->Spendenbescheinigungen.", minbetrag));
}
}

}
73 changes: 68 additions & 5 deletions src/de/jost_net/JVerein/gui/control/MitgliedskontoControl.java
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,8 @@ public static DIFFERENZ fromString(final String text)
private DecimalInput betrag;

private AbstractInput mitglied;

private AbstractInput zahler;

private Mitgliedskonto mkto;

Expand Down Expand Up @@ -322,6 +324,7 @@ public void handleStore()
if (mkto.getRechnung() != null)
throw new ApplicationException(
"Sollbuchung kann nicht geändert werden, es existiert eine Rechnung darüber.");
mkto.setZahlerId(getSelectedZahlerId());
mkto.setBetrag((Double) getBetrag().getValue());
mkto.setDatum((Date) getDatum().getValue());
Zahlungsweg zw = (Zahlungsweg) getZahlungsweg().getValue();
Expand Down Expand Up @@ -371,7 +374,7 @@ public void handleAction(Object context) throws ApplicationException
.getDBService()
.createObject(Mitgliedskonto.class, mkn.getID());
GUI.startView(
new SollbuchungDetailView(MitgliedskontoNode.SOLL), mk);
new SollbuchungDetailView(), mk);
}
}
catch (RemoteException e)
Expand Down Expand Up @@ -426,7 +429,7 @@ public void paint(Composite composite) throws RemoteException
}

public TablePart getMitgliedskontoList(Action action, ContextMenu menu,
boolean umwandeln) throws RemoteException
boolean umwandeln) throws RemoteException, ApplicationException
{
this.action = action;
this.umwandeln = umwandeln;
Expand All @@ -441,7 +444,8 @@ public TablePart getMitgliedskontoList(Action action, ContextMenu menu,
mitgliedskontoList.addColumn("Datum", "datum",
new DateFormatter(new JVDateFormatTTMMJJJJ()));
mitgliedskontoList.addColumn("Abrechnungslauf", "abrechnungslauf");
mitgliedskontoList.addColumn("Name", "mitglied");
mitgliedskontoList.addColumn("Mitglied", "mitglied");
mitgliedskontoList.addColumn("Zahler", "zahler");
mitgliedskontoList.addColumn("Zweck", "zweck1");
mitgliedskontoList.addColumn("Betrag", "betrag",
new CurrencyFormatter("", Einstellungen.DECIMALFORMAT));
Expand Down Expand Up @@ -591,7 +595,7 @@ private GenericIterator<Mitglied> getMitgliedIterator() throws RemoteException
return mitglieder;
}

public void refreshMitgliedkonto1() throws RemoteException
public void refreshMitgliedkonto1() throws RemoteException, ApplicationException
{
@SuppressWarnings("rawtypes")
GenericIterator mitgliedskonten = new SollbuchungQuery(this, umwandeln,
Expand Down Expand Up @@ -644,6 +648,10 @@ public void TabRefresh()
{
Logger.error("Fehler", e);
}
catch (ApplicationException e)
{
GUI.getStatusBar().setErrorText(e.getLocalizedMessage());
}
}
}

Expand All @@ -658,6 +666,10 @@ public void refreshMitgliedskontoList1()
{
Logger.error("Fehler", e);
}
catch (ApplicationException e)
{
GUI.getStatusBar().setErrorText(e.getLocalizedMessage());;
}
}

// Für SollbuchungAuswahlDialog
Expand Down Expand Up @@ -824,6 +836,42 @@ public Input getMitglied() throws RemoteException
mitglied.setMandatory(true);
return mitglied;
}

public Input getZahler() throws RemoteException
{
if (zahler != null)
{
return zahler;
}
zahler = new MitgliedInput().getMitgliedInput(zahler,
getMitgliedskonto().getZahler(),
Einstellungen.getEinstellung().getMitgliedAuswahl());
zahler.setMandatory(true);
return zahler;
}

private Long getSelectedZahlerId() throws ApplicationException
{
try
{
if (zahler == null)
{
return null;
}
Mitglied derZahler = (Mitglied) getZahler().getValue();
if (null == derZahler)
{
return null;
}
return Long.valueOf(derZahler.getID());
}
catch (RemoteException ex)
{
final String meldung = "Gewählter Zahler kann nicht ermittelt werden";
Logger.error(meldung, ex);
throw new ApplicationException(meldung, ex);
}
}

public class MitgliedListener implements Listener
{
Expand All @@ -841,8 +889,23 @@ public void handleEvent(Event event)
ArrayList<Zahlungsweg> list = (ArrayList<Zahlungsweg>) getZahlungsweg()
.getList();
list.remove(new Zahlungsweg(Zahlungsweg.VOLLZAHLER));
if (((Mitglied) getMitglied().getValue()).getZahlerID() != null)
Mitglied m = (Mitglied) getMitglied().getValue();
Mitglied z = (Mitglied) getZahler().getValue();
if (m.getZahlerID() != null)
{
list.add(new Zahlungsweg(Zahlungsweg.VOLLZAHLER));
if (z == null)
{
getZahler().setValue(m.getZahler());
}
}
else
{
if (z == null)
{
getZahler().setValue(getMitglied().getValue());
}
}
getZahlungsweg().setList(list);
}
catch (RemoteException e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -738,6 +738,7 @@ private void mitgliedsKontoSpeichern(QIFImportPos importPos,
mk.setBetrag(buchung.getBetrag());
mk.setDatum(buchung.getDatum());
mk.setMitglied(mitglied);
mk.setZahler(mitglied);
mk.setZahlungsweg(Zahlungsweg.ÜBERWEISUNG);
mk.setZweck1(buchung.getZweck());
mk.store();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,12 @@

import de.jost_net.JVerein.Einstellungen;
import de.jost_net.JVerein.gui.input.FormularInput;
import de.jost_net.JVerein.io.Adressbuch.Adressaufbereitung;
import de.jost_net.JVerein.keys.FormularArt;
import de.jost_net.JVerein.keys.Spendenart;
import de.jost_net.JVerein.rmi.Formular;
import de.jost_net.JVerein.rmi.Spendenbescheinigung;
import de.jost_net.JVerein.server.SpendenbescheinigungNode;
import de.jost_net.JVerein.util.SpbAdressaufbereitung;
import de.willuhn.datasource.GenericIterator;
import de.willuhn.jameica.gui.AbstractControl;
import de.willuhn.jameica.gui.AbstractView;
Expand Down Expand Up @@ -179,14 +179,7 @@ public void handleAction(Object context) throws ApplicationException
Spendenbescheinigung spbescheinigung = (Spendenbescheinigung) Einstellungen
.getDBService().createObject(Spendenbescheinigung.class, null);
spbescheinigung.setSpendenart(Spendenart.GELDSPENDE);
spbescheinigung.setMitglied(sp1.getMitglied());
spbescheinigung.setZeile1(sp1.getMitglied().getAnrede());
spbescheinigung.setZeile2(
Adressaufbereitung.getVornameName(sp1.getMitglied()));
spbescheinigung.setZeile3(sp1.getMitglied().getStrasse());
spbescheinigung.setZeile4(
sp1.getMitglied().getPlz() + " " + sp1.getMitglied().getOrt());
spbescheinigung.setZeile5(sp1.getMitglied().getStaat());
SpbAdressaufbereitung.adressaufbereitung(sp1.getMitglied(), spbescheinigung);
spbescheinigung.setErsatzAufwendungen(false);
spbescheinigung.setBescheinigungsdatum(new Date());
spbescheinigung.setSpendedatum(new Date());
Expand Down
Loading
Loading