? jverein.diff Index: src/de/jost_net/JVerein/gui/control/KursteilnehmerControl.java =================================================================== RCS file: /cvsroot/jverein/jverein/src/de/jost_net/JVerein/gui/control/KursteilnehmerControl.java,v retrieving revision 1.41 diff -u -r1.41 KursteilnehmerControl.java --- src/de/jost_net/JVerein/gui/control/KursteilnehmerControl.java 5 Jun 2013 07:35:47 -0000 1.41 +++ src/de/jost_net/JVerein/gui/control/KursteilnehmerControl.java 12 Sep 2013 02:01:41 -0000 @@ -98,6 +98,8 @@ private Input vzweck1; private DateInput mandatdatum; + + private TextInput mandatID; private BICInput bic; @@ -333,6 +335,19 @@ mandatdatum.setName("Datum des Mandats"); return mandatdatum; } + + public TextInput getMandatID() throws RemoteException + { + if (mandatID != null) + { + return mandatID; + } + + mandatID = new TextInput(getKursteilnehmer().getMandatID(), 35); + mandatID.setMandatory(true); + mandatID.setName("Mandatsreferenz"); + return mandatID; + } public BICInput getBIC() throws RemoteException { @@ -757,6 +772,7 @@ k.setEmail((String) getEmail().getValue()); k.setVZweck1((String) getVZweck1().getValue()); k.setMandatDatum((Date) getMandatDatum().getValue()); + k.setMandatID((String) getMandatID().getValue()); k.setBlz((String) getBlz().getValue()); k.setKonto((String) getKonto().getValue()); k.setBetrag((Double) getBetrag().getValue()); Index: src/de/jost_net/JVerein/gui/control/MitgliedControl.java =================================================================== RCS file: /cvsroot/jverein/jverein/src/de/jost_net/JVerein/gui/control/MitgliedControl.java,v retrieving revision 1.174 diff -u -r1.174 MitgliedControl.java --- src/de/jost_net/JVerein/gui/control/MitgliedControl.java 8 Sep 2013 15:54:32 -0000 1.174 +++ src/de/jost_net/JVerein/gui/control/MitgliedControl.java 12 Sep 2013 02:01:42 -0000 @@ -752,9 +752,10 @@ { return mandatid; } - mandatid = new TextInput(getMitglied().getID()); - mandatid.setName("Mandats-ID"); - mandatid.disable(); + mandatid = new TextInput(getMitglied().getMandatID()); + mandatid.setName("Mandatsreferenz"); + mandatid.setMandatory(getMitglied().getZahlungsweg() == null + || getMitglied().getZahlungsweg().intValue() == Zahlungsweg.BASISLASTSCHRIFT); return mandatid; } @@ -2809,6 +2810,7 @@ Zahlungsrhytmus zr = (Zahlungsrhytmus) getZahlungsrhytmus().getValue(); m.setZahlungsrhytmus(zr.getKey()); m.setMandatDatum((Date) getMandatDatum().getValue()); + m.setMandatID((String) getMandatID().getValue()); m.setBlz((String) getBlz().getValue()); m.setBic((String) getBic().getValue()); m.setIban((String) getIban().getValue()); Index: src/de/jost_net/JVerein/gui/view/KursteilnehmerDetailView.java =================================================================== RCS file: /cvsroot/jverein/jverein/src/de/jost_net/JVerein/gui/view/KursteilnehmerDetailView.java,v retrieving revision 1.21 diff -u -r1.21 KursteilnehmerDetailView.java --- src/de/jost_net/JVerein/gui/view/KursteilnehmerDetailView.java 9 May 2013 11:13:10 -0000 1.21 +++ src/de/jost_net/JVerein/gui/view/KursteilnehmerDetailView.java 12 Sep 2013 02:01:42 -0000 @@ -61,6 +61,7 @@ grGrund.addInput(control.getEmail()); grGrund.addInput(control.getVZweck1()); grGrund.addInput(control.getMandatDatum()); + grGrund.addInput(control.getMandatID()); grGrund.addInput(control.getBIC()); grGrund.addInput(control.getIBAN()); grGrund.addPart(new BankverbindungDialogButton(control.getKursteilnehmer(), Index: src/de/jost_net/JVerein/io/AbrechnungSEPA.java =================================================================== RCS file: /cvsroot/jverein/jverein/src/de/jost_net/JVerein/io/AbrechnungSEPA.java,v retrieving revision 1.13 diff -u -r1.13 AbrechnungSEPA.java --- src/de/jost_net/JVerein/io/AbrechnungSEPA.java 9 Jun 2013 10:22:50 -0000 1.13 +++ src/de/jost_net/JVerein/io/AbrechnungSEPA.java 12 Sep 2013 02:01:43 -0000 @@ -98,6 +98,8 @@ .getNameLang())); Konto konto = getKonto(); + + // Führe interne Buchungen durch und schreibe diese in Lastschrift abrechnenMitglieder(lastschrift, monitor, abrl, konto); if (param.zusatzbetraege) { @@ -105,70 +107,14 @@ } if (param.kursteilnehmer) { - abbuchenKursteilnehmer(lastschrift); + abbuchenKursteilnehmer(lastschrift, abrl); } monitor.log(counter + " abgerechnete Fälle"); lastschrift.setMessageID(abrl.getID()); lastschrift.write(param.sepafile); - - ArrayList z = lastschrift.getZahler(); - for (Zahler za : z) - { - Lastschrift ls = (Lastschrift) Einstellungen.getDBService().createObject( - Lastschrift.class, null); - ls.setAbrechnungslauf(Integer.parseInt(abrl.getID())); - if (za.getMandatid().startsWith("K")) - { - ls.setKursteilnehmer(Integer.parseInt(za.getMandatid().substring(1))); - Kursteilnehmer k = (Kursteilnehmer) Einstellungen.getDBService() - .createObject(Kursteilnehmer.class, za.getMandatid().substring(1)); - ls.setPersonenart(k.getPersonenart()); - ls.setAnrede(k.getAnrede()); - ls.setTitel(k.getTitel()); - ls.setName(k.getName()); - ls.setVorname(k.getVorname()); - ls.setStrasse(k.getStrasse()); - ls.setAdressierungszusatz(k.getAdressierungszusatz()); - ls.setPlz(k.getPlz()); - ls.setOrt(k.getOrt()); - ls.setStaat(k.getStaat()); - ls.setEmail(k.getEmail()); - } - else - { - ls.setMitglied(Integer.parseInt(za.getMandatid())); - Mitglied m = (Mitglied) Einstellungen.getDBService().createObject( - Mitglied.class, za.getMandatid()); - ls.setPersonenart(getKontoinhaber(m.getPersonenart(), - m.getKtoiPersonenart())); - ls.setAnrede(getKontoinhaber(m.getAnrede(), m.getKtoiAnrede())); - ls.setTitel(getKontoinhaber(m.getTitel(), m.getKtoiTitel())); - ls.setName(getKontoinhaber(m.getName(), m.getKtoiName())); - ls.setVorname(getKontoinhaber(m.getVorname(), m.getKtoiVorname())); - ls.setStrasse(getKontoinhaber(m.getStrasse(), m.getKtoiStrasse())); - ls.setAdressierungszusatz(getKontoinhaber(m.getAdressierungszusatz(), - m.getKtoiAdressierungszusatz())); - ls.setPlz(getKontoinhaber(m.getPlz(), m.getKtoiPlz())); - ls.setOrt(getKontoinhaber(m.getOrt(), m.getKtoiOrt())); - ls.setStaat(getKontoinhaber(m.getStaat(), m.getKtoiStaat())); - ls.setEmail(getKontoinhaber(m.getEmail(), m.getKtoiEmail())); - if (!ls.getName().equals(m.getName()) - || !ls.getVorname().equals(m.getVorname())) - { - ls.setPersonenart(m.getPersonenart()); - } - } - ls.setBetrag(za.getBetrag().doubleValue()); - ls.setBIC(za.getBic()); - ls.setIBAN(za.getIban()); - ls.setMandatDatum(za.getMandatdatum()); - ls.setMandatID(za.getMandatid()); - ls.setVerwendungszweck(za.getVerwendungszweckOrig()); - ls.store(); - } - + // Gegenbuchung für das Mitgliedskonto schreiben writeMitgliedskonto(null, new Date(), "Gegenbuchung", lastschrift .getKontrollsumme().doubleValue() * -1, abrl, true, getKonto(), null); @@ -193,6 +139,69 @@ } } + private void saveLastschrift(Kursteilnehmer k, Zahler za, + Abrechnungslauf abrl) throws RemoteException, SEPAException, + ApplicationException { + Lastschrift ls = (Lastschrift) Einstellungen.getDBService() + .createObject(Lastschrift.class, null); + ls.setAbrechnungslauf(Integer.parseInt(abrl.getID())); + + ls.setKursteilnehmer(Integer.parseInt(k.getID())); + ls.setPersonenart(k.getPersonenart()); + ls.setAnrede(k.getAnrede()); + ls.setTitel(k.getTitel()); + ls.setName(k.getName()); + ls.setVorname(k.getVorname()); + ls.setStrasse(k.getStrasse()); + ls.setAdressierungszusatz(k.getAdressierungszusatz()); + ls.setPlz(k.getPlz()); + ls.setOrt(k.getOrt()); + ls.setStaat(k.getStaat()); + ls.setEmail(k.getEmail()); + + ls.setBetrag(za.getBetrag().doubleValue()); + ls.setBIC(za.getBic()); + ls.setIBAN(za.getIban()); + ls.setMandatDatum(za.getMandatdatum()); + ls.setMandatID(za.getMandatid()); + ls.setVerwendungszweck(za.getVerwendungszweckOrig()); + ls.store(); + } + + private void saveLastschrift(Mitglied m, Zahler za, Abrechnungslauf abrl) + throws RemoteException, SEPAException, ApplicationException { + Lastschrift ls = (Lastschrift) Einstellungen.getDBService() + .createObject(Lastschrift.class, null); + ls.setAbrechnungslauf(Integer.parseInt(abrl.getID())); + + ls.setMitglied(Integer.parseInt(m.getID())); + ls.setPersonenart(getKontoinhaber(m.getPersonenart(), + m.getKtoiPersonenart())); + ls.setAnrede(getKontoinhaber(m.getAnrede(), m.getKtoiAnrede())); + ls.setTitel(getKontoinhaber(m.getTitel(), m.getKtoiTitel())); + ls.setName(getKontoinhaber(m.getName(), m.getKtoiName())); + ls.setVorname(getKontoinhaber(m.getVorname(), m.getKtoiVorname())); + ls.setStrasse(getKontoinhaber(m.getStrasse(), m.getKtoiStrasse())); + ls.setAdressierungszusatz(getKontoinhaber(m.getAdressierungszusatz(), + m.getKtoiAdressierungszusatz())); + ls.setPlz(getKontoinhaber(m.getPlz(), m.getKtoiPlz())); + ls.setOrt(getKontoinhaber(m.getOrt(), m.getKtoiOrt())); + ls.setStaat(getKontoinhaber(m.getStaat(), m.getKtoiStaat())); + ls.setEmail(getKontoinhaber(m.getEmail(), m.getKtoiEmail())); + if (!ls.getName().equals(m.getName()) + || !ls.getVorname().equals(m.getVorname())) { + ls.setPersonenart(m.getPersonenart()); + } + + ls.setBetrag(za.getBetrag().doubleValue()); + ls.setBIC(za.getBic()); + ls.setIBAN(za.getIban()); + ls.setMandatDatum(za.getMandatdatum()); + ls.setMandatID(za.getMandatid()); + ls.setVerwendungszweck(za.getVerwendungszweckOrig()); + ls.store(); + } + private String getKontoinhaber(String mitglied, String ktoi) { if (ktoi != null && ktoi.length() > 0) @@ -379,7 +388,7 @@ zahler.setBic(m.getBic()); new IBAN(m.getIban()); // Prüfung der IBAN zahler.setIban(m.getIban()); - zahler.setMandatid(m.getID()); + zahler.setMandatid(m.getMandatID()); zahler.setMandatdatum(m.getMandatDatum()); zahler.setVerwendungszweck(param.verwendungszweck + " " + getVerwendungszweck2(m)); @@ -408,6 +417,7 @@ + an); } zahler.setName(m.getKontoinhaber(1)); + saveLastschrift(m, zahler, abrl); lastschrift.add(zahler); } catch (Exception e) @@ -456,7 +466,7 @@ new IBAN(m.getIban()); zahler.setBic(m.getBic()); zahler.setIban(m.getIban()); - zahler.setMandatid(m.getID()); + zahler.setMandatid(m.getMandatID()); zahler.setMandatdatum(m.getMandatDatum()); zahler.setName(m.getKontoinhaber(1)); String verwendungszweck = z.getBuchungstext(); @@ -466,6 +476,7 @@ verwendungszweck += z.getBuchungstext2(); } zahler.setVerwendungszweck(verwendungszweck); + saveLastschrift(m, zahler, abrl); lastschrift.add(zahler); } catch (Exception e) @@ -513,7 +524,7 @@ } } - private void abbuchenKursteilnehmer(Basislastschrift lastschrift) + private void abbuchenKursteilnehmer(Basislastschrift lastschrift, Abrechnungslauf abrl) throws ApplicationException, IOException { DBIterator list = Einstellungen.getDBService().createList( @@ -532,10 +543,11 @@ new IBAN(kt.getIban()); zahler.setBic(kt.getBic()); zahler.setIban(kt.getIban()); - zahler.setMandatid("K" + kt.getID()); + zahler.setMandatid(kt.getMandatID()); zahler.setMandatdatum(kt.getMandatDatum()); zahler.setName(kt.getName()); zahler.setVerwendungszweck(kt.getVZweck1()); + saveLastschrift(kt, zahler, abrl); lastschrift.add(zahler); kt.setAbbudatum(); kt.store(); Index: src/de/jost_net/JVerein/rmi/Kursteilnehmer.java =================================================================== RCS file: /cvsroot/jverein/jverein/src/de/jost_net/JVerein/rmi/Kursteilnehmer.java,v retrieving revision 1.9 diff -u -r1.9 Kursteilnehmer.java --- src/de/jost_net/JVerein/rmi/Kursteilnehmer.java 19 May 2013 12:28:19 -0000 1.9 +++ src/de/jost_net/JVerein/rmi/Kursteilnehmer.java 12 Sep 2013 02:01:43 -0000 @@ -63,6 +63,8 @@ public void setVZweck1(String vzweck1) throws RemoteException; public void setMandatDatum(Date mandatdatum) throws RemoteException; + + public void setMandatID(String mandatID) throws RemoteException; public double getBetrag() throws RemoteException; Index: src/de/jost_net/JVerein/rmi/Mitglied.java =================================================================== RCS file: /cvsroot/jverein/jverein/src/de/jost_net/JVerein/rmi/Mitglied.java,v retrieving revision 1.34 diff -u -r1.34 Mitglied.java --- src/de/jost_net/JVerein/rmi/Mitglied.java 19 May 2013 17:55:22 -0000 1.34 +++ src/de/jost_net/JVerein/rmi/Mitglied.java 12 Sep 2013 02:01:43 -0000 @@ -72,6 +72,8 @@ public void setMandatDatum(Date mandatdatum) throws RemoteException; + public void setMandatID(String referenz) throws RemoteException; + public String getKtoiPersonenart() throws RemoteException; public void setKtoiPersonenart(String ktoipersonenart) throws RemoteException; @@ -216,5 +218,4 @@ public Map getMap(Map map, boolean ohneLesefelder) throws RemoteException; - } Index: src/de/jost_net/JVerein/server/JVereinUpdateProvider.java =================================================================== RCS file: /cvsroot/jverein/jverein/src/de/jost_net/JVerein/server/JVereinUpdateProvider.java,v retrieving revision 1.122 diff -u -r1.122 JVereinUpdateProvider.java --- src/de/jost_net/JVerein/server/JVereinUpdateProvider.java 8 Sep 2013 15:57:15 -0000 1.122 +++ src/de/jost_net/JVerein/server/JVereinUpdateProvider.java 12 Sep 2013 02:01:45 -0000 @@ -1324,11 +1324,14 @@ { update0329(conn); } - if (cv < 330) { update0330(conn); } + if (cv < 331) + { + update0331(conn); + } // TODO } @@ -1607,6 +1610,7 @@ sb.append("PRIMARY KEY (id));\n"); sb.append("INSERT INTO version VALUES (1,15);\n"); sb.append("COMMIT;\n"); + statements.put(DBSupportH2Impl.class.getName(), sb.toString()); // Update fuer MySQL @@ -1801,6 +1805,7 @@ sb.append("PRIMARY KEY (id)"); sb.append(") ENGINE=InnoDB;\n"); sb.append("INSERT INTO version VALUES (1,15);\n"); + statements.put(DBSupportMySqlImpl.class.getName(), sb.toString()); execute(conn, statements, "Tabelle jahresabschluss erstellt", 15); @@ -7921,7 +7926,24 @@ execute(conn, statements, "Neue Tabelle für zukünftige Mitgliedsbeiträge.", 330); } + + private void update0331(Connection conn) throws ApplicationException + { + Map statements = new HashMap(); + // Update fuer H2 + statements.put(DBSupportH2Impl.class.getName(), + "ALTER TABLE KURSTEILNEHMER ADD MANDATID VARCHAR(35) DEFAULT '' BEFORE MANDATDATUM;\n " + + "ALTER TABLE MITGLIED ADD MANDATID VARCHAR(35) DEFAULT '' BEFORE MANDATDATUM;\n"); + // Update fuer MySQL + statements.put(DBSupportMySqlImpl.class.getName(), + "ALTER TABLE KURSTEILNEHMER ADD MANDATID VARCHAR(35) DEFAULT '' BEFORE MANDATDATUM;\n " + + "ALTER TABLE MITGLIED ADD MANDATID VARCHAR(35) DEFAULT '' BEFORE MANDATDATUM;\n"); + + execute(conn, statements, "Aufnahme von Mandatsreferenz in Kursteilnehmer und Mitglieder", + 331); + } + private String alterColumn(String table, String column, String type) throws ApplicationException { Index: src/de/jost_net/JVerein/server/KursteilnehmerImpl.java =================================================================== RCS file: /cvsroot/jverein/jverein/src/de/jost_net/JVerein/server/KursteilnehmerImpl.java,v retrieving revision 1.18 diff -u -r1.18 KursteilnehmerImpl.java --- src/de/jost_net/JVerein/server/KursteilnehmerImpl.java 19 May 2013 17:55:37 -0000 1.18 +++ src/de/jost_net/JVerein/server/KursteilnehmerImpl.java 12 Sep 2013 02:01:46 -0000 @@ -89,9 +89,9 @@ { throw new ApplicationException("Bitte Verwendungszweck eingeben"); } - if (getMandatDatum() == Einstellungen.NODATE) + if (getMandatDatum() == Einstellungen.NODATE || getMandatID() == null || getMandatID().isEmpty()) { - throw new ApplicationException("Bitte Datum des Mandats eingeben"); + throw new ApplicationException("Bitte Datum des Mandats und Mandatsreferenz eingeben"); } if (getGeburtsdatum() == null) { @@ -295,9 +295,23 @@ @Override public String getMandatID() throws RemoteException { - return "K" + getID(); - } - + String mandatID = (String) getAttribute("mandatid"); + if(mandatID == null || mandatID.isEmpty()) { + if(getID() != null && (! getID().isEmpty())) { + return "K" + getID(); + } else { + return ""; + } + } + return mandatID; + } + + @Override + public void setMandatID(String mandatID) throws RemoteException + { + setAttribute("mandatid", mandatID); + } + @Override public Date getLetzteLastschrift() throws RemoteException { Index: src/de/jost_net/JVerein/server/MitgliedImpl.java =================================================================== RCS file: /cvsroot/jverein/jverein/src/de/jost_net/JVerein/server/MitgliedImpl.java,v retrieving revision 1.91 diff -u -r1.91 MitgliedImpl.java --- src/de/jost_net/JVerein/server/MitgliedImpl.java 19 May 2013 12:29:10 -0000 1.91 +++ src/de/jost_net/JVerein/server/MitgliedImpl.java 12 Sep 2013 02:01:46 -0000 @@ -181,6 +181,10 @@ { throw new ApplicationException("Bitte BIC und IBAN eingeben"); } + if(getMandatDatum() == Einstellungen.NODATE) + { + throw new ApplicationException("Bitte Datum des Mandats eingeben"); + } } // SEPAParam sepaparam = null; // try @@ -576,7 +580,27 @@ @Override public String getMandatID() throws RemoteException { - return getID(); + String mandatsreferenz = (String) getAttribute("mandatid"); + if(mandatsreferenz == null || mandatsreferenz.equals("")) { + if(Einstellungen.getEinstellung().getExterneMitgliedsnummer() != null && + Einstellungen.getEinstellung().getExterneMitgliedsnummer() && + getExterneMitgliedsnummer() != null && + getExterneMitgliedsnummer() != 0) { + return getExterneMitgliedsnummer().toString(); + } else if (getID() != null && (! getID().isEmpty()) && (!getID().equals(""))){ + return getID(); + } else { + return ""; + } + } else { + return mandatsreferenz; + } + } + + @Override + public void setMandatID(String mandatID) throws RemoteException + { + setAttribute("mandatid", mandatID); } @Override