king_dtaus 1.0.2 → 2.0.0.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.
@@ -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"