Skip to content

Commit

Permalink
Fix Buchungskorrektur (#259)
Browse files Browse the repository at this point in the history
* Fix Buchungskorrektur

* Remove Gesamtbetrag in Table Summary

* Check Jahresabschluss auf null
  • Loading branch information
JohannMaierhofer authored Jul 27, 2024
1 parent f37b4ac commit 95d8b77
Show file tree
Hide file tree
Showing 3 changed files with 107 additions and 81 deletions.
27 changes: 23 additions & 4 deletions src/com/schlevoigt/JVerein/Queries/BuchungsKorrekturQuery.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -36,11 +38,28 @@ public BuchungsKorrekturQuery() {
public List<Buchung> get() throws RemoteException {
final DBService service = Einstellungen.getDBService();

DBIterator<Jahresabschluss> it1 = service.createList(Jahresabschluss.class);
it1.setOrder("ORDER BY bis DESC");
Date bis = null;
if(it1.hasNext())
bis = ((Jahresabschluss) it1.next()).getBis();

DBIterator<Buchung> it = service.createList(Buchung.class);

String text1 = "%SVWZ%";
it.addFilter("upper(zweck) like ?", text1);

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);

it.setOrder("ORDER BY datum");

this.ergebnis = it != null ? PseudoIterator.asList(it) : null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
Expand Down
158 changes: 83 additions & 75 deletions src/com/schlevoigt/JVerein/util/Misc.java
Original file line number Diff line number Diff line change
@@ -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<String> zeilenNeu = new ArrayList<String>();
// 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;
}

}

0 comments on commit 95d8b77

Please sign in to comment.