Skip to content

Commit

Permalink
Verrechnungskont für Lastschriften
Browse files Browse the repository at this point in the history
  • Loading branch information
lenilsas committed Jan 10, 2025
1 parent 00c6df6 commit 5c9bc17
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 32 deletions.
22 changes: 21 additions & 1 deletion src/de/jost_net/JVerein/gui/control/EinstellungControl.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,21 @@
import de.jost_net.JVerein.gui.input.BICInput;
import de.jost_net.JVerein.gui.input.EmailInput;
import de.jost_net.JVerein.gui.input.IBANInput;
import de.jost_net.JVerein.gui.input.KontoauswahlInput;
import de.jost_net.JVerein.gui.input.SEPALandInput;
import de.jost_net.JVerein.gui.input.SEPALandObject;
import de.jost_net.JVerein.keys.AbstractInputAuswahl;
import de.jost_net.JVerein.keys.AfaOrt;
import de.jost_net.JVerein.keys.Altermodel;
import de.jost_net.JVerein.keys.ArbeitsstundenModel;
import de.jost_net.JVerein.keys.Beitragsmodel;
import de.jost_net.JVerein.keys.AbstractInputAuswahl;
import de.jost_net.JVerein.keys.BuchungsartSort;
import de.jost_net.JVerein.keys.SepaMandatIdSource;
import de.jost_net.JVerein.keys.Staat;
import de.jost_net.JVerein.keys.Zahlungsrhythmus;
import de.jost_net.JVerein.keys.Zahlungsweg;
import de.jost_net.JVerein.rmi.Einstellung;
import de.jost_net.JVerein.rmi.Konto;
import de.jost_net.JVerein.server.EinstellungImpl;
import de.jost_net.JVerein.util.MitgliedSpaltenauswahl;
import de.jost_net.OBanToo.SEPA.Land.SEPALaender;
Expand All @@ -53,6 +55,7 @@
import de.willuhn.jameica.gui.input.CheckboxInput;
import de.willuhn.jameica.gui.input.DateInput;
import de.willuhn.jameica.gui.input.DecimalInput;
import de.willuhn.jameica.gui.input.DialogInput;
import de.willuhn.jameica.gui.input.DirectoryInput;
import de.willuhn.jameica.gui.input.ImageInput;
import de.willuhn.jameica.gui.input.Input;
Expand Down Expand Up @@ -347,6 +350,8 @@ public class EinstellungControl extends AbstractControl

private SelectInput staat;

private DialogInput verrechnungskonto;

public EinstellungControl(AbstractView view)
{
super(view);
Expand Down Expand Up @@ -1376,6 +1381,19 @@ public SelectInput getCt1SepaVersion() throws RemoteException
return ct1sepaversion;
}

public DialogInput getVerechnungskonto() throws RemoteException
{
if (verrechnungskonto != null)
{
return verrechnungskonto;
}
verrechnungskonto = new KontoauswahlInput(null).getKontoAuswahl(false,
Einstellungen.getEinstellung().getVerrechnungskonto().toString(), false,
false,
null);
return verrechnungskonto;
}

public Input getAltersgruppen() throws RemoteException
{
if (altersgruppen != null)
Expand Down Expand Up @@ -2206,6 +2224,8 @@ public void handleStoreAbrechnung()
e.setSEPADatumOffset((Integer) sepadatumoffset.getValue());
e.setAbrlAbschliessen((Boolean) abrlabschliessen.getValue());
e.setBeitragAltersstufen((String)beitragaltersstufen.getValue());
e.setVerrechnungskonto((Long
.parseLong((String) ((Konto) verrechnungskonto.getValue()).getID())));
e.store();
Einstellungen.setEinstellung(e);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ public void bind() throws Exception
control.getCt1SepaVersion());
cont.addLabelPair("SEPA XML-Version - Lastschrift",
control.getSepaVersion());
cont.addLabelPair("Verechnungs-Konto für Lastschriften",
control.getVerechnungskonto());
cont.addLabelPair("Arbeitsstunden Modell",
control.getArbeitsstundenmodel());
cont.addLabelPair("Altersstufen für gestaffelte Beiträge",control.getBeitragAltersgruppen());
Expand Down
31 changes: 10 additions & 21 deletions src/de/jost_net/JVerein/io/AbrechnungSEPA.java
Original file line number Diff line number Diff line change
Expand Up @@ -936,32 +936,21 @@ private void writeMitgliedskonto(Object mitglied, Date datum, String zweck1,
}
}

/**
* Ist das Abbuchungskonto in der Buchführung eingerichtet?
*
* @throws SEPAException
*/
private Konto getKonto()
throws ApplicationException, RemoteException, SEPAException
private Konto getKonto() throws RemoteException, ApplicationException
{
// Variante 1: IBAN
DBIterator<Konto> it = Einstellungen.getDBService().createList(Konto.class);
it.addFilter("nummer = ?", Einstellungen.getEinstellung().getIban());
if (it.size() == 1)
if (Einstellungen.getEinstellung().getVerrechnungskonto() == null)
{
return it.next();
throw new ApplicationException(
"Verrechnungskonto nicht gesetzt. Unter Abminstration->Einstellungen->Abrechnung erfassen.");
}
// Variante 2: Kontonummer aus IBAN
it = Einstellungen.getDBService().createList(Konto.class);
IBAN iban = new IBAN(Einstellungen.getEinstellung().getIban());
it.addFilter("nummer = ?", iban.getKonto());
if (it.size() == 1)
Konto k = Einstellungen.getDBService().createObject(Konto.class,
Einstellungen.getEinstellung().getVerrechnungskonto().toString());
if (k == null)
{
return it.next();
throw new ApplicationException(
"Verrechnungskonto nicht gefunden. Unter Abminstration->Einstellungen->Abrechnung erfassen.");
}
throw new ApplicationException(String.format(
"Weder Konto %s noch Konto %s ist in der Buchführung eingerichtet. Menu: Buchführung | Konten",
Einstellungen.getEinstellung().getIban(), iban.getKonto()));
return k;
}

private String getVerwendungszweck2(Mitglied m) throws RemoteException
Expand Down
5 changes: 5 additions & 0 deletions src/de/jost_net/JVerein/rmi/Einstellung.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

import java.rmi.RemoteException;
import java.util.Date;

import org.kapott.hbci.sepa.SepaVersion;

import de.jost_net.JVerein.io.IBankverbindung;
Expand Down Expand Up @@ -627,4 +628,8 @@ public void setCt1SepaVersion(SepaVersion sepaversion)
public Boolean getMittelverwendung() throws RemoteException;

public void setMittelverwendung(Boolean mittelverwendung) throws RemoteException;

public Long getVerrechnungskonto() throws RemoteException;

public void setVerrechnungskonto(Long konto) throws RemoteException;
}
44 changes: 44 additions & 0 deletions src/de/jost_net/JVerein/server/DDLTool/Updates/Update0456.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/**********************************************************************
* This program is free software: you can redistribute it and/or modify it under the terms of the
* GNU General Public License as published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
* even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
* the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program. If not,
* see <http://www.gnu.org/licenses/>.
*
**********************************************************************/
package de.jost_net.JVerein.server.DDLTool.Updates;

import java.sql.Connection;

import de.jost_net.JVerein.server.DDLTool.AbstractDDLUpdate;
import de.jost_net.JVerein.server.DDLTool.Column;
import de.willuhn.util.ApplicationException;
import de.willuhn.util.ProgressMonitor;

public class Update0456 extends AbstractDDLUpdate
{
public Update0456(String driver, ProgressMonitor monitor, Connection conn)
{
super(driver, monitor, conn);
}

@Override
public void run() throws ApplicationException
{
{
execute(addColumn("einstellung", new Column("verrechnungskonto",
COLTYPE.BIGINT, 20, null, false, false)));

// Standart Verechnungskonto setzen wie es auch bisher bestimmt wurde
execute("UPDATE einstellung SET verrechnungskonto = "
+ " (SELECT konto.id from konto"
+ " JOIN einstellung ON einstellung.iban LIKE CONCAT('%', konto.nummer)"
+ " AND length(konto.nummer) > 8 LIMIT 1)");
}
}
}
32 changes: 22 additions & 10 deletions src/de/jost_net/JVerein/server/EinstellungImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,27 +22,25 @@
import java.util.ArrayList;
import java.util.Date;

import de.jost_net.JVerein.util.Datum;
import de.jost_net.JVerein.util.VonBis;
import de.jost_net.OBanToo.SEPA.IBAN;
import de.jost_net.OBanToo.SEPA.SEPAException;

import org.kapott.hbci.sepa.SepaVersion;

import de.jost_net.JVerein.Einstellungen;
import de.jost_net.JVerein.JVereinPlugin;
import de.jost_net.JVerein.io.AltersgruppenParser;
import de.jost_net.JVerein.io.JubilaeenParser;
import de.jost_net.JVerein.keys.AbstractInputAuswahl;
import de.jost_net.JVerein.keys.Altermodel;
import de.jost_net.JVerein.keys.Beitragsmodel;
import de.jost_net.JVerein.keys.AbstractInputAuswahl;
import de.jost_net.JVerein.rmi.Einstellung;
import de.jost_net.JVerein.rmi.Felddefinition;
import de.jost_net.JVerein.util.Datum;
import de.jost_net.JVerein.util.VonBis;
import de.jost_net.OBanToo.SEPA.IBAN;
import de.jost_net.OBanToo.SEPA.SEPAException;
import de.willuhn.datasource.db.AbstractDBObject;
import de.willuhn.datasource.rmi.DBIterator;
import de.willuhn.datasource.rmi.DBService;
import de.willuhn.jameica.hbci.HBCI;
import de.willuhn.jameica.hbci.rmi.Konto;
import de.willuhn.jameica.security.Wallet;
import de.willuhn.jameica.system.Application;
import de.willuhn.jameica.system.Settings;
Expand Down Expand Up @@ -435,19 +433,21 @@ public void setIban(String iban) throws RemoteException
}

@Override
public Konto getHibiscusKonto() throws RemoteException
public de.willuhn.jameica.hbci.rmi.Konto getHibiscusKonto()
throws RemoteException
{
try
{
// DB-Service holen
DBService service = (DBService) Application.getServiceFactory()
.lookup(HBCI.class, "database");
DBIterator<Konto> konten = service.createList(Konto.class);
DBIterator<de.willuhn.jameica.hbci.rmi.Konto> konten = service
.createList(de.willuhn.jameica.hbci.rmi.Konto.class);
konten.addFilter("iban = ?", Einstellungen.getEinstellung().getIban());
Logger.debug("Vereinskonto: " + Einstellungen.getEinstellung().getIban());
if (konten.hasNext())
{
return (Konto) konten.next();
return (de.willuhn.jameica.hbci.rmi.Konto) konten.next();
}
else
{
Expand Down Expand Up @@ -2197,4 +2197,16 @@ public void setMittelverwendung(Boolean mittelverwendung)
{
setAttribute("mittelverwendung", mittelverwendung);
}

@Override
public Long getVerrechnungskonto() throws RemoteException
{
return (Long) getAttribute("verrechnungskonto");
}

@Override
public void setVerrechnungskonto(Long konto) throws RemoteException
{
setAttribute("verrechnungskonto", konto);
}
}

0 comments on commit 5c9bc17

Please sign in to comment.