diff --git a/.classpath b/.classpath index db67d3d1f..dade34d9d 100644 --- a/.classpath +++ b/.classpath @@ -28,5 +28,10 @@ + + + + + diff --git a/junit/src/de/jost_net/JVereinJUnit/io/Adressbuch/AdressaufbereitungTest.java b/junit/src/de/jost_net/JVereinJUnit/io/Adressbuch/AdressaufbereitungTest.java index 83bcd7ce6..64ae2d8d7 100644 --- a/junit/src/de/jost_net/JVereinJUnit/io/Adressbuch/AdressaufbereitungTest.java +++ b/junit/src/de/jost_net/JVereinJUnit/io/Adressbuch/AdressaufbereitungTest.java @@ -27,6 +27,7 @@ import de.jost_net.JVerein.gui.input.GeschlechtInput; import de.jost_net.JVerein.io.IAdresse; import de.jost_net.JVerein.io.Adressbuch.Adressaufbereitung; +import de.jost_net.JVerein.keys.Staat; @RunWith(JUnit4.class) public class AdressaufbereitungTest @@ -221,6 +222,13 @@ public String getOrt() throws RemoteException @Override public String getStaat() throws RemoteException + { + return Staat.getStaat(getStaatCode()); + } + + + @Override + public String getStaatCode() throws RemoteException { return staat; } diff --git a/lib/dom4j-2.1.4.jar b/lib/dom4j-2.1.4.jar new file mode 100644 index 000000000..0769bed92 Binary files /dev/null and b/lib/dom4j-2.1.4.jar differ diff --git a/lib/jakarta.activation-api-2.1.3.jar b/lib/jakarta.activation-api-2.1.3.jar new file mode 100644 index 000000000..0d015d542 Binary files /dev/null and b/lib/jakarta.activation-api-2.1.3.jar differ diff --git a/lib/mustang-2.15.2.jar b/lib/mustang-2.15.2.jar new file mode 100644 index 000000000..ab40a1294 Binary files /dev/null and b/lib/mustang-2.15.2.jar differ diff --git a/lib/xmpbox-3.0.3.jar b/lib/xmpbox-3.0.3.jar new file mode 100644 index 000000000..26e3029e4 Binary files /dev/null and b/lib/xmpbox-3.0.3.jar differ diff --git a/src/de/jost_net/JVerein/gui/action/FormularAnzeigeAction.java b/src/de/jost_net/JVerein/gui/action/FormularAnzeigeAction.java index e145db92d..719d27b2d 100644 --- a/src/de/jost_net/JVerein/gui/action/FormularAnzeigeAction.java +++ b/src/de/jost_net/JVerein/gui/action/FormularAnzeigeAction.java @@ -336,7 +336,7 @@ public void handleAction(Object context) throws ApplicationException map.put(RechnungVar.SUMME_OFFEN.getName(), 700); map.put(RechnungVar.QRCODE_INTRO.getName(), Einstellungen.getEinstellung().getQRCodeIntro()); - FormularAufbereitung fab = new FormularAufbereitung(file); + FormularAufbereitung fab = new FormularAufbereitung(file, false); fab.writeForm(formular, map); fab.showFormular(); } diff --git a/src/de/jost_net/JVerein/gui/action/FreiesFormularAction.java b/src/de/jost_net/JVerein/gui/action/FreiesFormularAction.java index 1798c9808..111ad9891 100644 --- a/src/de/jost_net/JVerein/gui/action/FreiesFormularAction.java +++ b/src/de/jost_net/JVerein/gui/action/FreiesFormularAction.java @@ -112,7 +112,7 @@ private void generiereFreiesFormular(Mitglied[] m) throws Exception final File file = new File(s); settings.setAttribute("lastdir", file.getParent()); - FormularAufbereitung fa = new FormularAufbereitung(file); + FormularAufbereitung fa = new FormularAufbereitung(file, false); for (Mitglied mi : m) { Formular fo = (Formular) Einstellungen.getDBService().createObject( diff --git a/src/de/jost_net/JVerein/gui/action/KursteilnehmerWirdMitgliedAction.java b/src/de/jost_net/JVerein/gui/action/KursteilnehmerWirdMitgliedAction.java index cd60d69c3..ba870589c 100644 --- a/src/de/jost_net/JVerein/gui/action/KursteilnehmerWirdMitgliedAction.java +++ b/src/de/jost_net/JVerein/gui/action/KursteilnehmerWirdMitgliedAction.java @@ -51,7 +51,7 @@ public void handleAction(Object context) throws ApplicationException m.setOrt(k.getOrt()); m.setPersonenart(PersonenartInput.NATUERLICHE_PERSON.substring(0, 1)); m.setPlz(k.getPlz()); - m.setStaat(k.getStaat()); + m.setStaat(k.getStaatCode()); m.setStrasse(k.getStrasse()); m.setTitel(k.getTitel()); m.setVorname(k.getVorname()); diff --git a/src/de/jost_net/JVerein/gui/action/SpendenbescheinigungAction.java b/src/de/jost_net/JVerein/gui/action/SpendenbescheinigungAction.java index 7c93abbd4..8d5aa8900 100644 --- a/src/de/jost_net/JVerein/gui/action/SpendenbescheinigungAction.java +++ b/src/de/jost_net/JVerein/gui/action/SpendenbescheinigungAction.java @@ -156,10 +156,7 @@ private void adressaufbereitung(Mitglied m, Spendenbescheinigung spb) } adresse.add(m.getStrasse()); adresse.add(m.getPlz() + " " + m.getOrt()); - if (m.getStaat() != null && m.getStaat().length() > 0) - { - adresse.add(m.getStaat()); - } + adresse.add(m.getStaat()); switch (adresse.size()) { case 7: diff --git a/src/de/jost_net/JVerein/gui/action/SpendenbescheinigungPrintAction.java b/src/de/jost_net/JVerein/gui/action/SpendenbescheinigungPrintAction.java index 91f44a861..d64a88133 100644 --- a/src/de/jost_net/JVerein/gui/action/SpendenbescheinigungPrintAction.java +++ b/src/de/jost_net/JVerein/gui/action/SpendenbescheinigungPrintAction.java @@ -251,7 +251,7 @@ else if (context instanceof Spendenbescheinigung[]) map = new AllgemeineMap().getMap(map); if(spb.getMitglied() != null) map = new MitgliedMap().getMap(spb.getMitglied(), map); - FormularAufbereitung fa = new FormularAufbereitung(file); + FormularAufbereitung fa = new FormularAufbereitung(file, false); fa.writeForm(fo, map); if (adressblatt != Adressblatt.OHNE_ADRESSBLATT) { diff --git a/src/de/jost_net/JVerein/gui/control/AbrechnungSEPAControl.java b/src/de/jost_net/JVerein/gui/control/AbrechnungSEPAControl.java index 12854e90e..c8126de00 100644 --- a/src/de/jost_net/JVerein/gui/control/AbrechnungSEPAControl.java +++ b/src/de/jost_net/JVerein/gui/control/AbrechnungSEPAControl.java @@ -49,7 +49,6 @@ import de.willuhn.jameica.gui.parts.Button; import de.willuhn.jameica.system.Application; import de.willuhn.jameica.system.BackgroundTask; -import de.willuhn.jameica.system.OperationCanceledException; import de.willuhn.jameica.system.Settings; import de.willuhn.logging.Logger; import de.willuhn.util.ApplicationException; diff --git a/src/de/jost_net/JVerein/gui/control/EinstellungControl.java b/src/de/jost_net/JVerein/gui/control/EinstellungControl.java index 093df8e36..784466ae1 100644 --- a/src/de/jost_net/JVerein/gui/control/EinstellungControl.java +++ b/src/de/jost_net/JVerein/gui/control/EinstellungControl.java @@ -39,6 +39,7 @@ import de.jost_net.JVerein.keys.AbstractInputAuswahl; import de.jost_net.JVerein.keys.BuchungsartSort; import de.jost_net.JVerein.keys.SepaMandatIdSource; +import de.jost_net.JVerein.keys.Staat; import de.jost_net.JVerein.keys.Zahlungsrhythmus; import de.jost_net.JVerein.keys.Zahlungsweg; import de.jost_net.JVerein.rmi.Einstellung; @@ -342,6 +343,10 @@ public class EinstellungControl extends AbstractControl */ private Wallet wallet = null; + private TextInput ustid; + + private SelectInput staat; + public EinstellungControl(AbstractView view) { super(view); @@ -408,6 +413,27 @@ public Input getOrt() throws RemoteException return ort; } + public SelectInput getStaat() throws RemoteException + { + if (staat != null) + { + return staat; + } + staat = new SelectInput(Staat.values(), + Staat.getByKey(Einstellungen.getEinstellung().getStaat())); + return staat; + } + + public Input getUstID() throws RemoteException + { + if (ustid != null) + { + return ustid; + } + ustid = new TextInput(Einstellungen.getEinstellung().getUStID(), 50); + return ustid; + } + public TextInput getFinanzamt() throws RemoteException { if (finanzamt != null) @@ -2056,6 +2082,8 @@ public void handleStoreAllgemein() else e.setIban(ib.toUpperCase().replace(" ","")); e.setGlaeubigerID((String) getGlaeubigerID().getValue()); + e.setStaat(((Staat)getStaat().getValue()).getKey()); + e.setUStID((String) getUstID().getValue()); e.store(); Einstellungen.setEinstellung(e); diff --git a/src/de/jost_net/JVerein/gui/control/KursteilnehmerControl.java b/src/de/jost_net/JVerein/gui/control/KursteilnehmerControl.java index 3b9d85ecb..c720ccc37 100644 --- a/src/de/jost_net/JVerein/gui/control/KursteilnehmerControl.java +++ b/src/de/jost_net/JVerein/gui/control/KursteilnehmerControl.java @@ -39,6 +39,7 @@ import de.jost_net.JVerein.gui.menu.KursteilnehmerMenu; import de.jost_net.JVerein.io.FileViewer; import de.jost_net.JVerein.io.Reporter; +import de.jost_net.JVerein.keys.Staat; import de.jost_net.JVerein.rmi.Kursteilnehmer; import de.jost_net.JVerein.util.Dateiname; import de.jost_net.JVerein.util.JVDateFormatTTMMJJJJ; @@ -52,6 +53,7 @@ import de.willuhn.jameica.gui.input.DateInput; import de.willuhn.jameica.gui.input.DecimalInput; import de.willuhn.jameica.gui.input.Input; +import de.willuhn.jameica.gui.input.SelectInput; import de.willuhn.jameica.gui.input.TextInput; import de.willuhn.jameica.gui.parts.Button; import de.willuhn.jameica.gui.parts.TablePart; @@ -85,7 +87,7 @@ public class KursteilnehmerControl extends FilterControl private TextInput ort; - private TextInput staat; + private SelectInput staat; private EmailInput email; @@ -246,13 +248,22 @@ public Input getOrt() throws RemoteException return ort; } - public TextInput getStaat() throws RemoteException + public SelectInput getStaat() throws RemoteException { if (staat != null) { return staat; } - staat = new TextInput(getKursteilnehmer().getStaat(), 50); + if (getKursteilnehmer().getStaat() != null + && getKursteilnehmer().getStaat().length() > 0 + && Staat.getByKey(getKursteilnehmer().getStaat()) == null) + { + GUI.getStatusBar() + .setErrorText("Konnte Staat \"" + getKursteilnehmer().getStaat() + + "\" nicht finden, bitte anpassen."); + } + staat = new SelectInput(Staat.values(), Staat.getByKey(getKursteilnehmer().getStaat())); + staat.setPleaseChoose("Nicht gesetzt"); staat.setName("Staat"); return staat; } @@ -455,7 +466,7 @@ public void handleStore() k.setAdressierungszuatz((String) getAdressierungszusatz().getValue()); k.setPlz((String) getPLZ().getValue()); k.setOrt((String) getOrt().getValue()); - k.setStaat((String) getStaat().getValue()); + k.setStaat(((Staat) getStaat().getValue()).getKey()); k.setEmail((String) getEmail().getValue()); k.setVZweck1((String) getVZweck1().getValue()); k.setMandatDatum((Date) getMandatDatum().getValue()); diff --git a/src/de/jost_net/JVerein/gui/control/MitgliedControl.java b/src/de/jost_net/JVerein/gui/control/MitgliedControl.java index a65932d4c..2a4a5bd33 100644 --- a/src/de/jost_net/JVerein/gui/control/MitgliedControl.java +++ b/src/de/jost_net/JVerein/gui/control/MitgliedControl.java @@ -80,6 +80,7 @@ import de.jost_net.JVerein.io.MitgliederStatistik; import de.jost_net.JVerein.keys.ArtBeitragsart; import de.jost_net.JVerein.keys.Datentyp; +import de.jost_net.JVerein.keys.Staat; import de.jost_net.JVerein.keys.Zahlungsrhythmus; import de.jost_net.JVerein.keys.Zahlungstermin; import de.jost_net.JVerein.keys.Zahlungsweg; @@ -172,7 +173,9 @@ public class MitgliedControl extends FilterControl private Input ort; - private Input staat; + private SelectNoScrollInput staat; + + private TextInput leitwegID; private DateInput geburtsdatum = null; @@ -218,7 +221,7 @@ public class MitgliedControl extends FilterControl private TextInput ktoiort; - private TextInput ktoistaat; + private SelectNoScrollInput ktoistaat; private EmailInput ktoiemail; @@ -513,16 +516,36 @@ public Input getOrt() throws RemoteException return ort; } - public Input getStaat() throws RemoteException + public SelectNoScrollInput getStaat() throws RemoteException { if (staat != null) { return staat; } - staat = new TextInput(getMitglied().getStaat(), 50); + if (getMitglied().getStaat() != null + && getMitglied().getStaat().length() > 0 + && Staat.getByKey(getMitglied().getStaatCode()) == null) + { + GUI.getStatusBar().setErrorText("Konnte Staat \"" + + getMitglied().getStaat() + "\" nicht finden, bitte anpassen."); + } + staat = new SelectNoScrollInput(Staat.values(), + Staat.getByKey(getMitglied().getStaatCode())); + staat.setPleaseChoose("Nicht gesetzt"); staat.setName("Staat"); return staat; } + + public TextInput getLeitwegID() throws RemoteException + { + if (leitwegID != null) + { + return leitwegID; + } + leitwegID = new TextInput(getMitglied().getLeitwegID()); + leitwegID.setName("LeitwegID"); + return leitwegID; + } public DateInput getGeburtsdatum() throws RemoteException { @@ -963,13 +986,22 @@ public TextInput getKtoiOrt() throws RemoteException return ktoiort; } - public TextInput getKtoiStaat() throws RemoteException + public SelectNoScrollInput getKtoiStaat() throws RemoteException { if (ktoistaat != null) { return ktoistaat; } - ktoistaat = new TextInput(getMitglied().getKtoiStaat(), 50); + if (getMitglied().getKtoiStaat() != null + && getMitglied().getKtoiStaat().length() > 0 + && Staat.getByKey(getMitglied().getKtoiStaatCode()) == null) + { + GUI.getStatusBar().setErrorText("Konnte Kontoinhaber Staat \"" + + getMitglied().getKtoiStaat() + "\" nicht finden, bitte anpassen."); + } + ktoistaat = new SelectNoScrollInput(Staat.values(), + Staat.getByKey(getMitglied().getKtoiStaatCode())); + ktoistaat.setPleaseChoose("Nicht gesetzt"); ktoistaat.setName("Staat"); return ktoistaat; } @@ -2362,6 +2394,10 @@ public void handleStore() m.setGeschlecht((String) getGeschlecht().getValue()); } + else + { + m.setLeitwegID((String) getLeitwegID().getValue()); + } m.setKtoiAdressierungszusatz( (String) getKtoiAdressierungszusatz().getValue()); m.setKtoiAnrede((String) getKtoiAnrede().getValue()); @@ -2371,7 +2407,8 @@ public void handleStore() String persa = (String) getKtoiPersonenart().getValue(); m.setKtoiPersonenart(persa.substring(0, 1)); m.setKtoiPlz((String) getKtoiPlz().getValue()); - m.setKtoiStaat((String) getKtoiStaat().getValue()); + m.setKtoiStaat(getKtoiStaat().getValue() == null ? "" + : ((Staat) getKtoiStaat().getValue()).getKey()); m.setKtoiStrasse((String) getKtoiStrasse().getValue()); m.setKtoiTitel((String) getKtoiTitel().getValue()); m.setKtoiVorname((String) getKtoiVorname().getValue()); @@ -2381,7 +2418,8 @@ public void handleStore() m.setName((String) getName(false).getValue()); m.setOrt((String) getOrt().getValue()); m.setPlz((String) getPlz().getValue()); - m.setStaat((String) getStaat().getValue()); + m.setStaat(getStaat().getValue() == null ? "" + : ((Staat) getStaat().getValue()).getKey()); m.setStrasse((String) getStrasse().getValue()); m.setTelefondienstlich((String) getTelefondienstlich().getValue()); m.setTelefonprivat((String) getTelefonprivat().getValue()); diff --git a/src/de/jost_net/JVerein/gui/control/PreNotificationControl.java b/src/de/jost_net/JVerein/gui/control/PreNotificationControl.java index f89533c7b..b4ce62f4a 100644 --- a/src/de/jost_net/JVerein/gui/control/PreNotificationControl.java +++ b/src/de/jost_net/JVerein/gui/control/PreNotificationControl.java @@ -377,7 +377,7 @@ else if (currentObject instanceof Lastschrift[]) .createObject(Formular.class, form.getID()); if (!einzelnePdfs) { - fa = new FormularAufbereitung(file); + fa = new FormularAufbereitung(file, false); } int dateinummer = 0; @@ -404,7 +404,7 @@ else if (currentObject instanceof Lastschrift[]) sb.append(postfix); final File fx = new File(sb.toString()); - fa = new FormularAufbereitung(fx); + fa = new FormularAufbereitung(fx, false); } aufbereitenFormular(ls, fo); diff --git a/src/de/jost_net/JVerein/gui/control/RechnungControl.java b/src/de/jost_net/JVerein/gui/control/RechnungControl.java index 48391d282..8f08dc8d3 100644 --- a/src/de/jost_net/JVerein/gui/control/RechnungControl.java +++ b/src/de/jost_net/JVerein/gui/control/RechnungControl.java @@ -121,6 +121,8 @@ public class RechnungControl extends DruckMailControl private TextInput personenart; + private TextInput leitwegID; + public enum TYP { RECHNUNG, MAHNUNG @@ -398,7 +400,8 @@ public void handleAction(Object context) throws ApplicationException rechnung.setAdressierungszusatz(mitglied.getAdressierungszusatz()); rechnung.setPlz(mitglied.getPlz()); rechnung.setOrt(mitglied.getOrt()); - rechnung.setStaat(mitglied.getStaat()); + rechnung.setStaat(mitglied.getStaatCode()); + rechnung.setLeitwegID(mitglied.getLeitwegID()); rechnung.setPersonenart(mitglied.getPersonenart()); if(!mitglied.getMandatDatum().equals(Einstellungen.NODATE)) rechnung.setMandatDatum(mitglied.getMandatDatum()); @@ -763,6 +766,18 @@ public IBANInput getIban() throws RemoteException return iban; } + public TextInput getLeitwegID() throws RemoteException + { + if (leitwegID != null) + { + return leitwegID; + } + leitwegID = new TextInput(getRechnung().getLeitwegID()); + leitwegID.setName("LeitwegID"); + leitwegID.disable(); + return leitwegID; + } + public Part getBuchungenList() throws RemoteException { if (buchungList != null) diff --git a/src/de/jost_net/JVerein/gui/view/AbstractMitgliedDetailView.java b/src/de/jost_net/JVerein/gui/view/AbstractMitgliedDetailView.java index 31d944854..e533c21da 100644 --- a/src/de/jost_net/JVerein/gui/view/AbstractMitgliedDetailView.java +++ b/src/de/jost_net/JVerein/gui/view/AbstractMitgliedDetailView.java @@ -639,6 +639,10 @@ private void zeicheStammdaten(Composite parentComposite, int spaltenanzahl) cols.addInput(control.getGeburtsdatum()); cols.addInput(control.getGeschlecht()); } + else + { + cols.addInput(control.getLeitwegID()); + } if (Einstellungen.getEinstellung().getKommunikationsdaten()) { diff --git a/src/de/jost_net/JVerein/gui/view/EinstellungenAllgemeinView.java b/src/de/jost_net/JVerein/gui/view/EinstellungenAllgemeinView.java index 25093cf3c..ca33a809c 100644 --- a/src/de/jost_net/JVerein/gui/view/EinstellungenAllgemeinView.java +++ b/src/de/jost_net/JVerein/gui/view/EinstellungenAllgemeinView.java @@ -42,11 +42,13 @@ public void bind() throws Exception cont.addLabelPair("Straße", control.getStrasse()); cont.addLabelPair("PLZ", control.getPlz()); cont.addLabelPair("Ort", control.getOrt()); - TextInput bic = control.getBic(); // vor IBAN initialisieren, das IBAN eine + cont.addLabelPair("Staat", control.getStaat()); + TextInput bic = control.getBic(); // vor IBAN initialisieren, da IBAN eine // Referenz auf bic benötigt! cont.addLabelPair("IBAN", control.getIban()); cont.addLabelPair("BIC", bic); cont.addLabelPair("Gläubiger-ID", control.getGlaeubigerID()); + cont.addLabelPair("USt-ID", control.getUstID()); ButtonArea buttons = new ButtonArea(); buttons.addButton("Hilfe", new DokumentationAction(), diff --git a/src/de/jost_net/JVerein/gui/view/RechnungView.java b/src/de/jost_net/JVerein/gui/view/RechnungView.java index 33274a95a..b76abf469 100644 --- a/src/de/jost_net/JVerein/gui/view/RechnungView.java +++ b/src/de/jost_net/JVerein/gui/view/RechnungView.java @@ -55,6 +55,7 @@ public void bind() throws Exception middle.addInput(control.getVorname()); middle.addInput(control.getStrasse()); middle.addInput(control.getAdressierungszusatz()); + middle.addInput(control.getLeitwegID()); SimpleContainer rigth = new SimpleContainer(cl.getComposite()); rigth.addInput(control.getPlz()); diff --git a/src/de/jost_net/JVerein/io/AbrechnungSEPA.java b/src/de/jost_net/JVerein/io/AbrechnungSEPA.java index a78f14db4..a1f62b642 100644 --- a/src/de/jost_net/JVerein/io/AbrechnungSEPA.java +++ b/src/de/jost_net/JVerein/io/AbrechnungSEPA.java @@ -193,7 +193,7 @@ public AbrechnungSEPA(AbrechnungSEPAParam param, ProgressMonitor monitor) ls.setAdressierungszusatz(k.getAdressierungszusatz()); ls.setPlz(k.getPlz()); ls.setOrt(k.getOrt()); - ls.setStaat(k.getStaat()); + ls.setStaat(k.getStaatCode()); ls.setEmail(k.getEmail()); if (k.getGeschlecht() != null) { @@ -215,7 +215,7 @@ public AbrechnungSEPA(AbrechnungSEPAParam param, ProgressMonitor monitor) ls.setAdressierungszusatz(m.getAdressierungszusatz()); ls.setPlz(m.getPlz()); ls.setOrt(m.getOrt()); - ls.setStaat(m.getStaat()); + ls.setStaat(m.getStaatCode()); ls.setEmail(m.getEmail()); ls.setGeschlecht(m.getGeschlecht()); } @@ -230,7 +230,7 @@ public AbrechnungSEPA(AbrechnungSEPAParam param, ProgressMonitor monitor) ls.setAdressierungszusatz(m.getKtoiAdressierungszusatz()); ls.setPlz(m.getKtoiPlz()); ls.setOrt(m.getKtoiOrt()); - ls.setStaat(m.getKtoiStaat()); + ls.setStaat(m.getKtoiStaatCode()); ls.setEmail(m.getKtoiEmail()); ls.setGeschlecht(m.getKtoiGeschlecht()); } diff --git a/src/de/jost_net/JVerein/io/FormularAufbereitung.java b/src/de/jost_net/JVerein/io/FormularAufbereitung.java index 06513e787..8583fbf6e 100644 --- a/src/de/jost_net/JVerein/io/FormularAufbereitung.java +++ b/src/de/jost_net/JVerein/io/FormularAufbereitung.java @@ -23,13 +23,25 @@ import java.io.IOException; import java.io.StringWriter; import java.io.UnsupportedEncodingException; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.rmi.RemoteException; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Map; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.Velocity; +import org.mustangproject.BankDetails; +import org.mustangproject.Contact; +import org.mustangproject.DirectDebit; +import org.mustangproject.Invoice; +import org.mustangproject.Item; +import org.mustangproject.Product; +import org.mustangproject.TradeParty; +import org.mustangproject.ZUGFeRD.IZUGFeRDExporter; +import org.mustangproject.ZUGFeRD.ZUGFeRDExporterFromPDFA; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; @@ -42,6 +54,10 @@ import com.itextpdf.text.DocumentException; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.BaseFont; +import com.itextpdf.text.pdf.ICC_Profile; +import com.itextpdf.text.pdf.PdfAConformanceException; +import com.itextpdf.text.pdf.PdfAConformanceLevel; +import com.itextpdf.text.pdf.PdfAWriter; import com.itextpdf.text.pdf.PdfContentByte; import com.itextpdf.text.pdf.PdfImportedPage; import com.itextpdf.text.pdf.PdfReader; @@ -58,6 +74,8 @@ import de.jost_net.JVerein.rmi.Formular; import de.jost_net.JVerein.rmi.Formularfeld; import de.jost_net.JVerein.rmi.Mitglied; +import de.jost_net.JVerein.rmi.Mitgliedskonto; +import de.jost_net.JVerein.rmi.Rechnung; import de.jost_net.JVerein.rmi.Spendenbescheinigung; import de.jost_net.JVerein.util.JVDateFormatTTMMJJJJ; import de.jost_net.JVerein.util.StringTool; @@ -104,7 +122,7 @@ public class FormularAufbereitung * Die Datei, in die geschrieben werden soll * @throws RemoteException */ - public FormularAufbereitung(final File f) throws RemoteException + public FormularAufbereitung(final File f, boolean pdfa) throws RemoteException { this.f = f; try @@ -112,11 +130,30 @@ public FormularAufbereitung(final File f) throws RemoteException doc = new Document(); fos = new FileOutputStream(f); - writer = PdfWriter.getInstance(doc, fos); - writer.setEncryption(null, null, - PdfWriter.ALLOW_PRINTING | PdfWriter.ALLOW_SCREENREADERS, PdfWriter.ENCRYPTION_AES_256); - doc.open(); + if (pdfa) + { + writer = PdfAWriter.getInstance(doc, fos, + PdfAConformanceLevel.PDF_A_3B); + + writer.createXmpMetadata(); + doc.open(); + + ICC_Profile icc = ICC_Profile + .getInstance(Class.forName("org.mustangproject.Invoice") + .getClassLoader().getResourceAsStream("sRGB.icc")); + writer.setOutputIntents("Custom", "", "http://www.color.org", + "sRGB IEC61966-2.1", icc); + writer.setCompressionLevel(9); + } + else + { + writer = PdfWriter.getInstance(doc, fos); + writer.setEncryption(null, null, + PdfWriter.ALLOW_PRINTING | PdfWriter.ALLOW_SCREENREADERS, + PdfWriter.ENCRYPTION_AES_256); + doc.open(); + } } catch (IOException e) { @@ -126,6 +163,10 @@ public FormularAufbereitung(final File f) throws RemoteException { throw new RemoteException("Fehler", e); } + catch (ClassNotFoundException e) + { + throw new RemoteException("Fehler", e); + } } public void writeForm(Formular formular, Map map) @@ -353,7 +394,7 @@ private Image getPaymentQRCode(Map fieldsMap) throws RemoteException * * @throws IOException */ - public void closeFormular() throws IOException + public void closeFormular() throws IOException, PdfAConformanceException { doc.close(); writer.close(); @@ -589,5 +630,126 @@ public void printAnschreiben(Spendenbescheinigung spb, String text) throw new RemoteException("Fehler", e); } } - + + @SuppressWarnings("resource") + public void addZUGFeRD(Rechnung re, boolean mahnung) throws IOException + { + ArrayList mklist = re.getMitgliedskontoList(); + if (mklist.size() == 0) + return; + + String sourcePDF = f.getAbsolutePath(); + Einstellung e = Einstellungen.getEinstellung(); + IZUGFeRDExporter ze = new ZUGFeRDExporterFromPDFA().ignorePDFAErrors() + .load(sourcePDF).setProducer("JVerein") + .setCreator(System.getProperty("user.name")); + + Invoice invoice = new Invoice() + // Fälligkeitsdatum + .setDueDate(mklist.get(mklist.size() - 1).getDatum()) + // Lieferdatum + .setDeliveryDate(mklist.get(mklist.size() - 1).getDatum()) + // Rechnungsdatum + .setIssueDate(re.getDatum()) + // Rechnungsnummer + .setNumber(re.getID()); + + // Rechnungssteller + TradeParty sender = new TradeParty(e.getName(), + StringTool.toNotNullString(e.getStrasse()), + StringTool.toNotNullString(e.getPlz()), + StringTool.toNotNullString(e.getOrt()), e.getStaat()) + .addTaxID(e.getSteuernummer()); + if (e.getUStID().length() > 0) + sender.addVATID(e.getUStID()); + + // TODO Zahlungsweg aus Rechnung lesen sobald implementiert + if (re.getMandatDatum() != null + && !re.getMandatDatum().equals(Einstellungen.NODATE)) + { + // Mandat + sender.addDebitDetails(new DirectDebit(re.getIBAN(), re.getMandatID())); + // Gläubiger identifikationsnummer + invoice.setCreditorReferenceID(e.getGlaeubigerID()); + } + else + { + sender.addBankDetails( + new BankDetails(StringTool.toNotNullString(e.getIban()), + StringTool.toNotNullString(e.getBic()))); + } + invoice.setSender(sender); + + if (mahnung) + { + double bezahlt = 0; + for (Mitgliedskonto mk : re.getMitgliedskontoList()) + { + bezahlt += mk.getIstSumme(); + } + // Bereits gezahlt + invoice.setTotalPrepaidAmount(new BigDecimal(bezahlt)); + } + + String id = re.getMitglied().getID(); + if (Einstellungen.getEinstellung().getExterneMitgliedsnummer()) + id = re.getMitglied().getExterneMitgliedsnummer(); + + // Rechnungsempfänger + invoice.setRecipient(new TradeParty( + StringTool.toNotNullString(re.getVorname()) + " " + + StringTool.toNotNullString(re.getName()), + StringTool.toNotNullString(re.getStrasse()), + StringTool.toNotNullString(re.getPlz()), + StringTool.toNotNullString(re.getOrt()), + re.getStaatCode() == null || re.getStaatCode().length() == 0 + ? e.getStaat() + : re.getStaatCode()) + .setID(id) + .setContact(new Contact( + StringTool.toNotNullString(re.getVorname()) + " " + + StringTool.toNotNullString(re.getName()), + re.getMitglied().getTelefonprivat(), + re.getMitglied().getEmail())) + .setAdditionalAddress( + StringTool.toNotNullString(re.getAdressierungszusatz()))); + + // LeitwegID + if (re.getLeitwegID() != null && re.getLeitwegID().length() > 0) + { + invoice.setReferenceNumber(re.getLeitwegID()); + } + + // Sollbuchungen + for (Mitgliedskonto mk : re.getMitgliedskontoList()) + { + Double betrag = mk.getNettobetrag(); + if (betrag == null || betrag == 0) + { + betrag = mk.getBetrag(); + } + if (mk.getBetrag() < 0) + { + invoice.addItem(new Item( + new Product(mk.getZweck1(), "", "LS", + new BigDecimal(mk.getSteuersatz()).setScale(2, + RoundingMode.HALF_DOWN)), + new BigDecimal(betrag * -1).setScale(2, RoundingMode.HALF_DOWN), + new BigDecimal(-1.0))); + } + else + { + invoice.addItem(new Item(new Product(mk.getZweck1(), "", "LS", // LS = + // pauschal + new BigDecimal(mk.getSteuersatz()).setScale(2, + RoundingMode.HALF_DOWN)), + new BigDecimal(betrag).setScale(2, RoundingMode.HALF_DOWN), + new BigDecimal(1.0))); + } + } + ze.setTransaction(invoice); + ze.export(f.getAbsolutePath()); + ze.close(); + } + } diff --git a/src/de/jost_net/JVerein/io/FreiesFormularAusgabe.java b/src/de/jost_net/JVerein/io/FreiesFormularAusgabe.java index fb4ff5721..809349598 100644 --- a/src/de/jost_net/JVerein/io/FreiesFormularAusgabe.java +++ b/src/de/jost_net/JVerein/io/FreiesFormularAusgabe.java @@ -55,7 +55,7 @@ public FreiesFormularAusgabe(FreieFormulareControl control) throws IOException { case DRUCK: file = getDateiAuswahl("pdf", formular.getBezeichnung()); - formularaufbereitung = new FormularAufbereitung(file); + formularaufbereitung = new FormularAufbereitung(file, false); break; case MAIL: file = getDateiAuswahl("zip", formular.getBezeichnung()); @@ -94,7 +94,7 @@ public void aufbereitung(Formular formular, ArrayList mitglieder) continue; } File f = File.createTempFile(getDateiname(m), ".pdf"); - formularaufbereitung = new FormularAufbereitung(f); + formularaufbereitung = new FormularAufbereitung(f, false); aufbereitenFormular(m, formularaufbereitung, formular); formularaufbereitung.closeFormular(); zos.putNextEntry(new ZipEntry(getDateiname(m) + ".pdf")); diff --git a/src/de/jost_net/JVerein/io/IAdresse.java b/src/de/jost_net/JVerein/io/IAdresse.java index 32af7d521..2864a032c 100644 --- a/src/de/jost_net/JVerein/io/IAdresse.java +++ b/src/de/jost_net/JVerein/io/IAdresse.java @@ -45,4 +45,6 @@ public interface IAdresse public String getStaat() throws RemoteException; public String getGeschlecht() throws RemoteException; + + public String getStaatCode() throws RemoteException; } diff --git a/src/de/jost_net/JVerein/io/Migration.java b/src/de/jost_net/JVerein/io/Migration.java index 0c0230dd0..711dceb9c 100755 --- a/src/de/jost_net/JVerein/io/Migration.java +++ b/src/de/jost_net/JVerein/io/Migration.java @@ -33,6 +33,7 @@ import de.jost_net.JVerein.gui.input.GeschlechtInput; import de.jost_net.JVerein.io.Adressbuch.Adressaufbereitung; import de.jost_net.JVerein.keys.Datentyp; +import de.jost_net.JVerein.keys.Staat; import de.jost_net.JVerein.keys.Zahlungsweg; import de.jost_net.JVerein.rmi.Arbeitseinsatz; import de.jost_net.JVerein.rmi.Beitragsgruppe; @@ -750,7 +751,11 @@ else if (zahlart.equalsIgnoreCase("u") getResultFrom(results, InternalColumns.KTOIADRESSIERUNGSZUSATZ)); m.setKtoiPlz(getResultFrom(results, InternalColumns.KTOIPLZ)); m.setKtoiOrt(getResultFrom(results, InternalColumns.KTOIORT)); - m.setKtoiStaat(getResultFrom(results, InternalColumns.KTOISTAAT)); + String staat = getResultFrom(results, InternalColumns.KTOISTAAT); + if (staat != null && staat.length() != 0) + { + m.setStaat(getStaat(staat)); + } m.setKtoiEmail(getResultFrom(results, InternalColumns.KTOIEMAIL)); Integer bg = beitragsGruppen .get(getResultFrom(results, InternalColumns.BEITRAGSART)); @@ -861,8 +866,11 @@ else if (personenArt.matches("^(n|N).*")) m.setHandy(getResultFrom(results, InternalColumns.TELEMOBIL)); m.setAdressierungszusatz(getResultFrom(results, InternalColumns.ADRZUSATZ)); - m.setStaat(getResultFrom(results, InternalColumns.STAAT)); // Default was - // null warum? + staat = getResultFrom(results, InternalColumns.STAAT); + if (staat != null && staat.length() != 0) + { + m.setStaat(getStaat(staat)); + } String zahlungsrhythmus = getResultFrom(results, InternalColumns.ZAHLRYTHM); if (zahlungsrhythmus.length() > 0) @@ -1175,4 +1183,19 @@ private void loescheBestand() } } + String getStaat(String staat) throws ApplicationException + { + if (Staat.getByKey(staat.toUpperCase()) != null) + { + return staat.toUpperCase(); + } + else if (Staat.getByText(staat.toUpperCase()) != null) + { + return Staat.getByText(staat.toUpperCase()).getKey(); + } + else + { + throw new ApplicationException("Staat nicht erkannt: " + staat); + } + } } diff --git a/src/de/jost_net/JVerein/io/MitgliederImport.java b/src/de/jost_net/JVerein/io/MitgliederImport.java index 407ef7d62..5d9fff1b7 100644 --- a/src/de/jost_net/JVerein/io/MitgliederImport.java +++ b/src/de/jost_net/JVerein/io/MitgliederImport.java @@ -17,6 +17,7 @@ import de.jost_net.JVerein.keys.ArtBeitragsart; import de.jost_net.JVerein.keys.Beitragsmodel; import de.jost_net.JVerein.keys.Datentyp; +import de.jost_net.JVerein.keys.Staat; import de.jost_net.JVerein.keys.Zahlungsrhythmus; import de.jost_net.JVerein.keys.Zahlungstermin; import de.jost_net.JVerein.keys.Zahlungsweg; @@ -695,7 +696,18 @@ else if (Einstellungen.getEinstellung().getGeburtsdatumPflicht() String ktoistaat = results.getString("ktoistaat"); if (ktoistaat != null && ktoistaat.length() != 0) { - m.setKtoiStaat(ktoistaat); + if(Staat.getByText(ktoistaat.toUpperCase()) != null) + { + m.setKtoiStaat(Staat.getByText(ktoistaat.toUpperCase()).getKey()); + } + else if(Staat.getByKey(ktoistaat.toUpperCase()) != null) + { + m.setKtoiStaat(ktoistaat.toUpperCase()); + } + else + { + throw new ApplicationException("Zeile " + anz + ": Kontoinhaber Staat nicht erkannt: " + ktoistaat); + } } } catch (SQLException e) @@ -828,7 +840,18 @@ else if (Einstellungen.getEinstellung().getGeburtsdatumPflicht() String staat = results.getString("staat"); if (staat != null && staat.length() != 0) { - m.setStaat(staat); + if(Staat.getByKey(staat.toUpperCase()) != null) + { + m.setStaat(staat.toUpperCase()); + } + else if(Staat.getByText(staat.toUpperCase()) != null) + { + m.setStaat(Staat.getByText(staat.toUpperCase()).getKey()); + } + else + { + throw new ApplicationException("Zeile " + anz + ": Staat nicht erkannt: " + staat); + } } } catch (SQLException e) diff --git a/src/de/jost_net/JVerein/io/Rechnungsausgabe.java b/src/de/jost_net/JVerein/io/Rechnungsausgabe.java index 7141022d5..889120712 100644 --- a/src/de/jost_net/JVerein/io/Rechnungsausgabe.java +++ b/src/de/jost_net/JVerein/io/Rechnungsausgabe.java @@ -72,7 +72,7 @@ public Rechnungsausgabe(RechnungControl control, RechnungControl.TYP typ) { case DRUCK: file = getDateiAuswahl("pdf"); - formularaufbereitung = new FormularAufbereitung(file); + formularaufbereitung = new FormularAufbereitung(file, true); break; case MAIL: file = getDateiAuswahl("zip"); @@ -131,13 +131,12 @@ public void aufbereitung(Formular formular) aufbereitenFormular(re, formularaufbereitung, formular); break; case MAIL: - File f = File.createTempFile(getDateiname(re), - ".pdf"); - formularaufbereitung = new FormularAufbereitung(f); + File f = File.createTempFile(getDateiname(re), ".pdf"); + formularaufbereitung = new FormularAufbereitung(f, true); aufbereitenFormular(re, formularaufbereitung, formular); formularaufbereitung.closeFormular(); - zos.putNextEntry( - new ZipEntry(getDateiname(re) + ".pdf")); + formularaufbereitung.addZUGFeRD(re, typ == TYP.MAHNUNG); + zos.putNextEntry(new ZipEntry(getDateiname(re) + ".pdf")); FileInputStream in = new FileInputStream(f); // buffer size byte[] b = new byte[1024]; @@ -154,6 +153,12 @@ public void aufbereitung(Formular formular) { case DRUCK: formularaufbereitung.showFormular(); + if (rechnungen.size() == 1) + { + rechnungen.begin(); + formularaufbereitung.addZUGFeRD(rechnungen.next(), + typ == TYP.MAHNUNG); + } break; case MAIL: zos.close(); diff --git a/src/de/jost_net/JVerein/keys/Staat.java b/src/de/jost_net/JVerein/keys/Staat.java new file mode 100644 index 000000000..881ed66df --- /dev/null +++ b/src/de/jost_net/JVerein/keys/Staat.java @@ -0,0 +1,160 @@ +/********************************************************************** + * Copyright (c) by Heiner Jostkleigrewe + * This program is free software: you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without + * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, + * see . + * + * heiner@jverein.de + * www.jverein.de + **********************************************************************/ +package de.jost_net.JVerein.keys; + +import java.rmi.RemoteException; + +public enum Staat +{ + //Abchasien (Georgien) + AB ("ABCHASIEN"), + AL ("ALBANIEN"), + AD ("ANDORRA"), + AM ("ARMENIEN"), + AZ ("ASERBAIDSCHAN"), + BY ("BELARUS"), + BE ("BELGIEN"), + //Bergkarabach (Armenien/Aserbaidschan) + AR ("BERGKARABACH"), + BA ("BOSNIEN UND HERZEGOWINA"), + BG ("BULGARIEN"), + DK ("DÄNEMARK"), + DE ("DEUTSCHLAND"), + EE ("ESTLAND"), + FI ("FINNLAND"), + FR ("FRANKREICH"), + GE ("GEORGIEN"), + GR ("GRIECHENLAND"), + IE ("IRLAND"), + IS ("ISLAND"), + IT ("ITALIEN"), + CA ("KANADA"), + KZ ("KASACHSTAN"), + XK ("KOSOVO"), + HR ("KROATIEN"), + LV ("LETTLAND"), + LI ("LIECHTENSTEIN"), + LT ("LITAUEN"), + LU ("LUXEMBURG"), + MT ("MALTA"), + MD ("MOLDAU, REPUBLIK"), + MC ("MONACO"), + ME ("MONTENEGRO"), + NL ("NIEDERLANDE"), + MK ("NORDMAZEDONIEN"), + //Nordzypern (Türkei) + NC ("NORDZYPERN"), + NO ("NORWEGEN"), + AT ("ÖSTERREICH"), + PL ("POLEN"), + PT ("PORTUGAL"), + RO ("RUMÄNIEN"), + RU ("RUSSISCHE FÖDERATION"), + SM ("SAN MARINO"), + SE ("SCHWEDEN"), + CH ("SCHWEIZ"), + RS ("SERBIEN"), + SK ("SLOWAKEI"), + SI ("SLOWENIEN"), + ES ("SPANIEN"), + //Südossetien (Georgien) + SO ("SÜDOSSETIEN"), + //Transnistrien (Republik Moldau) + TN ("TRANSNISTRIEN"), + CZ ("TSCHECHIEN"), + TR ("TÜRKEI"), + UA ("UKRAINE"), + HU ("UNGARN"), + VA ("VATIKANSTADT"), + US ("VEREINIGTE STAATEN VON AMERIKA"), + GB ("VEREINIGTES KÖNIGREICH"), + CY ("ZYPERN"); + + private final String text; + + Staat(String text) + { + this.text = text; + } + + public String getText() + { + return text; + } + + public String getKey() + { + return this.name(); + } + + public static Staat getByKey(String key) + { + if(key == null) + { + return null; + } + for (Staat s : Staat.values()) + { + if (s.getKey().equals(key.toUpperCase())) + { + return s; + } + } + return null; + } + + public static Staat getByText(String text) + { + if(text == null) + { + return null; + } + for (Staat s : Staat.values()) + { + if (s.getText().equals(text.toUpperCase())) + { + return s; + } + } + return null; + } + + public static String getStaat(String code) throws RemoteException + { + if (Staat.getByKey(code) != null) + { + return Staat.getByKey(code).getText(); + } + // Wenn der Code nicht vorhanden ist, nehmen wir + // zur Kompatibilität den Text wie er in der DB Steht + return code; + } + + public static String getStaatCode(String code) throws RemoteException + { + // Wenn noch das ganze Land drin steht, bestimmen wir den Code + if (Staat.getByText(code) != null) + return Staat.getByText(code).getKey(); + return code; + } + + @Override + public String toString() + { + return getText(); + } +} diff --git a/src/de/jost_net/JVerein/rmi/Einstellung.java b/src/de/jost_net/JVerein/rmi/Einstellung.java index 577fb1c67..619119342 100644 --- a/src/de/jost_net/JVerein/rmi/Einstellung.java +++ b/src/de/jost_net/JVerein/rmi/Einstellung.java @@ -616,6 +616,14 @@ public void setCt1SepaVersion(SepaVersion sepaversion) public void setBeitragAltersstufen(String altersstufen) throws RemoteException; + public void setUStID(String ustid) throws RemoteException; + + public String getUStID() throws RemoteException; + + public void setStaat(String land) throws RemoteException; + + public String getStaat() throws RemoteException; + public Boolean getMittelverwendung() throws RemoteException; public void setMittelverwendung(Boolean mittelverwendung) throws RemoteException; diff --git a/src/de/jost_net/JVerein/rmi/Mitglied.java b/src/de/jost_net/JVerein/rmi/Mitglied.java index 25fe584a5..7b01d8ba7 100644 --- a/src/de/jost_net/JVerein/rmi/Mitglied.java +++ b/src/de/jost_net/JVerein/rmi/Mitglied.java @@ -225,4 +225,10 @@ public void setIndividuellerBeitrag(Double individuellerbeitrag) public Map getVariablen() throws RemoteException; + public String getKtoiStaatCode() throws RemoteException; + + public String getLeitwegID() throws RemoteException; + + public void setLeitwegID(String leitwegid) throws RemoteException; + } diff --git a/src/de/jost_net/JVerein/rmi/Rechnung.java b/src/de/jost_net/JVerein/rmi/Rechnung.java index 1129d5b88..49caf8946 100644 --- a/src/de/jost_net/JVerein/rmi/Rechnung.java +++ b/src/de/jost_net/JVerein/rmi/Rechnung.java @@ -111,4 +111,8 @@ public void setAdressierungszusatz(String adressierungszusatz) public String getIBAN() throws RemoteException; public void setIBAN(String iban) throws RemoteException; + + public String getLeitwegID() throws RemoteException; + + public void setLeitwegID(String leitwegid) throws RemoteException; } diff --git a/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0455.java b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0455.java new file mode 100644 index 000000000..f6c4543ec --- /dev/null +++ b/src/de/jost_net/JVerein/server/DDLTool/Updates/Update0455.java @@ -0,0 +1,47 @@ +/********************************************************************** + * This program is free software: you can redistribute it and/or modify it under the terms of the + * GNU General Public License as published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without + * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, + * see . + * + **********************************************************************/ +package de.jost_net.JVerein.server.DDLTool.Updates; + +import java.sql.Connection; + +import de.jost_net.JVerein.server.DDLTool.AbstractDDLUpdate; +import de.jost_net.JVerein.server.DDLTool.Column; +import de.willuhn.util.ApplicationException; +import de.willuhn.util.ProgressMonitor; + +public class Update0455 extends AbstractDDLUpdate +{ + public Update0455(String driver, ProgressMonitor monitor, Connection conn) + { + super(driver, monitor, conn); + } + + @Override + public void run() throws ApplicationException + { + { + execute(addColumn("einstellung", + new Column("staat", COLTYPE.CHAR, 2, null, false, false))); + + execute(addColumn("einstellung", + new Column("ustid", COLTYPE.VARCHAR, 20, null, false, false))); + + execute(addColumn("mitglied", + new Column("leitwegid", COLTYPE.VARCHAR, 50, null, false, false))); + + execute(addColumn("rechnung", + new Column("leitwegid", COLTYPE.VARCHAR, 50, null, false, false))); + } + } +} diff --git a/src/de/jost_net/JVerein/server/EinstellungImpl.java b/src/de/jost_net/JVerein/server/EinstellungImpl.java index 2fd1b5c0b..ad2d64482 100644 --- a/src/de/jost_net/JVerein/server/EinstellungImpl.java +++ b/src/de/jost_net/JVerein/server/EinstellungImpl.java @@ -2153,6 +2153,39 @@ public void setBeitragAltersstufen(String altersstufen) throws RemoteException } @Override + public String getStaat() throws RemoteException + { + String staat = (String) getAttribute("staat"); + if (staat == null || staat.length() == 0) + { + return "DE"; + } + return staat; + } + + @Override + public void setStaat(String staat) throws RemoteException + { + setAttribute("staat", staat); + } + + @Override + public String getUStID() throws RemoteException + { + String ustid = (String) getAttribute("ustid"); + if (ustid == null) + { + return ""; + } + return ustid; + } + + @Override + public void setUStID(String ustid) throws RemoteException + { + setAttribute("ustid", ustid); + } + public Boolean getMittelverwendung() throws RemoteException { return Util.getBoolean(getAttribute("mittelverwendung")); diff --git a/src/de/jost_net/JVerein/server/KursteilnehmerImpl.java b/src/de/jost_net/JVerein/server/KursteilnehmerImpl.java index 3f5a13a99..c4e2a769e 100644 --- a/src/de/jost_net/JVerein/server/KursteilnehmerImpl.java +++ b/src/de/jost_net/JVerein/server/KursteilnehmerImpl.java @@ -22,6 +22,7 @@ import java.util.Date; import de.jost_net.JVerein.Einstellungen; +import de.jost_net.JVerein.keys.Staat; import de.jost_net.JVerein.keys.Zahlungsweg; import de.jost_net.JVerein.rmi.Kursteilnehmer; import de.jost_net.JVerein.util.JVDateFormatTTMMJJJJ; @@ -275,7 +276,14 @@ public void setOrt(String ort) throws RemoteException @Override public String getStaat() throws RemoteException { - return (String) getAttribute("staat"); + return Staat.getStaat(getStaatCode()); + } + + @Override + public String getStaatCode() throws RemoteException + { + String code = (String) getAttribute("staat"); + return Staat.getStaatCode(code); } @Override diff --git a/src/de/jost_net/JVerein/server/LastschriftImpl.java b/src/de/jost_net/JVerein/server/LastschriftImpl.java index eba6e41d0..9a8ea8552 100644 --- a/src/de/jost_net/JVerein/server/LastschriftImpl.java +++ b/src/de/jost_net/JVerein/server/LastschriftImpl.java @@ -20,6 +20,7 @@ import java.util.Date; import de.jost_net.JVerein.io.IAdresse; +import de.jost_net.JVerein.keys.Staat; import de.jost_net.JVerein.rmi.Abrechnungslauf; import de.jost_net.JVerein.rmi.Kursteilnehmer; import de.jost_net.JVerein.rmi.Lastschrift; @@ -237,7 +238,14 @@ public void setOrt(String ort) throws RemoteException @Override public String getStaat() throws RemoteException { - return (String) getAttribute("staat"); + return Staat.getStaat(getStaatCode()); + } + + @Override + public String getStaatCode() throws RemoteException + { + String code = (String) getAttribute("staat"); + return Staat.getStaatCode(code); } @Override diff --git a/src/de/jost_net/JVerein/server/MitgliedImpl.java b/src/de/jost_net/JVerein/server/MitgliedImpl.java index 193dd998a..0ab6dc674 100644 --- a/src/de/jost_net/JVerein/server/MitgliedImpl.java +++ b/src/de/jost_net/JVerein/server/MitgliedImpl.java @@ -16,12 +16,21 @@ **********************************************************************/ package de.jost_net.JVerein.server; +import java.rmi.RemoteException; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Calendar; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + import de.jost_net.JVerein.Einstellungen; import de.jost_net.JVerein.gui.input.GeschlechtInput; import de.jost_net.JVerein.io.Adressbuch.Adressaufbereitung; import de.jost_net.JVerein.keys.ArtBeitragsart; import de.jost_net.JVerein.keys.Datentyp; import de.jost_net.JVerein.keys.SepaMandatIdSource; +import de.jost_net.JVerein.keys.Staat; import de.jost_net.JVerein.keys.Zahlungsrhythmus; import de.jost_net.JVerein.keys.Zahlungstermin; import de.jost_net.JVerein.keys.Zahlungsweg; @@ -50,14 +59,6 @@ import de.willuhn.logging.Logger; import de.willuhn.util.ApplicationException; -import java.rmi.RemoteException; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - public class MitgliedImpl extends AbstractDBObject implements Mitglied { @@ -537,26 +538,34 @@ public void setOrt(String ort) throws RemoteException @Override public String getStaat() throws RemoteException { - if (getAttribute("staat") != null) - { - return (String) getAttribute("staat"); - } - else - { - return ""; - } + return Staat.getStaat(getStaatCode()); + } + + @Override + public String getStaatCode() throws RemoteException + { + String code = (String) getAttribute("staat"); + return Staat.getStaatCode(code); } @Override public void setStaat(String staat) throws RemoteException { - if (staat != null) - { - staat = staat.toUpperCase(); - } setAttribute("staat", staat); } + @Override + public String getLeitwegID() throws RemoteException + { + return (String) getAttribute("leitwegid"); + } + + @Override + public void setLeitwegID(String leitwegid) throws RemoteException + { + setAttribute("leitwegid", leitwegid); + } + @Override public Integer getZahlungsweg() throws RemoteException { @@ -831,7 +840,14 @@ public void setKtoiOrt(String ktoiort) throws RemoteException @Override public String getKtoiStaat() throws RemoteException { - return (String) getAttribute("ktoistaat"); + return Staat.getStaat(getKtoiStaatCode()); + } + + @Override + public String getKtoiStaatCode() throws RemoteException + { + String code = (String) getAttribute("ktoistaat"); + return Staat.getStaatCode(code); } @Override diff --git a/src/de/jost_net/JVerein/server/RechnungImpl.java b/src/de/jost_net/JVerein/server/RechnungImpl.java index 3284d99d6..f1e5aaa7c 100644 --- a/src/de/jost_net/JVerein/server/RechnungImpl.java +++ b/src/de/jost_net/JVerein/server/RechnungImpl.java @@ -22,6 +22,7 @@ import de.jost_net.JVerein.Einstellungen; import de.jost_net.JVerein.io.IAdresse; +import de.jost_net.JVerein.keys.Staat; import de.jost_net.JVerein.rmi.Formular; import de.jost_net.JVerein.rmi.Mitglied; import de.jost_net.JVerein.rmi.Mitgliedskonto; @@ -202,7 +203,14 @@ public void setOrt(String ort) throws RemoteException @Override public String getStaat() throws RemoteException { - return (String) getAttribute("staat"); + return Staat.getStaat(getStaatCode()); + } + + @Override + public String getStaatCode() throws RemoteException + { + String code = (String) getAttribute("staat"); + return Staat.getStaatCode(code); } @Override @@ -333,4 +341,16 @@ public void setIBAN(String iban) throws RemoteException setAttribute("iban", iban); } + + @Override + public String getLeitwegID() throws RemoteException + { + return (String) getAttribute("leitwegid"); + } + + @Override + public void setLeitwegID(String leitwegid) throws RemoteException + { + setAttribute("leitwegid", leitwegid); + } }