From eaf68fc7e9f1430cc0f0bf8b732d13504dcba8b3 Mon Sep 17 00:00:00 2001 From: nils Date: Wed, 14 Aug 2024 15:17:15 +0200 Subject: [PATCH 1/2] Syntax Import --- .../gui/action/SyntaxImportAction.java | 101 ++++++++++++++++++ .../JVerein/gui/menu/BuchungMenu.java | 30 ++++-- 2 files changed, 122 insertions(+), 9 deletions(-) create mode 100644 src/de/jost_net/JVerein/gui/action/SyntaxImportAction.java diff --git a/src/de/jost_net/JVerein/gui/action/SyntaxImportAction.java b/src/de/jost_net/JVerein/gui/action/SyntaxImportAction.java new file mode 100644 index 000000000..9a563b5ff --- /dev/null +++ b/src/de/jost_net/JVerein/gui/action/SyntaxImportAction.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.action; + +import java.rmi.RemoteException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; + +import de.jost_net.JVerein.keys.SplitbuchungTyp; +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 SyntaxImportAction implements Action +{ + + @Override + public void handleAction(Object context) throws ApplicationException + { + if (context instanceof Buchung) + { + context = new Buchung[] { (Buchung) context }; + } + if (!(context instanceof Buchung[])) + { + throw new ApplicationException("Ungültiger context"); + } + Buchung[] buchungen = (Buchung[]) context; + Arrays.sort(buchungen, (b, b2) -> { + try + { + return b.getID().compareTo(b2.getID()); + } + catch (RemoteException e) + { + return 0; + } + }); + + ArrayList> buchunglist = new ArrayList<>(); + for (Buchung u : buchungen) + { + HashMap buchungMap = new HashMap<>(); + + try + { + // Wenn keine Buchungsart vorhanden ist können wir auch nicht + // exportieren + // Split-Gegenbuchungen kennt Syntax nicht + if (u.getBuchungsart() == null + || (u.getSplitTyp() != null + && u.getSplitTyp() == SplitbuchungTyp.GEGEN)) + { + continue; + } + buchungMap.put("buchungsartkonto", u.getBuchungsart().getNummer()); + buchungMap.put("kommentar", u.getKommentar()); + buchungMap.put("zweck", u.getZweck() + ", " + u.getName()); + buchungMap.put("betrag", u.getBetrag()); + buchungMap.put("datum", u.getDatum()); + buchungMap.put("id", u.getID()); + buchungMap.put("splitid", u.getSplitId()); + if (u.getKonto().getKommentar().trim().matches("^[0-9]{3,10}$")) + { + buchungMap.put("gegenkonto", u.getKonto().getKommentar()); + } + else + { + buchungMap.put("gegenkonto", u.getKonto().getNummer()); + } + } + catch (RemoteException e) + { + throw new ApplicationException("Fehler beim lesen der Buchung."); + } + buchunglist.add(buchungMap); + } + + QueryMessage msg = new QueryMessage(buchunglist); + Application.getMessagingFactory().getMessagingQueue("syntax.buchung.import") + .sendSyncMessage(msg); + } + +} diff --git a/src/de/jost_net/JVerein/gui/menu/BuchungMenu.java b/src/de/jost_net/JVerein/gui/menu/BuchungMenu.java index f2c552bb7..e4183f4d1 100644 --- a/src/de/jost_net/JVerein/gui/menu/BuchungMenu.java +++ b/src/de/jost_net/JVerein/gui/menu/BuchungMenu.java @@ -18,27 +18,30 @@ import java.rmi.RemoteException; +import de.jost_net.JVerein.gui.action.AnlagenkontoNeuAction; import de.jost_net.JVerein.gui.action.BuchungAction; +import de.jost_net.JVerein.gui.action.BuchungBuchungsartZuordnungAction; +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.SplitBuchungAction; -import de.jost_net.JVerein.gui.action.SplitbuchungBulkAufloesenAction; -import de.jost_net.JVerein.gui.action.AnlagenkontoNeuAction; -import de.jost_net.JVerein.gui.action.BuchungBuchungsartZuordnungAction; +import de.jost_net.JVerein.gui.action.BuchungKontoauszugZuordnungAction; +import de.jost_net.JVerein.gui.action.BuchungProjektZuordnungAction; import de.jost_net.JVerein.gui.action.BuchungSollbuchungZuordnungAction; import de.jost_net.JVerein.gui.action.MitgliedDetailAction; -import de.jost_net.JVerein.gui.action.BuchungProjektZuordnungAction; -import de.jost_net.JVerein.gui.action.BuchungKontoauszugZuordnungAction; -import de.jost_net.JVerein.gui.action.BuchungDeleteAction; +import de.jost_net.JVerein.gui.action.SplitBuchungAction; +import de.jost_net.JVerein.gui.action.SplitbuchungBulkAufloesenAction; +import de.jost_net.JVerein.gui.action.SyntaxImportAction; import de.jost_net.JVerein.gui.control.BuchungsControl; -import de.jost_net.JVerein.rmi.Buchung; import de.jost_net.JVerein.keys.ArtBuchungsart; 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.parts.CheckedContextMenuItem; import de.willuhn.jameica.gui.parts.CheckedSingleContextMenuItem; import de.willuhn.jameica.gui.parts.ContextMenu; import de.willuhn.jameica.gui.parts.ContextMenuItem; +import de.willuhn.jameica.plugin.Plugin; +import de.willuhn.jameica.system.Application; import de.willuhn.logging.Logger; /** @@ -67,7 +70,7 @@ public BuchungMenu(BuchungsControl control) addItem(new AufloesenItem("Auflösen", new SplitbuchungBulkAufloesenAction(), "unlocked.png")); addItem(new BuchungItem("Löschen", new BuchungDeleteAction(false), - "user-trash-full.png")); + "user-trash-full.png")); addItem(ContextMenuItem.SEPARATOR); if (geldkonto) { @@ -87,6 +90,15 @@ public BuchungMenu(BuchungsControl control) if (geldkonto) addItem(new CheckedContextMenuItem("Kontoauszug zuordnen", new BuchungKontoauszugZuordnungAction(control), "view-refresh.png")); + Plugin syntax = Application.getPluginLoader() + .getPlugin("de.willuhn.jameica.fibu.Fibu"); + if (syntax != null + && syntax.getManifest().getVersion().compliesTo("2.10.5+")) + { + addItem(ContextMenuItem.SEPARATOR); + addItem(new CheckedContextMenuItem("In SynTAX übernehmen", + new SyntaxImportAction(), "document-save.png")); + } } private static class SingleBuchungItem extends CheckedSingleContextMenuItem From e3022e5e3a8c8c0fc231c16cf2fd90f71bd1ac17 Mon Sep 17 00:00:00 2001 From: nils Date: Sat, 18 Jan 2025 21:14:53 +0100 Subject: [PATCH 2/2] Zu Export umbenannt --- .../{SyntaxImportAction.java => SyntaxExportAction.java} | 4 ++-- src/de/jost_net/JVerein/gui/menu/BuchungMenu.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename src/de/jost_net/JVerein/gui/action/{SyntaxImportAction.java => SyntaxExportAction.java} (96%) diff --git a/src/de/jost_net/JVerein/gui/action/SyntaxImportAction.java b/src/de/jost_net/JVerein/gui/action/SyntaxExportAction.java similarity index 96% rename from src/de/jost_net/JVerein/gui/action/SyntaxImportAction.java rename to src/de/jost_net/JVerein/gui/action/SyntaxExportAction.java index 9a563b5ff..18225615c 100644 --- a/src/de/jost_net/JVerein/gui/action/SyntaxImportAction.java +++ b/src/de/jost_net/JVerein/gui/action/SyntaxExportAction.java @@ -28,7 +28,7 @@ import de.willuhn.jameica.system.Application; import de.willuhn.util.ApplicationException; -public class SyntaxImportAction implements Action +public class SyntaxExportAction implements Action { @Override @@ -88,7 +88,7 @@ public void handleAction(Object context) throws ApplicationException } catch (RemoteException e) { - throw new ApplicationException("Fehler beim lesen der Buchung."); + throw new ApplicationException("Fehler beim Lesen der Buchung."); } buchunglist.add(buchungMap); } diff --git a/src/de/jost_net/JVerein/gui/menu/BuchungMenu.java b/src/de/jost_net/JVerein/gui/menu/BuchungMenu.java index e4183f4d1..10663606f 100644 --- a/src/de/jost_net/JVerein/gui/menu/BuchungMenu.java +++ b/src/de/jost_net/JVerein/gui/menu/BuchungMenu.java @@ -30,7 +30,7 @@ import de.jost_net.JVerein.gui.action.MitgliedDetailAction; import de.jost_net.JVerein.gui.action.SplitBuchungAction; import de.jost_net.JVerein.gui.action.SplitbuchungBulkAufloesenAction; -import de.jost_net.JVerein.gui.action.SyntaxImportAction; +import de.jost_net.JVerein.gui.action.SyntaxExportAction; import de.jost_net.JVerein.gui.control.BuchungsControl; import de.jost_net.JVerein.keys.ArtBuchungsart; import de.jost_net.JVerein.keys.SplitbuchungTyp; @@ -97,7 +97,7 @@ public BuchungMenu(BuchungsControl control) { addItem(ContextMenuItem.SEPARATOR); addItem(new CheckedContextMenuItem("In SynTAX übernehmen", - new SyntaxImportAction(), "document-save.png")); + new SyntaxExportAction(), "document-save.png")); } }