Skip to content

Commit

Permalink
Sollbuchungen zusammenfassen, Rechnung überarbeitet (#547)
Browse files Browse the repository at this point in the history
* Soolbuchungn zusammenfassen, Rechnung überarbeitet

* Update umbenannt

* Fehler behoben

* Bei Buchung zu Sollbuchung zuordnen automatisch splitten

* Update umbenannt

* ZUGFeRD an Sollbuchungspositionen angepasst

* Formatierung und kleine Fehler behoben

* BuchungsartID und BuchungsklasseID Long stat String

* getBuchungsartId() hinzugefügt

* Fehler getBuchungsartId() behoben

* getAttribut buchungsart hinzugefügt

* Beim zuordnen einer SOllbuchung zu Slitbuchung diese ersetzen

* AutoSplit auch wenn Betrag nicht dem der Sollbuchung entspricht

* Kleine Fehler behoben

* AutoAplit vor ersetzen auf Spendenbescheinigung prüfen

* Sollbuchungspositionen für bestehende Sollbuchungen erstellen

* Buchungsart und Klasse in Sollbuchugnslisteentfernt
Splitten nur bei >1 Splitbuchungen

* Zweck von Soll und Istbuchung angepasst

* Auto SollbuchungZuordnen auch anhand von Verwendungszweck (ZB.
Rechnungsnummer)

* Formatierung und Rechtschreibung

* Abrechnunglauf PDF Steuer entfernt

* MitglieskontoExport überarbeitet

* Zweck der Splitbuchung aus Positionen bestimmen

* FormularfeldView deprecated RechnungVar ausblenden

* Manuelles erstellen von Rechnungen

* Automatisch Felder diablen wenn keine Abrechnung mit Rechnung

* Abrechnung überarbeitet. Sollbuchungen nach Mitglied getrennt

* ersetzen von Splitbucuhgen bei Spendenbescheinigung verhindern

* AbrechnungsControl Zusammenfassen disablen bei disablen von kompakt

* Mitgliedname auch ohne kompakte Abbuchung. Splitbuchung Zweck korrigiert

* Action Fehler behoben, texte korrigiert

* AbrechnungslaufView Sollbuchungen statt Buchungen. Komentare Abrechnung

* Kleine Fehler behoben

* Sollbuchung manuell erstellen verhindern. Kleine Korrekturen

* Steuer bei Sollbuchungen richtig zuordnen.Einstellungen QR gruppieren

* Bucung mehreren SOllbuchungenzuordnen

* Rechtschreibung

* QR-Code Gruppierung geändert

* Javadoc

* Fehler Steuerberechnung behoben. Kleiner Fehler korrigiert

* Nettobetrag und Steuerbetrag zu BigDecimal geändert

* AutoBpplit bei Feher und immerSlitten abbrechen

* Errorhandling

* NPE bei Abrechnungslauf wenn kein Rechnungsformular vorhanden ist
behoben

* Fehler Filterung Zusatzbeträge behoben

* Revert "Nettobetrag und Steuerbetrag zu BigDecimal geändert"

This reverts commit 63d161a.

* Berechnung Steuer

* MergeKonflikt falsch behoben

* Versionsnummer von DB Update Script erhöht

* Steuerspalten aus AbrechnunggslaufSollbuchungView entfernt, Menü
hinzugefügt

* Doppelklick Sollbuchung statt Mitgleid öffnen

* SollbuchungView Netto und Steuerbetrag Spalten hinzugefügt

---------

Co-authored-by: nils <nils@nils-Aspire-E5-511>
Co-authored-by: Mathias Walter <[email protected]>
Co-authored-by: tolot27 <[email protected]>
  • Loading branch information
4 people authored Jan 20, 2025
1 parent ea99b9c commit 22dd3d3
Show file tree
Hide file tree
Showing 56 changed files with 2,567 additions and 1,797 deletions.
4 changes: 4 additions & 0 deletions src/de/jost_net/JVerein/Queries/SollbuchungQuery.java
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,10 @@ public Object extract(ResultSet rs)
}
});

if (ids.size() == 0)
{
return null;
}
DBIterator<Mitgliedskonto> list = Einstellungen.getDBService()
.createList(Mitgliedskonto.class);
list.addFilter("id in (" + StringUtils.join(ids, ",") + ")");
Expand Down
96 changes: 37 additions & 59 deletions src/de/jost_net/JVerein/Variable/RechnungMap.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,11 @@
import java.util.Map;

import de.jost_net.JVerein.Einstellungen;
import de.jost_net.JVerein.gui.control.FormularfeldControl;
import de.jost_net.JVerein.io.VelocityTool;
import de.jost_net.JVerein.io.Adressbuch.Adressaufbereitung;
import de.jost_net.JVerein.keys.Zahlungsweg;
import de.jost_net.JVerein.rmi.Mitgliedskonto;
import de.jost_net.JVerein.rmi.Rechnung;
import de.jost_net.JVerein.rmi.SollbuchungPosition;
import de.jost_net.JVerein.util.StringTool;
import de.willuhn.jameica.gui.formatter.CurrencyFormatter;

Expand All @@ -42,6 +41,7 @@ public RechnungMap()
//
}

@SuppressWarnings("deprecation")
public Map<String, Object> getMap(Rechnung re, Map<String, Object> inMap)
throws RemoteException
{
Expand All @@ -57,66 +57,69 @@ public Map<String, Object> getMap(Rechnung re, Map<String, Object> inMap)

ArrayList<Date> buchungDatum = new ArrayList<>();
ArrayList<String> zweck = new ArrayList<>();
ArrayList<String> zweck1 = new ArrayList<>();
ArrayList<Double> nettobetrag = new ArrayList<>();
ArrayList<String> steuersatz = new ArrayList<>();
ArrayList<Double> steuerbetrag = new ArrayList<>();
ArrayList<Double> betrag = new ArrayList<>();
ArrayList<Double> ist = new ArrayList<>();
ArrayList<Double> differenz = new ArrayList<>();

DecimalFormat format = new DecimalFormat("0");
CurrencyFormatter formatter = new CurrencyFormatter("%", format);
double summe = 0;
double saldo = 0;
double suist = 0;
for (Mitgliedskonto mkto : re.getMitgliedskontoList())
for (SollbuchungPosition sp : re.getSollbuchungPositionList())
{
buchungDatum.add(mkto.getDatum());
zweck.add(mkto.getZweck1());
zweck1.add(mkto.getZweck1());
nettobetrag.add(Double.valueOf(mkto.getNettobetrag()));
buchungDatum.add(sp.getDatum());
zweck.add(sp.getZweck());
nettobetrag.add(Double.valueOf(sp.getNettobetrag()));
steuersatz.add(
"(" + formatter.format(Double.valueOf(mkto.getSteuersatz())) + ")");
steuerbetrag.add(Double.valueOf(mkto.getSteuerbetrag()));
betrag.add(Double.valueOf(mkto.getBetrag()));
ist.add(mkto.getIstSumme());
suist += mkto.getIstSumme();
differenz.add(mkto.getBetrag() - mkto.getIstSumme());
summe += mkto.getBetrag();
saldo += mkto.getBetrag() - mkto.getIstSumme();
"(" + formatter.format(Double.valueOf(sp.getSteuersatz())) + ")");
steuerbetrag.add(Double.valueOf(sp.getSteuerbetrag()));
betrag.add(sp.getBetrag());
summe += sp.getBetrag();
}
if (buchungDatum.size() > 1)
{
if (Einstellungen.getEinstellung().getOptiert())
{
zweck1.add("Rechnungsbetrag inkl. USt.");
zweck.add("Rechnungsbetrag inkl. USt.");
}
else
{
zweck1.add("Summe");
zweck.add("Summe");
}
betrag.add(summe);
differenz.add(saldo);
ist.add(suist);
}
map.put(FormularfeldControl.BUCHUNGSDATUM, buchungDatum.toArray());
map.put(FormularfeldControl.ZAHLUNGSGRUND, zweck.toArray());
map.put(FormularfeldControl.ZAHLUNGSGRUND1, zweck1.toArray());
map.put(FormularfeldControl.BETRAG, betrag.toArray());
map.put(RechnungVar.BUCHUNGSDATUM.getName(), buchungDatum.toArray());
map.put(RechnungVar.MK_BUCHUNGSDATUM.getName(), buchungDatum.toArray());
map.put(RechnungVar.ZAHLUNGSGRUND.getName(), zweck.toArray());
map.put(RechnungVar.ZAHLUNGSGRUND1.getName(), zweck1.toArray());
map.put(RechnungVar.MK_ZAHLUNGSGRUND.getName(), zweck.toArray());
map.put(RechnungVar.ZAHLUNGSGRUND1.getName(), zweck.toArray());
map.put(RechnungVar.ZAHLUNGSGRUND2.getName(), "");
map.put(RechnungVar.NETTOBETRAG.getName(), nettobetrag.toArray());
map.put(RechnungVar.MK_NETTOBETRAG.getName(), nettobetrag.toArray());
map.put(RechnungVar.STEUERSATZ.getName(), steuersatz.toArray());
map.put(RechnungVar.MK_STEUERSATZ.getName(), steuersatz.toArray());
map.put(RechnungVar.STEUERBETRAG.getName(), steuerbetrag.toArray());
map.put(RechnungVar.MK_STEUERBETRAG.getName(), steuerbetrag.toArray());
map.put(RechnungVar.BETRAG.getName(), betrag.toArray());
map.put(RechnungVar.IST.getName(), ist.toArray());
map.put(RechnungVar.DIFFERENZ.getName(), differenz.toArray());
map.put(RechnungVar.STAND.getName(), Double.valueOf(-1 * saldo));
map.put(RechnungVar.SUMME_OFFEN.getName(), Double.valueOf(saldo));
map.put(RechnungVar.MK_BETRAG.getName(), betrag.toArray());

Double ist = 0d;
if (re.getMitgliedskonto() != null)
{
ist = re.getMitgliedskonto().getIstSumme();
}
map.put(RechnungVar.IST.getName(), ist);
map.put(RechnungVar.MK_SUMME_OFFEN.getName(), summe - ist);
map.put(RechnungVar.SUMME_OFFEN.getName(), summe - ist);
map.put(RechnungVar.MK_STAND.getName(), ist - summe);
map.put(RechnungVar.STAND.getName(), ist - summe);

// Deise Felder gibt es nicht mehr in der Form, damit bei alten
// Rechnungs-Formularen nicht der Variablennamen steht hier trotzdem
// hinzufügen
map.put(RechnungVar.DIFFERENZ.getName(), "");
map.put(RechnungVar.MK_IST.getName(), "");

map.put(RechnungVar.QRCODE_INTRO.getName(),
Einstellungen.getEinstellung().getQRCodeIntro());

Expand Down Expand Up @@ -150,7 +153,7 @@ public Map<String, Object> getMap(Rechnung re, Map<String, Object> inMap)
Adressaufbereitung.getAdressfeld(re));

String zahlungsweg = "";
switch (re.getMitglied().getZahlungsweg())
switch (re.getZahlungsweg().getKey())
{
case Zahlungsweg.BASISLASTSCHRIFT:
{
Expand Down Expand Up @@ -185,29 +188,4 @@ public Map<String, Object> getMap(Rechnung re, Map<String, Object> inMap)

return map;
}

public Map<String, Object> getMap(Mitgliedskonto mk, Map<String, Object> inma)
throws RemoteException
{
Map<String, Object> map = null;
if (inma == null)
{
map = new HashMap<>();
}
else
{
map = inma;
}

map.put(RechnungVar.BUCHUNGSDATUM.getName(), mk.getDatum());
map.put(RechnungVar.ZAHLUNGSGRUND.getName(), mk.getZweck1());
map.put(RechnungVar.ZAHLUNGSGRUND1.getName(), mk.getZweck1());
map.put(RechnungVar.NETTOBETRAG.getName(), mk.getNettobetrag());
map.put(RechnungVar.STEUERSATZ.getName(), mk.getSteuersatz());
map.put(RechnungVar.STEUERBETRAG.getName(), mk.getSteuerbetrag());
map.put(RechnungVar.BETRAG.getName(), mk.getBetrag());
map.put(RechnungVar.IST.getName(), mk.getIstSumme());
map.put(RechnungVar.DIFFERENZ.getName(), mk.getBetrag() - mk.getIstSumme());
return map;
}
}
39 changes: 30 additions & 9 deletions src/de/jost_net/JVerein/Variable/RechnungVar.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,39 @@

public enum RechnungVar
{
ZAHLUNGSGRUND("mitgliedskonto_zahlungsgrund"), //
@Deprecated
MK_ZAHLUNGSGRUND("mitgliedskonto_zahlungsgrund"), //
ZAHLUNGSGRUND("rechnung_zahlungsgrund"), //
@Deprecated
ZAHLUNGSGRUND1("mitgliedskonto_zahlungsgrund1"), //
@Deprecated
ZAHLUNGSGRUND2("mitgliedskonto_zahlungsgrund2"), //
BUCHUNGSDATUM("mitgliedskonto_buchungsdatum"), //
NETTOBETRAG("mitgliedskonto_nettobetrag"), //
STEUERSATZ("mitgliedskonto_steuersatz"), //
STEUERBETRAG("mitgliedskonto_steuerbetrag"), //
BETRAG("mitgliedskonto_betrag"), //
IST("mitgliedskonto_ist"), //
@Deprecated
MK_BUCHUNGSDATUM("mitgliedskonto_buchungsdatum"), //
BUCHUNGSDATUM("rechnung_buchungsdatum"), //
@Deprecated
MK_NETTOBETRAG("mitgliedskonto_nettobetrag"), //
NETTOBETRAG("rechnung_nettobetrag"), //
@Deprecated
MK_STEUERSATZ("mitgliedskonto_steuersatz"), //
STEUERSATZ("rechnung_steuersatz"), //
@Deprecated
MK_STEUERBETRAG("mitgliedskonto_steuerbetrag"), //
STEUERBETRAG("rechnung_steuerbetrag"), //
@Deprecated
MK_BETRAG("mitgliedskonto_betrag"), //
BETRAG("rechnung_betrag"), //
@Deprecated
MK_IST("mitgliedskonto_ist"), //
IST("rechnung_ist"), //
@Deprecated
DIFFERENZ("mitgliedskonto_differenz"), //
STAND("mitgliedskonto_stand"), //
SUMME_OFFEN("mitgliedskonto_summe_offen"), //
@Deprecated
MK_STAND("mitgliedskonto_stand"), //
STAND("rechnung_stand"), //
@Deprecated
MK_SUMME_OFFEN("mitgliedskonto_summe_offen"), //
SUMME_OFFEN("rechnung_summe_offen"), //
QRCODE_SUMME("qrcode_summe"), //
QRCODE_INTRO("qrcode_intro"),
DATUM("rechnung_datum"),
Expand Down
52 changes: 52 additions & 0 deletions src/de/jost_net/JVerein/Variable/SollbuchungMap.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/**********************************************************************
* Copyright (c) by Heiner Jostkleigrewe
* 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/>.
*
* [email protected]
* www.jverein.de
**********************************************************************/
package de.jost_net.JVerein.Variable;

import java.rmi.RemoteException;
import java.util.HashMap;
import java.util.Map;

import de.jost_net.JVerein.rmi.Mitgliedskonto;

public class SollbuchungMap
{

public SollbuchungMap()
{
}

public Map<String, Object> getMap(Mitgliedskonto mk, Map<String, Object> inma)
throws RemoteException
{
Map<String, Object> map = null;
if (inma == null)
{
map = new HashMap<>();
}
else
{
map = inma;
}
map.put(SollbuchungVar.BUCHUNGSDATUM.getName(), mk.getDatum());
map.put(SollbuchungVar.ZAHLUNGSGRUND.getName(), mk.getZweck1());
map.put(SollbuchungVar.BETRAG.getName(), mk.getBetrag());
map.put(SollbuchungVar.IST.getName(), mk.getIstSumme());
map.put(SollbuchungVar.DIFFERENZ.getName(),
mk.getBetrag() - mk.getIstSumme());
return map;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,25 @@
* [email protected]
* www.jverein.de
**********************************************************************/
package de.jost_net.JVerein.gui.action;
package de.jost_net.JVerein.Variable;

import de.jost_net.JVerein.gui.view.RechnungAutoNeuView;
import de.willuhn.jameica.gui.Action;
import de.willuhn.jameica.gui.GUI;
import de.willuhn.util.ApplicationException;

public class RechnungAutoNeuAction implements Action
public enum SollbuchungVar
{
ZAHLUNGSGRUND("sollbuchung_zahlungsgrund"), //
BUCHUNGSDATUM("sollbuchung_buchungsdatum"),
BETRAG("sollbuchung_betrag"), //
IST("sollbuchung_ist"), //
DIFFERENZ("sollbuchung_differenz");

private String name;

@Override
public void handleAction(Object context) throws ApplicationException
SollbuchungVar(String name)
{
GUI.startView(RechnungAutoNeuView.class.getName(), null);
this.name = name;
}

public String getName()
{
return name;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,14 @@ else if(spendenbescheinigung && rechnung)
Buchung bu = it.next();
if (bu.getSpendenbescheinigung() != null)
bu.getSpendenbescheinigung().delete();
bu.delete();
try {
bu.delete();
}
catch (RemoteException ignore)
{
// Ignorieren, da die Exception auftritt, wenn die Buchung bereits
// gelöscht wurde, z. B. bei Splitbuchungen.
}
}
DBIterator<Mitgliedskonto> mitgliedskontoIt = Einstellungen.getDBService()
.createList(Mitgliedskonto.class);
Expand Down
Loading

0 comments on commit 22dd3d3

Please sign in to comment.