From 39919160bec3bb26580a9f9282873139e8bc2d82 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Sun, 7 Jul 2024 09:18:31 +0200 Subject: [PATCH 1/3] Fix Buchungskorrektur --- .../Queries/BuchungsKorrekturQuery.java | 22 ++- src/com/schlevoigt/JVerein/util/Misc.java | 158 +++++++++--------- 2 files changed, 102 insertions(+), 78 deletions(-) diff --git a/src/com/schlevoigt/JVerein/Queries/BuchungsKorrekturQuery.java b/src/com/schlevoigt/JVerein/Queries/BuchungsKorrekturQuery.java index 26eda9e68..6cd51bd4d 100644 --- a/src/com/schlevoigt/JVerein/Queries/BuchungsKorrekturQuery.java +++ b/src/com/schlevoigt/JVerein/Queries/BuchungsKorrekturQuery.java @@ -17,10 +17,12 @@ package com.schlevoigt.JVerein.Queries; import java.rmi.RemoteException; +import java.util.Date; import java.util.List; import de.jost_net.JVerein.Einstellungen; import de.jost_net.JVerein.rmi.Buchung; +import de.jost_net.JVerein.rmi.Jahresabschluss; import de.willuhn.datasource.pseudo.PseudoIterator; import de.willuhn.datasource.rmi.DBIterator; import de.willuhn.datasource.rmi.DBService; @@ -36,10 +38,24 @@ public BuchungsKorrekturQuery() { public List get() throws RemoteException { final DBService service = Einstellungen.getDBService(); - DBIterator it = service.createList(Buchung.class); + DBIterator it1 = service.createList(Jahresabschluss.class); + it1.setOrder("ORDER BY bis DESC"); + Date bis = ((Jahresabschluss) it1.next()).getBis(); - String text1 = "%SVWZ%"; - it.addFilter("upper(zweck) like ?", text1); + DBIterator it = service.createList(Buchung.class); + it.addFilter("datum > ?", new java.sql.Date(bis.getTime())); + Object[] keys = { "%EREF%", "%KREF%", "%MREF%", "%CRED%", + "%DBET%", "%SVWZ%", "%ABWA%","%IBAN+%","%IBAN:%", "%BIC%"}; + it.addFilter("(upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ?)", keys); it.setOrder("ORDER BY datum"); diff --git a/src/com/schlevoigt/JVerein/util/Misc.java b/src/com/schlevoigt/JVerein/util/Misc.java index 552405c4e..e4818e930 100644 --- a/src/com/schlevoigt/JVerein/util/Misc.java +++ b/src/com/schlevoigt/JVerein/util/Misc.java @@ -1,89 +1,97 @@ package com.schlevoigt.JVerein.util; -import java.util.ArrayList; +import java.rmi.RemoteException; + +import org.apache.commons.lang.StringUtils; + +import de.willuhn.jameica.hbci.rmi.Transfer; +import de.willuhn.jameica.hbci.server.VerwendungszweckUtil; +import de.willuhn.jameica.hbci.server.VerwendungszweckUtil.Tag; public class Misc { public static String getBuchungsZweckKorrektur(String value, boolean withRealLineBreak) { - String result = ""; - if (value == null) - { - return result; - } - if (value.length() < 5) - { - return value.replace("SVWZ+", ""); - } - value = value.replaceAll("\r\n", "|"); - value = value.replaceAll("\r", "|"); - value = value.replaceAll("\n", "|"); + if (value == null) { + return null; + } + try + { + Transfer t = new Verwendungszweck(value); + String s = StringUtils.trimToNull(VerwendungszweckUtil.getTag(t, Tag.SVWZ)); + if (!withRealLineBreak) + { + s = s.replaceAll("\r\n", "|"); + s = s.replaceAll("\r", "|"); + s = s.replaceAll("\n", "|"); + } + return s; + } + catch (RemoteException ex) + { + return null; + } + } +} - String[] zeilen = value.split("\\|"); - ArrayList zeilenNeu = new ArrayList(); +// Dummy Klasse um die Methode "VerwendungszweckUtil.getTag(t, Tag.SVWZ)" +// verwenden zu können +final class Verwendungszweck implements Transfer +{ + String zweck = null; - String currentKey = ""; - String currentLine = ""; + public Verwendungszweck(String zweck) + { + this.zweck = zweck; + } - for (int i = 0; i < zeilen.length; i++) { - String zeile = zeilen[i]; - if (zeile.length() > 4 && zeile.substring(4, 5).equals("+")) { - if (currentLine.trim().length() > 0) { - if (currentKey.trim().isEmpty()) { - zeilenNeu.add(currentLine); - } else { - zeilenNeu.add(currentKey + "+" + currentLine); - } - } - currentKey = zeile.substring(0, 4); - currentLine = zeile.substring(5); - } else { - currentLine = currentLine + zeile; - } - if (currentKey.equals("SVWZ")) { - zeilenNeu.add(currentKey + "+" + currentLine); - currentLine = ""; - } - } - if (!currentLine.trim().isEmpty()) { - if (currentKey.trim().isEmpty()) { - zeilenNeu.add(currentLine); - } else { - zeilenNeu.add(currentKey + "+" + currentLine); - } - } + @Override + public String getGegenkontoNummer() throws RemoteException + { + // TODO Auto-generated method stub + return null; + } - String lineBreakAfter = null; - String lineBreakBefore = null; - for (int i = 0; i < zeilenNeu.size(); i++) { - String zeile = zeilenNeu.get(i); - if (zeile.startsWith("KREF+") || zeile.startsWith("EREF+") || zeile.startsWith("MREF+") || zeile.startsWith("CRED+") - || zeile.startsWith("PURP+OTHR") || zeile.startsWith("SVWZ+Datum:") || zeile.startsWith("SVWZ+BIC:") || zeile.startsWith("SVWZ+BLZ:") - || zeile.startsWith("SVWZ+IBAN:") || (zeile.contains("UFT ") && zeile.contains("TAN ")) - || (zeile.contains("KD ") && zeile.contains("TAN "))) { - continue; - } - if ((i == zeilenNeu.size() - 1) || (zeile.startsWith("SVWZ+"))) { - lineBreakAfter = ""; - } else { - lineBreakAfter = "|"; - } - zeile = zeile.replaceAll("PURP\\+RINP ", "").replaceAll("PURP\\+ELEC ", "").replaceAll("SVWZ\\+", ""); - if (zeile.startsWith("Dauerauftrag:")) { - lineBreakBefore = "|"; - } else { - lineBreakBefore = ""; - } - result = result + lineBreakBefore + zeile + lineBreakAfter; - } + @Override + public String getGegenkontoBLZ() throws RemoteException + { + // TODO Auto-generated method stub + return null; + } - if (result.endsWith("|")) { - result = result.substring(1, result.length() - 1); - } - if (withRealLineBreak) { - result = result.replaceAll("\\|", "\r\n"); - } + @Override + public String getGegenkontoName() throws RemoteException + { + // TODO Auto-generated method stub + return null; + } - return result; - } + @Override + public double getBetrag() throws RemoteException + { + // TODO Auto-generated method stub + return 0; + } + + @Override + public String getZweck() throws RemoteException + { + // TODO Auto-generated method stub + return zweck; + } + + @Override + public String getZweck2() throws RemoteException + { + // TODO Auto-generated method stub + return null; + } + + @Override + public String[] getWeitereVerwendungszwecke() throws RemoteException + { + // TODO Auto-generated method stub + return null; + } } + From a169cc98d35f168590a8340f252c3d0a7884ea3c Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Sun, 7 Jul 2024 12:17:54 +0200 Subject: [PATCH 2/3] Remove Gesamtbetrag in Table Summary --- .../JVerein/gui/control/BuchungsTextKorrekturControl.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/com/schlevoigt/JVerein/gui/control/BuchungsTextKorrekturControl.java b/src/com/schlevoigt/JVerein/gui/control/BuchungsTextKorrekturControl.java index 7cfdc7b3f..c6cccad25 100644 --- a/src/com/schlevoigt/JVerein/gui/control/BuchungsTextKorrekturControl.java +++ b/src/com/schlevoigt/JVerein/gui/control/BuchungsTextKorrekturControl.java @@ -24,7 +24,6 @@ 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.gui.parts.BuchungListTablePart; import de.jost_net.JVerein.rmi.Buchung; import de.jost_net.JVerein.rmi.Konto; import de.jost_net.JVerein.util.JVDateFormatTTMMJJJJ; @@ -71,7 +70,7 @@ public Part getBuchungsList() throws RemoteException { // Buchungen holen query = new BuchungsKorrekturQuery(); if (buchungsList == null) { - buchungsList = new BuchungListTablePart(query.get(), new BuchungAction(false)); + buchungsList = new TablePart(query.get(), new BuchungAction(false)); buchungsList.addColumn("Nr", "id-int"); buchungsList.addColumn("S", "splitid", new Formatter() { @Override From 4eb55b6d8e423c5e6c3b5ae2895e06f1889bfb70 Mon Sep 17 00:00:00 2001 From: Johann Maierhofer Date: Fri, 26 Jul 2024 16:56:42 +0200 Subject: [PATCH 3/3] Check Jahresabschluss auf null --- .../Queries/BuchungsKorrekturQuery.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/com/schlevoigt/JVerein/Queries/BuchungsKorrekturQuery.java b/src/com/schlevoigt/JVerein/Queries/BuchungsKorrekturQuery.java index 6cd51bd4d..5d909b71f 100644 --- a/src/com/schlevoigt/JVerein/Queries/BuchungsKorrekturQuery.java +++ b/src/com/schlevoigt/JVerein/Queries/BuchungsKorrekturQuery.java @@ -40,23 +40,26 @@ public List get() throws RemoteException { DBIterator it1 = service.createList(Jahresabschluss.class); it1.setOrder("ORDER BY bis DESC"); - Date bis = ((Jahresabschluss) it1.next()).getBis(); - + Date bis = null; + if(it1.hasNext()) + bis = ((Jahresabschluss) it1.next()).getBis(); + DBIterator it = service.createList(Buchung.class); - it.addFilter("datum > ?", new java.sql.Date(bis.getTime())); + if(bis != null) + it.addFilter("datum > ?", new java.sql.Date(bis.getTime())); Object[] keys = { "%EREF%", "%KREF%", "%MREF%", "%CRED%", "%DBET%", "%SVWZ%", "%ABWA%","%IBAN+%","%IBAN:%", "%BIC%"}; it.addFilter("(upper(zweck) like ? or " - + "upper(zweck) like ? or " - + "upper(zweck) like ? or " - + "upper(zweck) like ? or " - + "upper(zweck) like ? or " - + "upper(zweck) like ? or " - + "upper(zweck) like ? or " - + "upper(zweck) like ? or " - + "upper(zweck) like ? or " - + "upper(zweck) like ?)", keys); - + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ? or " + + "upper(zweck) like ?)", keys); + it.setOrder("ORDER BY datum"); this.ergebnis = it != null ? PseudoIterator.asList(it) : null;