DtausDateiWriter
Date: 2015-04-26

de.jost_net.OBanToo.Dtaus

## Class DtausDateiWriter

- java.lang.Object
- - de.jost_net.OBanToo.Dtaus.DtausDateiWriter

-     public class DtausDateiWriter
      extends java.lang.Object

  Datenträgeraustauschdateien (DTAUS) erstellen

  Mit dem DtausDateiWriter können DTAUS-Dateien mit einer oder mehreren logischen Dateien erzeugt werden. Beispiel für die Erstellung einer DTAUS-Datei:
  Zunächst ist eine OutputStream (z. B. FileOutputStream) zu instanziieren:
  `FileOutputStream fos = new FileOutputStream("dtaus");
  ` Anschließend wird ein DtausDateiWriter instanziiert, dem der Outputstream im Konstruktor übergeben wird:
  `DtausDateiWriter dtausDateiWriter = new DtausDateiWriter(fos);
  `
  Jetzt wird der ASatz gefüllt und geschrieben:
  `dtausDateiWriter.setAGutschriftLastschrift("GK");
  dtausDateiWriter.setABLZBank(40050060);
  dtausDateiWriter.setAKundenname("Donald Duck GmbH und Co");
  dtausDateiWriter.setAKonto(123456);
  dtausDateiWriter.writeASatz();
  `
  Ab hier werden die eigentlichen Zahlungssätze erstellt:
  `dtausDateiWriter.setCBLZEndbeguenstigt(10020030);
  dtausDateiWriter.setCKonto(444444);
  dtausDateiWriter.setCTextschluessel(CSatz.TS_UEBERWEISUNGSGUTSCHRIFT);
  dtausDateiWriter.setCInterneKundennummer(1);
  dtausDateiWriter.setCBetragInEuro(1000);
  dtausDateiWriter.setCName("Donald Duck");
  dtausDateiWriter.addCVerwendungszweck("bekannt");
  dtausDateiWriter.writeCSatz();
  dtausDateiWriter.setCBLZEndbeguenstigt(80077711);
  dtausDateiWriter.setCKonto(666);
  dtausDateiWriter.setCTextschluessel(CSatz.TS_UEBERWEISUNGSGUTSCHRIFT);
  dtausDateiWriter.setCInterneKundennummer(2);
  dtausDateiWriter.setCBetragInEuro(1000);
  dtausDateiWriter.setCName("Micky Maus");
  dtausDateiWriter.addCVerwendungszweck("la li lu");
  dtausDateiWriter.addCVerwendungszweck("nur der Mann im Mond ");
  dtausDateiWriter.addCVerwendungszweck("schaut zu ");
  dtausDateiWriter.addCVerwendungszweck("wenn die kleinen Kinder");
  dtausDateiWriter.addCVerwendungszweck("schlafen");
  dtausDateiWriter.writeCSatz();
  `
  E-Satz schreiben = Ende einer logischen Datei.
  `dtausDateiWriter.writeESatz();
  `
  Gegebenenfalls kann eine weitere logische Datei durch die folgenden Aufrufe erstellt werden:
  `dtausDateiWriter.open();
  dtausDateiWriter.setA.....
  dtausDateiWriter.writeASatz();
  :
  :
  dtausDateiWriter.writeCSatz();
  dtausDateiWriter.writeCSatz();
  dtausDateiWriter.writeASatz();
  dtausDateiWriter.close;
  System.out.println("DTAUS-Datei erstellt!");
  `

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private ASatz` | `asatz`
    `private CSatz` | `csatz`
    `private java.io.DataOutputStream` | `dos`
    `private ESatz` | `esatz`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DtausDateiWriter(java.io.OutputStream os)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addCVerwendungszweck(java.lang.String value)` Maximal 13 mal pro Buchungssatz aufrufbar
    `void` | `close()` Die Close-Methode ist nach der Ausgabe des E-Satzes der letzten/einzigen logischen Datei erforderlich.
    `long` | `getABLZBank()`
    `long` | `getAKonto()`
    `java.lang.String` | `getAKundenname()`
    `long` | `getAnzahlSaetze()`
    `double` | `getCBetragInEuro()`
    `long` | `getCBLZEndbeguenstigt()`
    `long` | `getCKonto()`
    `java.math.BigInteger` | `getSummeBankleitzahlen()`
    `java.math.BigInteger` | `getSummeBetraege()`
    `java.math.BigDecimal` | `getSummeBetraegeDecimal()`
    `java.math.BigInteger` | `getSummeKontonummern()`
    `void` | `open()` Die Open-Methode wird durch den Konstruktor aufgerufen.
    `void` | `setAAusfuehrungsdatum(java.util.Date aAusfuehrungsdatum)` Feld A11b - Ausführungsdatum Angabe freigestellt.
    `void` | `setABLZBank(long aBLZBank)` Feld A4 - Bankleitzahl der Bank, bei der die Diskette eingereicht wird Gültige Werte: Siehe Verzeichnis der Bankleitzahlen Standardwert: 0
    `void` | `setADatum(java.util.Date aDatum)` Feld A7 - Datum Standardwert: Tagesdatum
    `void` | `setADatum(java.lang.String aDatum)` Feld A7 - Datum Format: TTMMJJ Standardwert: Tagesdatum
    `void` | `setAGutschriftLastschrift(java.lang.String aGutschriftLastschrift)`
    `void` | `setAKonto(long aKonto)` Feld A9 - Kontonummer des Auftraggebers Standardwert: 0
    `void` | `setAKundenname(java.lang.String aKundenname)` Feld A6 - Name des Auftraggebers.
    `void` | `setCBetragInCent(long cBetragInCent)` Feld C12 - Betrag in Euro, wenn Auftragswährung in den Feldern A12 und C17a = "1"; sonst Nullen
    `void` | `setCBetragInEuro(double value)`
    `void` | `setCBLZEndbeguenstigt(long value)` Feld C4 - Bankleitzahl endbegünstigtes Institut
    `void` | `setCBLZErstbeteiligtesInstitut(long value)` Feld C3 - Bankleitzahl erstbeteiligtes Kreditinstitut, freigestellt
    `void` | `setCInterneKundennummer(long value)`
    `void` | `setCKonto(long cKonto)` Feld C5 - Kontonummer des Überweisungsempfängers/Zahlungspflichtigen
    `void` | `setCName(java.lang.String value)` Feld C14a - Name des Überweisungsempfängers/Zahlungspflichtigen.
    `void` | `setCName2(java.lang.String value)` Name des Überweisungsempfängers/Zahlungspflichtigen -Teil 2-, max. 27 Stellen.
    `void` | `setCTextschluessel(int value)` Feld C7 - Textschlüssel - Kennzeichnung der Zahlungsart "51000" Überweisungs-Gutschrift "53000" Überweisung Lohn/Gehalt/Rente "5400J" Vermögenswirksame Leistung (VL) ohne Sparzulage "5400J" Vermögenswirksame Leistung (VL) mit Sparzulage "56000" Überweisung öffentlicher Kassen Die im Textschlüssel mit J bezeichnete Stelle, wird bei Übernahme in eine Zahlung automatisch mit der jeweils aktuellen Jahresendziffer (7, wenn 97) ersetzt.
    `void` | `writeASatz()`
    `java.lang.String` | `writeCSatz()`
    `void` | `writeESatz()`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### dos

          private java.io.DataOutputStream dos

    - #### asatz

          private ASatz asatz

    - #### csatz

          private CSatz csatz

    - #### esatz

          private ESatz esatz

  - ### Constructor Detail

    - #### DtausDateiWriter

          public DtausDateiWriter(java.io.OutputStream os)

  - ### Method Detail

    - #### open

          public void open()

      Die Open-Methode wird durch den Konstruktor aufgerufen. Ein erneuter Aufruf darf erfolgen, nachdem der E-Satz geschrieben wurden. Damit wird die Ausgabe einer weiteren logischen Datei möglich.

    - #### close

          public void close()
                     throws java.io.IOException

      Die Close-Methode ist nach der Ausgabe des E-Satzes der letzten/einzigen logischen Datei erforderlich.
      Throws:
        `java.io.IOException`

    - #### setAGutschriftLastschrift

          public void setAGutschriftLastschrift(java.lang.String aGutschriftLastschrift)
                                         throws DtausException

      Throws:
        `DtausException`

    - #### setABLZBank

          public void setABLZBank(long aBLZBank)

      Feld A4 - Bankleitzahl der Bank, bei der die Diskette eingereicht wird Gültige Werte: Siehe Verzeichnis der Bankleitzahlen Standardwert: 0

    - #### getABLZBank

          public long getABLZBank()

    - #### setAKundenname

          public void setAKundenname(java.lang.String aKundenname)
                              throws DtausException

      Feld A6 - Name des Auftraggebers. Gültige Werte: Siehe zugelassene Zeichen, max Länge: 27 Standardwert: "" (leer)
      Throws:
        `DtausException`

    - #### getAKundenname

          public java.lang.String getAKundenname()

    - #### setADatum

          public void setADatum(java.lang.String aDatum)

      Feld A7 - Datum Format: TTMMJJ Standardwert: Tagesdatum

    - #### setADatum

          public void setADatum(java.util.Date aDatum)

      Feld A7 - Datum Standardwert: Tagesdatum

    - #### setAKonto

          public void setAKonto(long aKonto)

      Feld A9 - Kontonummer des Auftraggebers Standardwert: 0

    - #### getAKonto

          public long getAKonto()

    - #### setAAusfuehrungsdatum

          public void setAAusfuehrungsdatum(java.util.Date aAusfuehrungsdatum)

      Feld A11b - Ausführungsdatum Angabe freigestellt. Nicht jünger als Diskettenerstellungsdatum (Feld A7), jedoch höchstens 15 Kalendertage über dem Erstellungsdatum aus Feld A7. Soweit in diesem Datenfeld ein Ausführungstermin angegeben wird, ist zu beachten, dass der in Abs. II, Nr. 3 der Sonderbedingungen für den Datenträgeraustausch genannte Nachweiszeitraum von mindestens zehn Kalendertagen erst ab dem genannten Ausführungstermin zu berechnen ist.

    - #### setCBLZErstbeteiligtesInstitut

          public void setCBLZErstbeteiligtesInstitut(long value)
                                              throws DtausException

      Feld C3 - Bankleitzahl erstbeteiligtes Kreditinstitut, freigestellt
      Throws:
        `DtausException`

    - #### setCBLZEndbeguenstigt

          public void setCBLZEndbeguenstigt(long value)
                                     throws DtausException

      Feld C4 - Bankleitzahl endbegünstigtes Institut
      Throws:
        `DtausException`

    - #### getCBLZEndbeguenstigt

          public long getCBLZEndbeguenstigt()

    - #### setCKonto

          public void setCKonto(long cKonto)
                         throws DtausException

      Feld C5 - Kontonummer des Überweisungsempfängers/Zahlungspflichtigen
      Throws:
        `DtausException`

    - #### getCKonto

          public long getCKonto()

    - #### setCTextschluessel

          public void setCTextschluessel(int value)
                                  throws DtausException

      Feld C7 - Textschlüssel - Kennzeichnung der Zahlungsart "51000" Überweisungs-Gutschrift "53000" Überweisung Lohn/Gehalt/Rente "5400J" Vermögenswirksame Leistung (VL) ohne Sparzulage "5400J" Vermögenswirksame Leistung (VL) mit Sparzulage "56000" Überweisung öffentlicher Kassen Die im Textschlüssel mit J bezeichnete Stelle, wird bei Übernahme in eine Zahlung automatisch mit der jeweils aktuellen Jahresendziffer (7, wenn 97) ersetzt.
      Throws:
        `DtausException`

    - #### setCBetragInCent

          public void setCBetragInCent(long cBetragInCent)
                                throws DtausException

      Feld C12 - Betrag in Euro, wenn Auftragswährung in den Feldern A12 und C17a = "1"; sonst Nullen
      Throws:
        `DtausException`

    - #### setCBetragInEuro

          public void setCBetragInEuro(double value)
                                throws DtausException

      Throws:
        `DtausException`

    - #### getCBetragInEuro

          public double getCBetragInEuro()

    - #### setCName

          public void setCName(java.lang.String value)
                        throws DtausException

      Feld C14a - Name des Überweisungsempfängers/Zahlungspflichtigen. Max. 27 Stellen
      Throws:
        `DtausException`

    - #### setCName2

          public void setCName2(java.lang.String value)
                         throws DtausException

      Name des Überweisungsempfängers/Zahlungspflichtigen -Teil 2-, max. 27 Stellen.
      Throws:
        `DtausException`

    - #### setCInterneKundennummer

          public void setCInterneKundennummer(long value)
                                       throws DtausException

      Throws:
        `DtausException`

    - #### addCVerwendungszweck

          public void addCVerwendungszweck(java.lang.String value)
                                    throws DtausException

      Maximal 13 mal pro Buchungssatz aufrufbar
      Throws:
        `DtausException`

    - #### writeASatz

          public void writeASatz()
                          throws java.lang.Exception

      Throws:
        `java.lang.Exception`

    - #### writeCSatz

          public java.lang.String writeCSatz()
                                      throws java.io.IOException,
                                             DtausException

      Throws:
        `java.io.IOException`
        `DtausException`

    - #### writeESatz

          public void writeESatz()
                          throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getAnzahlSaetze

          public long getAnzahlSaetze()

    - #### getSummeKontonummern

          public java.math.BigInteger getSummeKontonummern()

    - #### getSummeBankleitzahlen

          public java.math.BigInteger getSummeBankleitzahlen()

    - #### getSummeBetraege

          public java.math.BigInteger getSummeBetraege()

    - #### getSummeBetraegeDecimal

          public java.math.BigDecimal getSummeBetraegeDecimal()