Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 4 Nächste Version anzeigen »

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-KlasseFunktionJava-PackageAnzupassende Methoden/Konstruktoren
DebitorWrapperAnbindung an verwendete Debitoren, Kunden, o.ä.org.nuclet.sepa.wrapper
  • DebitorWrapper()

  • getBic()
  • getDateOfSEPAMandateSignature()
  • getHasSEPAMandateChanged()
  • setHasSEPAMandateChanged()
  • getIban()
  • getIsNewDebitorAgent()
  • getName()
  • getOriginalDebitorAccount()
  • getSEPAMandateIdentification()
  • getSEPASequenceTypeId()

  • setIsNewDebitorAgent()
  • setOriginalDebitorAccount()
  • setSEPASequenceTypeId()
ReferenceWrapperAnbindung an genutzte Referenzobjekte (Rechnungen,o.ä.)org.nuclet.sepa.wrapper
  • ReferenceWrapper()

  • getDirectDebitReference()
  • getReferenceDate()
PaymentReferenceWrapperAnbindung 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.

MethodeFunktionAnpassung optional?
CurrencyWrapperZuordnung des tatsächlich genutzten Businessobjektesnein
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.

org.nuclet.mt940.wrapper.CurrencyWrapper
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.

MethodeFunktionAnpassung optional?
ConditionsOfPaymentWrapperZuordnung des tatsächlich genutzten Businessobjektesja
getCashDiscount()

liefert den Skontosatz

ja
getCashDiscountPeriod()

liefert die Skontofrist (in Tagen)

ja
getExtendedCashDiscount()liefert den Skontosatz bei erweiterter Skontofristja
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.

org.nuclet.mt940.wrapper.ConditionsOfPaymentWrapper
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:

MethodeFunktionAnpassung optional?
ReferenceWrapper()Zuordnung des tatsächlich genutzten Businessobjektesnein
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.

org.nuclet.mt940.wrapper.ReferenceWrapper
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);
    }
    
    
}
  • Keine Stichwörter