# This patch file was generated by NetBeans IDE # This patch can be applied using context Tools: Apply Diff Patch action on respective folder. # It uses platform neutral UTF-8 encoding. # Above lines and this line are ignored by the patching process. Index: jverein/build/BUILD --- jverein/build/BUILD Base (1.159) +++ jverein/build/BUILD Locally Modified (Based On 1.159) @@ -1,3 +1,3 @@ #Build Number for ANT. Do not edit! -#Tue Jun 11 12:36:51 CEST 2013 -build.number=399 +#Sun Sep 29 20:36:03 CEST 2013 +build.number=429 Index: jverein/build/build.properties --- jverein/build/build.properties Base (1.5) +++ jverein/build/build.properties Locally Modified (Based On 1.5) @@ -10,10 +10,37 @@ define.jarfilename = ${define.pluginname}.jar define.srcfilename = ${define.pluginname}.src.zip define.package = de.jost_net.JVerein +define.encoding = ISO-8859-1 +define.java.version = 1.5 +define.jameica.dir = ../jameica +define.hibiscus.dir = ../hibiscus +define.compilepath = ${define.jameica.dir}/lib/swt/linux/swt.jar;\ + ${define.jameica.dir}/lib/swt/org.eclipse.jface_3.1.1.jar;\ + ${define.jameica.dir}/lib/velocity/velocity-1.5.jar;\ + ${define.jameica.dir}/bin/;\ + ${define.jameica.dir}/releases/jameica-lib.jar;\ + ${define.jameica.dir}/lib/de_willuhn_ds/de_willuhn_ds.jar;\ + ${define.jameica.dir}/lib/de_willuhn_util/de_willuhn_util.jar;\ + ${define.jameica.dir}/lib/jakarta_commons/commons-lang-2.6.jar;\ + ${define.jameica.dir}/lib/nanoxml/nanoxml-2.2.3.jar;\ + ${define.jameica.dir}/lib/paperclips/net.sf.paperclips_1.0.4.jar;\ + ${lib.dir}/SuperCSV-1.52.jar;\ + ${lib.dir}/activation.jar;\ + ${lib.dir}/bsh-core-2.0b4.jar;\ + ${lib.dir}/csvjdbc.jar;\ + ${lib.dir}/itext-hyph-xml.jar;\ + ${lib.dir}/junit-4.8.1.jar;\ + ${lib.dir}/mail.jar;\ + ${lib.dir}/nc.jar;\ + ${define.hibiscus.dir}/lib/itextpdf-5.3.3.jar;\n\ + ${define.hibiscus.dir}/lib/hbci4java-2.5.12.jar;\n\ + ${define.hibiscus.dir}/lib/obantoo-bin-2.0.3.jar;\n\ + ${class.dir} -project.release = releases/${version}-${build.number} + +project.release = releases/${plugin.version}-${build.number} project.src = ${project.release}/src/classes project.tmp = ${project.release}/tmp project.javadoc = ${project.release}/javadoc project.zipdir = ${project.release}/${define.pluginname} -project.zipfilename = ${define.pluginname}.${version}-${build.number}.zip +project.zipfilename = ${define.pluginname}.${plugin.version}-${build.number}.zip Index: jverein/build/build.xml --- jverein/build/build.xml Base (1.15) +++ jverein/build/build.xml Locally Modified (Based On 1.15) @@ -4,127 +4,248 @@ - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - - - + + + + - - - - - - - - - + - + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + + - - - + + + + + + - + - - - - + + + + - + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + - - + + - - - - - - - - - + - - - - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + - - - + + + + + + + + + + + + + + + Index: jverein/nbproject/.cvsignore --- jverein/nbproject/.cvsignore No Base Revision +++ jverein/nbproject/.cvsignore Locally New @@ -0,0 +1 @@ +private Index: jverein/nbproject/project.xml --- jverein/nbproject/project.xml No Base Revision +++ jverein/nbproject/project.xml Locally New @@ -0,0 +1,73 @@ + + + org.netbeans.modules.ant.freeform + + + JVerein + + + + JVerein + + build/build.xml + + + + + . + ISO-8859-1 + + + + java + src + ISO-8859-1 + + + + + + jar + + + + clean + + + + javadoc + + + + clean + jar + + + + + + + src + + + ${ant.script} + + + + + + + + + + + + + + src + ../hibiscus/bin:../jameica/bin:lib/activation.jar:lib/junit-4.8.1.jar:lib/csvjdbc.jar:lib/CVS:lib/nc.jar:lib/bsh-core-2.0b4.jar:lib/SuperCSV-1.52.jar:lib/itext-hyph-xml.jar:lib/mail.jar:../jameica/lib/de_willuhn_util/de_willuhn_util.jar:../jameica/lib/de_willuhn_ds/de_willuhn_ds.jar:../hibiscus/lib/obantoo-bin-2.0.3.jar:../jameica/lib/swt/org.eclipse.core.runtime_3.1.1.jar:../jameica/lib/swt/org.eclipse.jface_3.1.1.jar:../jameica/lib/swt/org.eclipse.ui.forms_3.1.0.jar:../jameica/lib/swt/org.eclipse.osgi_3.1.1.jar:../jameica/lib/swt/linux64/swt.jar:../hibiscus/lib/hbci4java-2.5.12.jar:../jameica/lib/velocity/jakarta-oro-2.0.8.jar:../jameica/lib/velocity/velocity-1.5.jar:../hibiscus/lib/itextpdf-5.3.3.jar:../jameica/lib/nanoxml/nanoxml-2.2.3.jar + 1.5 + + + + Index: jverein/plugin.xml --- jverein/plugin.xml Base (1.58) +++ jverein/plugin.xml Locally Modified (Based On 1.58) @@ -35,8 +35,8 @@ class="de.jost_net.JVerein.server.JVereinDBServiceImpl" /> - - + + Index: jverein/src/de/jost_net/JVerein/gui/control/EinstellungControl.java --- jverein/src/de/jost_net/JVerein/gui/control/EinstellungControl.java Base (1.68) +++ jverein/src/de/jost_net/JVerein/gui/control/EinstellungControl.java Locally Modified (Based On 1.68) @@ -179,6 +179,8 @@ private SelectInput sepaland; + private CheckboxInput mandatIDEditable; + private Input altersgruppen; private Input jubilaeen; @@ -890,6 +892,16 @@ return sepaland; } + public CheckboxInput getMandatIDEditable() throws RemoteException + { + if(mandatIDEditable != null) { + return mandatIDEditable; + } + mandatIDEditable = new CheckboxInput(Einstellungen.getEinstellung().isMandatIdEditable()); + mandatIDEditable.setName("Mandatsreferenz änderbar"); + return mandatIDEditable; + } + public Input getAltersgruppen() throws RemoteException { if (altersgruppen != null) @@ -1275,6 +1287,8 @@ e.setJubilarStartAlter(jubilaeumStartAlter); Integer delay = (Integer) delaytime.getValue(); e.setDelaytime(delay); + e.setMandatIdEditable((Boolean) getMandatIDEditable().getValue()); + e.store(); spalten.save(); Einstellungen.setEinstellung(e); Index: jverein/src/de/jost_net/JVerein/gui/control/KursteilnehmerControl.java --- jverein/src/de/jost_net/JVerein/gui/control/KursteilnehmerControl.java Base (1.41) +++ jverein/src/de/jost_net/JVerein/gui/control/KursteilnehmerControl.java Locally Modified (Based On 1.41) @@ -99,6 +99,8 @@ private DateInput mandatdatum; + private TextInput mandatID; + private BICInput bic; private IBANInput iban; @@ -334,6 +336,21 @@ return mandatdatum; } + public TextInput getMandatID() throws RemoteException + { + if (mandatID != null) + { + return mandatID; + } + + mandatID = new TextInput(getKursteilnehmer().getMandatID(), 35); + mandatID.setName("Mandatsreferenz"); + if(! Einstellungen.getEinstellung().isMandatIdEditable()) { + mandatID.disable(); + } + return mandatID; + } + public BICInput getBIC() throws RemoteException { if (bic != null) @@ -757,6 +774,9 @@ k.setEmail((String) getEmail().getValue()); k.setVZweck1((String) getVZweck1().getValue()); k.setMandatDatum((Date) getMandatDatum().getValue()); + if(Einstellungen.getEinstellung().isMandatIdEditable()) { + k.setMandatID((String) getMandatID().getValue()); + } k.setBlz((String) getBlz().getValue()); k.setKonto((String) getKonto().getValue()); k.setBetrag((Double) getBetrag().getValue()); Index: jverein/src/de/jost_net/JVerein/gui/control/MitgliedControl.java --- jverein/src/de/jost_net/JVerein/gui/control/MitgliedControl.java Base (1.174) +++ jverein/src/de/jost_net/JVerein/gui/control/MitgliedControl.java Locally Modified (Based On 1.174) @@ -752,9 +752,14 @@ { return mandatid; } - mandatid = new TextInput(getMitglied().getID()); - mandatid.setName("Mandats-ID"); + mandatid = new TextInput(getMitglied().getMandatID()); + mandatid.setName("Mandatsreferenz"); + mandatid.setMandatory( + (getMitglied().getZahlungsweg() == null + || getMitglied().getZahlungsweg().intValue() == Zahlungsweg.BASISLASTSCHRIFT)); + if(! Einstellungen.getEinstellung().isMandatIdEditable()) { mandatid.disable(); + } return mandatid; } @@ -2809,6 +2814,9 @@ Zahlungsrhytmus zr = (Zahlungsrhytmus) getZahlungsrhytmus().getValue(); m.setZahlungsrhytmus(zr.getKey()); m.setMandatDatum((Date) getMandatDatum().getValue()); + if(Einstellungen.getEinstellung().isMandatIdEditable()) { + m.setMandatID((String) getMandatID().getValue()); + } m.setBlz((String) getBlz().getValue()); m.setBic((String) getBic().getValue()); m.setIban((String) getIban().getValue()); Index: jverein/src/de/jost_net/JVerein/gui/view/EinstellungenView.java --- jverein/src/de/jost_net/JVerein/gui/view/EinstellungenView.java Base (1.68) +++ jverein/src/de/jost_net/JVerein/gui/view/EinstellungenView.java Locally Modified (Based On 1.68) @@ -23,21 +23,28 @@ import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.TabFolder; import de.jost_net.JVerein.Einstellungen; import de.jost_net.JVerein.gui.action.DokumentationAction; import de.jost_net.JVerein.gui.control.EinstellungControl; +import de.jost_net.JVerein.rmi.Mitglied; +import de.willuhn.datasource.rmi.DBIterator; import de.willuhn.jameica.gui.AbstractView; import de.willuhn.jameica.gui.Action; import de.willuhn.jameica.gui.GUI; import de.willuhn.jameica.gui.parts.ButtonArea; import de.willuhn.jameica.gui.util.Color; import de.willuhn.jameica.gui.util.ColumnLayout; +import de.willuhn.jameica.gui.util.Font; import de.willuhn.jameica.gui.util.LabelGroup; import de.willuhn.jameica.gui.util.ScrolledContainer; import de.willuhn.jameica.gui.util.SimpleContainer; import de.willuhn.jameica.gui.util.TabGroup; +import de.willuhn.util.ApplicationException; +import java.rmi.RemoteException; +import org.eclipse.jface.dialogs.MessageDialog; public class EinstellungenView extends AbstractView { @@ -53,6 +60,7 @@ TabFolder folder = new TabFolder(cont.getComposite(), SWT.NONE); folder.setLayoutData(new GridData(GridData.FILL_BOTH)); folder.setBackground(Color.BACKGROUND.getSWTColor()); + //folder.setLayout(new FillLayout(SWT.VERTICAL)); TabGroup tabAllgemein = new TabGroup(folder, "Allgemein"); tabAllgemein.addHeadline("Allgemein"); @@ -108,15 +116,57 @@ control.getDelaytime()); right.addHeadline("* " + "Änderung erfordert Neustart"); - TabGroup tabBeitraege = new TabGroup(folder, "Beiträge"); - LabelGroup groupAbu = new LabelGroup(tabBeitraege.getComposite(), - "Beiträge"); + TabGroup tabBeitraege = new TabGroup(folder, "Beiträge", false, 1); + LabelGroup groupAbu = new LabelGroup(tabBeitraege.getComposite(), "Beiträge"); groupAbu.addLabelPair("Beitragsmodel", control.getBeitragsmodel()); groupAbu.addInput(control.getZahlungsrhytmus()); groupAbu.addInput(control.getZahlungsweg()); groupAbu.addInput(control.getDefaultSEPALand()); groupAbu.addLabelPair("Arbeitsstunden Model", control.getArbeitsstundenmodel()); + LabelGroup groupSepaMandat = new LabelGroup(tabBeitraege.getComposite(), + "SEPA-Mandatsreferenz"); + Label sepaWarningLabel = new Label(groupSepaMandat.getComposite(), SWT.NONE); + sepaWarningLabel.setFont(Font.H2.getSWTFont()); + sepaWarningLabel.setForeground(new org.eclipse.swt.graphics.Color(GUI.getDisplay(), 255, 0, 0)); + sepaWarningLabel.setText("ACHTUNG! Bei Änderungen sind die Regeln zur " + + "Vergabe und Verwaltung von Mandatsreferenzen zu beachten!"); + GridData gd = new GridData(SWT.BEGINNING, SWT.CENTER, true, false, 1, 2); + sepaWarningLabel.setLayoutData(gd); + groupSepaMandat.addInput(control.getMandatIDEditable()); + ButtonArea mandatIDButtons = new ButtonArea(); + mandatIDButtons.addButton("Mandatsreferenzen zurücksetzen", new Action() { + @Override + public void handleAction(Object o) throws ApplicationException { + String warning = "ACHTUNG: Durch das zurücksetzen der Mandatsreferenzen" + + " werden Lastschrifteinzüge möglicherweise ungültig!\n\n" + + "Benutzen Sie diese Funktion nur in Ausnahmefällen, bswp. " + + "wenn Sie alle Lastschriftmandate neuerstellen!\n\n" + + "Diese Aktion ist nicht rückgängig zu machen!"; + boolean result = MessageDialog.openConfirm(GUI.getShell(), + "WARNUNG: Zurücksetzen der Mandatsreferenzen", + warning); + if(result) { + try { + DBIterator it = Einstellungen.getDBService().createList(Mitglied.class); + while(it.hasNext()) { + Mitglied m = (Mitglied) it.next(); + m.setMandatID(null); + m.store(); + } + } catch (RemoteException ex) { + MessageDialog.openWarning(GUI.getShell(), + "Zurücksetzen der Mandatsreferenzen fehl geschlagen", + "Zurücksetzen der Mandatsreferenzen fehl geschlagen\n\n" + + ex.getMessage()); + } + } + } + }); + groupSepaMandat.addButtonArea(mandatIDButtons); + + + TabGroup tabDateinamen = new TabGroup(folder, "Dateinamen", false, 1); LabelGroup groupDatei = new LabelGroup(tabDateinamen.getComposite(), "Dateinamenmuster"); Index: jverein/src/de/jost_net/JVerein/gui/view/KursteilnehmerDetailView.java --- jverein/src/de/jost_net/JVerein/gui/view/KursteilnehmerDetailView.java Base (1.21) +++ jverein/src/de/jost_net/JVerein/gui/view/KursteilnehmerDetailView.java Locally Modified (Based On 1.21) @@ -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: jverein/src/de/jost_net/JVerein/io/AbrechnungSEPA.java --- jverein/src/de/jost_net/JVerein/io/AbrechnungSEPA.java Base (1.13) +++ jverein/src/de/jost_net/JVerein/io/AbrechnungSEPA.java Locally Modified (Based On 1.13) @@ -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,7 +107,7 @@ } if (param.kursteilnehmer) { - abbuchenKursteilnehmer(lastschrift); + abbuchenKursteilnehmer(lastschrift, abrl); } monitor.log(counter + " abgerechnete Fälle"); @@ -113,17 +115,38 @@ lastschrift.setMessageID(abrl.getID()); lastschrift.write(param.sepafile); - ArrayList z = lastschrift.getZahler(); - for (Zahler za : z) + // Gegenbuchung für das Mitgliedskonto schreiben + writeMitgliedskonto(null, new Date(), "Gegenbuchung", lastschrift + .getKontrollsumme().doubleValue() * -1, abrl, true, getKonto(), null); + + // if (param.abbuchungsausgabe == + // Abrechnungsausgabe.HIBISCUS_EINZELBUCHUNGEN + // || param.abbuchungsausgabe == Abrechnungsausgabe.HIBISCUS_SAMMELBUCHUNG) + // { + // buchenHibiscus(); + // } + // monitor.log(JVereinPlugin.getI18n().tr( + // "Anzahl Abbuchungen/Lastschrift: {0}", + // new String[] { dtaus.getAnzahlSaetze() + "" })); + // monitor.log(JVereinPlugin.getI18n().tr( + // "Gesamtsumme Abbuchung/Lastschrift: {0} EUR", + // Einstellungen.DECIMALFORMAT.format(dtaus.getSummeBetraegeDecimal()))); + // dtaus.close(); + monitor.setPercentComplete(100); + if (param.sepaprint) { - Lastschrift ls = (Lastschrift) Einstellungen.getDBService().createObject( - Lastschrift.class, null); + ausdruckenSEPA(lastschrift, param.pdffile); + } + } + + 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())); - 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.setKursteilnehmer(Integer.parseInt(k.getID())); ls.setPersonenart(k.getPersonenart()); ls.setAnrede(k.getAnrede()); ls.setTitel(k.getTitel()); @@ -135,12 +158,23 @@ 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(); } - else - { - ls.setMitglied(Integer.parseInt(za.getMandatid())); - Mitglied m = (Mitglied) Einstellungen.getDBService().createObject( - Mitglied.class, za.getMandatid()); + + 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())); @@ -155,11 +189,10 @@ 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.getVorname().equals(m.getVorname())) { ls.setPersonenart(m.getPersonenart()); } - } + ls.setBetrag(za.getBetrag().doubleValue()); ls.setBIC(za.getBic()); ls.setIBAN(za.getIban()); @@ -169,30 +202,6 @@ ls.store(); } - // Gegenbuchung für das Mitgliedskonto schreiben - writeMitgliedskonto(null, new Date(), "Gegenbuchung", lastschrift - .getKontrollsumme().doubleValue() * -1, abrl, true, getKonto(), null); - - // if (param.abbuchungsausgabe == - // Abrechnungsausgabe.HIBISCUS_EINZELBUCHUNGEN - // || param.abbuchungsausgabe == Abrechnungsausgabe.HIBISCUS_SAMMELBUCHUNG) - // { - // buchenHibiscus(); - // } - // monitor.log(JVereinPlugin.getI18n().tr( - // "Anzahl Abbuchungen/Lastschrift: {0}", - // new String[] { dtaus.getAnzahlSaetze() + "" })); - // monitor.log(JVereinPlugin.getI18n().tr( - // "Gesamtsumme Abbuchung/Lastschrift: {0} EUR", - // Einstellungen.DECIMALFORMAT.format(dtaus.getSummeBetraegeDecimal()))); - // dtaus.close(); - monitor.setPercentComplete(100); - if (param.sepaprint) - { - ausdruckenSEPA(lastschrift, param.pdffile); - } - } - 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: jverein/src/de/jost_net/JVerein/rmi/Einstellung.java --- jverein/src/de/jost_net/JVerein/rmi/Einstellung.java Base (1.44) +++ jverein/src/de/jost_net/JVerein/rmi/Einstellung.java Locally Modified (Based On 1.44) @@ -403,4 +403,7 @@ public void setArbeitsstundenmodel(int arbeitsstundenmodel) throws RemoteException; + public boolean isMandatIdEditable() throws RemoteException; + + public void setMandatIdEditable(boolean mandatIdEditMode) throws RemoteException; } Index: jverein/src/de/jost_net/JVerein/rmi/Kursteilnehmer.java --- jverein/src/de/jost_net/JVerein/rmi/Kursteilnehmer.java Base (1.9) +++ jverein/src/de/jost_net/JVerein/rmi/Kursteilnehmer.java Locally Modified (Based On 1.9) @@ -64,6 +64,8 @@ public void setMandatDatum(Date mandatdatum) throws RemoteException; + public void setMandatID(String mandatID) throws RemoteException; + public double getBetrag() throws RemoteException; public void setBetrag(double betrag) throws RemoteException; Index: jverein/src/de/jost_net/JVerein/rmi/Mitglied.java --- jverein/src/de/jost_net/JVerein/rmi/Mitglied.java Base (1.34) +++ jverein/src/de/jost_net/JVerein/rmi/Mitglied.java Locally Modified (Based On 1.34) @@ -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; Index: jverein/src/de/jost_net/JVerein/server/EinstellungImpl.java --- jverein/src/de/jost_net/JVerein/server/EinstellungImpl.java Base (1.64) +++ jverein/src/de/jost_net/JVerein/server/EinstellungImpl.java Locally Modified (Based On 1.64) @@ -1311,4 +1311,16 @@ { setAttribute("arbeitsmodel", arbeitsstundenmodel); } + + @Override + public boolean isMandatIdEditable() throws RemoteException + { + return (Boolean) getAttribute("mandatid_editable"); } + + @Override + public void setMandatIdEditable(boolean mandatIdEditMode) throws RemoteException + { + setAttribute("mandatid_editable", mandatIdEditMode); + } +} Index: jverein/src/de/jost_net/JVerein/server/JVereinUpdateProvider.java --- jverein/src/de/jost_net/JVerein/server/JVereinUpdateProvider.java Base (1.122) +++ jverein/src/de/jost_net/JVerein/server/JVereinUpdateProvider.java Locally Modified (Based On 1.122) @@ -1329,6 +1329,10 @@ { update0330(conn); } + if (cv < 331) + { + update0331(conn); + } // TODO } @@ -7922,6 +7926,27 @@ 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" + + "ALTER TABLE EINSTELLUNG ADD COLUMN MANDATID_EDITABLE BOOLEAN DEFAULT false;\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" + + "ALTER TABLE EINSTELLUNG ADD COLUMN MANDATID_EDITABLE BOOLEAN DEFAULT false;\n"); + + execute(conn, statements, "Aufnahme von Mandatsreferenz in Kursteilnehmer und Mitglieder", + 331); + } + private String alterColumn(String table, String column, String type) throws ApplicationException { Index: jverein/src/de/jost_net/JVerein/server/KursteilnehmerImpl.java --- jverein/src/de/jost_net/JVerein/server/KursteilnehmerImpl.java Base (1.18) +++ jverein/src/de/jost_net/JVerein/server/KursteilnehmerImpl.java Locally Modified (Based On 1.18) @@ -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,10 +295,26 @@ @Override public String getMandatID() throws RemoteException { + 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 + { + if (!getMandatID().equals(mandatID)) { + setAttribute("mandatid", mandatID); + } + } + + @Override public Date getLetzteLastschrift() throws RemoteException { ResultSetExtractor rs = new ResultSetExtractor() Index: jverein/src/de/jost_net/JVerein/server/MitgliedImpl.java --- jverein/src/de/jost_net/JVerein/server/MitgliedImpl.java Base (1.91) +++ jverein/src/de/jost_net/JVerein/server/MitgliedImpl.java Locally Modified (Based On 1.91) @@ -181,7 +181,11 @@ { 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,10 +580,27 @@ @Override public String getMandatID() throws RemoteException { + String mandatsreferenz = (String) getAttribute("mandatid"); + if (mandatsreferenz == null || mandatsreferenz.equals("")) { + if (Einstellungen.getEinstellung().getExterneMitgliedsnummer() + && getExterneMitgliedsnummer() != null + && getExterneMitgliedsnummer() != 0) { + return getExterneMitgliedsnummer().toString(); + } else { return getID(); } + } else { + return mandatsreferenz; + } + } @Override + public void setMandatID(String mandatID) throws RemoteException + { + setAttribute("mandatid", mandatID); + } + + @Override public Date getLetzteLastschrift() throws RemoteException { ResultSetExtractor rs = new ResultSetExtractor()