<?php
/////////////////////////////////////////////////////////////////////////////////
// Objects
/////////////////////////////////////////////////////////////////////////////////

namespace EpayBL;

class ZahlverfahrenListErgebnis
{
  private $ergebnis;
  private $date;
  private $zahlverfahren;

  public function __construct($ergebnis, $date, $zahlverfahren)
  {
    $this->init($ergebnis, $date, $zahlverfahren);
  }

  private function init($ergebnis, $date, $zahlverfahren)
  {
    $this->ergebnis = $ergebnis;
    $this->date = $date;
    $this->zahlverfahren = $zahlverfahren;
  }

  public function getErgebnis()
  {
    return $this->ergebnis;
  }

  public function getDate()
  {
    return $this->date;
  }

  public function getZahlverfahren()
  {
    return $this->zahlverfahren;
  }

  public function toString()
  {
    return '{"ergebnis":' . json_encode($this->ergebnis) . ',"date":' . json_encode($this->date) . ',"zahlverfahren":' . json_encode($this->zahlverfahren) . '}';
  }
}

class KassenzeichenstatusErgebnis
{
  private $ergebnis;
  private $date;
  private $kassenzeichen;

  public function __construct($ergebnis, $date, $kassenzeichen)
  {
    $this->init($ergebnis, $date, $kassenzeichen);
  }

  private function init($ergebnis, $date, $kassenzeichen)
  {
    $this->ergebnis = $ergebnis;
    $this->date = $date;
    $this->kassenzeichen = $kassenzeichen;
  }

  public function getErgebnis()
  {
    return $this->ergebnis;
  }

  public function getDate()
  {
    return $this->date;
  }

  public function getKassenzeichen()
  {
    return $this->kassenzeichen;
  }

  public function toString()
  {
    return '{"ergebnis":' . json_encode($this->ergebnis) . ',"date":' . json_encode($this->date) . ',"kassenzeichen":' . json_encode($this->kassenzeichen) . '}';
  }
}

class ErgebnisErgebnis
{
  private $ergebnis;
  private $date;

  public function __construct($ergebnis, $date)
  {
    $this->init($ergebnis, $date);
  }

  private function init($ergebnis, $date)
  {
    $this->ergebnis = $ergebnis;
    $this->date = $date;
  }

  public function getErgebnis()
  {
    return $this->ergebnis;
  }

  public function getDate()
  {
    return $this->date;
  }

  public function toString()
  {
    return '{"ergebnis":' . json_encode($this->ergebnis) . ',"date":' . json_encode($this->date) . '}';
  }
}

class ZahlvorgangsErgebnis
{
  private $ergebnis;
  private $date;
  private $zahlvorgangsInfo;

  public function __construct($ergebnis, $date, $zahlvorgangsInfo)
  {
    $this->init($ergebnis, $date, $zahlvorgangsInfo);
  }

  private function init($ergebnis, $date, $zahlvorgangsInfo)
  {
    $this->ergebnis = $ergebnis;
    $this->date = $date;
    $this->zahlvorgangsInfo = $zahlvorgangsInfo;
  }

  public function getErgebnis()
  {
    return $this->ergebnis;
  }

  public function getDate()
  {
    return $this->date;
  }

  public function getZahlvorgangsInfo()
  {
    return $this->zahlvorgangsInfo;
  }

  public function toString()
  {
    return '{"ergebnis":' . json_encode($this->ergebnis) . ',"date":' . json_encode($this->date) . ',"zahlvorgangsInfo":' . json_encode($this->zahlvorgangsInfo) . '}';
  }
}

class SepamandatErgebnis
{
  private $ergebnis;
  private $date;
  private $sepamandatErgebnisdaten;

  public function __construct($ergebnis, $date, $sepamandatErgebnisdaten)
  {
    $this->init($ergebnis, $date, $sepamandatErgebnisdaten);
  }

  private function init($ergebnis, $date, $sepamandatErgebnisdaten)
  {
    $this->ergebnis = $ergebnis;
    $this->date = $date;
    $this->sepamandatErgebnisdaten = $sepamandatErgebnisdaten;
  }

  public function getErgebnis()
  {
    return $this->ergebnis;
  }

  public function getDate()
  {
    return $this->date;
  }

  public function getSepamandatErgebnisdaten()
  {
    return $this->sepamandatErgebnisdaten;
  }

  public function toString()
  {
    return '{"ergebnis":' . json_encode($this->ergebnis) . ',"date":' . json_encode($this->date) . ',"sepamandatErgebnisdaten":' . json_encode($this->sepamandatErgebnisdaten) . '}';
  }
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// classes for the request body
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

class SepamandatInternReferenz
{
  private $xxtypetagxx;
  private $mandatreferenz;

  public function __construct()
  {
    $this->init();
  }

  private function init()
  {
    $this->xxtypetagxx = 'SepamandatInternReferenz';
  }

  public function setMandatreferenz($mandatreferenz)
  {
    $this->mandatreferenz = $mandatreferenz;
  }

  public function toJson()
  {
    return '{"xxtypetagxx":' . json_encode($this->xxtypetagxx) . ',"mandatreferenz":' . json_encode($this->mandatreferenz) . '}';
  }
}

class SepaMandatInternAnlegedaten
{
  private $xxtypetagxx;
  private $mandatreferenz;
  private $einmalmandat;
  private $type;
  private $kundennummer;
  private $glaeubigerId;
  private $zeichnungsberechtigter;
  private $kontoinhaberWeichtAb;
  private $kontoinhaberNachname;
  private $kontoinhaberVorname;
  private $kontoinhaberStrasse;
  private $kontoinhaberHausnummer;
  private $kontoinhaberPLZ;
  private $kontoinhaberStadt;
  private $kontoinhaberLand;
  private $kontoinhaberBankname;
  private $kontoinhaberIban;
  private $kontoinhaberBic;

  public function __construct()
  {
    $this->init();
  }

  private function init()
  {
    $this->xxtypetagxx = 'SepaMandatInternAnlegedaten';
  }

  public function setMandatreferenz($mandatreferenz)
  {
    $this->mandatreferenz = $mandatreferenz;
  }

  public function setEinmalmandat($einmalmandat)
  {
    $this->einmalmandat = $einmalmandat;
  }

  public function setType($type)
  {
    $this->type = $type;
  }

  public function setKundennummer($kundennummer)
  {
    $this->kundennummer = $kundennummer;
  }

  public function setGlaeubigerId($glaeubigerId)
  {
    $this->glaeubigerId = $glaeubigerId;
  }

  public function setZeichnungsberechtigter($zeichnungsberechtigter)
  {
    $this->zeichnungsberechtigter = $zeichnungsberechtigter;
  }

  public function setKontoinhaberWeichtAb($kontoinhaberWeichtAb)
  {
    $this->kontoinhaberWeichtAb = $kontoinhaberWeichtAb;
  }

  public function setKontoinhaberNachname($kontoinhaberNachname)
  {
    $this->kontoinhaberNachname = $kontoinhaberNachname;
  }

  public function setKontoinhaberVorname($kontoinhaberVorname)
  {
    $this->kontoinhaberVorname = $kontoinhaberVorname;
  }

  public function setKontoinhaberStrasse($kontoinhaberStrasse)
  {
    $this->kontoinhaberStrasse = $kontoinhaberStrasse;
  }

  public function setKontoinhaberHausnummer($kontoinhaberHausnummer)
  {
    $this->kontoinhaberHausnummer = $kontoinhaberHausnummer;
  }

  public function setKontoinhaberPLZ($kontoinhaberPLZ)
  {
    $this->kontoinhaberPLZ = $kontoinhaberPLZ;
  }

  public function setkontoinhaberStadt($kontoinhaberStadt)
  {
    $this->kontoinhaberStadt = $kontoinhaberStadt;
  }

  public function setKontoinhaberLand($kontoinhaberLand)
  {
    $this->kontoinhaberLand = $kontoinhaberLand;
  }

  public function setKontoinhaberBankname($kontoinhaberBankname)
  {
    $this->kontoinhaberBankname = $kontoinhaberBankname;
  }

  public function setKontoinhaberIban($kontoinhaberIban)
  {
    $this->kontoinhaberIban = $kontoinhaberIban;
  }

  public function setKontoinhaberBic($kontoinhaberBic)
  {
    $this->kontoinhaberBic = $kontoinhaberBic;
  }

  public function toJson()
  {
    return '{"xxtypetagxx":' . json_encode($this->xxtypetagxx)
            . ',"mandatreferenz":' . json_encode($this->mandatreferenz)
            . ',"einmalmandat":' . json_encode($this->einmalmandat)
            . ',"type":' . json_encode($this->type)
            . ',"kundennummer":' . json_encode($this->kundennummer)
            . ',"glaeubigerId":' . json_encode($this->glaeubigerId)
            . ',"zeichnungsberechtigter":' . json_encode($this->zeichnungsberechtigter)
            . ',"kontoinhaberWeichtAb":' . json_encode($this->kontoinhaberWeichtAb)
            . ',"kontoinhaberNachname":' . json_encode($this->kontoinhaberNachname)
            . ',"kontoinhaberVorname":' . json_encode($this->kontoinhaberVorname)
            . ',"kontoinhaberStrasse":' . json_encode($this->kontoinhaberStrasse)
            . ',"kontoinhaberHausnummer":' . json_encode($this->kontoinhaberHausnummer)
            . ',"kontoinhaberPLZ":' . json_encode($this->kontoinhaberPLZ)
            . ',"kontoinhaberStadt":' . json_encode($this->kontoinhaberStadt)
            . ',"kontoinhaberLand":' . json_encode($this->kontoinhaberLand)
            . ',"kontoinhaberBankname":' . json_encode($this->kontoinhaberBankname)
            . ',"kontoinhaberIban":' . json_encode($this->kontoinhaberIban)
            . ',"kontoinhaberBic":' . json_encode($this->kontoinhaberBic) . '}';
  }
}

class SepamandatInternVervollstaendigungsdaten
{
  private $xxtypetagxx;
  private $datumUnterschrift;
  private $ortUnterschrift;

  public function __construct()
  {
    $this->init();
  }

  private function init()
  {
    $this->xxtypetagxx = 'SepamandatInternVervollstaendigungsdaten';
  }

  public function setDatumUnterschrift($datumUnterschrift)
  {
    $this->datumUnterschrift = $datumUnterschrift;
  }

  public function setOrtUnterschrift($ortUnterschrift)
  {
    $this->ortUnterschrift = $ortUnterschrift;
  }

  public function toJson()
  {
    return '{"xxtypetagxx":' . json_encode($this->xxtypetagxx)
            . ',"datumUnterschrift":' . json_encode($this->datumUnterschrift)
            . ',"ortUnterschrift":' . json_encode($this->ortUnterschrift) . '}';
  }
}

class SepamandatExtern
{
  private $xxtypetagxx;
  private $mandatreferenz;
  private $type;
  private $kundennummer;
  private $glaeubigerId;
  private $zeichnungsberechtigter;
  private $datumUnterschrift;
  private $ortUnterschrift;
  private $sequenceType;
  private $datumLetzteNutzung;
  private $kontoinhaberWeichtAb;
  private $kontoinhaberNachname;
  private $kontoinhaberVorname;
  private $kontoinhaberStrasse;
  private $kontoinhaberHausnummer;
  private $kontoinhaberPLZ;
  private $kontoinhaberStadt;
  private $kontoinhaberLand;
  private $kontoinhaberBankname;
  private $kontoinhaberIban;
  private $kontoinhaberBic;

  public function __construct()
  {
    $this->init();
  }

  private function init()
  {
    $this->xxtypetagxx = 'SepamandatExtern';
  }

  public function setMandatreferenz($mandatreferenz)
  {
    $this->mandatreferenz = $mandatreferenz;
  }

  public function setType($type)
  {
    $this->type = $type;
  }

  public function setKundennummer($kundennummer)
  {
    $this->kundennummer = $kundennummer;
  }

  public function setGlaeubigerId($glaeubigerId)
  {
    $this->glaeubigerId = $glaeubigerId;
  }

  public function setZeichnungsberechtigter($zeichnungsberechtigter)
  {
    $this->zeichnungsberechtigter = $zeichnungsberechtigter;
  }

  public function setDatumUnterschrift($datumUnterschrift)
  {
    $this->datumUnterschrift = $datumUnterschrift;
  }

  public function setOrtUnterschrift($ortUnterschrift)
  {
    $this->ortUnterschrift = $ortUnterschrift;
  }

  public function setSequenceType($sequenceType)
  {
    $this->sequenceType = $sequenceType;
  }

  public function setDatumLetzteNutzung($datumLetzteNutzung)
  {
    $this->datumLetzteNutzung = $datumLetzteNutzung;
  }

  public function setKontoinhaberWeichtAb($kontoinhaberWeichtAb)
  {
    $this->kontoinhaberWeichtAb = $kontoinhaberWeichtAb;
  }

  public function setKontoinhaberNachname($kontoinhaberNachname)
  {
    $this->kontoinhaberNachname = $kontoinhaberNachname;
  }

  public function setKontoinhaberVorname($kontoinhaberVorname)
  {
    $this->kontoinhaberVorname = $kontoinhaberVorname;
  }

  public function setKontoinhaberStrasse($kontoinhaberStrasse)
  {
    $this->kontoinhaberStrasse = $kontoinhaberStrasse;
  }

  public function setKontoinhaberHausnummer($kontoinhaberHausnummer)
  {
    $this->kontoinhaberHausnummer = $kontoinhaberHausnummer;
  }

  public function setKontoinhaberPLZ($kontoinhaberPLZ)
  {
    $this->kontoinhaberPLZ = $kontoinhaberPLZ;
  }

  public function setkontoinhaberStadt($kontoinhaberStadt)
  {
    $this->kontoinhaberStadt = $kontoinhaberStadt;
  }

  public function setKontoinhaberLand($kontoinhaberLand)
  {
    $this->kontoinhaberLand = $kontoinhaberLand;
  }

  public function setKontoinhaberBankname($kontoinhaberBankname)
  {
    $this->kontoinhaberBankname = $kontoinhaberBankname;
  }

  public function setKontoinhaberIban($kontoinhaberIban)
  {
    $this->kontoinhaberIban = $kontoinhaberIban;
  }

  public function setKontoinhaberBic($kontoinhaberBic)
  {
    $this->kontoinhaberBic = $kontoinhaberBic;
  }

  public function toJson()
  {
    return '{"xxtypetagxx":' . json_encode($this->xxtypetagxx)
            . ',"mandatreferenz":' . json_encode($this->mandatreferenz)
            . ',"type":' . json_encode($this->type)
            . ',"kundennummer":' . json_encode($this->kundennummer)
            . ',"glaeubigerId":' . json_encode($this->glaeubigerId)
            . ',"zeichnungsberechtigter":' . json_encode($this->zeichnungsberechtigter)
            . ',"datumUnterschrift":' . json_encode($this->datumUnterschrift)
            . ',"ortUnterschrift":' . json_encode($this->ortUnterschrift)
            . ',"sequenceType":' . json_encode($this->sequenceType)
            . ',"datumLetzteNutzung":' . json_encode($this->datumLetzteNutzung)
            . ',"kontoinhaberWeichtAb":' . json_encode($this->kontoinhaberWeichtAb)
            . ',"kontoinhaberNachname":' . json_encode($this->kontoinhaberNachname)
            . ',"kontoinhaberVorname":' . json_encode($this->kontoinhaberVorname)
            . ',"kontoinhaberStrasse":' . json_encode($this->kontoinhaberStrasse)
            . ',"kontoinhaberHausnummer":' . json_encode($this->kontoinhaberHausnummer)
            . ',"kontoinhaberPLZ":' . json_encode($this->kontoinhaberPLZ)
            . ',"kontoinhaberStadt":' . json_encode($this->kontoinhaberStadt)
            . ',"kontoinhaberLand":' . json_encode($this->kontoinhaberLand)
            . ',"kontoinhaberBankname":' . json_encode($this->kontoinhaberBankname)
            . ',"kontoinhaberIban":' . json_encode($this->kontoinhaberIban)
            . ',"kontoinhaberBic":' . json_encode($this->kontoinhaberBic) . '}';
  }
}

class Buchungsliste
{
  private $kassenzeichennummer;
  private $faelligkeitsdatum;
  private $waehrungskennzeichen;
  private $kennzeichenMahnverfahren;
  private $transaktionsnummer;
  private $zahlverfahrencodes;
  private $buchungen;
  private $beschreibung;
  private $kunde;
  private $buchungslistenparameter;
  private $fachverfahrendaten;
  private $zahltyp;
  private $betrag;

  public function __construct()
  {
    $this->init();
  }

  private function init()
  {
  }

  public function setKassenzeichennummer($kassenzeichennummer)
  {
    $this->kassenzeichennummer = $kassenzeichennummer;
  }

  public function setFaelligkeitsdatum($faelligkeitsdatum)
  {
    $this->faelligkeitsdatum = $faelligkeitsdatum;
  }

  public function setWaehrungskennzeichen($waehrungskennzeichen)
  {
    $this->waehrungskennzeichen = $waehrungskennzeichen;
  }

  public function setKennzeichenMahnverfahren($kennzeichenMahnverfahren)
  {
    $this->kennzeichenMahnverfahren = $kennzeichenMahnverfahren;
  }

  public function setTransaktionsnummer($transaktionsnummer)
  {
    $this->transaktionsnummer = $transaktionsnummer;
  }

  public function setZahlverfahrencodes($zahlverfahrencodes)
  {
    $this->zahlverfahrencodes = $zahlverfahrencodes;
  }

  public function setBuchungen($buchungen)
  {
    $this->buchungen = $buchungen;
  }

  public function setBeschreibung($beschreibung)
  {
    $this->beschreibung = $beschreibung;
  }

  public function setKunde($kunde)
  {
    $this->kunde = $kunde;
  }

  public function setBuchungslistenparameter($buchungslistenparameter)
  {
    $this->buchungslistenparameter = $buchungslistenparameter;
  }

  public function setFachverfahrendaten($fachverfahrendaten)
  {
    $this->fachverfahrendaten = $fachverfahrendaten;
  }

  public function setZahltyp($zahltyp)
  {
    $this->zahltyp = $zahltyp;
  }

  public function setBetrag($betrag)
  {
    $this->betrag = $betrag;
  }

  public function toJson()
  {
    return '{"kassenzeichennummer":' . json_encode($this->kassenzeichennummer)
            . ',"faelligkeitsdatum":' . json_encode($this->faelligkeitsdatum)
            . ',"waehrungskennzeichen":' . json_encode($this->waehrungskennzeichen)
            . ',"kennzeichenMahnverfahren":' . json_encode($this->kennzeichenMahnverfahren)
            . ',"transaktionsnummer":' . json_encode($this->transaktionsnummer)
            . ',"zahlverfahrencodes":' . json_encode($this->zahlverfahrencodes)
            . ',"buchungen":' . $this->buchungenToJson($this->buchungen)
            . ',"beschreibung":' . json_encode($this->beschreibung)
            . ',"kunde":' . $this->kunde->toJson()
            . ',"buchungslistenparameter":' . json_encode($this->buchungslistenparameter)
            . ',"fachverfahrendaten":' . json_encode($this->fachverfahrendaten)
            . ',"zahltyp":' . json_encode($this->zahltyp)
            . ',"betrag":' . json_encode($this->betrag) . '}';
  }

  private function buchungenToJson($buchungen)
  {
    $out = '[';
    if ($buchungen == null) {
      $out = 'null';
    } else {
      foreach ($buchungen as $buchung) {
        if ($out !== '[') {
          $out = $out = $out . ',';
        }
        $out = $out . $buchung->toJson();
      }
      $out = $out . ']';
    }

    return $out;
  }
}

class Buchung
{
  private $bruttobetrag;
  private $nettobetrag;
  private $id;
  private $steuersatz;
  private $steuerbetrag;
  private $buchungstext;
  private $kontierung;

  public function __construct()
  {
    $this->init();
  }

  private function init()
  {
  }

  public function setBruttobetrag($bruttobetrag)
  {
    $this->bruttobetrag = $bruttobetrag;
  }

  public function setNettobetrag($nettobetrag)
  {
    $this->nettobetrag = $nettobetrag;
  }

  public function setId($id)
  {
    $this->id = $id;
  }

  public function setSteuersatz($steuersatz)
  {
    $this->steuersatz = $steuersatz;
  }

  public function setSteuerbetrag($steuerbetrag)
  {
    $this->steuerbetrag = $steuerbetrag;
  }

  public function setBuchungstext($buchungstext)
  {
    $this->buchungstext = $buchungstext;
  }

  public function setKontierung($kontierung)
  {
    $this->kontierung = $kontierung;
  }

  public function toJson()
  {
    return '{"bruttobetrag":' . json_encode($this->bruttobetrag)
            . ',"nettobetrag":' . json_encode($this->nettobetrag)
            . ',"id":' . json_encode($this->id)
            . ',"steuersatz":' . json_encode($this->steuersatz)
            . ',"steuerbetrag":' . json_encode($this->steuerbetrag)
            . ',"buchungstext":' . json_encode($this->buchungstext)
            . ',"kontierung":' . json_encode($this->kontierung) . '}';
  }
}

class Kunde
{
  private $name;
  private $vorname;
  private $typ;
  private $firmenkunde;
  private $firmenname;
  private $kundennummer;
  private $anrede;
  private $emailadresse;
  private $sepamandat;
  private $adresse;
  private $bankverbindung;

  public function __construct()
  {
    $this->init();
  }

  private function init()
  {
  }

  public function setName($name)
  {
    $this->name = $name;
  }

  public function setVorname($vorname)
  {
    $this->vorname = $vorname;
  }

  public function setTyp($typ)
  {
    $this->typ = $typ;
  }

  public function setFirmenkunde($firmenkunde)
  {
    $this->firmenkunde = $firmenkunde;
  }

  public function setFirmenname($firmenname)
  {
    $this->firmenname = $firmenname;
  }

  public function setKundennummer($kundennummer)
  {
    $this->kundennummer = $kundennummer;
  }

  public function setAnrede($anrede)
  {
    $this->anrede = $anrede;
  }

  public function setEmailadresse($emailadresse)
  {
    $this->emailadresse = $emailadresse;
  }

  public function setSepamandat($sepamandat)
  {
    $this->sepamandat = $sepamandat;
  }

  public function setAdresse($adresse)
  {
    $this->adresse = $adresse;
  }

  public function setBankverbindung($bankverbindung)
  {
    $this->bankverbindung = $bankverbindung;
  }

  public function toJson()
  {
    return '{"name":' . json_encode($this->name)
            . ',"vorname":' . json_encode($this->vorname)
            . ',"typ":' . json_encode($this->typ)
            . ',"firmenkunde":' . json_encode($this->firmenkunde)
            . ',"firmenname":' . json_encode($this->firmenname)
            . ',"kundennummer":' . json_encode($this->kundennummer)
            . ',"anrede":' . json_encode($this->anrede)
            . ',"emailadresse":' . json_encode($this->emailadresse)
            . ',"sepamandat":' . $this->toJsonSubobject($this->sepamandat)
            . ',"adresse":' . $this->toJsonSubobject($this->adresse)
            . ',"bankverbindung":' . $this->toJsonSubobject($this->bankverbindung) . '}';
  }

  private function toJsonSubobject($obj)
  {
    if ($obj == null) {
      return 'null';
    } else {
      return $obj->toJson();
    }
  }
}

class Adresse
{
  private $plz;
  private $ort;
  private $strasse;
  private $hausnummer;
  private $land;
  private $postfach;

  public function __construct()
  {
    $this->init();
  }

  private function init()
  {
  }

  public function setPlz($plz)
  {
    $this->plz = $plz;
  }

  public function setOrt($ort)
  {
    $this->ort = $ort;
  }

  public function setStrasse($strasse)
  {
    $this->strasse = $strasse;
  }

  public function setHausnummer($hausnummer)
  {
    $this->hausnummer = $hausnummer;
  }

  public function setLand($land)
  {
    $this->land = $land;
  }

  public function setPostfach($postfach)
  {
    $this->postfach = $postfach;
  }

  public function toJson()
  {
    return '{"plz":' . json_encode($this->plz)
            . ',"ort":' . json_encode($this->ort)
            . ',"strasse":' . json_encode($this->strasse)
            . ',"hausnummer":' . json_encode($this->hausnummer)
            . ',"land":' . json_encode($this->land)
            . ',"postfach":' . json_encode($this->postfach) . '}';
  }
}

class Bankverbindung
{
  private $kontoinhaber;
  private $iban;
  private $bic;

  public function __construct()
  {
    $this->init();
  }

  private function init()
  {
  }

  public function setKontoinhaber($kontoinhaber)
  {
    $this->kontoinhaber = $kontoinhaber;
  }

  public function setIban($iban)
  {
    $this->iban = $iban;
  }

  public function setBic($bic)
  {
    $this->bic = $bic;
  }

  public function toJson()
  {
    return '{"kontoinhaber":' . json_encode($this->kontoinhaber)
            . ',"iban":' . json_encode($this->iban)
            . ',"bic":' . json_encode($this->bic) . '}';
  }
}

abstract class Anrede
{
  const AN = 'AN';
  const EHELEUTE = 'EHELEUTE';
  const FIRMA = 'FIRMA';
  const FRAU = 'FRAU';
  const FRAU_UND_HERR = 'FRAU_UND_HERR';
  const FRAUEN = 'FRAUEN';
  const FRAEULEIN = 'FRAEULEIN';
  const HERR = 'HERR';
  const HERREN = 'HERREN';
  const HERRN_UND_FRAU = 'HERRN_UND_FRAU';
}

abstract class KundeTyp
{
  const TEMPORAER = 'TEMPORAER';
  const BESTAND = 'BESTAND';
}

abstract class SepaMandatSequenceType
{
  const FRST = 'FRST'; // Erstlastschrift
    const RCUR = 'RCUR'; // Folgelastschrift
    const OOFF = 'OOFF'; // Einmallastschrift
    const FNAL = 'FNAL';  // letzte Lastschrift
}

abstract class SepaMandatType
{
  const B = 'B'; // Mandatstyp fuer SDD-Core Basis
    const F = 'F'; // Mandatstyp fuer B2B-SDD
    const V = 'V'; // Mandatstyp fuer SDD-Core-Basis mit verkuerzter Vorlagefrist
}

abstract class Zahltyp
{
  const DIREKT = 'DIREKT';
  const RECHNUNG = 'RECHNUNG';
  const PAYPAGE = 'PAYPAGE';
}

abstract class BuchungKontierungKeys
{
  const HAUSHALTSTELLE = 'haushaltstelle';
  const OBJEKTNUMMER = 'objektnummer';
  const HREF = 'href';
}

abstract class BuchungslisteFvDatenKeys
{
  const SUCCESSURL = 'successUrl';
  const CANCELURL = 'cancelUrl';
  const ERRORURL = 'errorUrl';
}

abstract class KassenzeichenZusatzdatenKeys
{
  const PAYPAGESTATUS = 'paypagestatus';
  const SALDO = 'saldo';
  const AKTIVIERUNGSZEIT = 'aktivierungszeit';
}

abstract class ZahlverfahrenCodes
{
  const UEBERWEISUNGVOR = 'UEBERWEISUNGVOR';
  const UEBERWEISUNGNACH = 'UEBERWEISUNGNACH';
  const KREDITKARTE = 'KREDITKARTE';
  const GIROPAY = 'GIROPAY';
  const SEPASDD = 'SEPASDD';
  const PAYPAL = 'PAYPAL';
  const PAYPDIREKT = 'PAYDIREKT';
  const BARZAHLUNG = 'BARZAHLUNG';
  const TERMINALZAHLUNG = 'TERMINALZAHLUNG';
  const LASTSCHRIFT = 'LASTSCHRIFTOHNE';
}


?>

