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".
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 | - DebitorWrapper()
- getBic()
- getDateOfSEPAMandateSignature()
- getHasSEPAMandateChanged()
- setHasSEPAMandateChanged()
- getIban()
- getIsNewDebitorAgent()
- getName()
- getOriginalDebitorAccount()
- getSEPAMandateIdentification()
- getSEPASequenceTypeId()
- setIsNewDebitorAgent()
- setOriginalDebitorAccount()
- setSEPASequenceTypeId()
|
ReferenceWrapper | Anbindung an genutzte Referenzobjekte (Rechnungen,o.ä.) | org.nuclet.sepa.wrapper | - ReferenceWrapper()
- getDirectDebitReference()
- getReferenceDate()
|
PaymentReferenceWrapper | Anbindung an verwendete Zahlungsreferenzobjekte (Forderungen, Rechnungspositionen, etc.) | org.nuclet.mt940.wrapper | - PaymentReferenceWrapper()
- getAmount()
- setSEPAPaymentInformationId()
|
Tabelle 4.8.1: Übersicht Nuclet-Schnittstellen
4.7.1.1 DebitorWrapper
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? |
---|
CurrencyWrapper | Zuordnung des tatsächlich genutzten Businessobjektes | nein |
getIso4217Code() | liefert den dreistelligen ISO-4217-Code der Währung (z.B. "EUR", "USD", "GBP") | nein |
Tabelle 4.7.1.1: Anpassungen in CurrencyWrapper
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;
import de.bffs.Person;
/**
* 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 Person) {
this.businessObject = reference;
}
}
/**
* Liefert den Namen des Debitors
*
*/
public String getName()
{
return ((Person)this.businessObject).getName();
}
/**
* Liefert die SEPA-Mandatskennung
*/
public String getSEPAMandateIdentification()
{
return ((Person)this.businessObject).getSepaMandatskennung();
}
/**
* Liefert das Ausstellungsdatum des SEPA-Mandats
*/
public Date getDateOfSEPAMandateSignature()
{
return ((Person)this.businessObject).getDatumSepaMandatsausstellung();
}
/**
* Liefert Informationen darüber, ob sich das SEPA-Mandat auf Debitorenseite
* geändert hat
*/
public Boolean getHasSEPAMandateChanged()
{
return ((Person)this.businessObject).getSepaMandatsaenderung();
}
/**
* Setzt die Informationen darüber, ob sich das SEPA-Mandat auf Debitorenseite
* geändert hat
*/
public void setHasSEPAMandateChanged(final Boolean blnHasSEPAMandateChanged)
{
((Person)this.businessObject).setSepaMandatsaenderung(blnHasSEPAMandateChanged);
}
/**
* Liefert Informationen darüber, ob sich das Kreditinstitut auf Debitorenseite
* gewechselt wurde
*/
public Boolean getIsNewDebitorAgent()
{
return ((Person)this.businessObject).getBicVeraendert();
}
/**
* Setzt die Informationen darüber, ob sich das Kreditinstitut auf Debitorenseite
* gewechselt wurde
*/
public void setIsNewDebitorAgent(final Boolean blnIsNewDebitorAgent)
{
((Person)this.businessObject).setBicVeraendert(blnIsNewDebitorAgent);
}
/**
* Liefert die Datenbank-ID der SEPA-Laufzeit
*
*/
public Long getSEPASequenceTypeId()
{
return ((Person)this.businessObject).getSepaLaufzeitId();
}
/**
* Setzt die Datenbank-ID der SEPA-Laufzeit
*
*/
public void setSEPASequenceTypeId(final Long lngSEPASequenceTypeId)
{
((Person)this.businessObject).setSepaLaufzeitId(lngSEPASequenceTypeId);
}
/**
* Liefert den BIC für SEPA-Zahlungen
*
*/
public String getBic()
{
return ((Person)this.businessObject).getBic();
}
/**
* Liefert den IBAN für SEPA-Zahlungen
*
*/
public String getIban()
{
return ((Person)this.businessObject).getIban();
}
/**
* Liefert die alte IBAN bei SEPA-Mandatsänderungen
*
*/
public String getOriginalDebitorAccount()
{
return ((Person)this.businessObject).getIbanAlt();
}
/**
* Setzt die alte IBAN bei SEPA-Mandatsänderungen
*
*/
public void setOriginalDebitorAccount(final String strOriginalDebitorAccount)
{
((Person)this.businessObject).setIbanAlt(strOriginalDebitorAccount);
}
/**
* Setzt den Benutzerkontext
*
*/
public void setUserContext(final String strUserContext)
{
((Person)this.businessObject).setBenutzerkontext(strUserContext);
}
}
4.8.1.2 ReferenceWrapper
Die Klasse ConditionsOfPaymentWrapper dient als Nuclet-Schnittstelle für tatsächlich genutzte Zahlungsbedingungen.
Die Anpassungen sind optional: Werden keine Zahlungs- und Skontobedingungen verwendet, dann muss dieser Abschnitt nicht berücksichtigt werden.
Werden Skontobedingungen verwendet, dann sind die Getter-Methoden für Skontosatz und Skontofrist anzupassen.
Methode | Funktion | Anpassung optional? |
---|
ConditionsOfPaymentWrapper | Zuordnung des tatsächlich genutzten Businessobjektes | ja |
getCashDiscount() | liefert den Skontosatz | ja |
getCashDiscountPeriod() | liefert die Skontofrist (in Tagen) | ja |
getExtendedCashDiscount() | liefert den Skontosatz bei erweiterter Skontofrist | ja |
getExtendedCashDiscountPeriod() | liefert die erweiterte Skontofrist (in Tagen) | ja |
getCashDiscountExGratiaDays() | liefert die Kulanz (in Tagen) | 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();
}
}
4.7.1.3 PaymentReferenceWrapper
Die Klasse ReferenceWrapper dient als Nuclet-Schnittstelle zum tatsächlich genutzten Referenz-Businessobjekt.
Anzupassen sind der Konstruktor der Klasse sowie die folgenden Methoden:
Methode | Funktion | Anpassung optional? |
---|
ReferenceWrapper() | Zuordnung des tatsächlich genutzten Businessobjektes | nein |
getAcceptFirstIncomingPayment() | Liefert die Information darüber, ob die erste eingehende Zahlung den Statuswechsel m Referenzobjekt auslösen soll, d.h. den Statusübergang in Richtung "Bezahlt", "Beglichen", o.ä. | ja |
getBankTransactionRef() | Liefert alle zugeordneten Bankumsätze, indirekt über die Zwischenbusinessobjek "BankTransactionRef", d.h. es sollten alle Einträge des entsprechenden Unterformulars zurückgegeben werden. | nein |
getConditionsOfPayment() | Liefert die tatsächlich genutzten Zahlungsbedingungen als "gewrapptes" Objekt. | ja |
getDateOfInvoice() | Liefert das Zahlungsdatum. | ja |
getTotalAmountGross() | Liefert den Bruttogesamtbetrag des Referenzobjektes, d.h. den über eingehende Zahlung auszugleichenden Betrag. | nein |
setPaymentDate() | Setzt das "Payment Date" (Zahlungsdatum, Bezahlt am, o.ä.) im Referenzobjekt. | ja |
Tabelle 4.7.1.3: 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.mt940.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.Stateful;
import org.nuclos.api.provider.QueryProvider;
import org.nuclet.mt940.BankTransactionRef;
import org.nuclet.mt940.wrapper.ConditionsOfPaymentWrapper;
import org.nuclet.mt940.wrapper.AbstractConditionsOfPaymentWrapper;
// @replace!
//
// mit eigenem Code zu ersetzen, Beispiel:
//
// import org.nuclet.businessnuclet.ClientBilling;
// import org.nuclet.businessnuclet.ConditionsOfPayment;
/**
* Konkrete Wrapper-Klasse für Referenzobjekte (Rechnungen, o.ä.)
*
* @version 1.1
* @date 20.02.2014
* @nuclet org.nuclet.MT940
* @nucletversion 1.4.0
* @sincenucletversion 1.2.0
* @since 20.09.2013
*
* @author frank.lehmann@nuclos.de
*/
public class ReferenceWrapper extends AbstractReferenceWrapper
{
public ReferenceWrapper(final BusinessObject reference)
{
// @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen!
//
// Beispiel:
//
// if (reference instanceof ClientBilling) {
// this.businessObject = reference;
// }
}
/**
* Liefert die Referenz-Nummer, anhand derer der Datensatz eindeutig
* zu identifizieren ist
*/
public String getReferenceNumber()
{
// @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen!
//
// Beispiel:
//
// return ((ClientBilling)this.businessObject).getBillingNumber();
return null;
}
/**
* Liefert die Information darüber, ob die erste eingehende Zahlung den Statuswechsel
* im Referenzobjekt auslösen soll, d.h. den Statusübergang in Richtung "Bezahlt",
* "Beglichen", o.ä.
*/
public Boolean getAcceptFirstIncomingPayment()
{
// @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen!
//
// Beispiel:
//
// return ((ClientBilling)this.businessObject).getAcceptFirstIncomingPayment();
return Boolean.FALSE;
}
/**
* Liefert alle zugeordneten Bankumsätze, indirekt über die Zwischenentität "BankTransactionRef",
* d.h. es sollten alle Einträge des entsprechenden Unterformulars zurückgegeben werden.
*
*/
public List<BankTransactionRef> getBankTransactionRef()
{
// @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen!
//
// Beispiel:
//
// ((ClientBilling)this.businessObject).getBankTransactionRef();
return null;
}
/**
* Liefert die tatsächlich genutzten Zahlungsbedingungen als "gewrapptes" Objekt.
*
*/
public AbstractConditionsOfPaymentWrapper getConditionsOfPayment()
{
// @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen!
//
// Beispiel:
//
// final Long lngConditionsOfPaymentId = ((ClientBilling)this.businessObject).getConditionsOfPaymentId();
// final ConditionsOfPayment boConditionsOfPayment = QueryProvider.getById(ConditionsOfPayment.class, lngConditionsOfPaymentId);
//
// return new ConditionsOfPaymentWrapper(boConditionsOfPayment);
return null;
}
/**
* Liefert das Zahlungsdatum.
*
*/
public Date getDateOfInvoice()
{
// @replace Bitte bei Nuclet-Integration mit eigenem Code ersetzen!
//
// Beispiel:
//
// return ((ClientBilling)this.businessObject).getBillingDate();
return null;
}
/**
* Liefert den Bruttogesamtbetrag des Referenzobjektes, d.h. den über eingehende
* Zahlung auszugleichenden Betrag.
*
*/
public BigDecimal getTotalAmountGross()
{
// @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen!
//
// Beispiel:
//
// return ((ClientBilling)this.businessObject).getTotalAmountGross();
return BigDecimal.ZERO;
}
/**
* Setzt das "Payment Date" (Zahlungsdatum, Bezahlt am, o.ä.) im Referenzobjekt.
*
* @param datPaymentDate
*
*/
public void setPaymentDate(final Date datPaymentDate)
{
// @replace! Bitte bei Nuclet-Integration mit eigenem Code ersetzen!
//
// Beispiel:
//
// ((ClientBilling)this.businessObject).setPaymentDate(datPaymentDate);
}
}