Ziel dieses Schrittes ist, das tatsächlich im Zielnuclet verwendeten Businessobjekt an den Java-Code des SEPA-Nuclets anzubinden. Dazu wird der Ansatz verfolgt, Nuclet-unabhängige Wrapper-Klassen zu verwenden – anstelle der zu den Businessobjekten generierten Businessobjekt-Klassen.
Zu den technischen Hintergründen lesen Sie dazu bitte auch den Artikel "Schnittstellen in Java-Regeln".
Dieser Integrationsschritt kann erst durchgeführt werden, sobald die Vorbedingungen aus Abschnitt 3 erfüllt sind – d.h. sobald entsprechende Attribute in den genutzten Businessobjekten existieren. |
Bei der Anbindung des SEPA-Nuclets sind Wrapper-Klassen für Debitoren (Kunden, o.ä.), Referenzen (Rechnungen, Belege, o.ä.) und Zahlungsreferenzen (Forderungen, Rechnungspositionen, o.ä.) anzupassen.
Wrapper-Klasse | Funktion | Java-Package | Anzupassende Methoden/Konstruktoren |
---|---|---|---|
DebitorWrapper | Anbindung an verwendete Debitoren, Kunden, o.ä. | org.nuclet.sepa.wrapper |
|
ReferenceWrapper | Anbindung an genutzte Referenzobjekte (Rechnungen,o.ä.) | org.nuclet.sepa.wrapper |
|
PaymentReferenceWrapper | Anbindung an verwendete Zahlungsreferenzobjekte (Forderungen, Rechnungspositionen, etc.) | org.nuclet.mt940.wrapper |
|
Tabelle 4.8.1: Übersicht Nuclet-Schnittstellen
Die Klasse CurrencyWrapper dient als Nuclet-Schnittstelle zur tatsächlich genutzten Währungsbusinessobjekt.
Der Konstruktor der Klasse und die Methode getIso4217Code() sind mit anwendungsspezifischem Verhalten zu befüllen. Letztere Methode sollte den ISO-4217-Währungscode (siehe dazu Wikipedia) des Währunsobjektes zurückliefern.
Methode | Funktion | Anpassung optional? |
---|---|---|
DebitorWrapper | Zuordnung des tatsächlich genutzten Businessobjektes | nein |
| ||
getBic() | nein | |
getDateOfSEPAMandateSignature() | nein | |
getHasSEPAMandateChanged() | nein | |
getIban() | nein | |
getIsNewDebitorAgent() | nein | |
getName() | nein | |
getOriginalDebitorAccount() | nein | |
getSEPAMandateIdentification() | nein | |
getSEPASequenceTypeId() | nein | |
setHasSEPAMandateChanged() | nein | |
setIsNewDebitorAgent() | nein | |
setOriginalDebitorAccount() | nein | |
setSEPASequenceTypeId() | nein | |
setUserContext() | nein |
Tabelle 4.7.1.1: Anpassungen in DebitorWrapper
Beispiele dazu sind in Kommentarblöcken angegeben; diese Beispiele sind bei der Integration also an die tatsächlich genutzte Währungsbusinessobjekt (bzw. deren BusinessObject-Klasse) anzupassen.
package org.nuclet.sepa.wrapper; import java.math.BigDecimal; import java.util.Date; import java.util.List; import org.nuclos.api.businessobject.BusinessObject; import org.nuclos.api.businessobject.facade.Modifiable; import org.nuclos.api.businessobject.facade.Stateful; // @replace! // // import org.nuclet.businesstemplate.Client; /** * Wrapper implementation for debitors * * @version 1.0 * @date 21.03.2014 * @nuclet org.nuclet.SEPA * @nucletversion 1.0.0 * @sincenucletversion 1.0.0 * @since 21.03.2014 * * @author frank.lehmann@nuclos.de * */ public class DebitorWrapper extends AbstractDebitorWrapper { public DebitorWrapper(final Modifiable reference) { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // if (reference instanceof Client) { // this.businessObject = reference; // } } /** * Liefert den Namen des Debitors * */ public String getName() { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // return ((Client)this.businessObject).getName(); return null; } /** * Liefert die SEPA-Mandatskennung */ public String getSEPAMandateIdentification() { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // return ((Client)this.businessObject).getSEPAMandateIdentification(); return null; } /** * Liefert das Ausstellungsdatum des SEPA-Mandats */ public Date getDateOfSEPAMandateSignature() { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // return ((Client)this.businessObject).getDateOfSEPAMandateSignature(); return null; } /** * Liefert Informationen darüber, ob sich das SEPA-Mandat auf Debitorenseite * geändert hat */ public Boolean getHasSEPAMandateChanged() { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // return ((Client)this.businessObject).getHasSEPAMandateChanged(); return null; } /** * Setzt die Informationen darüber, ob sich das SEPA-Mandat auf Debitorenseite * geändert hat */ public void setHasSEPAMandateChanged(final Boolean blnHasSEPAMandateChanged) { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // ((Client)this.businessObject).setHasSEPAMandateChanged(blnHasSEPAMandateChanged); } /** * Liefert Informationen darüber, ob sich das Kreditinstitut auf Debitorenseite * gewechselt wurde */ public Boolean getIsNewDebitorAgent() { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // return ((Client)this.businessObject).getIsNewDebitorAgent(); return null; } /** * Setzt die Informationen darüber, ob sich das Kreditinstitut auf Debitorenseite * gewechselt wurde */ public void setIsNewDebitorAgent(final Boolean blnIsNewDebitorAgent) { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // ((Client)this.businessObject).setIsNewDebitorAgent(blnIsNewDebitorAgent); } /** * Liefert die Datenbank-ID der SEPA-Laufzeit * */ public Long getSEPASequenceTypeId() { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // return ((Client)this.businessObject).getSEPASequenceTypeId(); return null; } /** * Setzt die Datenbank-ID der SEPA-Laufzeit * */ public void setSEPASequenceTypeId(final Long lngSEPASequenceTypeId) { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // ((Client)this.businessObject).setSEPASequenceTypeId(lngSEPASequenceTypeId); } /** * Liefert den BIC für SEPA-Zahlungen * */ public String getBic() { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // return ((Client)this.businessObject).getBic(); return null; } /** * Liefert den IBAN für SEPA-Zahlungen * */ public String getIban() { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // return ((Client)this.businessObject).getIban(); return null; } /** * Liefert die alte IBAN bei SEPA-Mandatsänderungen * */ public String getOriginalDebitorAccount() { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // return ((Client)this.businessObject).getOriginalDebitorAccount(); return null; } /** * Setzt die alte IBAN bei SEPA-Mandatsänderungen * */ public void setOriginalDebitorAccount(final String strOriginalDebitorAccount) { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // // ((Client)this.businessObject).setOriginalDebitorAccount(strOriginalDebitorAccount); } } |
Die Klasse ReferenceWrapper dient als Nuclet-Schnittstelle für tatsächlich genutzte Referenzobjekte (Rechnungen, Forderungen, Belege, etc.).
Das sind jene Objekte, die bei SEPA-Exporten als Referenz für Zahlungsanweisungen verwendet werden.
Methode | Funktion | Anpassung optional? |
---|---|---|
ReferenceWrapper | Zuordnung des tatsächlich genutzten Businessobjektes | nein |
getDebitorId() | liefert die Datenbank-ID des Debitoren | ja |
getDirectDebitReference() | liefert das Identifizierungsmerkmal für Lastschriften (also z.B. die Rechnungsnummer) | ja |
getReferenceDate() | liefert ein Referenzdatum (bspw. das Rechnungsdatum) | ja |
Tabelle 4.7.1.2: Anpassungen in ReferenceWrapper
Beispiele dazu sind in Kommentarblöcken angegeben; diese Beispiele sind bei der Integration also an das tatsächlich genutzte Businessobjekt (bzw. deren BusinessObject-Klasse) anzupassen.
package org.nuclet.sepa.wrapper; import java.math.BigDecimal; import java.util.Date; import java.util.List; import org.nuclos.api.businessobject.BusinessObject; import org.nuclos.api.businessobject.facade.Modifiable; import org.nuclos.api.businessobject.facade.Stateful; import de.bffs.Rechnung; /** * Abstract wrapper class for debitors (client billings, invoices, etc.) * * @version 1.0 * @date 21.03.2014 * @nuclet org.nuclet.SEPA * @nucletversion 1.0.0 * @sincenucletversion 1.0.0 * @since 21.03.2014 * * @author frank.lehmann@nuclos.de * */ public class ReferenceWrapper extends AbstractReferenceWrapper { public ReferenceWrapper(final Modifiable reference) { // @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen! // // Beispiel: // if (reference instanceof Rechnung) { this.businessObject = reference; } } /** * Liefert die Datenbank-ID des Debitoren * */ public Long getDebitorId() { return ((Rechnung)this.businessObject).getMitgliedId(); } /** * Liefert das Identifizierungsmerkmal für Lastschriften (z.B. die Rechnungsnummer) * */ public String getDirectDebitReference() { return ((Rechnung)this.businessObject).getRechnungsnummer(); } /** * Liefert ein Referenzdatum (bspw. das Rechnungsdatum) * */ public Date getReferenceDate() { return ((Rechnung)this.businessObject).getRechnungsdatum(); } } |
Die Klasse PaymentReferenceWrapper dient als Nuclet-Schnittstelle zum tatsächlich genutzten Businessobjekt für Zahlungsreferenzen.
Mit Zahlungsreferenzen sind jene Objekte gemeint, :
Methode | Funktion | Anpassung optional? |
---|---|---|
PaymentReferenceWrapper() | Zuordnung des tatsächlich genutzten Businessobjektes | nein |
getAmount() | liefert den zu zahlenden Betrag | nein |
getReferenceId() | liefert die Datenbank-ID des übergeordneten Referenzobjektes (siehe 4.7.1.2) | nein |
setSEPAExportDate() | setzt das Export-Datum nach erfolgtem SEPA-Export | nein |
setSEPAPaymentInformationId() | setzt die SEPA-Zahlungsinformation nach erfolgtem SEPA-Export | nein |
Tabelle 4.7.1.3: Anpassungen in PaymentReferenceWrapper
Beispiele dazu sind in Kommentarblöcken angegeben; diese Beispiele sind bei der Integration also an das tatsächlich genutzte Businessobjekt (bzw. deren BusinessObject-Klasse) anzupassen.
package org.nuclet.sepa.wrapper; import java.math.BigDecimal; import java.util.Date; import java.util.List; import org.nuclos.api.businessobject.BusinessObject; import org.nuclos.api.businessobject.facade.Modifiable; import org.nuclos.api.businessobject.facade.Stateful; /** * Abstract wrapper class for SEPA references (invoices, due payments, etc.) * * @version 1.0 * @date 21.03.2014 * @nuclet org.nuclet.SEPA * @nucletversion 1.0.0 * @sincenucletversion 1.0.0 * @since 21.03.2014 * * @author frank.lehmann@nuclos.de * */ public abstract class AbstractPaymentReferenceWrapper { // das "gewrappte" BusinessObjekt (Stateful) protected Modifiable businessObject = null; public Modifiable getBusinessObject() { return this.businessObject; } /** * Liefert die Datenbank-ID */ public Long getId() { return this.businessObject.getId(); } /** * Liefert die Datenbank-ID des übergeordneten Referenzobjektes * (also bspw. die ID der Rechnung, falls es sich bei den Zahlungsreferenzen um * Rechnungspositionen handelt) * */ public abstract Long getReferenceId(); /** * Liefert den Zahlungsbetrag * */ public abstract BigDecimal getAmount(); public abstract void setSEPAPaymentInformationId(final Long lngSEPAPaymentInformationId); public abstract void setSEPAExportDate(final Date datSEPAExportDate); } |