lib/dtaus/dta_generator.rb
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
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
Erstellt ein C-Segments für eine Buchung