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 |