Class: DTAUS

Inherits:
Object
  • Object
show all
Defined in:
lib/dtaus.rb,
lib/dtaus/konto.rb,
lib/dtaus/buchung.rb,
lib/dtaus/erweiterung.rb

Overview

:title:DTAUS-Datei erstellen

DTAUS-Datei für Sammellastschrift erstellen

Quick How-To:

auftraggeber = DTAUS::Konto.new(1234567890, 12345670, 'Muster GmbH', 'Deutsche Bank', true)
kunde = DTAUS::Konto.new(1234567890, 12345670, 'Max Meier-Schulze', 'Sparkasse')
buchung = DTAUS::Buchung.new(auftraggeber, kunde, 39.99, 'Vielen Dank für ihren Einkauf vom 01.01.2010. Rechnungsnummer 12345')
dta = DTAUS.new(auftraggeber)
dta.add(buchung)
dta.to_file

Typ der Datei ist ‘LK’ (Lastschrift Kunde)

Infos zu DTAUS: www.infodrom.org/projects/dtaus/dtaus.php3 DTAUS online check: www.xpecto.de/index.php?id=148,7

Defined Under Namespace

Classes: Buchung, DTAUSException, Erweiterung, IncorrectSize, Konto

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(auftraggeber, datum = Time.new) ⇒ DTAUS

Returns a new instance of DTAUS.

Raises:



33
34
35
36
37
38
39
40
# File 'lib/dtaus.rb', line 33

def initialize(auftraggeber, datum = Time.new)
  raise DTAUSException.new("Konto expected, got #{auftraggeber.class}") unless auftraggeber.is_a?(DTAUS::Konto)
  raise DTAUSException.new("Date or Time expected, got #{datum.class}") unless datum.is_a?(Date) or datum.is_a?(Time)

	@datum 		    = datum
   @auftraggeber = auftraggeber
	@buchungen	  = []
end

Instance Attribute Details

#auftraggeberObject (readonly)

Returns the value of attribute auftraggeber.



30
31
32
# File 'lib/dtaus.rb', line 30

def auftraggeber
  @auftraggeber
end

#buchungenObject (readonly)

Returns the value of attribute buchungen.



30
31
32
# File 'lib/dtaus.rb', line 30

def buchungen
  @buchungen
end

#datumObject (readonly)

Returns the value of attribute datum.



30
31
32
# File 'lib/dtaus.rb', line 30

def datum
  @datum
end

#positivObject (readonly) Also known as: positiv?

Returns the value of attribute positiv.



30
31
32
# File 'lib/dtaus.rb', line 30

def positiv
  @positiv
end

Class Method Details

.convert_number(_number) ⇒ Object

Konvertiert einen String in einen Integer indem alle Nicht-Digits entfernt werden. Lässt Integer unberührt.



105
106
107
108
109
110
111
# File 'lib/dtaus.rb', line 105

def self.convert_number(_number)
   case _number
     when Integer then _number
     when String then _number.strip.gsub(/\D/, '').to_i
     else raise DTAUSException.new("Cannot convert #{_number.class} to Integer")
   end
end

.convert_text(_text) ⇒ Object

Zeichen umsetzen gemäss DTA-Norm



88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/dtaus.rb', line 88

def self.convert_text(_text)
	tmp = _text.to_s.dup
	tmp = tmp.upcase()
	tmp = tmp.gsub('Ä', 'AE')
	tmp = tmp.gsub('Ü', 'UE')
	tmp = tmp.gsub('Ö', 'OE')
	tmp = tmp.gsub('ä', 'AE')
	tmp = tmp.gsub('ü', 'UE')
	tmp = tmp.gsub('ö', 'OE')
	tmp = tmp.gsub('ß', 'SS')
	tmp = tmp.strip
end

Instance Method Details

#add(buchung) ⇒ Object

Eine Buchung hinzufügen. Es wird geprüft, ob das Vorzeichen identisch mit den bisherigen Vorzeichen ist.

Raises:



55
56
57
58
59
60
61
62
63
# File 'lib/dtaus.rb', line 55

def add(buchung)
  raise DTAUSException.new("Buchung expected, got #{buchung.class}") unless buchung.is_a?(DTAUS::Buchung)
	# Die erste Buchung bestimmt, ob alle Beträge positiv oder negativ sind.
	if buchungen == []
		@positiv = buchung.positiv?	# alle Beträge sind positiv. Variable wird mit erstem Eintrag geändert
	end
	raise DTAusException.new("Das Vorzeichen wechselte") if @positiv != buchung.positiv?
	@buchungen << buchung
end

#to_dtaObject Also known as: to_s

Gibt die DTAUS-Datei als String zurück

Raises:



67
68
69
70
71
72
73
74
# File 'lib/dtaus.rb', line 67

def to_dta
  raise DTAUSException.new("Keine Buchungen vorhanden") unless buchungen.size > 0
temp  = dataA
  temp += buchungen.inject(''){|temp, buchung| temp += buchung.to_dta}
temp += dataE
raise IncorrectSize.new("Datensatzlänge ist nicht durch 128 teilbar: #{temp.size}") if temp.size % 128 != 0
temp
end

#to_file(filename = 'DTAUS0.TXT') ⇒ Object

Schreibt die DTAUS-Datei Standarddateiname ist DTAUS0.TXT



80
81
82
83
84
# File 'lib/dtaus.rb', line 80

def to_file(filename ='DTAUS0.TXT')
	File.open(filename, 'w') do |file|
     file << to_dta
   end
end

#typObject

2 Zeichen Art der Transaktionen “LB” für Lastschriften Bankseitig “LK” für Lastschriften Kundenseitig “GB” für Gutschriften Bankseitig “GK” für Gutschriften Kundenseitig



48
49
50
# File 'lib/dtaus.rb', line 48

def typ
 'LK'
end