Method: DTAUS::DtaGenerator#segment_c_buchung

Defined in:
lib/dtaus/dta_generator.rb

#segment_c_buchung(buchung) ⇒ Object

Erstellt ein C-Segments für eine Buchung



86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/dtaus/dta_generator.rb', line 86

def segment_c_buchung(buchung)
  # Länge des DTA-Datensatzes
  erweiterungen = buchung.erweiterungen + @datensatz.auftraggeber_konto.erweiterungen
  
  result  = '%04i' % (187 + erweiterungen.size * 29)             #  4 Zeichen  Länge des Datensatzes, 187 + x * 29 (x..Anzahl Erweiterungsteile)
  result += 'C'                                                  #  1 Zeichen  Datensatz-Typ, immer 'C'
  result += '%08i' % 0                                           #  8 Zeichen  Bankleitzahl des Auftraggebers (optional)
  result += '%08i' % buchung.kunden_konto.blz                    #  8 Zeichen  Bankleitzahl des Kunden
  result += '%010i' % buchung.kunden_konto.kontonummer           # 10 Zeichen  Kontonummer des Kunden
  result += '0%011i0' % buchung.kunden_konto.kundennummer        # 13 Zeichen  Verschiedenes 1. Zeichen: "0" 2. - 12. Zeichen: interne Kundennummer oder Nullen 13. Zeichen: "0"
  result += segment_c_transaktionstyp(buchung.transaktionstyp)   #  5 Zeichen  Art der Transaktion (7a: 2 Zeichen, 7b: 3 Zeichen)
  result += ' '                                                  #  1 Zeichen  Reserviert, " " (Blank)
  result += '0' * 11                                             # 11 Zeichen  Betrag
  result += '%08i' % @datensatz.auftraggeber_konto.blz           #  8 Zeichen  Bankleitzahl des Auftraggebers
  result += '%010i' % @datensatz.auftraggeber_konto.kontonummer  # 10 Zeichen  Kontonummer des Auftraggebers
  result += '%011i' % buchung.betrag                             # 11 Zeichen  Betrag in Euro einschließlich Nachkommastellen, nur belegt, wenn Euro als Währung angegeben wurde
  result += ' ' * 3                                              #  3 Zeichen  Reserviert, 3 Blanks
  result += buchung.kunden_konto.kontoinhaber[0..26].ljust(27)   # 27 Zeichen  Name des Kunden
  result +=  ' ' * 8                                             #  8 Zeichen  Reserviert, 8 Blanks
  
  if result.size != 128
    raise IncorrectSizeException.new("C-Segement 1: #{result.size} Zeichen, 128 erwartet (#{buchung.kunden_konto.kontoinhaber})")
  end
  
  result
end