king_dtaus 2.0.0.pre → 2.0.0
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/.travis.yml +3 -0
- data/Gemfile +5 -1
- data/README.markdown +128 -0
- data/Rakefile +7 -2
- data/VERSION +1 -1
- data/king_dtaus.gemspec +12 -13
- data/lib/king_dta/account.rb +30 -30
- data/lib/king_dta/dta.rb +10 -0
- data/lib/king_dta/dtaus.rb +125 -134
- data/lib/king_dta/dtazv.rb +183 -221
- data/lib/king_dta/helper.rb +3 -1
- data/lib/king_dtaus.rb +1 -0
- data/spec/account_spec.rb +65 -117
- data/spec/booking_spec.rb +1 -3
- data/spec/dtaus_spec.rb +35 -12
- data/spec/dtazv_spec.rb +77 -176
- data/spec/spec_helper.rb +43 -66
- metadata +48 -31
- data/.rvmrc +0 -1
- data/DTAUS0.TXT +0 -1
- data/Gemfile.lock +0 -38
- data/README.rdoc +0 -119
- data/spec/dtazv_test.rb +0 -105
- /data/{example.output → docs/example.output} +0 -0
data/lib/king_dta/dtazv.rb
CHANGED
@@ -2,17 +2,6 @@
|
|
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
|
-
|
16
5
|
# Creates the whole dta string(in the right order) and returns it
|
17
6
|
# === Raises
|
18
7
|
# error if there are no bookings
|
@@ -26,104 +15,62 @@ module KingDta
|
|
26
15
|
add_z(bookings)
|
27
16
|
end
|
28
17
|
|
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
|
72
18
|
|
73
|
-
#Erstellen Q-Segment der DTAZV-Datei
|
19
|
+
# Erstellen Q-Segment der DTAZV-Datei
|
74
20
|
# - Q Auftraggebersatz mit 256 oder 246 Bytes (= Datei-Vorsatz aus dem Datenaustausch zwischen Kunde und Bank)
|
21
|
+
#
|
75
22
|
# === Parameter
|
76
23
|
# booking<Object>::Booking object to be written to c-sektion
|
77
24
|
#
|
78
25
|
# === Returns
|
79
26
|
# <String>:: The current dta_string
|
80
|
-
|
27
|
+
#
|
28
|
+
# === Info
|
81
29
|
# 5.2 Datensatz Q - lange Variante - (Identifikation des Auftraggebers)
|
82
30
|
# Die Bundesbank nimmt Q-Sätze in 2 Varianten entgegen. Die lange Variante ist identisch mit den von
|
83
31
|
# den Auftraggebern gelieferten Q-Sätzen. In der kurzen Variante sind nur die Felder enthalten,
|
84
32
|
# die von der Bundesbank bei der Bearbeitung der Meldungen benötigt werden (siehe 5.3).
|
85
33
|
# Beide Varianten dürfen in einer Datei vorkommen.
|
86
|
-
|
34
|
+
#
|
87
35
|
# Datensatz Q - kurze Variante
|
88
36
|
# Die Bundesbank nimmt Q-Sätze in 2 Varianten entgegen. Die lange Variante ist identisch mit
|
89
37
|
# den von den Auftraggebern gelieferten Q-Sätzen. In der kurzen Variante sind nur die Felder
|
90
38
|
# enthalten, die von der Bundesbank bei der Bearbeitung der Meldungen benötigt werden; das in der
|
91
39
|
# kurzen Variante nicht enthaltene Feld ist in der folgenden Tabelle durch Schattierung und Kursivschrift
|
92
40
|
# kenntlich gemacht. Beide Varianten dürfen in einer Datei vorkommen.
|
93
|
-
|
94
41
|
# [ Anmerk.: Bei der Kurzen Variante entfällt die Kundennummer ]
|
95
|
-
|
96
|
-
#
|
97
|
-
#
|
98
|
-
#
|
99
|
-
#
|
100
|
-
#
|
101
|
-
# 4
|
102
|
-
#
|
103
|
-
#
|
104
|
-
# 6
|
105
|
-
# 7
|
106
|
-
# 8
|
107
|
-
# 9
|
108
|
-
# 10
|
109
|
-
# 11
|
110
|
-
# 12
|
42
|
+
#
|
43
|
+
# === Fields
|
44
|
+
# Nr Start Länge Inhalt
|
45
|
+
# 1 1 4 Satzlänge numerisch bei Disketten und DFÜ
|
46
|
+
# 2 5 1 Satzart Konstante "Q"
|
47
|
+
# 3 6 8 BLZ Erstbeauftragtes Kreditinstitut
|
48
|
+
# 4 14 10 Kundennummer Entfällt bei der kurzen Variante
|
49
|
+
# 5 24 4x35 Auftraggeberdaten Zeile 1 und 2: Name;
|
50
|
+
# Zeile 3: Straße/Postfach; Zeile 4: Ort
|
51
|
+
# 6 164 6 Erstellungsdatum Format: JJMMTT
|
52
|
+
# 7 170 2 Laufende Tagesnummer bei mehreren Überweisungen/Tag
|
53
|
+
# 8 172 6 Ausführungstermin Datei, Format: JJMMTT; max Feld Q6 + 15 Tage
|
54
|
+
# 9 178 1 Weiterleitung an die Meldebehörde, 'N' Nein, 'J' Ja
|
55
|
+
# 10 179 2 optional Bundeslandschlüssel Zwingend bei 'J' in Feld Q9
|
56
|
+
# 11 181 8 optional Firmennummer / BLZ des Auftraggebers Siehe Feld Q10
|
57
|
+
# 12 189 68 Reserve
|
111
58
|
def add_q
|
112
|
-
data1 = '0256'
|
113
|
-
data1 += 'Q'
|
114
|
-
data1 += '%08i' % @account.bank_number
|
115
|
-
data1 += '%010i' % @account.
|
116
|
-
data1 += '%-035s'
|
117
|
-
data1 += '%-035s'
|
118
|
-
data1 += '%-035s'
|
119
|
-
data1 += '%-035s'
|
120
|
-
data1 += @date.strftime("%y%m%d") # Erstellungsdatum
|
121
|
-
data1 += '01'
|
122
|
-
data1 += @date.strftime("%y%m%d") #
|
123
|
-
data1 += "N"
|
124
|
-
data1 += "%02i"
|
125
|
-
data1 += '%08i'
|
126
|
-
data1 += '%068s'
|
59
|
+
data1 = '0256'
|
60
|
+
data1 += 'Q'
|
61
|
+
data1 += '%08i' % @account.bank_number
|
62
|
+
data1 += '%010i' % @account.bank_account_number
|
63
|
+
data1 += '%-035s' % @account.owner_name[0..34]
|
64
|
+
data1 += '%-035s' % @account.owner_name[25..69]
|
65
|
+
data1 += '%-035s' % @account.owner_street
|
66
|
+
data1 += '%-035s' % @account.owner_zip_city
|
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" % 0
|
72
|
+
data1 += '%08i' % 0
|
73
|
+
data1 += '%068s' % ''
|
127
74
|
raise "DTAUS: Längenfehler Q (#{data.size} <> 256)\n" if data1.size != 256
|
128
75
|
dta_string << data1
|
129
76
|
end
|
@@ -131,7 +78,7 @@ module KingDta
|
|
131
78
|
#Erstellen T-Segment der DTAZV-Datei
|
132
79
|
# - T Einzelzahlungssatz mit 768 oder 572 Bytes
|
133
80
|
# === Parameter
|
134
|
-
# booking<Object>::Booking object to be written to c-
|
81
|
+
# booking<Object>::Booking object to be written to c-section
|
135
82
|
#
|
136
83
|
# === Returns
|
137
84
|
# <String>:: The current dta_string
|
@@ -148,57 +95,27 @@ module KingDta
|
|
148
95
|
# die Felder enthalten, die von der Bundesbank bei der Bearbeitung der Meldungen benötigt
|
149
96
|
# werden. Die in der kurzen Variante nicht enthaltenen Felder sind in der folgenden Tabelle
|
150
97
|
# durch Schattierung und Kursivschrift kenntlich gemacht. Beide Varianten dürfen in einer Datei vorkommen.
|
151
|
-
|
152
|
-
#
|
153
|
-
# 1
|
154
|
-
|
155
|
-
#
|
156
|
-
#
|
157
|
-
#
|
158
|
-
#
|
159
|
-
#
|
160
|
-
#
|
161
|
-
#
|
162
|
-
#
|
163
|
-
#
|
164
|
-
#
|
165
|
-
#
|
166
|
-
#
|
167
|
-
#
|
168
|
-
#
|
169
|
-
#
|
170
|
-
#
|
171
|
-
#
|
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
|
98
|
+
#
|
99
|
+
# Nr Start Länge Inhalt
|
100
|
+
# 1 1 4 Satzlänge
|
101
|
+
# 2 5 1 Konstante "T"
|
102
|
+
# 3 6 8 BLZ des zu belastenden Kontos
|
103
|
+
# 4a 14 3 Währungscode nur EUR - Entfällt bei der kurzen Variante
|
104
|
+
# 4b 17 10 Kontonummer des zu belastenden Konto - Entfällt bei der kurzen Variante
|
105
|
+
# 5 27 6 Ausführungstermin Format: JJMMTT; Q6 + max 15 Tage; default: Q8
|
106
|
+
# 6 33 8 BLZ des zu belastenden Kontos - wenn Konto abweicht von Auftragswertkonto - Entfällt bei der kurzen Variante
|
107
|
+
# 7a 41 3 ISO-Währungscode EUR, wenn Konto abweicht von Auftragswertkonto - Entfällt bei der kurzen Variante
|
108
|
+
# 7b 44 10 Kontonummer, wenn Konto abweicht von Auftragswertkonto - Entfällt bei der kurzen Variante
|
109
|
+
# 8 54 11 BIC des Zahlungsempfängers Wenn BLZ(DE only) sind drei Schrägstriche voranzustellen
|
110
|
+
# Nicht zu belegen bei Scheckziehungen,d.h. bei den Zahlungsartschlüsseln 20-23 und 30-33 in Feld T22)
|
111
|
+
# 9a 65 3 2-stelliger ISO-alpha-Ländercode Zahlungsempfängers, siehe Länderverzeichnis für die Zahlungsbilanzstatistik;
|
112
|
+
# Pflicht, wenn T8 nicht belegt; nicht zu belegen bei Scheckziehungen,
|
113
|
+
# 9b 68 4x35 Anschrift Bank des Zahlungsempfängers. Pflicht wenn T8 nicht belegt
|
114
|
+
# Wenn Anschrift nicht bekannt„UNBEKANNT"
|
115
|
+
# Zeile 1 und 2: Name Zeile 3: Straße Zeile 4: Ort
|
116
|
+
# Nicht zu belegen bei Scheckziehungen
|
117
|
+
#
|
118
|
+
# 10a 3 208 alpha Ländercode für Land des 2-stelliger ISO-alpha-Ländercode gemäß P P - P
|
202
119
|
# Zahlungsempfängers bzw. Länderverzeichnis für die Zahlungsbilanzstatistik;
|
203
120
|
# Scheckempfängers linksbündig zu belegen; 3. Stelle Leerzeichen
|
204
121
|
# 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
|
@@ -281,48 +198,141 @@ module KingDta
|
|
281
198
|
# 27 2 767 num Erweiterungskennzeichen 00 = es folgt kein Meldeteil P N - P -
|
282
199
|
#
|
283
200
|
def add_t(booking)
|
284
|
-
data2 = '0768'
|
285
|
-
data2 += 'T'
|
286
|
-
data2 += '%08i' % @account.bank_number
|
287
|
-
data2 += 'EUR'
|
288
|
-
data2 += '%010i' % @account.
|
289
|
-
data2 += @date.strftime("%y%m%d")
|
290
|
-
data2 += '%08i' % 0
|
291
|
-
data2 += '%03s' % ''
|
292
|
-
data2 += '%010i' % 0
|
293
|
-
data2 += '%-011s' % booking.account.
|
294
|
-
data2 += '%-03s' %
|
295
|
-
data2 += '
|
296
|
-
data2 += '
|
297
|
-
data2 += '
|
298
|
-
data2 += '%-03s' % booking.account.
|
299
|
-
data2 += '%-
|
300
|
-
data2 += '%-
|
301
|
-
data2 += '%-
|
302
|
-
data2 += '%-
|
303
|
-
data2 += '%070s' % ''
|
304
|
-
data2 += '/%-034s' % booking.account.
|
305
|
-
data2 += 'EUR'
|
306
|
-
data2 += '%014i' % booking.value.divmod(100)[0]
|
307
|
-
data2 += '%02i0' % booking.value.divmod(100)[1]
|
308
|
-
data2 += '
|
201
|
+
data2 = '0768'
|
202
|
+
data2 += 'T'
|
203
|
+
data2 += '%08i' % @account.bank_number
|
204
|
+
data2 += 'EUR'
|
205
|
+
data2 += '%010i' % @account.bank_account_number
|
206
|
+
data2 += @date.strftime("%y%m%d") # KANN, 5 Ausführungstermin Einzelzahlung, wenn abweichend von Q8
|
207
|
+
data2 += '%08i' % 0 # KANN/PFLICHT 6 BLZ
|
208
|
+
data2 += '%03s' % '' # KANN/PFLICHT 7a ISO-Währungscode
|
209
|
+
data2 += '%010i' % 0 # KANN/PFLICHT 7b BLZ
|
210
|
+
data2 += '%-011s' % booking.account.bank_bic
|
211
|
+
data2 += '%-03s' % booking.account.bank_country_code # Pflichtfelder wenn T8 leer
|
212
|
+
data2 += '%-070s' % booking.account.bank_name
|
213
|
+
data2 += '%-035.35s' % booking.account.bank_street
|
214
|
+
data2 += '%-035.35s' % booking.account.bank_zip_city
|
215
|
+
data2 += '%-03s' % booking.account.owner_country_code # PFLICHT 10a Ländercode für Land des Zahlungsempfängers
|
216
|
+
data2 += '%-035.35s' % booking.account.owner_name[0..34] # Zahlungsempfänger
|
217
|
+
data2 += '%-035.35s' % booking.account.owner_name[35..69]
|
218
|
+
data2 += '%-035.35s' % booking.account.owner_street
|
219
|
+
data2 += '%-035.35s' % booking.account.owner_zip_city
|
220
|
+
data2 += '%070s' % '' # KANN/PFLICHT 11 Ordervermerk
|
221
|
+
data2 += '/%-034s' % booking.account.bank_iban # PFLICHT 12 35 IBAN bzw. Kontonummer des
|
222
|
+
data2 += 'EUR' # KANN/PFLICHT 13 3 Auftragswährung "EUR"
|
223
|
+
data2 += '%014i' % booking.value.divmod(100)[0] # PFLICHT 14a 14 Betrag (Vorkommastellen) Rechtsbündig
|
224
|
+
data2 += '%02i0' % booking.value.divmod(100)[1] # PFLICHT 14b 3 Betrag (Nachkommastellen) Linksbündig
|
225
|
+
data2 += '%-0140s' % (booking.text || default_text)
|
309
226
|
data2 += "%02i" % 0 # N 16 Weisungsschlüssel 1 (gem. Anhang 2)
|
310
227
|
data2 += "%02i" % 0 # N 17 Weisungsschlüssel 2 (gem. Anhang 2)
|
311
228
|
data2 += "%02i" % 0 # N 18 Weisungsschlüssel 3 (gem. Anhang 2)
|
312
229
|
data2 += "%02i" % 0 # N 19 Weisungsschlüssel 4 (gem. Anhang 2 und 2a)
|
313
230
|
data2 += '%025s' % '' # N 20 Zusatzinformationen zum Weisungsschlüssel
|
314
|
-
data2 += "%02i" % 0
|
315
|
-
data2 += "%02i" % 13
|
316
|
-
data2 += '%027s' % ''
|
231
|
+
data2 += "%02i" % 0 # PFLICHT 21 Entgeltregelung
|
232
|
+
data2 += "%02i" % 13 # PFLICHT 22 Kennzeichnung der Zahlungsart Gemäß Anhang 1; Zahlungen, die weder '11' noch '13' als Zahlungsartschlüssel enthalten
|
233
|
+
data2 += '%027s' % '' # KANN 23 Variabler Text nur für Auftraggeberabrechnung
|
317
234
|
# i dont know what to do.
|
318
|
-
data2 += '%035s' % ''
|
319
|
-
data2 += '%01i' % 0
|
320
|
-
data2 += '%051s' % ''
|
321
|
-
data2 += '%02i' % 0 #
|
235
|
+
data2 += '%035s' % '' # KANN/PFLICHT 24 35 Name und Telefonnummer sowie ggf. Stellvertretungsmeldung
|
236
|
+
data2 += '%01i' % 0 # KANN/NICHT 25 Meldeschlüssel
|
237
|
+
data2 += '%051s' % ''
|
238
|
+
data2 += '%02i' % 0 # Erweiterungskennzeichen 00 = es folgt kein Meldeteil
|
322
239
|
raise "DTAUS: Längenfehler T (#{data2.size} <> 768)\n" if data2.size != 768
|
323
240
|
dta_string << data2
|
324
241
|
end
|
325
242
|
|
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
|
326
336
|
#Erstellen V-Segment der DTAZV-Datei
|
327
337
|
# - V Meldedatensatz zum Transithandel mit 256 Bytes
|
328
338
|
# === Parameter
|
@@ -418,53 +428,5 @@ module KingDta
|
|
418
428
|
# data += '%0140s' # 10 nähere Angaben zur zugrunde liegenden Leistung
|
419
429
|
# data += '%075s' # 11 Reserve
|
420
430
|
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
|
-
|
469
431
|
end
|
470
432
|
end
|
data/lib/king_dta/helper.rb
CHANGED
data/lib/king_dtaus.rb
CHANGED