king_dtaus 1.0.2 → 2.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,470 @@
1
+ # encoding: utf-8
2
+ module KingDta
3
+ class Dtazv < Dta
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
+ # Creates the whole dta string(in the right order) and returns it
17
+ # === Raises
18
+ # error if there are no bookings
19
+ def create
20
+ raise Exception.new("Cannot create DTAUS without bookings") if bookings.empty?
21
+ @closed = true
22
+ # cleanup before we start
23
+ @dta_string = dta_string.empty? ? dta_string : ''
24
+ add_q
25
+ bookings.each{ |b| add_t(b) }
26
+ add_z(bookings)
27
+ end
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
72
+
73
+ #Erstellen Q-Segment der DTAZV-Datei
74
+ # - Q Auftraggebersatz mit 256 oder 246 Bytes (= Datei-Vorsatz aus dem Datenaustausch zwischen Kunde und Bank)
75
+ # === Parameter
76
+ # booking<Object>::Booking object to be written to c-sektion
77
+ #
78
+ # === Returns
79
+ # <String>:: The current dta_string
80
+
81
+ # 5.2 Datensatz Q - lange Variante - (Identifikation des Auftraggebers)
82
+ # Die Bundesbank nimmt Q-Sätze in 2 Varianten entgegen. Die lange Variante ist identisch mit den von
83
+ # den Auftraggebern gelieferten Q-Sätzen. In der kurzen Variante sind nur die Felder enthalten,
84
+ # die von der Bundesbank bei der Bearbeitung der Meldungen benötigt werden (siehe 5.3).
85
+ # Beide Varianten dürfen in einer Datei vorkommen.
86
+
87
+ # Datensatz Q - kurze Variante
88
+ # Die Bundesbank nimmt Q-Sätze in 2 Varianten entgegen. Die lange Variante ist identisch mit
89
+ # den von den Auftraggebern gelieferten Q-Sätzen. In der kurzen Variante sind nur die Felder
90
+ # enthalten, die von der Bundesbank bei der Bearbeitung der Meldungen benötigt werden; das in der
91
+ # kurzen Variante nicht enthaltene Feld ist in der folgenden Tabelle durch Schattierung und Kursivschrift
92
+ # kenntlich gemacht. Beide Varianten dürfen in einer Datei vorkommen.
93
+
94
+ # [ Anmerk.: Bei der Kurzen Variante entfällt die Kundennummer ]
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
111
+ def add_q
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_firstname # Einreichinstitut Zeile 1 u. 2: Name, PFLICHT
117
+ data1 += '%-035s' % @account.client_surname # 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
127
+ raise "DTAUS: Längenfehler Q (#{data.size} <> 256)\n" if data1.size != 256
128
+ dta_string << data1
129
+ end
130
+
131
+ #Erstellen T-Segment der DTAZV-Datei
132
+ # - T Einzelzahlungssatz mit 768 oder 572 Bytes
133
+ # === Parameter
134
+ # booking<Object>::Booking object to be written to c-sektion
135
+ #
136
+ # === Returns
137
+ # <String>:: The current dta_string
138
+
139
+ # 5.4 Datensatz T - lange Variante - (Einzelzahlungssatz)
140
+ # Die Bundesbank nimmt auch T-Sätze in 2 Varianten entgegen. Die lange Variante ist identisch
141
+ # mit den von den Auftraggebern gelieferten T-Sätzen. In der kurzen Variante sind
142
+ # nur die Felder enthalten, die von der Bundesbank bei der Bearbeitung der Meldungen
143
+ # benötigt werden (siehe 5.5). Beide Varianten dürfen in einer Datei vorkommen.
144
+
145
+ # 5.5 Datensatz T - kurze Variante
146
+ # Die Bundesbank nimmt auch T-Sätze in 2 Varianten entgegen. Die lange Variante ist identisch
147
+ # mit den von den Auftraggebern gelieferten T-Sätzen. In der kurzen Variante sind nur
148
+ # die Felder enthalten, die von der Bundesbank bei der Bearbeitung der Meldungen benötigt
149
+ # werden. Die in der kurzen Variante nicht enthaltenen Felder sind in der folgenden Tabelle
150
+ # durch Schattierung und Kursivschrift kenntlich gemacht. Beide Varianten dürfen in einer Datei vorkommen.
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
202
+ # Zahlungsempfängers bzw. Länderverzeichnis für die Zahlungsbilanzstatistik;
203
+ # Scheckempfängers linksbündig zu belegen; 3. Stelle Leerzeichen
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
205
+ # Scheckempfänger Scheckziehung: Scheckempfänger Zeile 1 und 2: möglich
206
+ # Name Zeile 3 : Straße Zeile 4 : Ort/Land.
207
+ # Entfällt bei der kurzen Variante NUR FUER DIE BEARBEITUNG DER MELDUNGEN--------------------------------------------------------------------------------------------------------
208
+ # 11 2x35 351 alpha Ordervermerk Nur belegt bei Scheckziehung (d.h. bei den
209
+ # Zahlungsartschlüsseln 20-23 und 30-33 in Feld T22) K/P N - N -
210
+ # und Abweichung vom Inhalt der Zeilen 1 und 2
211
+ # des Feldes T10b
212
+ # 12 35 421 alpha IBAN bzw. Kontonummer des IBAN oder Kontonummer des Zahlungs­ empfängers,
213
+ # Zahlungsempfängers linksbündig, mit Schrägstrich beginnend. K/P P Nur IBAN zulässig;Linksbündig P Nur IBAN zulässig; Linksbündig, mit Schräg­ strich beginnend.
214
+ # (Nicht zu belegen bei Scheckziehungen, d.h. mit Schräg­ strich beginnend.
215
+ # bei den Zahlungsartschlüsseln 20-23 und 30-33
216
+ # in Feld T22)
217
+ # /Entfällt bei der kurzen Variante NUR FUER DIE BEARBEITUNG DER MELDUNGEN--------------------------------------------------------------------------------------------------------
218
+ # 13 3 456 alpha Auftragswährung ISO-Code der zu zahlenden Währung P P Nur 'EUR' zulässig P Nur 'EUR' zulässig
219
+ # 14a 14 459 num Betrag (Vorkommastellen) Rechtsbündig P P Nur Beträge bis max. 50k EUR zulässig P -
220
+ # 14b 3 473 num Betrag (Nachkommastellen) Linksbündig P P - P -
221
+ # 15 4x35 476 alpha Verwendungszweck - K K - K -
222
+ # 16 2 616 num Weisungsschlüssel 1 Nicht zu belegen bei Scheckziehungen, K N - K Nur Weisungsschlüssel ‚10‘, ‚11‘ und ‚12‘ aus Anhang 2 zulässig
223
+ # (gem. Anhang 2) (d.h. bei den Zahlungsartschlüsseln 20-23
224
+ # und 30-33 in Feld T22)
225
+ # 17 2 618 num Weisungsschlüssel 2 Nicht zu belegen bei Scheckziehungen, K N - K Nur Weisungsschlüssel ‚10‘, ‚11‘ und ‚12‘ aus Anhang 2 zulässig
226
+ # (gem. Anhang 2) (d.h. bei den Zahlungsartschlüsseln
227
+ # 20-23 und 30-33 in Feld T22)
228
+ # 18 2 620 num Weisungsschlüssel 3 Nicht zu belegen bei Scheckziehungen, K N - K Nur Weisungsschlüssel ‚10‘, ‚11‘, und ‚12‘ aus Anhang 2 zulässig
229
+ # (gem. Anhang 2) (d.h. bei den Zahlungsartschlüsseln
230
+ # 20-23 und 30-33 in Feld T22)
231
+ # 19 2 622 num Weisungsschlüssel 4 Mit ‘91‘ zu belegen im Falle von "Euro-
232
+ # (gem. Anhang 2 und 2a) Gegenwertzahlungen“ (vgl. Anhang 2a). K/P N - K Nur Weisungsschlüssel ‚10‘, ‚11‘ und ‚12‘ aus Anhang 2 zulässig
233
+ # Bei Scheckziehungen, d.h. bei den
234
+ # Zahlungsartschlüsseln 20-23 und 30-33
235
+ # in Feld T22 nur '91' möglich.
236
+ # Entfällt bei der kurzen Variante NUR FUER DIE BEARBEITUNG DER MELDUNGEN--------------------------------------------------------------------------------------------------------
237
+ # 20 25 624 alpha Zusatzinformationen zum Z. B. Telex, Tel.-Nr., Kabelanschrift
238
+ # Weisungsschlüssel (Nicht zu belegen bei Scheckziehungen, K N - K Nur bei Weisungs­ schlüssel ‚10‘ aus An­ hang 2 zulässig
239
+ # d.h. bei den Zahlungsartschlüsseln 20-23
240
+ # und 30-33 in Feld T22)
241
+ # 21 2 649 num Entgeltregelung 00 = Entgelte zu Lasten Auftraggeber / K/P P Nur '00' zugelassen K/P -
242
+ # fremde Entgelte und Auslagen zu Lasten
243
+ # Zahlungsempfänger
244
+ # 01 = alle Entgelte und Auslagen zu Lasten
245
+ # Auftraggeber
246
+ # 02 = alle Entgelte und Auslagen zu Lasten
247
+ # Zahlungsempfänger
248
+ # (Bei Überweisungen im EWR in EWR- Währungen
249
+ # ohne Währungsumrechnung – Feld T4a = Feld T13
250
+ # – nur „00“ zulässig.)
251
+ # (Bei Scheckziehung, d.h. bei Zahlungsartschlüssel
252
+ # 20-23 und 30-33 in Feld T22 nur ‚00‘ möglich)
253
+ # 22 2 651 num Kennzeichnung der Zahlungsart Gemäß Anhang 1; Zahlungen, die weder '11' noch P P Nur Zahlungsartschlüssel ‚13‘ P Nur Zahlungsart­ schlüssel ‚11‘ aus Anhang 1 zulässig
254
+ # '13' als Zahlungsartschlüssel enthalten, gelten aus Anhang 1 zulässig
255
+ # als allgemeine Zahlungen.
256
+ # 23 27 653 alpha Variabler Text nur für Vom Auftraggeber frei belegbar
257
+ # Auftraggeberabrechnung (z.B. Refe­ renz-Nr.); wird nicht weitergeleitet; K K - K -
258
+ # weiterzuleitende Informationen in Feld T15
259
+ # angeben; maximal 16 Stellen werden in den
260
+ # elektronischen Kontoauszug übernommen.
261
+ # (nur nach Absprache mit dem Kreditinstitut)
262
+ # /Entfällt bei der kurzen Variante NUR FUER DIE BEARBEITUNG DER MELDUNGEN--------------------------------------------------------------------------------------------------------
263
+ # 24 35 680 alpha Name und Telefonnummer sowie Ansprechpartner beim Auftraggeber für eventuelle
264
+ # ggf. Stellvertretungsmeldung Rückfragen der beauftragten Bank oder der K/P K Ansprechpartner beim Auftraggeber K/P -
265
+ # Meldebehörde. Dahinter, wenn Auftraggeber für eventuelle Rückfragen der
266
+ # nicht Zahlungspflichtiger ist: ‘INVF’, beauftragten Bank
267
+ # ohne Leerstellen gefolgt von: Bundesland-Nummer
268
+ # (2-stellig) und: Firmennummer bzw. BLZ
269
+ # (8-stellig) des Zahlungspflichtigen
270
+ # Entfällt bei der kurzen Variante NUR FUER DIE BEARBEITUNG DER MELDUNGEN--------------------------------------------------------------------------------------------------------
271
+ # 25 1 715 num Meldeschlüssel Nur belegt, wenn die Weiterleitung des K N - K -
272
+ # Zahlungsauftrages an die Bundesbank auf
273
+ # die statistischen Angaben beschränkt werden
274
+ # soll; (dies sind die Datensätze V, W und Q
275
+ # (ohne Feld Q4) und die Felder 3, 5, 8, 9a,
276
+ # 9b, 10a, 10b, 13, 14a, 14b, 15, 16, 17,
277
+ # 18, 19 und 24 - 27 des Datensatzes T).
278
+ # Belegung in diesem Falle : ‘1’
279
+ # /Entfällt bei der kurzen Variante NUR FUER DIE BEARBEITUNG DER MELDUNGEN-------------------------------------------------------------------------------------------------------
280
+ # 26 51 716 alpha - Reserve N N - N -
281
+ # 27 2 767 num Erweiterungskennzeichen 00 = es folgt kein Meldeteil P N - P -
282
+ #
283
+ def add_t(booking)
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_firstname # 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_surname # 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
309
+ data2 += "%02i" % 0 # N 16 Weisungsschlüssel 1 (gem. Anhang 2)
310
+ data2 += "%02i" % 0 # N 17 Weisungsschlüssel 2 (gem. Anhang 2)
311
+ data2 += "%02i" % 0 # N 18 Weisungsschlüssel 3 (gem. Anhang 2)
312
+ data2 += "%02i" % 0 # N 19 Weisungsschlüssel 4 (gem. Anhang 2 und 2a)
313
+ data2 += '%025s' % '' # N 20 Zusatzinformationen zum Weisungsschlüssel
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
317
+ # i dont know what to do.
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
322
+ raise "DTAUS: Längenfehler T (#{data2.size} <> 768)\n" if data2.size != 768
323
+ dta_string << data2
324
+ end
325
+
326
+ #Erstellen V-Segment der DTAZV-Datei
327
+ # - V Meldedatensatz zum Transithandel mit 256 Bytes
328
+ # === Parameter
329
+ # booking<Object>::Booking object to be written to c-sektion
330
+ #
331
+ # === Returns
332
+ # <String>:: The current dta_string
333
+ # Feld Länge in Bytes 1. Stelle im Satz Feldart Datenformat Inhalt Erläuterungen
334
+ # 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Ü)
335
+ # 2 1 5 P alpha Satzart Konstante "V"
336
+ # 3 27 6 P alpha Warenbezeichnung der eingekauften Transithandelsware -
337
+ # 4a 2 33 P num Kapitel-Nummer des Warenverzeichnisses Gemäß Warenverzeichnis für die Außenhandelsstatistik.
338
+ # für die eingekaufte Transithandelsware
339
+ # 4b 7 35 P num "0000000“ Konstante "0000000“
340
+ # 5 7 42 P alpha Einkaufsland Transithandel Kurzbezeichnung gemäß Länderverzeichnis für die Zahlungsbilanzstatistik
341
+ # 6 3 49 P alpha Ländercode für Einkaufsland Transithandel 2-stelliger ISO-alpha-Ländercode gemäß Länderverzeichnis für die Zahlungs­ bilanzstatistik; linksbündig zu belegen; 3. Stelle Leerzeichen
342
+ # 7 12 52 P num Einkaufspreis Transithandel (Vorkommastellen) Angabe in Auftragswährung (siehe Feld T13) ; bei Euro-Gegenwertzahlungen : Angabe in Euro und Feld T19 mit ’91‘ belegen.
343
+ # 8 1 64 P alpha Verkauf der Transithandelsware an Gebietsfremde Ja (= J) bzw. Nein (= N)
344
+ # (durchgehandeltes Transithandels­ geschäft)
345
+ # 9 1 65 P alpha Kennzeichnung Verkauf der Transithandelsware Ja (= J) bzw. Nein (= N)
346
+ # an Gebietsansässige (gebrochenes
347
+ # Transithandelsgeschäft)
348
+ # 10 1 66 N alpha - Reserve
349
+ # 11 1 67 P alpha Kennzeichnung Transithandelsware unverkauft Ja (= J) bzw. Nein (= N)
350
+ # auf Lager im Ausland
351
+ # 12 27 68 K/P alpha Warenbezeichnung der verkauften Transithandelsware Nur belegt, wenn durchgehandelter Transithandel (J in Feld V8) und nicht identisch mit Feld V3
352
+ # 13a 2 95 K/P num Kapitel-Nummer des Warenverzeichnisses für die Gemäß Warenverzeichnis für die Außenhandelsstatistik; nur belegt, wenn durchge­ handelter Transithandel (J in Feld V8) und wenn Feld V13a nicht identisch mit Feld V4a
353
+ # verkaufte Transithandelsware
354
+ # 13b 7 97 P num "0000000" Konstante "0000000"
355
+ # 14 4 104 K/P alpha Fälligkeit Verkaufserlös Transithandel Nur belegt, wenn durchgehandelter Transithandel (J in Feld V8), Format: JJMM
356
+ # 15 7 108 K/P alpha Käuferland Transithandel Kurzbezeichnung gemäß Länderverzeichnis für die Zahlungsbilanzstatistik; nur be­ legt, wenn durchgehandelter Transithandel (J in Feld V8)
357
+ # 16 3 115 K/P alpha Ländercode für Käuferland 2-stelliger ISO-alpha-Ländercode gemäß Länderverzeichnis für die Zahlungs­ bilanzstatistik; linksbündig zu belegen; 3. Stelle Leerzeichen; nur belegt, wenn durchgehandelter Transithandel (J in Feld V8)
358
+ # 17 12 118 K/P num Verkaufspreis Transithandel (Vorkommastellen) Nur belegt, wenn durchgehandelter Transithandel (J in Feld V8); Angabe in Auftragswährung (siehe Feld T13); bei Euro-Gegenwertzahlungen : Angabe in Euro und Feld T19 mit ’91‘ belegen.
359
+ # 18 40 130 K/P alpha Ergänzungsangaben Transithandel Name und Sitz des Nachkäufers bei gebrochenem Transithandel (J in Feld V9)
360
+ # 19 87 170 N alpha - Reserve
361
+ def add_v
362
+ # data = '0256' # 1 Länge des Datensatzes
363
+ # data += 'V' # 2 Satzart
364
+ # data += '%27s' % # 3 Warenbezeichnung der eingekauften Transithandelsware
365
+ # data += 4a Kapitel-Nummer des Warenverzeichnisses für die eingekaufte Transithandelsware
366
+ # data += "0000000" # 4b Konstante "0000000“
367
+ # data += '%7s' # 5 Einkaufsland Transithandel
368
+ # data += '%03s' # 6 Ländercode für Einkaufsland Transithandel 2-stelliger ISO-alpha-Ländercode gemäß Länderverzeichnis für die Zahlungs­ bilanzstatistik; linksbündig zu belegen; 3. Stelle Leerzeichen
369
+ # data += '%012i' # 7 Einkaufspreis Transithandel (Vorkommastellen)
370
+ # data += 'J' # 8 Verkauf der Transithandelsware an Gebietsfremde Ja (= J) bzw. Nein (= N)
371
+ # data += '...' # 9 Kennzeichnung Verkauf der Transithandelsware an Gebietsansässige (gebrochenes Transithandelsgeschäft) Ja (= J) bzw. Nein (= N)
372
+ # data += '%01s' # 10 Reserve
373
+ # data += 'J' # 11 Kennzeichnung Transithandelsware unverkauft Ja (= J) bzw. Nein (= N)
374
+ # data += '%27s' # 12 Warenbezeichnung der verkauften Transithandelsware Nur belegt, wenn durchgehandelter Transithandel (J in Feld V8) und nicht identisch mit Feld V3
375
+ # data += '%27s' # 13a Kapitel-Nummer des Warenverzeichnisses für die
376
+ # data += "0000000" # 13b Konstante "0000000"
377
+ # data += '%04s' # 14 Fälligkeit Verkaufserlös Transithandel verkaufte Transithandelsware
378
+ # data += '%07s' # 15 Käuferland Transithandel Kurzbezeichnung gemäß Länderverzeichnis für die Zahlungsbilanzstatistik
379
+ # data += '%03s' # 16 Ländercode für Käuferland 2-stelliger ISO-alpha-Ländercode gemäß Länderverzeichnis für die Zahlungs­ bilanzstatistik; linksbündig zu belegen; 3. Stelle Leerzeichen;
380
+ # data += '%12s' # 17 Verkaufspreis Transithandel (Vorkommastellen) Nur belegt, wenn durchgehandelter Transithandel
381
+ # data += '%40s' # 18 Ergänzungsangaben Transithandel Name und Sitz des Nachkäufers bei gebrochenem Transithandel (J in Feld V9)
382
+ # data += '%87s' # 19 Reserve
383
+ end
384
+
385
+ #Erstellen W-Segment der DTAZV-Datei
386
+ # - W Meldedatensatz für Dienstleistungs-, Kapitalverkehr und Sonstiges mit 256 Bytes
387
+ # === Parameter
388
+ # booking<Object>::Booking object to be written to c-sektion
389
+ #
390
+ # === Returns
391
+ # <String>:: The current dta_string
392
+ # Datensatz W (Datei-Nachsatz)
393
+ # Feld Länge in Bytes 1. Stelle im Satz Feldart Datenformat Inhalt Erläuterungen
394
+ # 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Ü)
395
+ # 2 1 5 P alpha Satzart Konstante W
396
+ # 3 1 6 P num Belegart Dienstleistungen, Übertragungen = ‘2’ Kapitaltransaktionen und Kapitalerträge = ‘4’
397
+ # 4 3 7 P num Kennzahl Gemäß Leistungsverzeichnis (Anlage LV zur AWV)
398
+ # 5 7 10 P alpha Land Kurzbezeichnung gemäß Länderverzeichnis für die Zahlungsbilanzstatistik (siehe Anhang 3, Abschnitt E)
399
+ # 6 3 17 P alpha Ländercode 2-stelliger ISO-alpha-Ländercode gemäß Länderverzeichnis für die Zahlungs­ bilanzstatistik (siehe Anhang 3, Abschnitt E); linksbündig zu belegen; 3. Stelle Leerzeichen
400
+ # 7 7 20 K/P alpha Anlageland bei Kapitalverkehr Kurzbezeichnung gemäß Länderverzeichnis für die Zahlungsbilanzstatistik 3
401
+ # 8 3 27 K/P alpha Ländercode für Anlageland 2-stelliger ISO-alpha-Ländercode gemäß Länderverzeichnis für die Zahlungs­ bilanzstatistik 3; linksbündig zu belegen; 3. Stelle Leerzeichen
402
+ # 9 12 30 P num Betrag für Dienstleistungen, Angabe in Auftragswährung (siehe Feld T13); bei Euro-Gegenwertzahlungen : Angabe in Euro und Feld T19 mit ’91‘ belegen.
403
+ # Kapitalverkehr, Sonstiges
404
+ # (Vorkommastellen)
405
+ # 10 140 42 P alpha nähere Angaben zur zugrunde Wichtige Einzelheiten des Grundgeschäfts
406
+ # liegenden Leistung
407
+ # 11 75 182 N alpha - Reserve
408
+ def add_w
409
+ # data = '0256' # 1 Länge des Datensatzes
410
+ # data += 'W' # 2 Satzart
411
+ # data += '%01s' % ... # 3 Belegart
412
+ # data += '%03s' % ... # 4 Kennzahl
413
+ # data += '%07s' % ... # 5 Land
414
+ # data += '%3s' # 6 Ländercode
415
+ # data += '%07s' % ... # 7 Anlageland bei Kapitalverkehr
416
+ # data += '%03s' % ... # 8 Ländercode für Anlageland
417
+ # data += '%012i' % ... # 9 Betrag für Dienstleistungen Kapitalverkehr, Sonstiges (Vorkommastellen)
418
+ # data += '%0140s' # 10 nähere Angaben zur zugrunde liegenden Leistung
419
+ # data += '%075s' # 11 Reserve
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
+
469
+ end
470
+ end
data/lib/king_dtaus.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require "bigdecimal"
2
- require "#{File.dirname(__FILE__)}/king_dta/helper"
3
- require "#{File.dirname(__FILE__)}/king_dta/account"
4
- require "#{File.dirname(__FILE__)}/king_dta/booking"
5
- require "#{File.dirname(__FILE__)}/king_dta/dtaus"
6
- require "#{File.dirname(__FILE__)}/king_dta/exception"
2
+ require "king_dta/helper"
3
+ require "king_dta/dta"
4
+ require "king_dta/account"
5
+ require "king_dta/booking"
6
+ require "king_dta/dtaus"
7
+ require "king_dta/dtazv"
8
+ require "king_dta/exception"