### Eclipse Workspace Patch 1.0 #P jverein diff --git src/de/jost_net/JVerein/gui/control/MitgliedskontoControl.java src/de/jost_net/JVerein/gui/control/MitgliedskontoControl.java index af5f8b7..09ec155 100644 --- src/de/jost_net/JVerein/gui/control/MitgliedskontoControl.java +++ src/de/jost_net/JVerein/gui/control/MitgliedskontoControl.java @@ -89,7 +89,7 @@ { public enum DIFFERENZ { - EGAL("egal"), FEHLBETRAG("Fehlbetrag"), UEBERZAHLUNG("�berzahlung"); + EGAL("egal"), FEHLBETRAG("Fehlbetrag"), UEBERZAHLUNG("�berzahlung"), DIFFERENZKONTO("Differenz auf Mitgliedskonto"); private final String titel; private DIFFERENZ(String titel) @@ -731,8 +731,17 @@ settings.setAttribute(datumverwendung + "datumbis", ""); } } - String sql = "select mitgliedskonto.*, mitglied.name, mitglied.vorname from mitgliedskonto " - + "join mitglied on (mitgliedskonto.mitglied = mitglied.id) "; + DIFFERENZ diff = DIFFERENZ.EGAL; + if (differenz != null) + { + diff = (DIFFERENZ) differenz.getValue(); + } + String sql = "select mitgliedskonto.*, mitglied.name, mitglied.vorname from mitgliedskonto "; + if (DIFFERENZ.DIFFERENZKONTO == diff) + { + sql += "left join buchung on (buchung.mitgliedskonto = mitgliedskonto.id) "; + } + sql += "join mitglied on (mitgliedskonto.mitglied = mitglied.id) "; String where = ""; ArrayList param = new ArrayList(); if (vd != null) @@ -781,11 +790,22 @@ where += ") "; } } + + if (DIFFERENZ.DIFFERENZKONTO == diff) + { + if (where.length() > 0) + { + where += "and "; + } + //where += " 1 "; + where += "((select sum(mitgliedskonto.betrag) from mitgliedskonto where mitgliedskonto.mitglied = mitglied.id) != (case when (select sum(buchung.betrag) from buchung, mitgliedskonto where buchung.mitgliedskonto = mitgliedskonto.id and mitgliedskonto.mitglied = mitglied.id) is NULL then 0 else (select sum(buchung.betrag) from buchung, mitgliedskonto where buchung.mitgliedskonto = mitgliedskonto.id and mitgliedskonto.mitglied = mitglied.id) end)) and (buchung.betrag != mitgliedskonto.betrag or buchung.betrag is NULL)"; + } if (where.length() > 0) { sql += "WHERE " + where; } sql += "order by mitglied.name, mitglied.vorname, mitgliedskonto.datum desc"; PseudoIterator mitgliedskonten = (PseudoIterator) service.execute(sql, param.toArray(), new ResultSetExtractor() {