Skip to content

Commit

Permalink
Feature: Unterdrücke Buchungsarten in Dialogen (#104)
Browse files Browse the repository at this point in the history
* Feature: Unterdrücke Buchungsarten in Dialogen

Das Feature unterdrückt in Auswahldialogen Buchungsarten die seit mehr als 2 Jahren nicht benutzt wurden.
Das Feature ist in den Einstellungen auswählbar.

* Konfigurierbares Intervall

Im Feature zur Unterdrückung ungenutzter Buchungsarten ist jetzt der Zeitraum in Monaten einstellbar.

* Exception entfernt in BuchungZuordnungDialog

Exception entfernt in BuchungZuordnungDialog wenn abbrechen gewählt wird.
Deprecated Long ersetzt.

* Abbruch ohne Meldung

Abbruch gibt keine Meldung mehr aus so wie es auch bei vielen anderen Dialogen ist.
Funktioniert analog bei ESC und dem Schließen Icon oben rechts.
Icons zu den Buttons hinzugefügt analog Mitglieder Konto Auswahl Dialog.

* replace isInstance with instanceof

* Update BuchungBuchungsartZuordnungAction.java

Vorschlag von Willuhn implementiert

* Entfernen Button implementiert

* Button text groß und Icons wie für #111

* Entfernen Button Icon wie Löschen Icon in Hibiscus

* Abort Handling vereinfacht

* Kommentar von dippeal implementiert

* Leerzeichen eingefügt
  • Loading branch information
JohannMaierhofer authored Jan 26, 2024
1 parent ea1ceb4 commit bc02480
Show file tree
Hide file tree
Showing 9 changed files with 362 additions and 53 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,13 @@

package de.jost_net.JVerein.gui.action;

import java.rmi.RemoteException;

import de.jost_net.JVerein.gui.control.BuchungsControl;
import de.jost_net.JVerein.gui.dialogs.BuchungsartZuordnungDialog;
import de.jost_net.JVerein.rmi.Buchung;
import de.jost_net.JVerein.rmi.Buchungsart;
import de.willuhn.jameica.gui.Action;
import de.willuhn.jameica.gui.GUI;
import de.willuhn.jameica.system.OperationCanceledException;
import de.willuhn.logging.Logger;
import de.willuhn.util.ApplicationException;

Expand Down Expand Up @@ -72,51 +71,65 @@ public void handleAction(Object context) throws ApplicationException
{
return;
}
try

BuchungsartZuordnungDialog baz = new BuchungsartZuordnungDialog(
BuchungsartZuordnungDialog.POSITION_MOUSE);
baz.open();
if (!baz.getAbort())
{
BuchungsartZuordnungDialog baz = new BuchungsartZuordnungDialog(
BuchungsartZuordnungDialog.POSITION_MOUSE);
baz.open();
Buchungsart ba = baz.getBuchungsart();
int counter = 0;

for (Buchung buchung : b)
if (ba == null)
{
boolean protect = buchung.getBuchungsart() != null
&& !baz.getOverride();
if (protect)
for (Buchung buchung : b)
{
counter++;
buchung.setBuchungsart(null);
buchung.store();
}
else
}
else
{
for (Buchung buchung : b)
{
buchung.setBuchungsart(new Long(ba.getID()));
buchung.store();
boolean protect = buchung.getBuchungsart() != null
&& !baz.getOverride();
if (protect)
{
counter++;
}
else
{
buchung.setBuchungsart(Long.valueOf(ba.getID()));
buchung.store();
}
}
}
control.getBuchungsList();
String protecttext = "";
if (counter > 0)
if (ba == null)
{
protecttext = String
.format(", %d Buchungen wurden nicht überschrieben. ", counter);
GUI.getStatusBar().setSuccessText("Buchungsarten gelöscht");
}
else
{
String protecttext = "";
if (counter > 0)
{
protecttext = String
.format(", %d Buchungen wurden nicht überschrieben. ", counter);
}
GUI.getStatusBar()
.setSuccessText("Buchungsarten zugeordnet" + protecttext);
}
GUI.getStatusBar()
.setSuccessText("Buchungsarten zugeordnet" + protecttext);
}
catch (Exception e)
{
Logger.error("Fehler", e);
GUI.getStatusBar()
.setErrorText("Fehler bei der Zuordnung der Buchungsart");
return;
}
}
catch (RemoteException e)
catch (OperationCanceledException oce)
{
throw oce;
}
catch (Exception e)
{
String fehler = "Fehler beim Speichern.";
GUI.getStatusBar().setErrorText(fehler);
Logger.error(fehler, e);
Logger.error("Fehler", e);
GUI.getStatusBar().setErrorText("Fehler bei der Zuordnung der Buchungsart");
}
}
}
68 changes: 65 additions & 3 deletions src/de/jost_net/JVerein/gui/control/BuchungsControl.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,11 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.rmi.RemoteException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Vector;
Expand Down Expand Up @@ -72,7 +75,10 @@
import de.jost_net.JVerein.util.Dateiname;
import de.jost_net.JVerein.util.JVDateFormatTTMMJJJJ;
import de.willuhn.datasource.GenericObject;
import de.willuhn.datasource.pseudo.PseudoIterator;
import de.willuhn.datasource.rmi.DBIterator;
import de.willuhn.datasource.rmi.DBService;
import de.willuhn.datasource.rmi.ResultSetExtractor;
import de.willuhn.jameica.gui.AbstractControl;
import de.willuhn.jameica.gui.AbstractView;
import de.willuhn.jameica.gui.Action;
Expand Down Expand Up @@ -183,6 +189,8 @@ public class BuchungsControl extends AbstractControl
public static final String MITGLIEDZUGEORDNET = "suchmitgliedzugeordnet";

private Vector<Listener> changeKontoListener = new Vector<>();

private int unterdrueckunglaenge = 0;

public BuchungsControl(AbstractView view)
{
Expand Down Expand Up @@ -542,7 +550,7 @@ public Input getProjekt() throws RemoteException
"((startdatum is null or startdatum <= ?) and (endedatum is null or endedatum >= ?))",
new Object[] { buchungsDatum, buchungsDatum });
list.setOrder("ORDER BY bezeichnung");
projekt = new SelectInput(list, getBuchung().getProjekt());
projekt = new SelectInput(PseudoIterator.asList(list), getBuchung().getProjekt());
projekt.setValue(getBuchung().getProjekt());
projekt.setAttribute("bezeichnung");
projekt.setPleaseChoose("Bitte auswählen");
Expand Down Expand Up @@ -665,10 +673,62 @@ public Input getSuchBuchungsart() throws RemoteException
b2.setBezeichnung("Ohne Buchungsart");
b2.setArt(-1);
liste.add(b2);
while (list.hasNext())

unterdrueckunglaenge = Einstellungen.getEinstellung().getUnterdrueckungLaenge();
if (unterdrueckunglaenge > 0)
{
final DBService service = Einstellungen.getDBService();
Calendar cal = Calendar.getInstance();
Date db = cal.getTime();
cal.add(Calendar.MONTH, - unterdrueckunglaenge);
Date dv = cal.getTime();
String sql = "SELECT buchungsart.* from buchungsart, buchung ";
sql += "WHERE buchung.buchungsart = buchungsart.id ";
sql += "AND buchung.datum >= ? AND buchung.datum <= ? ";
sql += "ORDER BY nummer";
Logger.debug(sql);
ResultSetExtractor rs = new ResultSetExtractor()
{
@Override
public Object extract(ResultSet rs) throws RemoteException, SQLException
{
ArrayList<Buchungsart> list = new ArrayList<Buchungsart>();
while (rs.next())
{
list.add(
(Buchungsart) service.createObject(Buchungsart.class, rs.getString(1)));
}
return list;
}
};
@SuppressWarnings("unchecked")
ArrayList<Buchungsart> ergebnis = (ArrayList<Buchungsart>) service.execute(sql,
new Object[] { dv, db }, rs);
int size = ergebnis.size();
Buchungsart bua;
for (int i = 0; i < size; i++)
{
bua = ergebnis.get(i);
liste.add(bua);
for (int j = i + 1; j < size; j++)
{
if (bua.getNummer() == ergebnis.get(j).getNummer())
{
ergebnis.remove(j);
j--;
size--;
}
}
}
}
else
{
liste.add(list.next());
while (list.hasNext())
{
liste.add(list.next());
}
}

int bwert = settings.getInt(BUCHUNGSART, -2);
Buchungsart b = null;
for (int i = 0; i < liste.size(); i++)
Expand Down Expand Up @@ -1817,6 +1877,7 @@ public Boolean getValue()
return value;
}

@SuppressWarnings("unused")
public void setValue(Boolean value)
{
this.value = value;
Expand All @@ -1827,6 +1888,7 @@ public String getText()
return text;
}

@SuppressWarnings("unused")
public void setText(String text)
{
this.text = text;
Expand Down
14 changes: 14 additions & 0 deletions src/de/jost_net/JVerein/gui/control/EinstellungControl.java
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,8 @@ public class EinstellungControl extends AbstractControl
private CheckboxInput unterdrueckungohnebuchung;

private CheckboxInput kontonummer_in_buchungsliste;

private IntegerInput unterdrueckunglaenge;

private TextInput smtp_server;

Expand Down Expand Up @@ -927,6 +929,16 @@ public CheckboxInput getUnterdrueckungOhneBuchung() throws RemoteException
return unterdrueckungohnebuchung;
}

public IntegerInput getUnterdrueckungLaenge() throws RemoteException
{
if (null == unterdrueckunglaenge)
{
unterdrueckunglaenge = new IntegerInput(
Einstellungen.getEinstellung().getUnterdrueckungLaenge());
}
return unterdrueckunglaenge;
}

public CheckboxInput getKontonummerInBuchungsliste() throws RemoteException
{
if (kontonummer_in_buchungsliste != null)
Expand Down Expand Up @@ -1897,6 +1909,8 @@ public void handleStoreBuchfuehrung()
e.setAutoBuchunguebernahme((Boolean) autobuchunguebernahme.getValue());
e.setUnterdrueckungOhneBuchung((Boolean) unterdrueckungohnebuchung
.getValue());
Integer ulength = (Integer) unterdrueckunglaenge.getValue();
e.setUnterdrueckungLaenge(ulength);
e.setKontonummerInBuchungsliste((Boolean) kontonummer_in_buchungsliste.getValue());
e.store();
Einstellungen.setEinstellung(e);
Expand Down
Loading

0 comments on commit bc02480

Please sign in to comment.