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

Saldo basierter Mittelverwendungsreport #600

Open
wants to merge 41 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
3981f2b
Update Mittelverwendung
Jan 11, 2025
b665a9d
Update Kontoart.java
Jan 11, 2025
5eb8dd4
Update Kontoart.java
Jan 11, 2025
da0de36
Update PDF/CSV Report Titel
Jan 11, 2025
389d6b3
Zwischenstand
Jan 14, 2025
d038c36
Update Update0457.java
Jan 18, 2025
b0b6d36
Merge branch 'master' into mittelverwendung_teil2
Jan 18, 2025
bfe11ad
Update Update0458.java
Jan 22, 2025
7b17fa3
Merge branch 'master' into mittelverwendung_teil2
Jan 22, 2025
259a73d
Update MittelverwendungList.java
Jan 22, 2025
9d81f4b
Umbenennung Anlagenklasse -> Buchungsklasse
Jan 22, 2025
7581443
Umbenennung Verbindlichkeitskonto in "Darlehen, Kredite etc."
Jan 23, 2025
7c10efe
Zwischenstand
Jan 24, 2025
8c70de3
Merge branch 'master' into mittelverwendung_teil2
Jan 24, 2025
31aea3b
Merge branch 'master' into mittelverwendung_teil3
Jan 24, 2025
6247158
Update MittelverwendungList.java
Jan 24, 2025
536924b
Kleine Optimierung
Jan 24, 2025
f22ba49
Merge branch 'mittelverwendung_teil2' into mittelverwendung_teil3
Jan 24, 2025
955e4cf
zwischenstand
Jan 25, 2025
d6dbcf9
Zwischenstand
Jan 26, 2025
022f396
Umbau
Jan 26, 2025
8387c75
Zwischenstand
Jan 26, 2025
0a6fcb4
Merge branch 'master' into mittelverwendung_teil2
Jan 26, 2025
16a0652
Merge branch 'master' into mittelverwendung_teil2
Jan 27, 2025
02cd5f8
Bug fix
Jan 27, 2025
0ae43bc
Update JahresabschlussControl.java
Jan 27, 2025
ca8ae84
Fix Kommentare
Jan 28, 2025
8f50487
Fix Start erstes Jahr
Jan 29, 2025
61f81d6
Fix Anzeige
Jan 29, 2025
5d4c978
Update Jahresabschluss View
Jan 29, 2025
eaf41f9
Update Jahresabchluss View
Jan 29, 2025
c0b3b7c
Update JahresabschlussView.java
Jan 29, 2025
0899aba
Ausgaben sollen nicht negativ, sollte aber sowieso nicht sein
Jan 30, 2025
83b3315
Merge branch 'master' into mittelverwendung_teil2
Jan 31, 2025
3f9b0dc
Kommentare
Jan 31, 2025
2ca4ae1
Vorzeichen auch bei SaldoList umgedreht und Text geändert
Jan 31, 2025
f89531d
Merge branch 'master' into mittelverwendung_teil2
Jan 31, 2025
2f53ccf
Summe der zeitnahen Verwendung entzogene Mittel immer anzeigen
Feb 1, 2025
14aba66
Merge branch 'master' into mittelverwendung_teil2
Feb 2, 2025
74bb1f3
Merge branch 'master' into mittelverwendung_teil2
Feb 3, 2025
e3c48fc
Fix Comments
Feb 3, 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
166 changes: 138 additions & 28 deletions src/de/jost_net/JVerein/gui/control/JahresabschlussControl.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,10 @@
import java.util.Date;

import de.jost_net.JVerein.Einstellungen;
import de.jost_net.JVerein.gui.action.JahresabschlussDetailAction;
import de.jost_net.JVerein.gui.menu.JahresabschlussMenu;
import de.jost_net.JVerein.gui.parts.KontensaldoList;
import de.jost_net.JVerein.gui.parts.MittelverwendungFlowList;
import de.jost_net.JVerein.gui.util.AfaUtil;
import de.jost_net.JVerein.io.SaldoZeile;
import de.jost_net.JVerein.keys.Kontoart;
Expand All @@ -44,6 +46,7 @@
import de.willuhn.jameica.gui.formatter.DateFormatter;
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.TextInput;
import de.willuhn.jameica.gui.parts.TablePart;
import de.willuhn.jameica.gui.parts.table.FeatureSummary;
Expand Down Expand Up @@ -73,6 +76,14 @@ public class JahresabschlussControl extends AbstractControl

private CheckboxInput afaberechnung;

private DecimalInput verwendungsrueckstand;

private DecimalInput zwanghafteweitergabe;

private boolean isSaveEnabled = false;

private boolean updateMittelverwendung = false;

public JahresabschlussControl(AbstractView view)
{
super(view);
Expand All @@ -81,12 +92,30 @@ public JahresabschlussControl(AbstractView view)
}

public Jahresabschluss getJahresabschluss()
throws RemoteException, ParseException
{
if (jahresabschluss != null)
{
return jahresabschluss;
}
jahresabschluss = (Jahresabschluss) getCurrentObject();
updateMittelverwendung = (Einstellungen.getEinstellung()
.getMittelverwendung()
&& (jahresabschluss.getVerwendungsrueckstand() == null
|| jahresabschluss.getZwanghafteWeitergabe() == null));
if (jahresabschluss.isNewObject() || updateMittelverwendung)
{
isSaveEnabled = true;
}
if (Einstellungen.getEinstellung().getMittelverwendung())
{
MittelverwendungFlowList list = new MittelverwendungFlowList(
(Date) getVon().getValue(), (Date) getBis().getValue());
list.getInfo();
jahresabschluss.setVerwendungsrueckstand(list.getRueckstandVorjahrNeu());
jahresabschluss
.setZwanghafteWeitergabe(list.getZwanghafteWeitergabeNeu());
}
return jahresabschluss;
}

Expand Down Expand Up @@ -143,24 +172,33 @@ public DateInput getBis() throws RemoteException, ParseException
return bis;
}

public DateInput getDatum()
public DateInput getDatum() throws RemoteException, ParseException
{
if (datum != null)
{
return datum;
}
datum = new DateInput(new Date());
Date date = new Date();
if (!getJahresabschluss().isNewObject())
{
date = getJahresabschluss().getDatum();
}
datum = new DateInput(date);
datum.setEnabled(false);
return datum;
}

public TextInput getName() throws RemoteException
public TextInput getName() throws RemoteException, ParseException
{
if (name != null)
{
return name;
}
name = new TextInput(getJahresabschluss().getName(), 50);
if (!getJahresabschluss().isNewObject())
{
name.setEnabled(false);
}
return name;
}

Expand Down Expand Up @@ -206,6 +244,57 @@ public Part getJahresabschlussSaldo() throws RemoteException
return jahresabschlusssaldoList;
}

public DecimalInput getVerwendungsrueckstand()
throws RemoteException, ParseException
{
if (verwendungsrueckstand != null)
{
return verwendungsrueckstand;
}

if (getJahresabschluss().getVerwendungsrueckstand() == null)
{
verwendungsrueckstand = new DecimalInput(Einstellungen.DECIMALFORMAT);
}
else
{
verwendungsrueckstand = new DecimalInput(
getJahresabschluss().getVerwendungsrueckstand(),
Einstellungen.DECIMALFORMAT);
}
verwendungsrueckstand.setEnabled(
updateMittelverwendung && !getJahresabschluss().isNewObject());
return verwendungsrueckstand;
}

public DecimalInput getZwanghafteWeitergabe()
throws RemoteException, ParseException
{
if (zwanghafteweitergabe != null)
{
return zwanghafteweitergabe;
}

if (getJahresabschluss().getZwanghafteWeitergabe() == null)
{
zwanghafteweitergabe = new DecimalInput(Einstellungen.DECIMALFORMAT);
}
else
{
zwanghafteweitergabe = new DecimalInput(
getJahresabschluss().getZwanghafteWeitergabe(),
Einstellungen.DECIMALFORMAT);
}
zwanghafteweitergabe.setEnabled(
updateMittelverwendung && !getJahresabschluss().isNewObject());
return zwanghafteweitergabe;
}

public boolean isSaveEnabled()
{
return isSaveEnabled;
}

/**
* This method stores the project using the current values.
*/
Expand All @@ -214,36 +303,56 @@ public void handleStore()
try
{
Jahresabschluss ja = getJahresabschluss();
ja.setVon((Date) getVon().getValue());
ja.setBis((Date) getBis().getValue());
ja.setDatum((Date) getDatum().getValue());
ja.setName((String) getName().getValue());
ja.store();
if (afaberechnung != null && (Boolean) getAfaberechnung().getValue())
if (ja.isNewObject())
{
new AfaUtil(new Geschaeftsjahr(ja.getVon()), ja);
}
if ((Boolean) getAnfangsbestaende().getValue())
{
KontensaldoList jsl = new KontensaldoList(null,
new Geschaeftsjahr(ja.getVon()));
ArrayList<SaldoZeile> zeilen = jsl.getInfo(false);
for (SaldoZeile z : zeilen)
ja.setVon((Date) getVon().getValue());
ja.setBis((Date) getBis().getValue());
ja.setDatum((Date) getDatum().getValue());
ja.setName((String) getName().getValue());
ja.store();
if (afaberechnung != null && (Boolean) getAfaberechnung().getValue())
{
new AfaUtil(new Geschaeftsjahr(ja.getVon()), ja);
}
if (Einstellungen.getEinstellung().getMittelverwendung())
{
MittelverwendungFlowList list = new MittelverwendungFlowList(
ja.getVon(), ja.getBis());
list.getInfo();
ja.setVerwendungsrueckstand(list.getRueckstandVorjahrNeu());
ja.setZwanghafteWeitergabe(list.getZwanghafteWeitergabeNeu());
ja.store();
}
if ((Boolean) getAnfangsbestaende().getValue())
{
String ktonr = (String) z.getAttribute("kontonummer");
if (ktonr.length() > 0)
KontensaldoList jsl = new KontensaldoList(null,
new Geschaeftsjahr(ja.getVon()));
ArrayList<SaldoZeile> zeilen = jsl.getInfo(false);
for (SaldoZeile z : zeilen)
{
Double endbestand = (Double) z.getAttribute("endbestand");
Anfangsbestand anf = (Anfangsbestand) Einstellungen.getDBService()
.createObject(Anfangsbestand.class, null);
Konto konto = (Konto) z.getAttribute("konto");
anf.setBetrag(endbestand);
anf.setDatum(Datum.addTage(ja.getBis(), 1));
anf.setKonto(konto);
anf.store();
String ktonr = (String) z.getAttribute("kontonummer");
if (ktonr.length() > 0)
{
Double endbestand = (Double) z.getAttribute("endbestand");
Anfangsbestand anf = (Anfangsbestand) Einstellungen.getDBService()
.createObject(Anfangsbestand.class, null);
Konto konto = (Konto) z.getAttribute("konto");
anf.setBetrag(endbestand);
anf.setDatum(Datum.addTage(ja.getBis(), 1));
anf.setKonto(konto);
anf.store();
}
}
}
}
else
{
ja.setVerwendungsrueckstand(
(Double) getVerwendungsrueckstand().getValue());
ja.setZwanghafteWeitergabe(
(Double) getZwanghafteWeitergabe().getValue());
ja.store();
}
GUI.getStatusBar().setSuccessText("Jahresabschluss gespeichert");
}
catch (RemoteException e)
Expand Down Expand Up @@ -272,7 +381,8 @@ public Part getJahresabschlussList() throws RemoteException
.createList(Jahresabschluss.class);
jahresabschluesse.setOrder("ORDER BY von desc");

jahresabschlussList = new TablePart(jahresabschluesse, null);
jahresabschlussList = new TablePart(jahresabschluesse,
new JahresabschlussDetailAction());
jahresabschlussList.addColumn("Nr", "id-int");
jahresabschlussList.addColumn("Von", "von",
new DateFormatter(new JVDateFormatTTMMJJJJ()));
Expand Down
43 changes: 19 additions & 24 deletions src/de/jost_net/JVerein/gui/control/KontoControl.java
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ public class KontoControl extends AbstractControl

private AbstractInput anlagenart;

private SelectInput anlagenklasse;
private SelectInput buchungsklasse;

private AbstractInput afaart;

Expand Down Expand Up @@ -267,7 +267,7 @@ public void handleStore()
k.setHibiscusId(Integer.parseInt(hkto.getID()));
}
k.setAnlagenartId(getSelectedAnlagenartId());
k.setAnlagenklasseId(getSelectedAnlagenklasseId());
k.setBuchungsklasseId(getSelectedBuchungsklasseId());
k.setAfaartId(getSelectedAfaartId());
k.setBetrag((Double) getBetrag().getValue());
k.setNutzungsdauer((Integer) getNutzungsdauer().getValue());
Expand Down Expand Up @@ -632,45 +632,43 @@ private Long getSelectedAnlagenartId() throws ApplicationException
}
}

public Input getAnlagenklasse() throws RemoteException
public Input getBuchungsklasse() throws RemoteException
{
if (anlagenklasse != null)
if (buchungsklasse != null)
{
return anlagenklasse;
return buchungsklasse;
}
DBIterator<Buchungsklasse> list = Einstellungen.getDBService()
.createList(Buchungsklasse.class);
list.setOrder(getBuchungartSortOrder());
anlagenklasse = new SelectInput(list != null ? PseudoIterator.asList(list) : null,
getKonto().getAnlagenklasse());
anlagenklasse.setAttribute(getBuchungartAttribute());
anlagenklasse.setPleaseChoose("Bitte auswählen");
buchungsklasse = new SelectInput(list != null ? PseudoIterator.asList(list) : null,
getKonto().getBuchungsklasse());
buchungsklasse.setAttribute(getBuchungartAttribute());
buchungsklasse.setPleaseChoose("Bitte auswählen");
if (getKontoArt().getValue() == Kontoart.ANLAGE)
{
anlagenklasse.setMandatory(true);
buchungsklasse.setMandatory(true);
}
else
{
anlagenklasse.setMandatory(false);
anlagenklasse.setValue(null);
anlagenklasse.disable();
buchungsklasse.setMandatory(false);
}
return anlagenklasse;
return buchungsklasse;
}

private Long getSelectedAnlagenklasseId() throws ApplicationException
private Long getSelectedBuchungsklasseId() throws ApplicationException
{
try
{
Buchungsklasse buchungsKlasse = (Buchungsklasse) getAnlagenklasse().getValue();
Buchungsklasse buchungsKlasse = (Buchungsklasse) getBuchungsklasse().getValue();
if (null == buchungsKlasse)
return null;
Long id = Long.valueOf(buchungsKlasse.getID());
return id;
}
catch (RemoteException ex)
{
final String meldung = "Gewählte Anlagenklasse kann nicht ermittelt werden";
final String meldung = "Gewählte Buchungsklasse kann nicht ermittelt werden";
Logger.error(meldung, ex);
throw new ApplicationException(meldung, ex);
}
Expand Down Expand Up @@ -984,8 +982,8 @@ public void handleEvent(Event event)
Buchungsart ba = (Buchungsart) getAnlagenart().getValue();
if (ba != null)
{
if (getAnlagenklasse().getValue() == null)
getAnlagenklasse().setValue(ba.getBuchungsklasse());
if (getBuchungsklasse().getValue() == null)
getBuchungsklasse().setValue(ba.getBuchungsklasse());
}
}
catch (Exception e)
Expand All @@ -1001,8 +999,7 @@ public void refreshGui()
{
if (getKontoArt().getValue() == Kontoart.ANLAGE)
{
getAnlagenklasse().enable();
getAnlagenklasse().setMandatory(true);
getBuchungsklasse().setMandatory(true);
getAnlagenart().enable();
getAnlagenart().setMandatory(true);
getAfaart().enable();
Expand All @@ -1027,9 +1024,7 @@ public void refreshGui()
}
else
{
getAnlagenklasse().setMandatory(false);
getAnlagenklasse().setValue(null);
getAnlagenklasse().disable();
getBuchungsklasse().setMandatory(false);
getAnlagenart().setMandatory(false);
getAnlagenart().setValue(null);
getAnlagenart().disable();
Expand Down
Loading
Loading