king_dtaus 2.0.0 → 2.0.1.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.rvmrc +1 -0
- data/Gemfile +1 -5
- data/Gemfile.lock +38 -0
- data/README.rdoc +120 -0
- data/Rakefile +1 -7
- data/VERSION +1 -1
- data/king_dtaus.gemspec +11 -12
- data/lib/king_dta/account.rb +29 -30
- data/lib/king_dta/dta.rb +0 -10
- data/lib/king_dta/dtaus.rb +134 -125
- data/lib/king_dta/dtazv.rb +221 -183
- data/lib/king_dta/helper.rb +1 -3
- data/lib/king_dtaus.rb +0 -1
- data/spec/account_spec.rb +150 -64
- data/spec/booking_spec.rb +3 -1
- data/spec/dtaus_spec.rb +12 -35
- data/spec/dtazv_spec.rb +155 -54
- data/spec/dtazv_test.rb +105 -0
- data/spec/spec_helper.rb +65 -43
- metadata +38 -48
- data/.travis.yml +0 -3
- data/README.markdown +0 -128
- /data/{docs/example.output → example.output} +0 -0
data/lib/king_dta/dtazv.rb
CHANGED
@@ -2,6 +2,17 @@
|
|
2
2
|
module KingDta
|
3
3
|
class Dtazv < Dta
|
4
4
|
|
5
|
+
# Create a new dtazv file/string.
|
6
|
+
# ===Parameter
|
7
|
+
# typ<Date>:: date when the the transfer is to be created
|
8
|
+
def initialize(date=Date.today)
|
9
|
+
raise ArgumentError.new("Wrong date format. Make it a Time or Date object with yyyy-mm-dd") unless date.respond_to?(:strftime)
|
10
|
+
@date = date
|
11
|
+
@value_pos = true #all values are positive by default. Variable changes with first booking entry
|
12
|
+
@closed = false
|
13
|
+
@default_text = 'Want some? Come, get some!' # default verwendungzweck
|
14
|
+
end
|
15
|
+
|
5
16
|
# Creates the whole dta string(in the right order) and returns it
|
6
17
|
# === Raises
|
7
18
|
# error if there are no bookings
|
@@ -15,62 +26,104 @@ module KingDta
|
|
15
26
|
add_z(bookings)
|
16
27
|
end
|
17
28
|
|
29
|
+
#Erstellen P-Segment der DTAZV-Datei
|
30
|
+
# - P Datei-Vorsatz mit 256 Bytes
|
31
|
+
# === Parameter
|
32
|
+
# booking<Object>::Booking object to be written to c-sektion
|
33
|
+
#
|
34
|
+
# === Returns
|
35
|
+
# <String>:: The current dta_string
|
36
|
+
# Aufbau und Erläuterungen der Datei
|
37
|
+
# Datensatz P (Datei-Vorsatz)
|
38
|
+
|
39
|
+
# Der Vorsatz enthält Informationen über ein Institut, das Kundendatensätze Q, T, V und W als Meldung
|
40
|
+
# nach §§ 59 ff. der AWV weiterleitet. Der Vorsatz bezieht sich auf alle unmittelbar folgen den
|
41
|
+
# Kundendatensätze, deren Folge mit einem Datei-Nachsatz Y abgeschlossen wird.
|
42
|
+
|
43
|
+
# Legende:
|
44
|
+
# K = Kannfeld
|
45
|
+
# P = Pflichtfeld
|
46
|
+
# K/P = Pflichtfeld in Abhängigkeit von bestimmten Kriterien
|
47
|
+
# N = nicht belegbares Feld
|
48
|
+
# alpha = alphanumerische Daten (linksbündig, nicht belegte Stellen: Leerzeichen)
|
49
|
+
# num = numerische Daten (rechtsbündig, nicht belegte Stellen Nullen)
|
50
|
+
|
51
|
+
# Feld Länge in Bytes 1. Stelle im Satz Feldart Datenformat Inhalt Erläuterungen
|
52
|
+
# 1 4 1 P binär/num Satzlänge Längenangabe des Satzes nach den Konventionen für variable Satzlänge (binär bei Bändern 3, numerisch bei Disketten und DFÜ)
|
53
|
+
# 2 1 5 P alpha Satzart Konstante 'P'
|
54
|
+
# 3 8 6 K/P num Bankleitzahl BLZ des Einreichinstituts
|
55
|
+
# 4 4x35 14 P alpha Einreichinstitut Zeile 1 u. 2: Name; Zeile 3: Straße Postfach; Zeile 4: Ort
|
56
|
+
# 5 6 154 P num Erstellungsdatum In der Form JJMMTT
|
57
|
+
# 6 2 160 P num laufende Nummer Laufende Tagesnummer
|
58
|
+
# 7 95 162 N alpha Reserve
|
59
|
+
def add_p
|
60
|
+
# data = '0256' # Länge des Datensatzes, PFLICHT
|
61
|
+
# data += 'P' # Satzart, PFLICHT
|
62
|
+
# data += '%8i' % @account.bank_number # BLZ des Einreichinstituts, KANN
|
63
|
+
# data += '%70s' % @account.bank_name # Einreichinstitut Zeile 1 u. 2: Name; PFLICHT
|
64
|
+
# data += '%35s' % @account.account_street_zip # Einreichinstitut Straße Postfach; Ort PFLICHT
|
65
|
+
# data += '%35s' % @account.city # Einreichinstitut Zeile 4: Ort PFLICHT
|
66
|
+
# data += @date.strftime("%y%m%d") # Erstellungsdatum In der Form JJMMTT, PFLICHT
|
67
|
+
# data += '01' # laufende Nummer Laufende Tagesnummer, PFLICHT
|
68
|
+
# data += '%095s' % '' # Reserve
|
69
|
+
# raise "DTAUS: Längenfehler P (#{data.size} <> 256)\n" if data.size != 256
|
70
|
+
# dta_string << data
|
71
|
+
end
|
18
72
|
|
19
|
-
#
|
73
|
+
#Erstellen Q-Segment der DTAZV-Datei
|
20
74
|
# - Q Auftraggebersatz mit 256 oder 246 Bytes (= Datei-Vorsatz aus dem Datenaustausch zwischen Kunde und Bank)
|
21
|
-
#
|
22
75
|
# === Parameter
|
23
76
|
# booking<Object>::Booking object to be written to c-sektion
|
24
77
|
#
|
25
78
|
# === Returns
|
26
79
|
# <String>:: The current dta_string
|
27
|
-
|
28
|
-
# === Info
|
80
|
+
|
29
81
|
# 5.2 Datensatz Q - lange Variante - (Identifikation des Auftraggebers)
|
30
82
|
# Die Bundesbank nimmt Q-Sätze in 2 Varianten entgegen. Die lange Variante ist identisch mit den von
|
31
83
|
# den Auftraggebern gelieferten Q-Sätzen. In der kurzen Variante sind nur die Felder enthalten,
|
32
84
|
# die von der Bundesbank bei der Bearbeitung der Meldungen benötigt werden (siehe 5.3).
|
33
85
|
# Beide Varianten dürfen in einer Datei vorkommen.
|
34
|
-
|
86
|
+
|
35
87
|
# Datensatz Q - kurze Variante
|
36
88
|
# Die Bundesbank nimmt Q-Sätze in 2 Varianten entgegen. Die lange Variante ist identisch mit
|
37
89
|
# den von den Auftraggebern gelieferten Q-Sätzen. In der kurzen Variante sind nur die Felder
|
38
90
|
# enthalten, die von der Bundesbank bei der Bearbeitung der Meldungen benötigt werden; das in der
|
39
91
|
# kurzen Variante nicht enthaltene Feld ist in der folgenden Tabelle durch Schattierung und Kursivschrift
|
40
92
|
# kenntlich gemacht. Beide Varianten dürfen in einer Datei vorkommen.
|
93
|
+
|
41
94
|
# [ Anmerk.: Bei der Kurzen Variante entfällt die Kundennummer ]
|
42
|
-
|
43
|
-
#
|
44
|
-
#
|
45
|
-
# 1
|
46
|
-
#
|
47
|
-
#
|
48
|
-
# 4
|
49
|
-
#
|
50
|
-
#
|
51
|
-
# 6
|
52
|
-
# 7
|
53
|
-
# 8
|
54
|
-
# 9
|
55
|
-
# 10
|
56
|
-
# 11
|
57
|
-
# 12
|
95
|
+
|
96
|
+
# Feld Länge in Bytes 1. Stelle im Satz Feldart Datenformat Inhalt Erläuterungen
|
97
|
+
# 1 4 1 P binär/num Satzlänge Längenangabe des Satzes nach den Konventionen für variable Satzlänge (binär bei Bändern, numerisch bei Disketten und DFÜ)
|
98
|
+
# 2 1 5 P alpha Satzart Konstante "Q"
|
99
|
+
# 3 8 6 P num BLZ Erstbeauftragtes Kreditinstitut
|
100
|
+
# Entfällt bei der kurzen Variante NUR FUER DIE BEARBEITUNG DER MELDUNGEN --------------------------------------------------------------------------------------------------------
|
101
|
+
# 4 10 14 P num Kundennummer Ordnungsnummer gemäß Vereinbarung mit dem erstbeauftragten Kreditinstitut (ggf. Kontonummer)
|
102
|
+
# /Entfällt bei der kurzen Variante NUR FUER DIE BEARBEITUNG DER MELDUNGEN--------------------------------------------------------------------------------------------------------
|
103
|
+
# 5 4x35 24 P alpha Auftraggeberdaten Zeile 1 und 2: Name; Zeile 3: Straße / Postfach; Zeile 4: Ort
|
104
|
+
# 6 6 164 P num Erstellungsdatum Format: JJMMTT
|
105
|
+
# 7 2 170 P num laufende Nummer Laufende Tagesnummer
|
106
|
+
# 8 6 172 P num (erster) Ausführungstermin Datei Format: JJMMTT; gleich oder bis zu höchstens 15 Kalendertage nach dem Datum aus Feld Q6
|
107
|
+
# 9 1 178 P alpha Weiterleitung an die Meldebehörde Soll das erstbeauftragte Kreditinstitut Meldedaten zu den nachfolgenden Zahlungen an die Bundesbank weiterleiten ? (siehe Erläuterungen im Anhang 3). 'J' Ja 'N' Nein
|
108
|
+
# 10 2 179 K/P num Bundeslandschlüssel Zwingend belegt, wenn Meldedaten zu den Zahlungen an die Bundesbank weitergeleitet wer den sollen. ('J' in Feld Q9)
|
109
|
+
# 11 8 181 K/P num Firmennummer / BLZ des Auftraggebers Siehe Erläuterungen Feld Q10
|
110
|
+
# 12 68 189 N alpha Reserve
|
58
111
|
def add_q
|
59
|
-
data1 = '0256'
|
60
|
-
data1 += 'Q'
|
61
|
-
data1 += '%08i' % @account.bank_number
|
62
|
-
data1 += '%010i' % @account.
|
63
|
-
data1 += '%-035s'
|
64
|
-
data1 += '%-035s'
|
65
|
-
data1 += '%-035s'
|
66
|
-
data1 += '%-035s'
|
67
|
-
data1 += @date.strftime("%y%m%d") # Erstellungsdatum
|
68
|
-
data1 += '01'
|
69
|
-
data1 += @date.strftime("%y%m%d") # Ausführungstermin
|
70
|
-
data1 += "N"
|
71
|
-
data1 += "%02i"
|
72
|
-
data1 += '%08i'
|
73
|
-
data1 += '%068s'
|
112
|
+
data1 = '0256' # Länge des Datensatzes, PFLICHT
|
113
|
+
data1 += 'Q' # Satzart, PFLICHT
|
114
|
+
data1 += '%08i' % @account.bank_number # BLZ des Einreichinstituts, PFLICHT
|
115
|
+
data1 += '%010i' % @account.account_number # Kundennummer, PFLICHT
|
116
|
+
data1 += '%-035s' % @account.client_name_1 # Einreichinstitut Zeile 1 u. 2: Name, PFLICHT
|
117
|
+
data1 += '%-035s' % @account.client_name_2 # Einreichinstitut Zeile 1 u. 2: Name, PFLICHT
|
118
|
+
data1 += '%-035s' % @account.client_street # Einreichinstitut Zeile 3: Straße Postfach, PFLICHT
|
119
|
+
data1 += '%-035s' % @account.client_zip_city # Einreichinstitut Zeile 4: Ort, PFLICHT
|
120
|
+
data1 += @date.strftime("%y%m%d") # Erstellungsdatum In der Form JJMMTT, PFLICHT
|
121
|
+
data1 += '01' # laufende Nummer Laufende Tagesnummer, PFLICHT
|
122
|
+
data1 += @date.strftime("%y%m%d") # (erster) Ausführungstermin Datei, PFLICHT
|
123
|
+
data1 += "N" # Weiterleitung an die Meldebehörde, PFLICHT
|
124
|
+
data1 += "%02i" % 0 # Bundeslandschlüssel, KANN, NICHT BELEGT, KEINE MELDUNG
|
125
|
+
data1 += '%08i' % 0 # @account.bank_number # Firmennummer / BLZ des Auftraggebers, KANN, NICHT BELEGT, KEINE MELDUNG
|
126
|
+
data1 += '%068s' % '' # Reserve
|
74
127
|
raise "DTAUS: Längenfehler Q (#{data.size} <> 256)\n" if data1.size != 256
|
75
128
|
dta_string << data1
|
76
129
|
end
|
@@ -78,7 +131,7 @@ module KingDta
|
|
78
131
|
#Erstellen T-Segment der DTAZV-Datei
|
79
132
|
# - T Einzelzahlungssatz mit 768 oder 572 Bytes
|
80
133
|
# === Parameter
|
81
|
-
# booking<Object>::Booking object to be written to c-
|
134
|
+
# booking<Object>::Booking object to be written to c-sektion
|
82
135
|
#
|
83
136
|
# === Returns
|
84
137
|
# <String>:: The current dta_string
|
@@ -95,27 +148,57 @@ module KingDta
|
|
95
148
|
# die Felder enthalten, die von der Bundesbank bei der Bearbeitung der Meldungen benötigt
|
96
149
|
# werden. Die in der kurzen Variante nicht enthaltenen Felder sind in der folgenden Tabelle
|
97
150
|
# durch Schattierung und Kursivschrift kenntlich gemacht. Beide Varianten dürfen in einer Datei vorkommen.
|
98
|
-
|
99
|
-
#
|
100
|
-
# 1
|
101
|
-
|
102
|
-
#
|
103
|
-
#
|
104
|
-
#
|
105
|
-
#
|
106
|
-
#
|
107
|
-
#
|
108
|
-
#
|
109
|
-
#
|
110
|
-
#
|
111
|
-
#
|
112
|
-
#
|
113
|
-
#
|
114
|
-
#
|
115
|
-
#
|
116
|
-
#
|
117
|
-
#
|
118
|
-
#
|
151
|
+
|
152
|
+
# Feld Länge in Bytes 1. Stelle im Satz Datenformat Inhalt Erläuterungen allg. Feldart allg. EU-Std.Ü. Feldart EU-Std.Ü. Besondere Belegungsvorschriften EUE-Ü. Feldart EUE-Ü. Besondere Belegungsvorschriften
|
153
|
+
# 1 4 1 binär/num Satzlänge Längenangabe des Satzes nach den Kon ventionen P P - P -
|
154
|
+
# für variable Satzlänge (binär bei Bändern
|
155
|
+
# numerisch bei Disketten und DFÜ)
|
156
|
+
# 2 1 5 alpha Satzart Konstante "T" P P - P -
|
157
|
+
# 3 8 6 num BLZ BLZ der kontoführenden Stelle des mit dem
|
158
|
+
# Auftragswert zu belastenden Kontos (Feld T4b) P P - P -
|
159
|
+
# Entfällt bei der kurzen Variante NUR FUER DIE BEARBEITUNG DER MELDUNGEN--------------------------------------------------------------------------------------------------------
|
160
|
+
# 4a 3 14 alpha ISO-Währungscode Für mit Auftragswert zu belastendes Konto. P P Nur "EUR" zulälssig P Nur "EUR" zulässig
|
161
|
+
# 4b 10 17 num Kontonummer Mit Auftragswert zu belastendes Konto P P - P -
|
162
|
+
# /Entfällt bei der kurzen Variante NUR FUER DIE BEARBEITUNG DER MELDUNGEN--------------------------------------------------------------------------------------------------------
|
163
|
+
# 5 6 27 num Ausführungstermin Format: JJMMTT; gleich oder nach dem Datum aus K K - K -
|
164
|
+
# Einzelzahlung, wenn Feld Q8, jedoch bis zu höchstens 15 Kalendertage
|
165
|
+
# abweichend von Feld Q8 nach dem Datum aus Feld Q6; fehlt der Termin in
|
166
|
+
# T5, so wird das Datum in Q8 als Ausführungstermin
|
167
|
+
# angenommen.
|
168
|
+
# Entfällt bei der kurzen Variante NUR FUER DIE BEARBEITUNG DER MELDUNGEN--------------------------------------------------------------------------------------------------------
|
169
|
+
# 6 8 33 num BLZ BLZ der kontoführenden Stelle des mit Entgelten K/P N - K/P -
|
170
|
+
# und Auslagen zu belastenden Kontos. (belegt,
|
171
|
+
# wenn dieses Konto abweicht von Auftragswertkonto)
|
172
|
+
# 7a 3 41 alpha ISO-Währungscode Währungscode des mit Entgelten und Aus lagen zu K/P N - K/P Nur 'EUR' zulässig
|
173
|
+
# belastenden Kontos. (belegt, wenn dieses Konto
|
174
|
+
# abweicht von Auftragswertkonto)
|
175
|
+
# 7b 10 44 num Kontonummer Kontonummer des mit Entgelten und Auslagen zu K/P N - K/P Nur 'EUR' zulässig
|
176
|
+
# belastenden Kontos. (belegt, wenn dieses Konto
|
177
|
+
# abweicht von Auftragswertkonto)
|
178
|
+
# /Entfällt bei der kurzen Variante NUR FUER DIE BEARBEITUNG DER MELDUNGEN--------------------------------------------------------------------------------------------------------
|
179
|
+
# 8 11 54 alpha Bank Identifier Code (BIC) Sofern die Zahlung an einen deutschen
|
180
|
+
# des Zahlungsdienstleisters Zahlungsdienstleister erfolgt, alternativ auch K/P P Bank Identifier Code P (BIC) P Bank Identifier Code (BIC) ist Pflicht.
|
181
|
+
# des Zahlungsempfängers oder die BLZ des Zahlungsdienstleisters des ist Pflicht. Zahlungsdienstleister
|
182
|
+
# sonstige Identifikation, z.B. Zahlungsempfängers, wobei dieser drei des Zahlungsempfängers muss in
|
183
|
+
# CHIPS-ID Schrägstriche voranzustellen sind. einem der Län der gemäß Anhang
|
184
|
+
# (Nicht zu belegen bei Scheckziehungen, 4 ansässig sein.
|
185
|
+
# d.h. bei den Zahlungsartschlüsseln
|
186
|
+
# 20-23 und 30-33 in Feld T22)
|
187
|
+
# 9a 3 65 alpha Ländercode für den 2-stelliger ISO-alpha-Ländercode gemäß
|
188
|
+
# Zahlungsdienstleister des Länderverzeichnis für die Zahlungsbilanzstatistik; K/P N - N -
|
189
|
+
# Zahlungsempfängers linksbündig zu belegen; 3. Stelle Leerzeichen
|
190
|
+
# (Pflichtfeld, wenn Feld T8 nicht belegt; nicht zu
|
191
|
+
# belegen bei Scheckziehungen, d.h. bei den
|
192
|
+
# Zahlungsartschlüsseln 20-23 und 30-33 in Feld T22)
|
193
|
+
# 9b 4x35 68 alpha Anschrift des Pflichtfeld, wenn Feld T8 nicht mit BIC- Adresse
|
194
|
+
# Zahlungsdienstleisters bzw. - bei Zahlungen an einen deutschen K/P N - N -
|
195
|
+
# des Zahlungsempfängers Zahlungsdienstleister - nicht mit BLZ belegt;
|
196
|
+
# sofern Anschrift nicht bekannt, Konstante
|
197
|
+
# „UNBEKANNT" Zeile 1 und 2: Name Zeile 3 :
|
198
|
+
# Straße Zeile 4 : Ort (Nicht zu belegen
|
199
|
+
# bei Scheckziehungen, d.h. bei den
|
200
|
+
# Zahlungsartschlüsseln 20-23 und 30-33 in Feld T22)
|
201
|
+
# 10a 3 208 alpha Ländercode für Land des 2-stelliger ISO-alpha-Ländercode gemäß P P - P
|
119
202
|
# Zahlungsempfängers bzw. Länderverzeichnis für die Zahlungsbilanzstatistik;
|
120
203
|
# Scheckempfängers linksbündig zu belegen; 3. Stelle Leerzeichen
|
121
204
|
# 10b 4x35 211 alpha Zahlungsempfänger bzw. Bei Zahlungsauftrag: Zahlungsempfänger Bei P P Angabe eines Scheckempfängers nicht P Angabe eines Scheck empfängers nicht möglich
|
@@ -198,141 +281,48 @@ module KingDta
|
|
198
281
|
# 27 2 767 num Erweiterungskennzeichen 00 = es folgt kein Meldeteil P N - P -
|
199
282
|
#
|
200
283
|
def add_t(booking)
|
201
|
-
data2 = '0768'
|
202
|
-
data2 += 'T'
|
203
|
-
data2 += '%08i' % @account.bank_number
|
204
|
-
data2 += 'EUR'
|
205
|
-
data2 += '%010i' % @account.
|
206
|
-
data2 += @date.strftime("%y%m%d")
|
207
|
-
data2 += '%08i' % 0
|
208
|
-
data2 += '%03s' % ''
|
209
|
-
data2 += '%010i' % 0
|
210
|
-
data2 += '%-011s' % booking.account.
|
211
|
-
data2 += '%-03s' % booking.account.bank_country_code
|
212
|
-
data2 += '
|
213
|
-
data2 += '
|
214
|
-
data2 += '
|
215
|
-
data2 += '%-03s' % booking.account.
|
216
|
-
data2 += '%-
|
217
|
-
data2 += '%-
|
218
|
-
data2 += '%-
|
219
|
-
data2 += '%-
|
220
|
-
data2 += '%070s' % ''
|
221
|
-
data2 += '/%-034s' % booking.account.
|
222
|
-
data2 += 'EUR'
|
223
|
-
data2 += '%014i' % booking.value.divmod(100)[0]
|
224
|
-
data2 += '%02i0' % booking.value.divmod(100)[1]
|
225
|
-
data2 += '
|
284
|
+
data2 = '0768' # PFLICHT, 1 Länge des Datensatzes
|
285
|
+
data2 += 'T' # PFLICHT, 2 Satzart
|
286
|
+
data2 += '%08i' % @account.bank_number # PFLICHT, 3 BLZ des Einreichinstituts
|
287
|
+
data2 += 'EUR' # PFLICHT, 4a ISO-Währungscode
|
288
|
+
data2 += '%010i' % @account.account_number # PFLICHT, 4b Kontonummer
|
289
|
+
data2 += @date.strftime("%y%m%d") # KANN, 5 Ausführungstermin Einzelzahlung, wenn abweichend von Feld Q8
|
290
|
+
data2 += '%08i' % 0 # KANN/PFLICHT 6 BLZ
|
291
|
+
data2 += '%03s' % '' # KANN/PFLICHT 7a ISO-Währungscode
|
292
|
+
data2 += '%010i' % 0 # KANN/PFLICHT 7b BLZ
|
293
|
+
data2 += '%-011s' % booking.account.bank_number # KANN/PFLICHT 8 11 Bank Identifier Code (BIC) des Zahlungsdienstleisters des Zahlungsempfängers (AUCH BLZ denke ich)
|
294
|
+
data2 += '%-03s' % '' #booking.account.bank_country_code # KANN/PFLICHT 9a 3 Ländercode für den Zahlungsdienstleister des Zahlungsempfängers
|
295
|
+
data2 += '%070s' % '' #booking.account.bank_name # KANN/PFLICHT 9b 4x35 Anschrift des Zahlungsdienstleisters des Zahlungsempfängers - Pflichtfeld wenn T8 nich belegt Zeile 1 und 2:
|
296
|
+
data2 += '%035s' % '' #booking.account.street # KANN/PFLICHT 9b Name Zeile 3 : Straße Zeile
|
297
|
+
data2 += '%035s' % '' #booking.account.zip_city # KANN/PFLICHT 9b 4 : Ort
|
298
|
+
data2 += '%-03s' % booking.account.client_country_code # PFLICHT 10a Ländercode für Land des Zahlungsempfängers bzw. Scheckempfängers
|
299
|
+
data2 += '%-035s' % booking.account.client_name_1 # KANN/PFLICHT 10b 4x35 Anschrift des Zahlungsdienstleisters des Zahlungsempfängers - Pflichtfeld wenn T8 nich belegt Zeile 1 und 2:
|
300
|
+
data2 += '%-035s' % booking.account.client_name_2 # KANN/PFLICHT 10b 4x35 Anschrift des Zahlungsdienstleisters des Zahlungsempfängers - Pflichtfeld wenn T8 nich belegt Zeile 1 und 2:
|
301
|
+
data2 += '%-035s' % booking.account.client_street # KANN/PFLICHT 10b Name Zeile 3 : Straße Zeile
|
302
|
+
data2 += '%-035s' % booking.account.client_zip_city # KANN/PFLICHT 10b 4 : Ort
|
303
|
+
data2 += '%070s' % '' # KANN/PFLICHT 11 Ordervermerk
|
304
|
+
data2 += '/%-034s' % booking.account.account_number # PFLICHT 12 35 IBAN bzw. Kontonummer des
|
305
|
+
data2 += 'EUR' # KANN/PFLICHT 13 3 Auftragswährung "EUR"
|
306
|
+
data2 += '%014i' % booking.value.divmod(100)[0] # PFLICHT 14a 14 Betrag (Vorkommastellen) Rechtsbündig
|
307
|
+
data2 += '%02i0' % booking.value.divmod(100)[1] # PFLICHT 14b 3 Betrag (Nachkommastellen) Linksbündig
|
308
|
+
data2 += '%0140s' % booking.text || default_text # KANN 15 4x35 Verwendungszweck
|
226
309
|
data2 += "%02i" % 0 # N 16 Weisungsschlüssel 1 (gem. Anhang 2)
|
227
310
|
data2 += "%02i" % 0 # N 17 Weisungsschlüssel 2 (gem. Anhang 2)
|
228
311
|
data2 += "%02i" % 0 # N 18 Weisungsschlüssel 3 (gem. Anhang 2)
|
229
312
|
data2 += "%02i" % 0 # N 19 Weisungsschlüssel 4 (gem. Anhang 2 und 2a)
|
230
313
|
data2 += '%025s' % '' # N 20 Zusatzinformationen zum Weisungsschlüssel
|
231
|
-
data2 += "%02i" % 0
|
232
|
-
data2 += "%02i" % 13
|
233
|
-
data2 += '%027s' % ''
|
314
|
+
data2 += "%02i" % 0 # PFLICHT 21 Entgeltregelung
|
315
|
+
data2 += "%02i" % 13 # PFLICHT 22 Kennzeichnung der Zahlungsart Gemäß Anhang 1; Zahlungen, die weder '11' noch '13' als Zahlungsartschlüssel enthalten
|
316
|
+
data2 += '%027s' % '' # KANN 23 Variabler Text nur für Auftraggeberabrechnung
|
234
317
|
# i dont know what to do.
|
235
|
-
data2 += '%035s' % ''
|
236
|
-
data2 += '%01i' % 0
|
237
|
-
data2 += '%051s' % ''
|
238
|
-
data2 += '%02i' % 0 # Erweiterungskennzeichen
|
318
|
+
data2 += '%035s' % '' # KANN/PFLICHT 24 35 Name und Telefonnummer sowie ggf. Stellvertretungsmeldung
|
319
|
+
data2 += '%01i' % 0 # KANN/NICHT 25 Meldeschlüssel
|
320
|
+
data2 += '%051s' % '' # N 26 Reserve
|
321
|
+
data2 += '%02i' % 0 # PFLICHT/NICHT 27 2 Erweiterungskennzeichen 00 = es folgt kein Meldeteil
|
239
322
|
raise "DTAUS: Längenfehler T (#{data2.size} <> 768)\n" if data2.size != 768
|
240
323
|
dta_string << data2
|
241
324
|
end
|
242
325
|
|
243
|
-
|
244
|
-
|
245
|
-
#Erstellen Y-Segment der DTAZV-Datei
|
246
|
-
# - Y Datei-Nachsatz mit 256 Bytes
|
247
|
-
# === Parameter
|
248
|
-
# booking<Object>::Booking object to be written to c-sektion
|
249
|
-
#
|
250
|
-
# === Returns
|
251
|
-
# <String>:: The current dta_string
|
252
|
-
#Aufbau des Segments:
|
253
|
-
# Feld Länge in Bytes 1. Stelle im Satz Feldart Datenformat Inhalt Erläuterungen
|
254
|
-
# 1 4 1 P binär/num Satzlänge Längenangabe des Satzes nach den Konventionen für variable Satzlänge (binär bei Bändern, numerisch bei Disketten und DFÜ)
|
255
|
-
# 2 1 5 P alpha Satzart Konstante Y
|
256
|
-
# 3 15 6 P num Betragssumme Aus Datensätzen U Feld 5 ( = 0, falls keine U-Sätze vorhanden)
|
257
|
-
# 4 15 21 P num Betragssumme Aus Datensätzen V Feld 7
|
258
|
-
# 5 15 36 P num Betragssumme Aus Datensätzen V Feld 17
|
259
|
-
# 6 15 51 P num Betragssumme Aus Datensätzen W Feld 9
|
260
|
-
# 7 6 66 P num Anzahl der Datensätze Anzahl Datensätze U, V, W
|
261
|
-
# 8 6 72 P num Anzahl der Datensätze Anzahl Datensätze T
|
262
|
-
# 9 179 78 P alpha Leerzeichen Reserve
|
263
|
-
def add_y(bookings)
|
264
|
-
data3 = '0256'
|
265
|
-
data3 += 'Y'
|
266
|
-
data3 += '%015i' % 0
|
267
|
-
data3 += '%015i' % 0
|
268
|
-
data3 += '%015i' % 0
|
269
|
-
data3 += '%015i' % 0
|
270
|
-
data3 += '%06i' % 0 # 7 Anzahl der Datensätze
|
271
|
-
data3 += '%06i' % bookings.count # 8 Anzahl der Datensätze
|
272
|
-
data3 += '%0179s' % ''
|
273
|
-
raise "DTAUS: Längenfehler T (#{data3.size} <> 256)\n" if data3.size != 256
|
274
|
-
dta_string << data3
|
275
|
-
end
|
276
|
-
|
277
|
-
# THE MAGICAL Z SEGMENT
|
278
|
-
def add_z(bookings)
|
279
|
-
data3 = '0256'
|
280
|
-
data3 += 'Z'
|
281
|
-
sum = 0
|
282
|
-
bookings.each do |b|
|
283
|
-
sum += b.value.divmod(100)[0]
|
284
|
-
end
|
285
|
-
data3 += '%015i' % sum
|
286
|
-
data3 += '%015i' % bookings.count
|
287
|
-
data3 += '%0221s' % ''
|
288
|
-
raise "DTAUS: Längenfehler Z (#{data3.size} <> 256)\n" if data3.size != 256
|
289
|
-
dta_string << data3
|
290
|
-
end
|
291
|
-
|
292
|
-
# Erstellen P-Segment der DTAZV-Datei
|
293
|
-
# - P Datei-Vorsatz mit 256 Bytes
|
294
|
-
#
|
295
|
-
# === Parameter
|
296
|
-
# booking<Object>::Booking object to be written to c-sektion
|
297
|
-
#
|
298
|
-
# === Returns
|
299
|
-
# <String>:: The current dta_string
|
300
|
-
# Aufbau und Erläuterungen der Datei
|
301
|
-
# Datensatz P (Datei-Vorsatz)
|
302
|
-
|
303
|
-
# Der Vorsatz enthält Informationen über ein Institut, das Kundendatensätze Q, T, V und W als Meldung
|
304
|
-
# nach §§ 59 ff. der AWV weiterleitet. Der Vorsatz bezieht sich auf alle unmittelbar folgen den
|
305
|
-
# Kundendatensätze, deren Folge mit einem Datei-Nachsatz Y abgeschlossen wird.
|
306
|
-
|
307
|
-
# Legende:
|
308
|
-
# K = Kannfeld
|
309
|
-
# P = Pflichtfeld
|
310
|
-
# K/P = Pflichtfeld in Abhängigkeit von bestimmten Kriterien
|
311
|
-
# N = nicht belegbares Feld
|
312
|
-
# alpha = alphanumerische Daten (linksbündig, nicht belegte Stellen: Leerzeichen)
|
313
|
-
# num = numerische Daten (rechtsbündig, nicht belegte Stellen Nullen)
|
314
|
-
|
315
|
-
# Feld Länge in Bytes 1. Stelle im Satz Feldart Datenformat Inhalt Erläuterungen
|
316
|
-
# 1 4 1 P binär/num Satzlänge Längenangabe des Satzes nach den Konventionen für variable Satzlänge (binär bei Bändern 3, numerisch bei Disketten und DFÜ)
|
317
|
-
# 2 1 5 P alpha Satzart Konstante 'P'
|
318
|
-
# 3 8 6 K/P num Bankleitzahl BLZ des Einreichinstituts
|
319
|
-
# 4 4x35 14 P alpha Einreichinstitut Zeile 1 u. 2: Name; Zeile 3: Straße Postfach; Zeile 4: Ort
|
320
|
-
# 5 6 154 P num Erstellungsdatum In der Form JJMMTT
|
321
|
-
# 6 2 160 P num laufende Nummer Laufende Tagesnummer
|
322
|
-
# 7 95 162 N alpha Reserve
|
323
|
-
def add_p
|
324
|
-
# data = '0256' # Länge des Datensatzes, PFLICHT
|
325
|
-
# data += 'P' # Satzart, PFLICHT
|
326
|
-
# data += '%8i' % @account.bank_number # BLZ des Einreichinstituts, KANN
|
327
|
-
# data += '%70s' % @account.bank_name # Einreichinstitut Zeile 1 u. 2: Name; PFLICHT
|
328
|
-
# data += '%35s' % @account.account_street_zip # Einreichinstitut Straße Postfach; Ort PFLICHT
|
329
|
-
# data += '%35s' % @account.city # Einreichinstitut Zeile 4: Ort PFLICHT
|
330
|
-
# data += @date.strftime("%y%m%d") # Erstellungsdatum In der Form JJMMTT, PFLICHT
|
331
|
-
# data += '01' # laufende Nummer Laufende Tagesnummer, PFLICHT
|
332
|
-
# data += '%095s' % '' # Reserve
|
333
|
-
# raise "DTAUS: Längenfehler P (#{data.size} <> 256)\n" if data.size != 256
|
334
|
-
# dta_string << data
|
335
|
-
end
|
336
326
|
#Erstellen V-Segment der DTAZV-Datei
|
337
327
|
# - V Meldedatensatz zum Transithandel mit 256 Bytes
|
338
328
|
# === Parameter
|
@@ -428,5 +418,53 @@ module KingDta
|
|
428
418
|
# data += '%0140s' # 10 nähere Angaben zur zugrunde liegenden Leistung
|
429
419
|
# data += '%075s' # 11 Reserve
|
430
420
|
end
|
421
|
+
|
422
|
+
#Erstellen Y-Segment der DTAZV-Datei
|
423
|
+
# - Y Datei-Nachsatz mit 256 Bytes
|
424
|
+
# === Parameter
|
425
|
+
# booking<Object>::Booking object to be written to c-sektion
|
426
|
+
#
|
427
|
+
# === Returns
|
428
|
+
# <String>:: The current dta_string
|
429
|
+
#Aufbau des Segments:
|
430
|
+
# Feld Länge in Bytes 1. Stelle im Satz Feldart Datenformat Inhalt Erläuterungen
|
431
|
+
# 1 4 1 P binär/num Satzlänge Längenangabe des Satzes nach den Konventionen für variable Satzlänge (binär bei Bändern, numerisch bei Disketten und DFÜ)
|
432
|
+
# 2 1 5 P alpha Satzart Konstante Y
|
433
|
+
# 3 15 6 P num Betragssumme Aus Datensätzen U Feld 5 ( = 0, falls keine U-Sätze vorhanden)
|
434
|
+
# 4 15 21 P num Betragssumme Aus Datensätzen V Feld 7
|
435
|
+
# 5 15 36 P num Betragssumme Aus Datensätzen V Feld 17
|
436
|
+
# 6 15 51 P num Betragssumme Aus Datensätzen W Feld 9
|
437
|
+
# 7 6 66 P num Anzahl der Datensätze Anzahl Datensätze U, V, W
|
438
|
+
# 8 6 72 P num Anzahl der Datensätze Anzahl Datensätze T
|
439
|
+
# 9 179 78 P alpha Leerzeichen Reserve
|
440
|
+
def add_y(bookings)
|
441
|
+
data3 = '0256' # 1 Länge des Datensatzes
|
442
|
+
data3 += 'Y' # 2 Satzart
|
443
|
+
data3 += '%015i' % 0 # 3 Betragssumme
|
444
|
+
data3 += '%015i' % 0 # 4 Betragssumme
|
445
|
+
data3 += '%015i' % 0 # 5 Betragssumme
|
446
|
+
data3 += '%015i' % 0 # 6 Betragssumme
|
447
|
+
data3 += '%06i' % 0 # 7 Anzahl der Datensätze
|
448
|
+
data3 += '%06i' % bookings.count # 8 Anzahl der Datensätze
|
449
|
+
data3 += '%0179s' % '' # 9 Leerzeichen Reserve
|
450
|
+
raise "DTAUS: Längenfehler T (#{data3.size} <> 256)\n" if data3.size != 256
|
451
|
+
dta_string << data3
|
452
|
+
end
|
453
|
+
|
454
|
+
# THE MAGICAL Z SEGMENT
|
455
|
+
def add_z(bookings)
|
456
|
+
data3 = '0256'
|
457
|
+
data3 += 'Z'
|
458
|
+
sum = 0
|
459
|
+
bookings.each do |b|
|
460
|
+
sum += b.value.divmod(100)[0]
|
461
|
+
end
|
462
|
+
data3 += '%015i' % sum
|
463
|
+
data3 += '%015i' % bookings.count
|
464
|
+
data3 += '%0221s' % ''
|
465
|
+
raise "DTAUS: Längenfehler Z (#{data3.size} <> 256)\n" if data3.size != 256
|
466
|
+
dta_string << data3
|
467
|
+
end
|
468
|
+
|
431
469
|
end
|
432
470
|
end
|
data/lib/king_dta/helper.rb
CHANGED
data/lib/king_dtaus.rb
CHANGED