diff --git a/plugin.xml b/plugin.xml
index 9b9d95005..0ad609d4c 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -37,6 +37,10 @@
class="de.jost_net.JVerein.server.JVereinDBServiceImpl" />
+
+
+
+
diff --git a/src/com/schlevoigt/JVerein/gui/control/BuchungsTextKorrekturControl.java b/src/com/schlevoigt/JVerein/gui/control/BuchungsTextKorrekturControl.java
index 29ca862ea..39a726c64 100644
--- a/src/com/schlevoigt/JVerein/gui/control/BuchungsTextKorrekturControl.java
+++ b/src/com/schlevoigt/JVerein/gui/control/BuchungsTextKorrekturControl.java
@@ -22,7 +22,6 @@
import com.schlevoigt.JVerein.util.Misc;
import de.jost_net.JVerein.DBTools.DBTransaction;
-import de.jost_net.JVerein.Messaging.BuchungMessage;
import de.jost_net.JVerein.gui.action.BuchungAction;
import de.jost_net.JVerein.rmi.Buchung;
import de.jost_net.JVerein.rmi.Konto;
@@ -36,9 +35,6 @@
import de.willuhn.jameica.gui.formatter.Formatter;
import de.willuhn.jameica.gui.parts.Button;
import de.willuhn.jameica.gui.parts.TablePart;
-import de.willuhn.jameica.messaging.Message;
-import de.willuhn.jameica.messaging.MessageConsumer;
-import de.willuhn.jameica.system.Application;
import de.willuhn.logging.Logger;
import de.willuhn.util.ApplicationException;
@@ -48,8 +44,6 @@ public class BuchungsTextKorrekturControl extends AbstractControl {
private BuchungsKorrekturQuery query;
- private BuchungMessageConsumer mc = null;
-
public BuchungsTextKorrekturControl(AbstractView view) {
super(view);
}
@@ -121,17 +115,7 @@ public String format(Object value) {
buchungsList.setRememberColWidths(true);
buchungsList.setRememberOrder(true);
buchungsList.setRememberState(true);
- this.mc = new BuchungMessageConsumer();
- Application.getMessagingFactory().registerMessageConsumer(this.mc);
- } else {
- buchungsList.removeAll();
-
- for (Buchung bu : query.get()) {
- buchungsList.addItem(bu);
- }
- buchungsList.sort();
}
-
return buchungsList;
}
@@ -175,53 +159,4 @@ private void starteKorrektur() {
GUI.getStatusBar().setErrorText(e.getLocalizedMessage());
}
}
-
- /**
- * Wird benachrichtigt um die Anzeige zu aktualisieren.
- */
- private class BuchungMessageConsumer implements MessageConsumer {
-
- /**
- * @see de.willuhn.jameica.messaging.MessageConsumer#autoRegister()
- */
- @Override
- public boolean autoRegister() {
- return false;
- }
-
- /**
- * @see de.willuhn.jameica.messaging.MessageConsumer#getExpectedMessageTypes()
- */
- @Override
- public Class>[] getExpectedMessageTypes() {
- return new Class[] { BuchungMessage.class };
- }
-
- /**
- * @see de.willuhn.jameica.messaging.MessageConsumer#handleMessage(de.willuhn.jameica.messaging.Message)
- */
- @Override
- public void handleMessage(final Message message) throws Exception {
- GUI.getDisplay().syncExec(new Runnable() {
-
- @Override
- public void run() {
- try {
- if (buchungsList == null) {
- // Eingabe-Feld existiert nicht. Also abmelden
- Application.getMessagingFactory().unRegisterMessageConsumer(BuchungMessageConsumer.this);
- return;
- }
- refreshBuchungen();
- } catch (Exception e) {
- // Wenn hier ein Fehler auftrat, deregistrieren wir uns
- // wieder
- Logger.error("unable to refresh Splitbuchungen", e);
- Application.getMessagingFactory().unRegisterMessageConsumer(BuchungMessageConsumer.this);
- }
- }
- });
- }
-
- }
}
diff --git a/src/de/jost_net/JVerein/Messaging/BuchungMessage.java b/src/de/jost_net/JVerein/Messaging/BuchungMessage.java
deleted file mode 100644
index 3d78ae3f6..000000000
--- a/src/de/jost_net/JVerein/Messaging/BuchungMessage.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**********************************************************************
- * 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 .
- *
- * heiner@jverein.de
- * www.jverein.de
- **********************************************************************/
-
-package de.jost_net.JVerein.Messaging;
-
-import de.willuhn.datasource.GenericObject;
-import de.willuhn.jameica.hbci.messaging.ObjectMessage;
-
-/**
- * Wird versendet, wenn sich die Buchungstabelle geaendert hat.
- */
-public class BuchungMessage extends ObjectMessage
-{
- public BuchungMessage(GenericObject object)
- {
- super(object);
- }
-}
\ No newline at end of file
diff --git a/src/de/jost_net/JVerein/Messaging/HibscusUmsatzMessageConsumer.java b/src/de/jost_net/JVerein/Messaging/HibscusUmsatzMessageConsumer.java
new file mode 100644
index 000000000..65a516520
--- /dev/null
+++ b/src/de/jost_net/JVerein/Messaging/HibscusUmsatzMessageConsumer.java
@@ -0,0 +1,98 @@
+/**********************************************************************
+ *
+ * Copyright (c) 2004 Olaf Willuhn
+ * All right/**********************************************************************
+ * 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 .
+ *
+ * heiner@jverein.de
+ * www.jverein.de
+ **********************************************************************/
+
+package de.jost_net.JVerein.Messaging;
+
+import de.jost_net.JVerein.Einstellungen;
+import de.jost_net.JVerein.rmi.Buchung;
+import de.willuhn.datasource.GenericObject;
+import de.willuhn.datasource.rmi.DBIterator;
+import de.willuhn.jameica.messaging.Message;
+import de.willuhn.jameica.messaging.MessageConsumer;
+import de.willuhn.jameica.messaging.QueryMessage;
+
+/**
+ * Wird benachrichtigt, wenn eine Buchung aus Hibiscus als geprueft/ungeprueft
+ * markiert wurde. Insofern wir eine Buchung haben, die aus diesem Umsatz
+ * erzeugt wurde, uebernehmen wir den Status dann auch gleich in JVerein.
+ */
+public class HibscusUmsatzMessageConsumer implements MessageConsumer
+{
+ /**
+ * @see de.willuhn.jameica.messaging.MessageConsumer#getExpectedMessageTypes()
+ */
+ @SuppressWarnings("rawtypes")
+ @Override
+ public Class[] getExpectedMessageTypes()
+ {
+ return new Class[] { QueryMessage.class };
+ }
+
+ /**
+ * @see de.willuhn.jameica.messaging.MessageConsumer#handleMessage(de.willuhn.jameica.messaging.Message)
+ */
+ @Override
+ public void handleMessage(Message message) throws Exception
+ {
+ if (!Einstellungen.getEinstellung().getGeprueftSynchronisieren())
+ return;
+
+ final QueryMessage m = (QueryMessage) message;
+ final String name = m.getName();
+ final Object data = m.getData();
+
+ if (name == null || data == null)
+ return;
+
+ final boolean state = Boolean.valueOf(name);
+
+ // Wir muessen hier nichtmal auf Umsatz casten - uns genuegt die ID des
+ // Datensatzes
+ if (!(data instanceof GenericObject))
+ return;
+
+ final GenericObject o = (GenericObject) data;
+ final String id = o.getID();
+ if (id == null || id.length() == 0)
+ return;
+
+ DBIterator list = Einstellungen.getDBService()
+ .createList(Buchung.class);
+ list.addFilter("umsatzid = ?", id);
+ if (!list.hasNext())
+ return;
+
+ Buchung b = list.next();
+ b.setGeprueft(state);
+ b.store();
+ }
+
+ /**
+ * @see de.willuhn.jameica.messaging.MessageConsumer#autoRegister()
+ */
+ @Override
+ public boolean autoRegister()
+ {
+ // Per plugin.xml registriert.
+ return false;
+ }
+
+}
+
diff --git a/src/de/jost_net/JVerein/Queries/BuchungQuery.java b/src/de/jost_net/JVerein/Queries/BuchungQuery.java
index 6a09ea461..322fb0eee 100644
--- a/src/de/jost_net/JVerein/Queries/BuchungQuery.java
+++ b/src/de/jost_net/JVerein/Queries/BuchungQuery.java
@@ -81,10 +81,12 @@ private void SortHashMap() {
private SplitFilter split;
+ private boolean ungeprueft;
+
public BuchungQuery(Date datumvon, Date datumbis, Konto konto,
Buchungsart buchungsart, Projekt projekt, String text, String betrag,
Boolean hasMitglied, String mitglied, boolean geldkonto,
- SplitFilter split)
+ SplitFilter split, boolean ungeprueft)
{
this.datumvon = datumvon;
this.datumbis = datumbis;
@@ -97,6 +99,7 @@ public BuchungQuery(Date datumvon, Date datumbis, Konto konto,
this.geldkonto = geldkonto;
this.mitglied = mitglied;
this.split = split;
+ this.ungeprueft = ungeprueft;
}
public String getOrder(String value) {
@@ -242,6 +245,11 @@ else if (buchungart.getNummer() >= 0)
break;
}
+ if (ungeprueft)
+ {
+ it.addFilter("geprueft = 0");
+ }
+
if (betrag != null && betrag.length() > 0)
{
try
diff --git a/src/de/jost_net/JVerein/gui/action/BuchungBuchungsartZuordnungAction.java b/src/de/jost_net/JVerein/gui/action/BuchungBuchungsartZuordnungAction.java
index 51a441a4d..c79d4448f 100644
--- a/src/de/jost_net/JVerein/gui/action/BuchungBuchungsartZuordnungAction.java
+++ b/src/de/jost_net/JVerein/gui/action/BuchungBuchungsartZuordnungAction.java
@@ -17,7 +17,6 @@
package de.jost_net.JVerein.gui.action;
-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;
@@ -33,12 +32,6 @@
*/
public class BuchungBuchungsartZuordnungAction implements Action
{
- private BuchungsControl control;
-
- public BuchungBuchungsartZuordnungAction(BuchungsControl control)
- {
- this.control = control;
- }
@Override
public void handleAction(Object context) throws ApplicationException
@@ -111,7 +104,6 @@ public void handleAction(Object context) throws ApplicationException
}
}
}
- control.getBuchungsList();
if (ba == null)
{
GUI.getStatusBar().setSuccessText("Buchungsarten gelöscht");
diff --git a/src/de/jost_net/JVerein/gui/action/BuchungDeleteAction.java b/src/de/jost_net/JVerein/gui/action/BuchungDeleteAction.java
index 52c16425a..8bb5018d6 100644
--- a/src/de/jost_net/JVerein/gui/action/BuchungDeleteAction.java
+++ b/src/de/jost_net/JVerein/gui/action/BuchungDeleteAction.java
@@ -18,8 +18,6 @@
import java.rmi.RemoteException;
-import de.jost_net.JVerein.Messaging.BuchungMessage;
-import de.jost_net.JVerein.gui.control.BuchungsControl;
import de.jost_net.JVerein.io.SplitbuchungsContainer;
import de.jost_net.JVerein.rmi.Buchung;
import de.jost_net.JVerein.rmi.Jahresabschluss;
@@ -28,7 +26,6 @@
import de.willuhn.jameica.gui.Action;
import de.willuhn.jameica.gui.GUI;
import de.willuhn.jameica.gui.dialogs.YesNoDialog;
-import de.willuhn.jameica.system.Application;
import de.willuhn.logging.Logger;
import de.willuhn.util.ApplicationException;
@@ -39,12 +36,9 @@ public class BuchungDeleteAction implements Action
{
private boolean splitbuchung;
- private BuchungsControl control;
-
- public BuchungDeleteAction(BuchungsControl control, boolean splitbuchung)
+ public BuchungDeleteAction(boolean splitbuchung)
{
this.splitbuchung = splitbuchung;
- this.control = control;
}
@Override
@@ -153,15 +147,12 @@ else if (context instanceof Buchung[])
bu.getSpendenbescheinigung().delete();
bu.delete();
count++;
- control.getBuchungsList();
}
else if (splitbuchung)
{
if (bu.getDependencyId() == -1)
{
bu.setDelete(true);
- Application.getMessagingFactory()
- .sendMessage(new BuchungMessage(bu));
count++;
}
else
@@ -171,8 +162,6 @@ else if (splitbuchung)
if (buchung_tmp.getDependencyId() == bu.getDependencyId())
{
buchung_tmp.setDelete(true);
- Application.getMessagingFactory()
- .sendMessage(new BuchungMessage(buchung_tmp));
count++;
}
}
diff --git a/src/de/jost_net/JVerein/gui/action/BuchungGeprueftAction.java b/src/de/jost_net/JVerein/gui/action/BuchungGeprueftAction.java
new file mode 100644
index 000000000..380615f94
--- /dev/null
+++ b/src/de/jost_net/JVerein/gui/action/BuchungGeprueftAction.java
@@ -0,0 +1,85 @@
+/**********************************************************************
+ * 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 .
+ *
+ * heiner@jverein.de
+ * www.jverein.de
+ **********************************************************************/
+package de.jost_net.JVerein.gui.action;
+
+import java.rmi.RemoteException;
+
+import de.jost_net.JVerein.Einstellungen;
+import de.jost_net.JVerein.rmi.Buchung;
+import de.willuhn.jameica.gui.Action;
+import de.willuhn.jameica.messaging.QueryMessage;
+import de.willuhn.jameica.system.Application;
+import de.willuhn.util.ApplicationException;
+
+public class BuchungGeprueftAction implements Action
+{
+ private boolean geprueft;
+
+ public BuchungGeprueftAction(boolean geprueft)
+ {
+ this.geprueft = geprueft;
+ }
+
+ @Override
+ public void handleAction(Object context) throws ApplicationException
+ {
+ Buchung[] buchungen = null;
+ if (context instanceof Buchung)
+ {
+ buchungen = new Buchung[1];
+ buchungen[0] = (Buchung) context;
+ }
+ else if (context instanceof Buchung[])
+ {
+ buchungen = (Buchung[]) context;
+ }
+ if (buchungen == null)
+ {
+ return;
+ }
+ if (buchungen.length == 0)
+ {
+ return;
+ }
+
+ try
+ {
+ boolean sync = Einstellungen.getEinstellung().getGeprueftSynchronisieren();
+ for (Buchung b : buchungen)
+ {
+ b.setGeprueft(geprueft);
+ b.store();
+
+ // ggfs. mit Hibiscus syncronisieren
+ // wir verwenden hier die SynTAX-MessageQueue, da diese bereits
+ // existiert und somit keine Änderung an Hibiscus nötig ist
+ if (sync)
+ {
+ String hid = b.getUmsatzid().toString();
+ if (hid != null && hid.length() > 0)
+ Application.getMessagingFactory()
+ .getMessagingQueue("syntax.buchung.markchecked")
+ .sendMessage(new QueryMessage(Boolean.toString(geprueft), hid));
+ }
+ }
+ }
+ catch (RemoteException e)
+ {
+ throw new ApplicationException(e);
+ }
+ }
+}
diff --git a/src/de/jost_net/JVerein/gui/action/BuchungKontoauszugZuordnungAction.java b/src/de/jost_net/JVerein/gui/action/BuchungKontoauszugZuordnungAction.java
index 7bc0db233..f9c11e45b 100644
--- a/src/de/jost_net/JVerein/gui/action/BuchungKontoauszugZuordnungAction.java
+++ b/src/de/jost_net/JVerein/gui/action/BuchungKontoauszugZuordnungAction.java
@@ -17,7 +17,6 @@
package de.jost_net.JVerein.gui.action;
-import de.jost_net.JVerein.gui.control.BuchungsControl;
import de.jost_net.JVerein.gui.dialogs.KontoauszugZuordnungDialog;
import de.jost_net.JVerein.rmi.Buchung;
import de.willuhn.jameica.gui.Action;
@@ -31,14 +30,6 @@
*/
public class BuchungKontoauszugZuordnungAction implements Action
{
-
- private BuchungsControl control;
-
- public BuchungKontoauszugZuordnungAction(BuchungsControl control)
- {
- this.control = control;
- }
-
@Override
public void handleAction(Object context) throws ApplicationException
{
@@ -98,7 +89,6 @@ public void handleAction(Object context) throws ApplicationException
buchung.store();
}
}
- control.getBuchungsList();
String protecttext = "";
if (counter > 0)
{
diff --git a/src/de/jost_net/JVerein/gui/action/BuchungProjektZuordnungAction.java b/src/de/jost_net/JVerein/gui/action/BuchungProjektZuordnungAction.java
index d5d66d258..3ae3d4a0b 100644
--- a/src/de/jost_net/JVerein/gui/action/BuchungProjektZuordnungAction.java
+++ b/src/de/jost_net/JVerein/gui/action/BuchungProjektZuordnungAction.java
@@ -17,7 +17,6 @@
package de.jost_net.JVerein.gui.action;
-import de.jost_net.JVerein.gui.control.BuchungsControl;
import de.jost_net.JVerein.gui.dialogs.ProjektAuswahlDialog;
import de.jost_net.JVerein.rmi.Buchung;
import de.jost_net.JVerein.rmi.Projekt;
@@ -33,12 +32,6 @@
*/
public class BuchungProjektZuordnungAction implements Action
{
- private BuchungsControl control;
-
- public BuchungProjektZuordnungAction(BuchungsControl control)
- {
- this.control = control;
- }
@Override
public void handleAction(Object context) throws ApplicationException
@@ -97,7 +90,6 @@ public void handleAction(Object context) throws ApplicationException
}
}
}
- control.getBuchungsList();
String protecttext = "";
if (open == null)
{
diff --git a/src/de/jost_net/JVerein/gui/action/BuchungSollbuchungZuordnungAction.java b/src/de/jost_net/JVerein/gui/action/BuchungSollbuchungZuordnungAction.java
index 17aae892d..9ca924c1a 100644
--- a/src/de/jost_net/JVerein/gui/action/BuchungSollbuchungZuordnungAction.java
+++ b/src/de/jost_net/JVerein/gui/action/BuchungSollbuchungZuordnungAction.java
@@ -18,7 +18,6 @@
package de.jost_net.JVerein.gui.action;
import de.jost_net.JVerein.Einstellungen;
-import de.jost_net.JVerein.gui.control.BuchungsControl;
import de.jost_net.JVerein.gui.dialogs.SollbuchungAuswahlDialog;
import de.jost_net.JVerein.io.SplitbuchungsContainer;
import de.jost_net.JVerein.keys.SplitbuchungTyp;
@@ -39,13 +38,6 @@
*/
public class BuchungSollbuchungZuordnungAction implements Action
{
- private BuchungsControl control;
-
- public BuchungSollbuchungZuordnungAction(BuchungsControl control)
- {
- this.control = control;
- }
-
@Override
public void handleAction(Object context) throws ApplicationException
{
@@ -222,7 +214,6 @@ else if (open instanceof Mitglied)
}
}
}
- control.getBuchungsList();
if (mk == null)
{
diff --git a/src/de/jost_net/JVerein/gui/action/SplitBuchungDeleteAction.java b/src/de/jost_net/JVerein/gui/action/SplitBuchungDeleteAction.java
index 27ca62dae..3cfd945ba 100644
--- a/src/de/jost_net/JVerein/gui/action/SplitBuchungDeleteAction.java
+++ b/src/de/jost_net/JVerein/gui/action/SplitBuchungDeleteAction.java
@@ -73,7 +73,7 @@ public void handleAction(Object context) throws ApplicationException
}
else
{
- BuchungDeleteAction action = new BuchungDeleteAction(control, true);
+ BuchungDeleteAction action = new BuchungDeleteAction(true);
action.handleAction(context);
}
control.refreshSplitbuchungen();
diff --git a/src/de/jost_net/JVerein/gui/action/SplitBuchungWiederherstellenAction.java b/src/de/jost_net/JVerein/gui/action/SplitBuchungWiederherstellenAction.java
new file mode 100644
index 000000000..dd2ebb1f3
--- /dev/null
+++ b/src/de/jost_net/JVerein/gui/action/SplitBuchungWiederherstellenAction.java
@@ -0,0 +1,74 @@
+/**********************************************************************
+ * 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 .
+ *
+ * heiner@jverein.de
+ * www.jverein.de
+ **********************************************************************/
+package de.jost_net.JVerein.gui.action;
+
+import java.rmi.RemoteException;
+
+import de.jost_net.JVerein.gui.control.BuchungsControl;
+import de.jost_net.JVerein.io.SplitbuchungsContainer;
+import de.jost_net.JVerein.rmi.Buchung;
+import de.willuhn.jameica.gui.Action;
+import de.willuhn.jameica.gui.GUI;
+import de.willuhn.logging.Logger;
+import de.willuhn.util.ApplicationException;
+
+/**
+ * Loeschen einer Buchung.
+ */
+public class SplitBuchungWiederherstellenAction implements Action
+{
+ private BuchungsControl control;
+
+ public SplitBuchungWiederherstellenAction(BuchungsControl control)
+ {
+ this.control = control;
+ }
+
+ @Override
+ public void handleAction(Object context) throws ApplicationException
+ {
+ if (context == null || !(context instanceof Buchung))
+ {
+ throw new ApplicationException("Keine Buchung ausgewählt");
+ }
+ try
+ {
+ Buchung bu = (Buchung) context;
+ if (bu.getDependencyId() == -1)
+ {
+ bu.setDelete(false);
+ }
+ else
+ {
+ for (Buchung buchung_tmp : SplitbuchungsContainer.get())
+ {
+ if (buchung_tmp.getDependencyId() == bu.getDependencyId())
+ {
+ buchung_tmp.setDelete(false);
+ }
+ }
+ }
+ control.refreshSplitbuchungen();
+ }
+ catch (RemoteException e)
+ {
+ String fehler = "Fehler beim Wiederherstellen der Buchung.";
+ GUI.getStatusBar().setErrorText(fehler);
+ Logger.error(fehler, e);
+ }
+ }
+}
diff --git a/src/de/jost_net/JVerein/gui/action/SplitbuchungBulkAufloesenAction.java b/src/de/jost_net/JVerein/gui/action/SplitbuchungBulkAufloesenAction.java
index 49af3b7ef..d76c876fe 100644
--- a/src/de/jost_net/JVerein/gui/action/SplitbuchungBulkAufloesenAction.java
+++ b/src/de/jost_net/JVerein/gui/action/SplitbuchungBulkAufloesenAction.java
@@ -22,7 +22,7 @@
import java.util.ArrayList;
import de.jost_net.JVerein.Einstellungen;
-import de.jost_net.JVerein.Messaging.BuchungMessage;
+import de.jost_net.JVerein.gui.control.BuchungsControl;
import de.jost_net.JVerein.io.SplitbuchungsContainer;
import de.jost_net.JVerein.rmi.Buchung;
import de.jost_net.JVerein.rmi.Jahresabschluss;
@@ -33,16 +33,18 @@
import de.willuhn.jameica.gui.Action;
import de.willuhn.jameica.gui.GUI;
import de.willuhn.jameica.gui.dialogs.YesNoDialog;
-import de.willuhn.jameica.system.Application;
import de.willuhn.logging.Logger;
import de.willuhn.util.ApplicationException;
public class SplitbuchungBulkAufloesenAction implements Action
{
- private ArrayList geloescht = new ArrayList<>();
- private ArrayList schongeprueft = new ArrayList<>();
- private Long splitid;
-
+ private BuchungsControl control;
+
+ public SplitbuchungBulkAufloesenAction(BuchungsControl control)
+ {
+ this.control = control;
+ }
+
@Override
public void handleAction(Object context) throws ApplicationException
{
@@ -53,6 +55,10 @@ public void handleAction(Object context) throws ApplicationException
}
try
{
+ ArrayList geloescht = new ArrayList<>();
+ ArrayList schongeprueft = new ArrayList<>();
+ Long splitid;
+
Buchung[] b = null;
if (context instanceof Buchung)
{
@@ -63,15 +69,7 @@ else if (context instanceof Buchung[])
{
b = (Buchung[]) context;
}
- if (b == null)
- {
- return;
- }
- if (b.length == 0)
- {
- return;
- }
- if (b[0].isNewObject())
+ if (b == null || b.length == 0 || b[0].isNewObject())
{
return;
}
@@ -172,6 +170,8 @@ public Object extract(ResultSet rs)
geloescht.add(splitid);
}
}
+ control.refreshBuchungsList();
+
int count = geloescht.size();
if (count > 0)
{
@@ -189,9 +189,5 @@ public Object extract(ResultSet rs)
GUI.getStatusBar().setErrorText(fehler);
Logger.error(fehler, e);
}
- finally
- {
- Application.getMessagingFactory().sendMessage(new BuchungMessage(null));
- }
}
}
diff --git a/src/de/jost_net/JVerein/gui/control/BuchungsControl.java b/src/de/jost_net/JVerein/gui/control/BuchungsControl.java
index 1ade8f4f5..4c82d0cf7 100644
--- a/src/de/jost_net/JVerein/gui/control/BuchungsControl.java
+++ b/src/de/jost_net/JVerein/gui/control/BuchungsControl.java
@@ -40,7 +40,6 @@
import de.jost_net.JVerein.Einstellungen;
import de.jost_net.JVerein.DBTools.DBTransaction;
-import de.jost_net.JVerein.Messaging.BuchungMessage;
import de.jost_net.JVerein.Queries.BuchungQuery;
import de.jost_net.JVerein.gui.action.BuchungAction;
import de.jost_net.JVerein.gui.action.BuchungSollbuchungZuordnungAutomatischAction;
@@ -108,12 +107,11 @@
import de.willuhn.jameica.gui.parts.Column;
import de.willuhn.jameica.gui.parts.TablePart;
import de.willuhn.jameica.gui.parts.table.FeatureSummary;
+import de.willuhn.jameica.gui.util.SWTUtil;
import de.willuhn.jameica.hbci.HBCIProperties;
import de.willuhn.jameica.hbci.gui.formatter.IbanFormatter;
import de.willuhn.jameica.hbci.rmi.SepaSammelUeberweisung;
import de.willuhn.jameica.hbci.rmi.SepaSammelUeberweisungBuchung;
-import de.willuhn.jameica.messaging.Message;
-import de.willuhn.jameica.messaging.MessageConsumer;
import de.willuhn.jameica.system.Application;
import de.willuhn.jameica.system.BackgroundTask;
import de.willuhn.jameica.system.OperationCanceledException;
@@ -263,6 +261,8 @@ public static SplitFilter getByKey(int key)
private Calendar calendar = Calendar.getInstance();
private SelectInput suchsplitbuchung;
+
+ private CheckboxInput ungeprueft;
private enum RANGE
{
@@ -902,6 +902,18 @@ public DateInput getBisdatum()
return bisdatum;
}
+ public CheckboxInput getUngeprueft()
+ {
+ if (ungeprueft != null)
+ {
+ return ungeprueft;
+ }
+ ungeprueft = new CheckboxInput(
+ settings.getBoolean(settingsprefix + "ungeprueft", false));
+ ungeprueft.addListener(new FilterListener());
+ return ungeprueft;
+ }
+
public Button getStartAuswertungEinzelbuchungenButton()
{
Button b = new Button("PDF Einzelbuchungen", new Action()
@@ -976,7 +988,7 @@ public void handleAction(Object context)
try
{
new AfaUtil(new Geschaeftsjahr(new Date()), null);
- refreshBuchungen();
+ refreshBuchungsList();
}
catch (RemoteException e)
{
@@ -1050,7 +1062,6 @@ private void handleStore() throws ApplicationException
for (Buchung b_tmp : getDependentBuchungen()) {
b_tmp.setDependencyId(-1);
b_tmp.setDelete(true);
- Application.getMessagingFactory().sendMessage(new BuchungMessage(b_tmp));
}
b.setDependencyId(-1);
}
@@ -1222,6 +1233,8 @@ public BuchungListTablePart getBuchungsList() throws RemoteException
{
settings.setAttribute(settingsprefix + BuchungsControl.PROJEKT, -2);
}
+ settings.setAttribute(settingsprefix + "ungeprueft",
+ (Boolean) getUngeprueft().getValue());
settings.setAttribute(settingsprefix + "suchtext", (String) getSuchtext().getValue());
settings.setAttribute(settingsprefix + "suchbetrag", (String) getSuchBetrag().getValue());
settings.setAttribute(settingsprefix + "mitglied", (String) getMitglied().getValue());
@@ -1231,13 +1244,15 @@ public BuchungListTablePart getBuchungsList() throws RemoteException
query = new BuchungQuery(dv, db, k, b, p, (String) getSuchtext().getValue(),
(String) getSuchBetrag().getValue(), m.getValue(),
(String) getMitglied().getValue(), geldkonto,
- (SplitFilter) getSuchSplibuchung().getValue());
+ (SplitFilter) getSuchSplibuchung().getValue(),
+ (Boolean) getUngeprueft().getValue());
if (buchungsList == null)
{
buchungsList = new BuchungListTablePart(query.get(),
new BuchungAction(false));
buchungsList.addColumn("Nr", "id-int");
+ buchungsList.addColumn("Geprüft", "geprueft");
if (Einstellungen.getEinstellung().getDokumentenspeicherung())
{
buchungsList.addColumn("D", "document");
@@ -1251,6 +1266,7 @@ public String format(Object o)
return SplitbuchungTyp.get(typ).substring(0, 1);
}
});
+
buchungsList.addColumn("Konto", "konto", new Formatter()
{
@@ -1322,8 +1338,6 @@ public String format(Object value)
buchungsList.setRememberOrder(true);
buchungsList.setRememberState(true);
buchungsList.addFeature(new FeatureSummary());
- Application.getMessagingFactory()
- .registerMessageConsumer(new BuchungMessageConsumer());
buchungsList.updateSaldo((Konto) getSuchKonto().getValue());
}
else
@@ -1338,6 +1352,29 @@ public String format(Object value)
buchungsList.sort();
}
+ buchungsList.setFormatter(new TableFormatter()
+ {
+ public void format(TableItem item)
+ {
+ Buchung b = (Buchung) item.getData();
+ if (b == null)
+ return;
+
+ try
+ {
+ // Spalte 1 = Geprüft
+ item.setText(1, "");
+ if (b.getGeprueft())
+ item.setImage(1, SWTUtil.getImage("emblem-default.png"));
+ else
+ item.setImage(1, null);
+ }
+ catch (RemoteException e)
+ {
+ Logger.error("unable to format line", e);
+ }
+ }
+ });
informKontoChangeListener();
return buchungsList;
@@ -1400,8 +1437,6 @@ public String format(Object o)
splitbuchungsList.setContextMenu(new SplitBuchungMenu(this));
splitbuchungsList.setRememberColWidths(true);
splitbuchungsList.addFeature(new FeatureSummary());
- Application.getMessagingFactory()
- .registerMessageConsumer(new SplitBuchungMessageConsumer());
splitbuchungsList.setFormatter(new TableFormatter()
{
/**
@@ -1436,21 +1471,6 @@ public void format(TableItem item)
return splitbuchungsList;
}
- public void refreshBuchungen() throws RemoteException
- {
- if (buchungsList == null)
- {
- return;
- }
- buchungsList.removeAll();
-
- for (Buchung b : query.get())
- {
- buchungsList.addItem(b);
- }
- buchungsList.sort();
- }
-
public void refreshSplitbuchungen() throws RemoteException
{
if (splitbuchungsList == null)
@@ -1747,7 +1767,7 @@ public void handleEvent(Event event)
}
}
-
+
public void refreshBuchungsList()
{
try
@@ -1755,7 +1775,7 @@ public void refreshBuchungsList()
getBuchungsList();
}
catch (RemoteException e)
-
+
{
GUI.getStatusBar().setErrorText(e.getMessage());
}
@@ -1878,126 +1898,6 @@ private void buchungSpeichern()
}
}
- /**
- * Wird benachrichtigt um die Anzeige zu aktualisieren.
- */
- private class BuchungMessageConsumer implements MessageConsumer
- {
-
- /**
- * @see de.willuhn.jameica.messaging.MessageConsumer#autoRegister()
- */
- @Override
- public boolean autoRegister()
- {
- return false;
- }
-
- /**
- * @see de.willuhn.jameica.messaging.MessageConsumer#getExpectedMessageTypes()
- */
- @Override
- public Class>[] getExpectedMessageTypes()
- {
- return new Class[] { BuchungMessage.class };
- }
-
- /**
- * @see de.willuhn.jameica.messaging.MessageConsumer#handleMessage(de.willuhn.jameica.messaging.Message)
- */
- @Override
- public void handleMessage(final Message message) throws Exception
- {
- GUI.getDisplay().syncExec(new Runnable()
- {
-
- @Override
- public void run()
- {
- try
- {
- if (buchungsList == null)
- {
- // Eingabe-Feld existiert nicht. Also abmelden
- Application.getMessagingFactory()
- .unRegisterMessageConsumer(BuchungMessageConsumer.this);
- return;
- }
- refreshBuchungen();
- }
- catch (Exception e)
- {
- // Wenn hier ein Fehler auftrat, deregistrieren wir uns
- // wieder
- Logger.error("unable to refresh Splitbuchungen", e);
- Application.getMessagingFactory()
- .unRegisterMessageConsumer(BuchungMessageConsumer.this);
- }
- }
- });
- }
- }
-
- /**
- * Wird benachrichtigt um die Anzeige zu aktualisieren.
- */
- private class SplitBuchungMessageConsumer implements MessageConsumer
- {
-
- /**
- * @see de.willuhn.jameica.messaging.MessageConsumer#autoRegister()
- */
- @Override
- public boolean autoRegister()
- {
- return false;
- }
-
- /**
- * @see de.willuhn.jameica.messaging.MessageConsumer#getExpectedMessageTypes()
- */
- @Override
- public Class>[] getExpectedMessageTypes()
- {
- return new Class[] { BuchungMessage.class };
- }
-
- /**
- * @see de.willuhn.jameica.messaging.MessageConsumer#handleMessage(de.willuhn.jameica.messaging.Message)
- */
- @Override
- public void handleMessage(final Message message) throws Exception
- {
- GUI.getDisplay().syncExec(new Runnable()
- {
-
- @Override
- public void run()
- {
- try
- {
- if (splitbuchungsList == null)
- {
- // Eingabe-Feld existiert nicht. Also abmelden
- Application.getMessagingFactory()
- .unRegisterMessageConsumer(SplitBuchungMessageConsumer.this);
- return;
- }
- refreshSplitbuchungen();
- }
- catch (Exception e)
- {
- // Wenn hier ein Fehler auftrat, deregistrieren wir uns
- // wieder
- Logger.error("unable to refresh Splitbuchungen", e);
- Application.getMessagingFactory()
- .unRegisterMessageConsumer(SplitBuchungMessageConsumer.this);
- }
- }
- });
- }
- }
-
public Input getSuchMitgliedZugeordnet()
{
if (hasmitglied != null)
@@ -2181,6 +2081,7 @@ public void resetFilter()
calendar.add(Calendar.YEAR, 1);
calendar.add(Calendar.DAY_OF_MONTH, -1);
bisdatum.setValue(calendar.getTime());
+ ungeprueft.setValue(false);
suchtext.setValue("");
mitglied.setValue("");
refreshBuchungsList();
diff --git a/src/de/jost_net/JVerein/gui/control/EinstellungControl.java b/src/de/jost_net/JVerein/gui/control/EinstellungControl.java
index 94662b9fa..b273a6967 100644
--- a/src/de/jost_net/JVerein/gui/control/EinstellungControl.java
+++ b/src/de/jost_net/JVerein/gui/control/EinstellungControl.java
@@ -354,6 +354,8 @@ public class EinstellungControl extends AbstractControl
private CheckboxInput splitpositionzweck;
+ private CheckboxInput geprueftsynchronisieren;
+
public EinstellungControl(AbstractView view)
{
super(view);
@@ -860,6 +862,19 @@ public CheckboxInput getSplitPositionZweck() throws RemoteException
return splitpositionzweck;
}
+ public CheckboxInput getGeprueftSynchronisieren() throws RemoteException
+ {
+ if (geprueftsynchronisieren != null)
+ {
+ return geprueftsynchronisieren;
+ }
+ geprueftsynchronisieren = new CheckboxInput(
+ Einstellungen.getEinstellung().getGeprueftSynchronisieren());
+ geprueftsynchronisieren
+ .setName("Geprüft Markierung mit Hibiscus synchronisieren");
+ return geprueftsynchronisieren;
+ }
+
public CheckboxInput getFreieBuchungsklasse() throws RemoteException
{
if (freiebuchungsklasse != null)
@@ -2367,6 +2382,8 @@ public void handleStoreBuchfuehrung()
e.setOptiert((Boolean) getOptiert().getValue());
e.setBuchungsklasseInBuchung((Boolean) getFreieBuchungsklasse().getValue());
e.setSplitPositionZweck((Boolean) getSplitPositionZweck().getValue());
+ e.setGeprueftSynchronisieren(
+ (Boolean) getGeprueftSynchronisieren().getValue());
e.store();
Einstellungen.setEinstellung(e);
diff --git a/src/de/jost_net/JVerein/gui/menu/BuchungMenu.java b/src/de/jost_net/JVerein/gui/menu/BuchungMenu.java
index aef537493..2df1a7347 100644
--- a/src/de/jost_net/JVerein/gui/menu/BuchungMenu.java
+++ b/src/de/jost_net/JVerein/gui/menu/BuchungMenu.java
@@ -24,6 +24,7 @@
import de.jost_net.JVerein.gui.action.BuchungDeleteAction;
import de.jost_net.JVerein.gui.action.BuchungDuplizierenAction;
import de.jost_net.JVerein.gui.action.BuchungGegenbuchungAction;
+import de.jost_net.JVerein.gui.action.BuchungGeprueftAction;
import de.jost_net.JVerein.gui.action.BuchungKontoauszugZuordnungAction;
import de.jost_net.JVerein.gui.action.BuchungProjektZuordnungAction;
import de.jost_net.JVerein.gui.action.BuchungSollbuchungZuordnungAction;
@@ -58,6 +59,10 @@ public BuchungMenu(BuchungsControl control)
boolean geldkonto = control.getGeldkonto();
addItem(new CheckedSingleContextMenuItem("Bearbeiten",
new BuchungAction(false), "text-x-generic.png"));
+ addItem(new GeprueftBuchungItem("als \"geprüft\" markieren",
+ new BuchungGeprueftAction(true), "emblem-default.png", false));
+ addItem(new GeprueftBuchungItem("als \"ungeprüft\" markieren",
+ new BuchungGeprueftAction(false), "edit-undo.png", true));
addItem(new SingleBuchungItem("Duplizieren", new BuchungDuplizierenAction(),
"edit-copy.png"));
if (geldkonto)
@@ -67,9 +72,10 @@ public BuchungMenu(BuchungsControl control)
}
addItem(new SplitBuchungItem("Splitbuchung", new SplitBuchungAction(),
"edit-copy.png"));
- addItem(new AufloesenItem("Auflösen", new SplitbuchungBulkAufloesenAction(),
+ addItem(new AufloesenItem("Auflösen",
+ new SplitbuchungBulkAufloesenAction(control),
"unlocked.png"));
- addItem(new BuchungItem("Löschen", new BuchungDeleteAction(control, false),
+ addItem(new BuchungItem("Löschen", new BuchungDeleteAction(false),
"user-trash-full.png"));
addItem(ContextMenuItem.SEPARATOR);
if (geldkonto)
@@ -80,16 +86,16 @@ public BuchungMenu(BuchungsControl control)
"document-new.png"));
}
addItem(new CheckedContextMenuItem("Buchungsart zuordnen",
- new BuchungBuchungsartZuordnungAction(control), "view-refresh.png"));
+ new BuchungBuchungsartZuordnungAction(), "view-refresh.png"));
if (geldkonto) {
addItem(new CheckedContextMenuItem("Sollbuchung zuordnen",
- new BuchungSollbuchungZuordnungAction(control), "view-refresh.png"));
+ new BuchungSollbuchungZuordnungAction(), "view-refresh.png"));
}
addItem(new CheckedContextMenuItem("Projekt zuordnen",
- new BuchungProjektZuordnungAction(control), "view-refresh.png"));
+ new BuchungProjektZuordnungAction(), "view-refresh.png"));
if (geldkonto)
addItem(new CheckedContextMenuItem("Kontoauszug zuordnen",
- new BuchungKontoauszugZuordnungAction(control), "view-refresh.png"));
+ new BuchungKontoauszugZuordnungAction(), "view-refresh.png"));
Plugin syntax = Application.getPluginLoader()
.getPlugin("de.willuhn.jameica.fibu.Fibu");
if (syntax != null
@@ -288,4 +294,34 @@ public boolean isEnabledFor(Object o) {
return false;
}
}
+
+ private static class GeprueftBuchungItem extends CheckedContextMenuItem
+ {
+ boolean geprueft;
+
+ private GeprueftBuchungItem(String text, Action action, String icon,
+ boolean geprueft)
+ {
+ super(text, action, icon);
+ this.geprueft = geprueft;
+ }
+
+ @Override
+ public boolean isEnabledFor(Object o)
+ {
+ if (o instanceof Buchung)
+ {
+ Buchung b = (Buchung) o;
+ try
+ {
+ return !geprueft ^ b.getGeprueft();
+ }
+ catch (RemoteException e)
+ {
+ Logger.error("Fehler", e);
+ }
+ }
+ return true;
+ }
+ }
}
diff --git a/src/de/jost_net/JVerein/gui/menu/SplitBuchungMenu.java b/src/de/jost_net/JVerein/gui/menu/SplitBuchungMenu.java
index 05113fb5a..3248441b1 100644
--- a/src/de/jost_net/JVerein/gui/menu/SplitBuchungMenu.java
+++ b/src/de/jost_net/JVerein/gui/menu/SplitBuchungMenu.java
@@ -18,25 +18,17 @@
import java.rmi.RemoteException;
-import de.jost_net.JVerein.Messaging.BuchungMessage;
import de.jost_net.JVerein.gui.action.BuchungAction;
import de.jost_net.JVerein.gui.action.SplitBuchungDeleteAction;
-/*import de.jost_net.JVerein.gui.action.BuchungBuchungsartZuordnungAction;
-import de.jost_net.JVerein.gui.action.BuchungKontoauszugZuordnungAction;
-import de.jost_net.JVerein.gui.action.BuchungMitgliedskontoZuordnungAction;
-import de.jost_net.JVerein.gui.action.BuchungProjektZuordnungAction;*/
+import de.jost_net.JVerein.gui.action.SplitBuchungWiederherstellenAction;
import de.jost_net.JVerein.gui.control.BuchungsControl;
-import de.jost_net.JVerein.io.SplitbuchungsContainer;
import de.jost_net.JVerein.keys.SplitbuchungTyp;
import de.jost_net.JVerein.rmi.Buchung;
import de.willuhn.jameica.gui.Action;
-import de.willuhn.jameica.gui.GUI;
import de.willuhn.jameica.gui.parts.CheckedContextMenuItem;
import de.willuhn.jameica.gui.parts.CheckedSingleContextMenuItem;
import de.willuhn.jameica.gui.parts.ContextMenu;
-import de.willuhn.jameica.system.Application;
import de.willuhn.logging.Logger;
-import de.willuhn.util.ApplicationException;
public class SplitBuchungMenu extends ContextMenu
{
@@ -48,17 +40,10 @@ public SplitBuchungMenu(BuchungsControl control)
{
addItem(new CheckedSplitBuchungItem("Bearbeiten", new BuchungAction(true),
"text-x-generic.png"));
- /*addItem(new CheckedSplitBuchungItem("Buchungsart zuordnen",
- new BuchungBuchungsartZuordnungAction(control), "view-refresh.png"));
- addItem(new CheckedSplitBuchungItem("Sollbuchung zuordnen",
- new BuchungMitgliedskontoZuordnungAction(control), "view-refresh.png"));
- addItem(new CheckedSplitBuchungItem("Projekt zuordnen",
- new BuchungProjektZuordnungAction(control), "view-refresh.png"));
- addItem(new CheckedSplitBuchungItem("Kontoauszug zuordnen",
- new BuchungKontoauszugZuordnungAction(control), "view-refresh.png"));*/
addItem(new DeleteSplitBuchungItem("Löschen",
new SplitBuchungDeleteAction(control), "user-trash-full.png"));
- addItem(new RestoreSplitBuchungItem());
+ addItem(new RestoreSplitBuchungItem("Wiederherstellen",
+ new SplitBuchungWiederherstellenAction(control), "edit-undo.png"));
}
private static class CheckedSplitBuchungItem
@@ -115,47 +100,9 @@ public boolean isEnabledFor(Object o)
private static class RestoreSplitBuchungItem extends CheckedContextMenuItem
{
- private RestoreSplitBuchungItem()
+ private RestoreSplitBuchungItem(String text, Action action, String icon)
{
- super("Wiederherstellen", new Action()
- {
- @Override
- public void handleAction(Object context) throws ApplicationException
- {
- if (context == null || !(context instanceof Buchung))
- {
- throw new ApplicationException("Keine Buchung ausgewählt");
- }
- try
- {
- Buchung bu = (Buchung) context;
- if (bu.getDependencyId() == -1)
- {
- bu.setDelete(false);
- Application.getMessagingFactory()
- .sendMessage(new BuchungMessage(bu));
- }
- else
- {
- for (Buchung buchung_tmp : SplitbuchungsContainer.get())
- {
- if (buchung_tmp.getDependencyId() == bu.getDependencyId())
- {
- buchung_tmp.setDelete(false);
- Application.getMessagingFactory()
- .sendMessage(new BuchungMessage(buchung_tmp));
- }
- }
- }
- }
- catch (RemoteException e)
- {
- String fehler = "Fehler beim Wiederherstellen der Buchung.";
- GUI.getStatusBar().setErrorText(fehler);
- Logger.error(fehler, e);
- }
- }
- }, "edit-undo.png");
+ super(text, action, icon);
}
@Override
diff --git a/src/de/jost_net/JVerein/gui/parts/AutoUpdateTablePart.java b/src/de/jost_net/JVerein/gui/parts/AutoUpdateTablePart.java
new file mode 100644
index 000000000..36ff0166c
--- /dev/null
+++ b/src/de/jost_net/JVerein/gui/parts/AutoUpdateTablePart.java
@@ -0,0 +1,101 @@
+/**********************************************************************
+ * 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 .
+ *
+ * heiner@jverein.de
+ * www.jverein.de
+ **********************************************************************/
+
+package de.jost_net.JVerein.gui.parts;
+
+import java.rmi.RemoteException;
+import java.util.List;
+
+import org.eclipse.swt.SWTException;
+
+import de.jost_net.JVerein.rmi.Buchung;
+import de.willuhn.jameica.gui.Action;
+import de.willuhn.jameica.gui.GUI;
+import de.willuhn.jameica.gui.parts.TablePart;
+import de.willuhn.datasource.GenericIterator;
+import de.willuhn.datasource.rmi.DBObject;
+import de.willuhn.datasource.rmi.Listener;
+
+public class AutoUpdateTablePart extends TablePart
+{
+
+ private Listener storeListener = new StoreListener();
+
+ public AutoUpdateTablePart(Action action)
+ {
+ super(action);
+ }
+
+ public AutoUpdateTablePart(List list, Action action)
+ {
+ super(list, action);
+ }
+
+ @SuppressWarnings("rawtypes")
+ public AutoUpdateTablePart(GenericIterator list, Action action)
+ {
+ super(list, action);
+ }
+
+ @Override
+ public void addItem(final Object object, int index, boolean checked)
+ throws RemoteException
+ {
+ super.addItem(object, index, checked);
+ ((DBObject) object).removeStoreListener(this.storeListener);
+ ((DBObject) object).addStoreListener(this.storeListener);
+ }
+
+ /**
+ * Der Listener ueberwacht das speichern von Objekten und aktuelisiert die
+ * Objekte in der Tabelle.
+ */
+ private class StoreListener implements de.willuhn.datasource.rmi.Listener
+ {
+
+ @Override
+ public void handleEvent(final de.willuhn.datasource.rmi.Event e)
+ throws RemoteException
+ {
+ try
+ {
+ final int pos = removeItem(e.getObject());
+
+ addItem(e.getObject(), pos);
+ }
+ catch (SWTException ex)
+ {
+ // Fallback: Wir versuchens mal synchronisiert
+ GUI.getDisplay().syncExec(new Runnable()
+ {
+
+ public void run()
+ {
+ try
+ {
+ updateItem(e.getObject(), e.getObject());
+ }
+ catch (Exception ignore)
+ {
+ }
+ }
+
+ });
+ }
+ }
+ }
+}
diff --git a/src/de/jost_net/JVerein/gui/parts/BuchungListTablePart.java b/src/de/jost_net/JVerein/gui/parts/BuchungListTablePart.java
index 02313fd18..de6dff5c7 100644
--- a/src/de/jost_net/JVerein/gui/parts/BuchungListTablePart.java
+++ b/src/de/jost_net/JVerein/gui/parts/BuchungListTablePart.java
@@ -24,12 +24,11 @@
import de.jost_net.JVerein.rmi.Buchung;
import de.jost_net.JVerein.rmi.Konto;
import de.willuhn.jameica.gui.Action;
-import de.willuhn.jameica.gui.parts.TablePart;
import de.willuhn.jameica.gui.parts.table.Feature;
import de.willuhn.jameica.gui.parts.table.FeatureSummary;
import de.willuhn.jameica.gui.parts.table.Feature.Context;
-public class BuchungListTablePart extends TablePart
+public class BuchungListTablePart extends AutoUpdateTablePart
{
private Double saldo = null;
diff --git a/src/de/jost_net/JVerein/gui/view/BuchungslisteView.java b/src/de/jost_net/JVerein/gui/view/BuchungslisteView.java
index 91b4aaefb..d224f92fb 100644
--- a/src/de/jost_net/JVerein/gui/view/BuchungslisteView.java
+++ b/src/de/jost_net/JVerein/gui/view/BuchungslisteView.java
@@ -73,7 +73,7 @@ public void bind() throws Exception
center.addLabelPair("Betrag", control.getSuchBetrag());
center.addLabelPair("Datum von", control.getVondatum());
center.addLabelPair("Datum bis", control.getBisdatum());
-
+ center.addLabelPair("Nur ungeprüfte", control.getUngeprueft());
right.addLabelPair("Enthaltener Text", control.getSuchtext());
right.addLabelPair("Mitglied zugeordnet?",
control.getSuchMitgliedZugeordnet());
diff --git a/src/de/jost_net/JVerein/gui/view/EinstellungenBuchfuehrungView.java b/src/de/jost_net/JVerein/gui/view/EinstellungenBuchfuehrungView.java
index 148a45726..0fde79ae2 100644
--- a/src/de/jost_net/JVerein/gui/view/EinstellungenBuchfuehrungView.java
+++ b/src/de/jost_net/JVerein/gui/view/EinstellungenBuchfuehrungView.java
@@ -50,6 +50,7 @@ public void bind() throws Exception
cont.addInput(control.getOptiert());
cont.addInput(control.getFreieBuchungsklasse());
cont.addInput(control.getSplitPositionZweck());
+ cont.addInput(control.getGeprueftSynchronisieren());
ButtonArea buttons = new ButtonArea();
buttons.addButton("Hilfe", new DokumentationAction(),
diff --git a/src/de/jost_net/JVerein/io/CSVBuchungsImport.java b/src/de/jost_net/JVerein/io/CSVBuchungsImport.java
index e69265c91..b350778f3 100644
--- a/src/de/jost_net/JVerein/io/CSVBuchungsImport.java
+++ b/src/de/jost_net/JVerein/io/CSVBuchungsImport.java
@@ -26,14 +26,12 @@
import java.util.Properties;
import de.jost_net.JVerein.Einstellungen;
-import de.jost_net.JVerein.Messaging.BuchungMessage;
import de.jost_net.JVerein.Variable.BuchungVar;
import de.jost_net.JVerein.rmi.Buchung;
import de.jost_net.JVerein.rmi.Buchungsart;
import de.jost_net.JVerein.rmi.Buchungsklasse;
import de.jost_net.JVerein.rmi.Konto;
import de.willuhn.datasource.rmi.DBIterator;
-import de.willuhn.jameica.system.Application;
import de.willuhn.logging.Logger;
import de.willuhn.util.ApplicationException;
import de.willuhn.util.ProgressMonitor;
@@ -226,7 +224,6 @@ public void doImport(Object context, IOFormat format, File file,
// Optionales Feld.
}
bu.store();
- Application.getMessagingFactory().sendMessage(new BuchungMessage(bu));
}
catch (Exception e)
{
diff --git a/src/de/jost_net/JVerein/rmi/Buchung.java b/src/de/jost_net/JVerein/rmi/Buchung.java
index ad94f5d59..92f0e2ad4 100644
--- a/src/de/jost_net/JVerein/rmi/Buchung.java
+++ b/src/de/jost_net/JVerein/rmi/Buchung.java
@@ -168,4 +168,8 @@ public Map getMap(Map map)
public void store(boolean check) throws RemoteException, ApplicationException;
+ public Boolean getGeprueft() throws RemoteException;
+
+ public void setGeprueft(Boolean geprueft) throws RemoteException;
+
}
diff --git a/src/de/jost_net/JVerein/rmi/Einstellung.java b/src/de/jost_net/JVerein/rmi/Einstellung.java
index 2bd4244b6..9509765fa 100644
--- a/src/de/jost_net/JVerein/rmi/Einstellung.java
+++ b/src/de/jost_net/JVerein/rmi/Einstellung.java
@@ -635,5 +635,10 @@ public void setCt1SepaVersion(SepaVersion sepaversion)
public boolean getSplitPositionZweck() throws RemoteException;
- public void setSplitPositionZweck(boolean split) throws RemoteException;;
+ public void setSplitPositionZweck(boolean split) throws RemoteException;
+
+ public boolean getGeprueftSynchronisieren() throws RemoteException;
+
+ public void setGeprueftSynchronisieren(boolean geprueftsynchonisieren)
+ throws RemoteException;
}
diff --git a/src/de/jost_net/JVerein/server/BuchungImpl.java b/src/de/jost_net/JVerein/server/BuchungImpl.java
index 1623c1c4e..55c0ffa0d 100644
--- a/src/de/jost_net/JVerein/server/BuchungImpl.java
+++ b/src/de/jost_net/JVerein/server/BuchungImpl.java
@@ -786,6 +786,23 @@ public void setVerzicht(Boolean verzicht) throws RemoteException
setAttribute("verzicht", verzicht);
}
+ @Override
+ public Boolean getGeprueft() throws RemoteException
+ {
+ Boolean geprueft = (Boolean) getAttribute("geprueft");
+ if (geprueft == null)
+ {
+ return false;
+ }
+ return geprueft;
+ }
+
+ @Override
+ public void setGeprueft(Boolean geprueft) throws RemoteException
+ {
+ setAttribute("geprueft", geprueft);
+ }
+
@Override
public void setSpeicherung(boolean speicherung)
{
diff --git a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0462.java b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0462.java
new file mode 100644
index 000000000..f93a79b73
--- /dev/null
+++ b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0462.java
@@ -0,0 +1,39 @@
+/**********************************************************************
+ * 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 .
+ *
+ **********************************************************************/
+package de.jost_net.JVerein.server.DDLTool.Updates;
+
+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;
+
+import java.sql.Connection;
+
+public class Update0462 extends AbstractDDLUpdate
+{
+ public Update0462(String driver, ProgressMonitor monitor, Connection conn)
+ {
+ super(driver, monitor, conn);
+ }
+
+ @Override
+ public void run() throws ApplicationException
+ {
+ execute(addColumn("buchung",
+ new Column("geprueft", COLTYPE.BOOLEAN, 0, null, false, false)));
+
+ execute(addColumn("einstellung", new Column("geprueftsynchronisieren",
+ COLTYPE.BOOLEAN, 0, "1", true, false)));
+ }
+}
diff --git a/src/de/jost_net/JVerein/server/EinstellungImpl.java b/src/de/jost_net/JVerein/server/EinstellungImpl.java
index 4c4c42713..be9174a33 100644
--- a/src/de/jost_net/JVerein/server/EinstellungImpl.java
+++ b/src/de/jost_net/JVerein/server/EinstellungImpl.java
@@ -2221,4 +2221,17 @@ public void setSplitPositionZweck(boolean split) throws RemoteException
{
setAttribute("splitpositionzweck", split);
}
+
+ @Override
+ public boolean getGeprueftSynchronisieren() throws RemoteException
+ {
+ return (Boolean) getAttribute("geprueftsynchronisieren");
+ }
+
+ @Override
+ public void setGeprueftSynchronisieren(boolean geprueftsynchronisieren)
+ throws RemoteException
+ {
+ setAttribute("geprueftsynchronisieren", geprueftsynchronisieren);
+ }
}