hbci 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.rubocop.yml +26 -0
  4. data/.rubocop_todo.yml +26 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +1 -0
  7. data/Gemfile +5 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +107 -0
  10. data/Rakefile +8 -0
  11. data/bin/console +15 -0
  12. data/bin/setup +7 -0
  13. data/examples/credentials.rb +62 -0
  14. data/examples/get_accounts.rb +11 -0
  15. data/examples/get_balance.rb +8 -0
  16. data/examples/get_system_id.rb +6 -0
  17. data/examples/get_transactions.rb +15 -0
  18. data/hbci.gemspec +36 -0
  19. data/lib/development_profiler.rb +26 -0
  20. data/lib/hbci.rb +66 -0
  21. data/lib/hbci/connector.rb +33 -0
  22. data/lib/hbci/dialog.rb +77 -0
  23. data/lib/hbci/element_group.rb +93 -0
  24. data/lib/hbci/element_groups/generated_element_groups.rb +969 -0
  25. data/lib/hbci/element_groups/segment_head.rb +12 -0
  26. data/lib/hbci/element_groups/unknown.rb +11 -0
  27. data/lib/hbci/element_unparser.rb +21 -0
  28. data/lib/hbci/message.rb +47 -0
  29. data/lib/hbci/message_factory.rb +17 -0
  30. data/lib/hbci/parser.rb +114 -0
  31. data/lib/hbci/request.rb +32 -0
  32. data/lib/hbci/response.rb +25 -0
  33. data/lib/hbci/segment.rb +118 -0
  34. data/lib/hbci/segment_factory.rb +15 -0
  35. data/lib/hbci/segments/hikaz.rb +29 -0
  36. data/lib/hbci/segments/hikazs.rb +31 -0
  37. data/lib/hbci/segments/hirmg.rb +10 -0
  38. data/lib/hbci/segments/hirms.rb +17 -0
  39. data/lib/hbci/segments/hisal.rb +100 -0
  40. data/lib/hbci/segments/hisals.rb +19 -0
  41. data/lib/hbci/segments/hisyn.rb +11 -0
  42. data/lib/hbci/segments/hiupa.rb +12 -0
  43. data/lib/hbci/segments/hiupd.rb +37 -0
  44. data/lib/hbci/segments/hkend.rb +14 -0
  45. data/lib/hbci/segments/hkidn.rb +22 -0
  46. data/lib/hbci/segments/hkkaz.rb +25 -0
  47. data/lib/hbci/segments/hksal.rb +31 -0
  48. data/lib/hbci/segments/hksyn.rb +12 -0
  49. data/lib/hbci/segments/hkvvb.rb +18 -0
  50. data/lib/hbci/segments/hnhbk.rb +27 -0
  51. data/lib/hbci/segments/hnhbs.rb +14 -0
  52. data/lib/hbci/segments/hnsha.rb +31 -0
  53. data/lib/hbci/segments/hnshk.rb +79 -0
  54. data/lib/hbci/segments/hnvsd.rb +50 -0
  55. data/lib/hbci/segments/hnvsk.rb +60 -0
  56. data/lib/hbci/segments/segment_head.rb +11 -0
  57. data/lib/hbci/segments/unknown.rb +21 -0
  58. data/lib/hbci/services/accounts_receiver.rb +19 -0
  59. data/lib/hbci/services/balance_receiver.rb +69 -0
  60. data/lib/hbci/services/base_receiver.rb +43 -0
  61. data/lib/hbci/services/system_id_receiver.rb +35 -0
  62. data/lib/hbci/services/transactions_receiver.rb +75 -0
  63. data/lib/hbci/version.rb +5 -0
  64. metadata +315 -0
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'singleton'
4
+
5
+ module Hbci
6
+ class Connector
7
+ include Singleton
8
+
9
+ attr_accessor :message_number
10
+ attr_reader :credentials
11
+
12
+ def initialize
13
+ reset_message_number
14
+ end
15
+
16
+ def credentials=(credentials)
17
+ raise ArgumentError, "#{self.class.name}#initialize expects a BankCredentials::Hbci object" unless credentials.is_a?(BankCredentials::Hbci)
18
+ credentials.validate!
19
+ @credentials = credentials
20
+ end
21
+
22
+ def reset_message_number
23
+ @message_number = 1
24
+ end
25
+
26
+ def post(request_message)
27
+ req = HTTParty.post(@credentials.url, body: request_message.to_base64)
28
+ @message_number += 1
29
+ raise "Error in https communication with bank: #{req.response.inspect}" unless req.success?
30
+ Base64.decode64(req.response.body)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hbci
4
+ class Dialog
5
+ attr_reader :id
6
+ attr_reader :hbci_version
7
+ attr_reader :system_id
8
+ attr_reader :tan_mechanism
9
+ attr_reader :response
10
+ attr_reader :connector
11
+
12
+ def self.open(system_id: 0)
13
+ dialog = Dialog.new(system_id: system_id)
14
+ dialog.initiate
15
+ yield dialog
16
+ dialog.finish
17
+ end
18
+
19
+ def initialize(system_id: 0)
20
+ @connector = Connector.instance
21
+ @initiated = false
22
+ @hbci_version = '3.0'
23
+ @system_id = system_id
24
+ @tan_mechanism = nil
25
+ @id = 0
26
+ @response = nil
27
+ end
28
+
29
+ def credentials
30
+ @connector.credentials
31
+ end
32
+
33
+ def initiated?
34
+ @initiated
35
+ end
36
+
37
+ def initiate
38
+ request_message = MessageFactory.build(self) do |hnvsd|
39
+ hnvsd.add_segment(Segments::HKIDNv2.new)
40
+ hnvsd.add_segment(Segments::HKVVBv3.new)
41
+ end
42
+ request_message.compile
43
+
44
+ @response = Response.new(@connector.post(request_message))
45
+
46
+ raise @response.to_s unless initialization_successful?
47
+
48
+ @id = @response.find('HNHBK').dialog_id
49
+ @tan_mechanism = @response.find('HNVSD').find('HIRMS').allowed_tan_mechanism
50
+ @initiated = true
51
+ end
52
+
53
+ def finish
54
+ request_message = MessageFactory.build(self) do |hnvsd|
55
+ hnvsd.add_segment(Segments::HKENDv1.new)
56
+ end
57
+ request_message.compile
58
+
59
+ Response.new(@connector.post(request_message))
60
+
61
+ @connector.reset_message_number
62
+ end
63
+
64
+ private
65
+
66
+ def initialization_successful?
67
+ hirmg = response.find('HIRMG')
68
+ return false if hirmg && hirmg.ret_val_1.code[0].to_i == 9
69
+
70
+ hnvsd = response.find('HNVSD')
71
+ hirmg = hnvsd.find('HIRMG')
72
+ return false if hirmg && hirmg.ret_val_1.code[0].to_i == 9
73
+
74
+ true
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hbci
4
+ class ElementGroup
5
+ extend Forwardable
6
+ def_delegator :@elements, :[]
7
+ def_delegator :@elements, :[]=
8
+ attr_accessor :elements
9
+ attr_accessor :defined_elements
10
+
11
+ def self.elements_to_be_defined
12
+ @elements_to_be_defined ||= []
13
+ end
14
+
15
+ def self.element(name, definition = {})
16
+ elements_to_be_defined << definition.merge(name: name)
17
+ end
18
+
19
+ def element(name, definition = {})
20
+ define_element(definition.merge(name: name))
21
+ end
22
+
23
+ def define_elements
24
+ self.class.elements_to_be_defined.each { |el| define_element(el) }
25
+ end
26
+
27
+ def define_element(definition)
28
+ defined_elements << definition
29
+ apply_element_default(definition)
30
+ end
31
+
32
+ def to_s
33
+ element_strings = elements.each_with_index.map do |element, index|
34
+ ElementUnparser.new(element, defined_elements[index][:type]).unparse
35
+ end
36
+ element_strings.join(':').gsub(/:*$/, '')
37
+ end
38
+
39
+ def initialize
40
+ @defined_elements = []
41
+ @elements = []
42
+
43
+ define_elements
44
+ end
45
+
46
+ def respond_to?(name, include_all = false)
47
+ potential_element_name = name.to_s.split('=').first.to_sym
48
+
49
+ index_for_element(potential_element_name) || super
50
+ end
51
+
52
+ private
53
+
54
+ def get_element(name)
55
+ elements[index_for_element(name)]
56
+ end
57
+
58
+ def set_element(name, value)
59
+ elements[index_for_element(name)] = value
60
+ end
61
+
62
+ def method_missing(name, *args)
63
+ potential_element_name = name.to_s.split('=').first.to_sym
64
+ is_writer = (name[-1..-1] == '=')
65
+
66
+ index = index_for_element(potential_element_name)
67
+ if index
68
+ return set_element(potential_element_name, args.first) if is_writer && args.count == 1
69
+ return get_element(potential_element_name)
70
+ end
71
+
72
+ super
73
+ end
74
+
75
+ def respond_to_missing?(method_name, include_private = false)
76
+ potential_element_name = method_name.to_s.split('=').first.to_sym
77
+
78
+ index_for_element(potential_element_name) || super
79
+ end
80
+
81
+ def apply_element_default(definition)
82
+ if definition[:default].is_a?(Proc)
83
+ set_element(definition[:name], definition[:default].call(self))
84
+ else
85
+ set_element(definition[:name], definition[:default])
86
+ end
87
+ end
88
+
89
+ def index_for_element(name)
90
+ defined_elements.index { |el| el[:name] == name }
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,969 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Hbci
4
+ module ElementGroups
5
+ class AllowedGV < ElementGroup
6
+ element :code
7
+ element :req_sigs
8
+ element :limittype
9
+ element :value
10
+ element :curr
11
+ element :limitdays
12
+ end
13
+
14
+ class BTG < ElementGroup
15
+ element :value
16
+ element :curr
17
+ end
18
+
19
+ class Cert < ElementGroup
20
+ element :type
21
+ element :cert
22
+ end
23
+
24
+ class KeyName < ElementGroup
25
+ element :country
26
+ element :blz
27
+ element :userid
28
+ element :keytype
29
+ element :keynum
30
+ element :keyversion
31
+ end
32
+
33
+ class KIK < ElementGroup
34
+ element :country
35
+ element :blz
36
+ end
37
+
38
+ class KLimit < ElementGroup
39
+ element :limittype
40
+ element :value
41
+ element :curr
42
+ element :limitdays
43
+ end
44
+
45
+ class MsgRef < ElementGroup
46
+ element :dialogid
47
+ element :msgnum
48
+ end
49
+
50
+ class PubKey < ElementGroup
51
+ element :usage
52
+ element :mode
53
+ element :method
54
+ element :modulus
55
+ element :modname
56
+ element :exponent
57
+ element :expname
58
+ end
59
+
60
+ class RetVal < ElementGroup
61
+ element :code
62
+ element :ref
63
+ element :text
64
+ element :parm
65
+ end
66
+
67
+ class SecTimestamp < ElementGroup
68
+ element :type
69
+ element :date
70
+ element :time
71
+ end
72
+
73
+ class SuppCompMethods < ElementGroup
74
+ element :func
75
+ element :version
76
+ end
77
+
78
+ class SuppLangs < ElementGroup
79
+ element :lang
80
+ end
81
+
82
+ class SuppSecMethods < ElementGroup
83
+ element :method
84
+ element :version
85
+ end
86
+
87
+ class SuppVersions < ElementGroup
88
+ element :version
89
+ end
90
+
91
+ class Address2 < ElementGroup
92
+ element :name1
93
+ element :name2
94
+ element :street_pf
95
+ element :plz
96
+ element :ort
97
+ element :country
98
+ element :tel
99
+ element :fax
100
+ element :email
101
+ end
102
+
103
+ class Aussetzung1 < ElementGroup
104
+ element :annual
105
+ element :startdate
106
+ element :enddate
107
+ element :number
108
+ end
109
+
110
+ class Aussetzung2 < ElementGroup
111
+ element :annual
112
+ element :startdate
113
+ element :enddate
114
+ element :number
115
+ element :newvalue_value
116
+ element :newvalue_curr
117
+ end
118
+
119
+ class Aussetzung3 < ElementGroup
120
+ element :annual
121
+ element :startdate
122
+ element :enddate
123
+ element :number
124
+ element :value
125
+ element :curr
126
+ end
127
+
128
+ class Berechtigter1 < ElementGroup
129
+ element :name
130
+ element :name2
131
+ element :berechtigter
132
+ element :berechtigung
133
+ element :btg_value
134
+ element :btg_curr
135
+ element :risiko
136
+ end
137
+
138
+ class Berechtigter2 < ElementGroup
139
+ element :name
140
+ element :name2
141
+ element :berechtigter
142
+ element :berechtigung
143
+ element :value
144
+ element :curr
145
+ element :risiko
146
+ end
147
+
148
+ class ChallengeValidity < ElementGroup
149
+ element :date
150
+ element :time
151
+ end
152
+
153
+ class CommParam < ElementGroup
154
+ element :dienst
155
+ element :addr
156
+ element :addr2
157
+ element :filter
158
+ element :filterversion
159
+ end
160
+
161
+ class DauerDetails < ElementGroup
162
+ element :firstdate
163
+ element :timeunit
164
+ element :turnus
165
+ element :execday
166
+ element :lastdate
167
+ end
168
+
169
+ class FestCond1 < ElementGroup
170
+ element :anlagedate
171
+ element :ablaufdate
172
+ element :zinssatz
173
+ element :zinsmethode
174
+ element :value
175
+ element :curr
176
+ element :value
177
+ element :curr
178
+ element :condid
179
+ element :condbez
180
+ end
181
+
182
+ class FestCond2 < ElementGroup
183
+ element :anlagedate
184
+ element :ablaufdate
185
+ element :zinssatz
186
+ element :zinsmethode
187
+ element :value
188
+ element :curr
189
+ element :value
190
+ element :curr
191
+ element :condid
192
+ element :condbez
193
+ end
194
+
195
+ class FestCondVersion < ElementGroup
196
+ element :version
197
+ element :date
198
+ element :time
199
+ end
200
+
201
+ class Info < ElementGroup
202
+ element :code
203
+ element :msg
204
+ end
205
+
206
+ class InfoInfo < ElementGroup
207
+ element :code
208
+ element :descr
209
+ element :type
210
+ element :version
211
+ element :format
212
+ element :comment
213
+ end
214
+
215
+ class KTO < ElementGroup
216
+ element :number
217
+ element :country
218
+ element :blz
219
+ end
220
+
221
+ class KTV2 < ElementGroup
222
+ element :number
223
+ element :subnumber
224
+ element :kik_country, default: 280
225
+ element :kik_blz
226
+ end
227
+
228
+ class KTV3 < ElementGroup
229
+ element :number
230
+ element :subnumber
231
+ element :country
232
+ element :blz
233
+ end
234
+
235
+ class KTVInt < ElementGroup
236
+ element :iban
237
+ element :bic
238
+ element :number
239
+ element :subnumber
240
+ element :kik_country
241
+ element :kik_blz
242
+ end
243
+
244
+ class KTVZVInt < ElementGroup
245
+ element :sepa
246
+ element :iban
247
+ element :bic
248
+ element :number
249
+ element :subnumber
250
+ element :country
251
+ element :blz
252
+ end
253
+
254
+ class ParCustomMsg < ElementGroup
255
+ element :maxlen
256
+ end
257
+
258
+ class ParDauerDel < ElementGroup
259
+ element :minpretime
260
+ element :maxpretime
261
+ element :cantermdel
262
+ end
263
+
264
+ class ParDauerSEPADel < ElementGroup
265
+ element :minpretime
266
+ element :maxpretime
267
+ element :cantermdel
268
+ element :orderdata_required
269
+ end
270
+
271
+ class ParDauerEdit < ElementGroup
272
+ element :numtermchanges
273
+ element :minpretime
274
+ element :maxpretime
275
+ element :recktoeditable
276
+ element :recnameeditable
277
+ element :valueeditable
278
+ element :keyeditable
279
+ element :usageeditable
280
+ element :firstexeceditable
281
+ element :timeuniteditable
282
+ element :turnuseditable
283
+ element :execdayeditable
284
+ element :lastexeceditable
285
+ element :maxusage
286
+ element :turnusmonths
287
+ element :dayspermonth
288
+ element :turnusweeks
289
+ element :daysperweek
290
+ element :textkey
291
+ end
292
+
293
+ class ParDauerSEPAEdit < ElementGroup
294
+ element :numtermchanges
295
+ element :minpretime
296
+ element :maxpretime
297
+ element :recktoeditable
298
+ element :recnameeditable
299
+ element :valueeditable
300
+ element :usageeditable
301
+ element :firstexeceditable
302
+ element :timeuniteditable
303
+ element :turnuseditable
304
+ element :execdayeditable
305
+ element :lastexeceditable
306
+ element :turnusmonths
307
+ element :dayspermonth
308
+ element :turnusweeks
309
+ element :daysperweek
310
+ end
311
+
312
+ class ParDauerNew < ElementGroup
313
+ element :maxusage
314
+ element :minpretime
315
+ element :maxpretime
316
+ element :turnusmonths
317
+ element :dayspermonth
318
+ element :turnusweeks
319
+ element :daysperweek
320
+ element :textkey
321
+ end
322
+
323
+ class ParDauerSEPANew < ElementGroup
324
+ element :maxusage
325
+ element :minpretime
326
+ element :maxpretime
327
+ element :turnusmonths
328
+ element :dayspermonth
329
+ element :turnusweeks
330
+ element :daysperweek
331
+ end
332
+
333
+ class ParFestCondList < ElementGroup
334
+ element :curr
335
+ end
336
+
337
+ class ParFestNew1 < ElementGroup
338
+ element :canotherausbuchungskto
339
+ element :canotherzinskto
340
+ element :kontoauszug
341
+ end
342
+
343
+ class ParFestNew2 < ElementGroup
344
+ element :canexistinganlkto
345
+ element :canotherausbuchungskto
346
+ element :canotherzinskto
347
+ element :kontoauszug
348
+ end
349
+
350
+ class ParKontoauszug < ElementGroup
351
+ element :canindex
352
+ element :needreceipt
353
+ element :canmaxentries
354
+ element :format
355
+ end
356
+
357
+ class ParKUmsNew1 < ElementGroup
358
+ element :timerange
359
+ element :canmaxentries
360
+ end
361
+
362
+ class ParKUmsNew2 < ElementGroup
363
+ element :timerange
364
+ element :canmaxentries
365
+ element :canallaccounts
366
+ end
367
+
368
+ class ParKUmsZeit1 < ElementGroup
369
+ element :timerange
370
+ element :canmaxentries
371
+ end
372
+
373
+ class ParKUmsZeit2 < ElementGroup
374
+ element :timerange
375
+ element :canmaxentries
376
+ element :canallaccounts
377
+ end
378
+
379
+ class ParLast < ElementGroup
380
+ element :maxusage
381
+ element :key
382
+ end
383
+
384
+ class ParLastObjection < ElementGroup
385
+ element :value
386
+ element :curr
387
+ element :key
388
+ end
389
+
390
+ class ParOrderHistory < ElementGroup
391
+ element :timerange
392
+ element :canmaxentries
393
+ end
394
+
395
+ class ParPinTan2 < ElementGroup
396
+ element :pinlen_min
397
+ element :pinlen_max
398
+ element :tanlen_max
399
+ element :info_userid
400
+ element :info_customerid
401
+ element :segcode
402
+ element :needtan
403
+ end
404
+
405
+ class ParSammelLast < ElementGroup
406
+ element :maxcsets
407
+ element :maxusage
408
+ element :key
409
+ end
410
+
411
+ class ParSammelUeb < ElementGroup
412
+ element :maxcsets
413
+ element :maxusage
414
+ element :key
415
+ end
416
+
417
+ class ParSammelUebSEPA < ElementGroup
418
+ element :maxnum
419
+ element :needtotal
420
+ element :cansingletransfer
421
+ end
422
+
423
+ class ParSEPAInfo < ElementGroup
424
+ element :cansingleaccquery
425
+ element :cannationalacc
426
+ element :canstructusage
427
+ element :suppformats
428
+ end
429
+
430
+ class ParTermSepaEinzelLast < ElementGroup
431
+ element :min_vorl_zeit_fnalrcur
432
+ element :max_vorl_zeit_fnalrcur
433
+ element :min_vorl_zeit_frstooff
434
+ element :max_vorl_zeit_frstooff
435
+ end
436
+
437
+ class ParTermSepaCOR1 < ElementGroup
438
+ element :min_vorl_zeit_fnalrcur
439
+ element :max_vorl_zeit_fnalrcur
440
+ element :min_vorl_zeit_frstooff
441
+ element :max_vorl_zeit_frstooff
442
+ element :purpose_codes
443
+ element :suppformats
444
+ end
445
+
446
+ class ParTermSepaB2B < ElementGroup
447
+ element :min_vorl_zeit_fnalrcur
448
+ element :max_vorl_zeit_fnalrcur
449
+ element :min_vorl_zeit_frstooff
450
+ element :max_vorl_zeit_frstooff
451
+ end
452
+
453
+ class ParSammelLastSEPA < ElementGroup
454
+ element :min_vorl_zeit_fnalrcur
455
+ element :max_vorl_zeit_fnalrcur
456
+ element :min_vorl_zeit_frstooff
457
+ element :max_vorl_zeit_frstooff
458
+ element :maxnum
459
+ element :needtotal
460
+ element :cansingletransfer
461
+ end
462
+
463
+ class ParSammelLastCOR1SEPA < ElementGroup
464
+ element :maxnum
465
+ element :needtotal
466
+ element :cansingletransfer
467
+ element :min_vorl_zeit_fnalrcur
468
+ element :max_vorl_zeit_fnalrcur
469
+ element :min_vorl_zeit_frstooff
470
+ element :max_vorl_zeit_frstooff
471
+ element :purpose_codes
472
+ element :suppformats
473
+ end
474
+
475
+ class ParSammelLastB2BSEPA < ElementGroup
476
+ element :min_vorl_zeit_fnalrcur
477
+ element :max_vorl_zeit_fnalrcur
478
+ element :min_vorl_zeit_frstooff
479
+ element :max_vorl_zeit_frstooff
480
+ element :maxnum
481
+ element :needtotal
482
+ element :cansingletransfer
483
+ end
484
+
485
+ class ParUmbSepa < ElementGroup
486
+ element :purpose_codes
487
+ element :suppformats
488
+ end
489
+
490
+ class ParTAN2Step1 < ElementGroup
491
+ element :can1step
492
+ element :canmultitangvs
493
+ element :orderhashmode
494
+ element :instsig
495
+ element :secfunc
496
+ element :process
497
+ element :id
498
+ element :name
499
+ element :maxlentan2step
500
+ element :tanformat
501
+ element :inputinfo
502
+ element :maxleninput2step
503
+ element :noftanlists
504
+ element :canmultitan
505
+ element :cantandelay
506
+ end
507
+
508
+ class ParTAN2Step2 < ElementGroup
509
+ element :can1step
510
+ element :canmultitangvs
511
+ element :orderhashmode
512
+ element :secfunc
513
+ element :process
514
+ element :id
515
+ element :name
516
+ element :maxlentan2step
517
+ element :tanformat
518
+ element :inputinfo
519
+ element :maxleninput2step
520
+ element :noftanlists
521
+ element :canmultitan
522
+ element :cantandelay
523
+ element :needtanlistidx
524
+ element :canstorno
525
+ element :needchallengeklass
526
+ element :needchallengevalue
527
+ end
528
+
529
+ class ParTAN2Step3 < ElementGroup
530
+ element :can1step
531
+ element :canmultitangvs
532
+ element :orderhashmode
533
+ element :secfunc
534
+ element :process
535
+ element :id
536
+ element :name
537
+ element :maxlentan2step
538
+ element :tanformat
539
+ element :inputinfo
540
+ element :maxleninput2step
541
+ element :noftanlists
542
+ element :canmultitan
543
+ element :cantandelay
544
+ element :needtanlistidx
545
+ element :canstorno
546
+ element :needchallengeklass
547
+ element :needchallengevalue
548
+ element :initmode
549
+ element :needtanmedia
550
+ element :nofactivetanmedia
551
+ end
552
+
553
+ class ParTAN2Step4 < ElementGroup
554
+ element :can1step
555
+ element :canmultitangvs
556
+ element :orderhashmode
557
+ element :secfunc
558
+ element :process
559
+ element :id
560
+ element :zkamethod_name
561
+ element :zkamethod_version
562
+ element :name
563
+ element :maxlentan2step
564
+ element :tanformat
565
+ element :inputinfo
566
+ element :maxleninput2step
567
+ element :noftanlists
568
+ element :canmultitan
569
+ element :cantandelay
570
+ element :needtanlistidx
571
+ element :canstorno
572
+ element :needsmsaccount
573
+ element :needchallengeklass
574
+ element :needchallengevalue
575
+ element :ischallengestructured
576
+ element :initmode
577
+ element :needtanmedia
578
+ element :nofactivetanmedia
579
+ end
580
+
581
+ class ParTAN2Step5 < ElementGroup
582
+ element :can1step
583
+ element :canmultitangvs
584
+ element :orderhashmode
585
+ element :secfunc
586
+ element :process
587
+ element :id
588
+ element :zkamethod_name
589
+ element :zkamethod_version
590
+ element :name
591
+ element :maxlentan2step
592
+ element :tanformat
593
+ element :inputinfo
594
+ element :maxleninput2step
595
+ element :noftanlists
596
+ element :canmultitan
597
+ element :cantandelay
598
+ element :needtanlistidx
599
+ element :canstorno
600
+ element :needsmsaccount
601
+ element :needorderaccount
602
+ element :needchallengeklass
603
+ element :ischallengestructured
604
+ element :initmode
605
+ element :needtanmedia
606
+ element :nofactivetanmedia
607
+ end
608
+
609
+ class ParTermSammelLast < ElementGroup
610
+ element :minpretime
611
+ element :maxpretime
612
+ element :maxcsets
613
+ element :maxusage
614
+ element :key
615
+ end
616
+
617
+ class ParTermSammelLastList < ElementGroup
618
+ element :cantimerange
619
+ end
620
+
621
+ class ParTermSammelUeb < ElementGroup
622
+ element :minpretime
623
+ element :maxpretime
624
+ element :maxcsets
625
+ element :maxusage
626
+ element :key
627
+ end
628
+
629
+ class ParTermSammelUebList < ElementGroup
630
+ element :cantimerange
631
+ end
632
+
633
+ class ParTermUeb < ElementGroup
634
+ element :minpretime
635
+ element :maxpretime
636
+ element :maxusage
637
+ element :key
638
+ end
639
+
640
+ class ParTermUebSEPA < ElementGroup
641
+ element :minpretime
642
+ element :maxpretime
643
+ end
644
+
645
+ class ParTermUebEdit < ElementGroup
646
+ element :minpretime
647
+ element :maxpretime
648
+ element :maxusage
649
+ element :key
650
+ end
651
+
652
+ class ParTermUebList < ElementGroup
653
+ element :cantimerange
654
+ end
655
+
656
+ class ParTermUebSEPAList < ElementGroup
657
+ element :canmaxentries
658
+ element :cantimerange
659
+ end
660
+
661
+ class ParTermUebSEPADel < ElementGroup
662
+ element :orderdata_required
663
+ end
664
+
665
+ class ParTermUebSEPAEdit < ElementGroup
666
+ element :minpretime
667
+ element :maxpretime
668
+ end
669
+
670
+ class ParUeb < ElementGroup
671
+ element :maxusage
672
+ element :key
673
+ end
674
+
675
+ class ParUebForeign < ElementGroup
676
+ element :caniban
677
+ element :countryinfo
678
+ end
679
+
680
+ class ParUmb < ElementGroup
681
+ element :maxusage
682
+ element :key
683
+ end
684
+
685
+ class ParVormerkposten < ElementGroup
686
+ element :canmaxentries
687
+ element :canallaccounts
688
+ end
689
+
690
+ class ParWPDepotList1 < ElementGroup
691
+ element :canmaxentries
692
+ end
693
+
694
+ class ParWPDepotList2 < ElementGroup
695
+ element :canmaxentries
696
+ element :cancurr
697
+ element :canquality
698
+ end
699
+
700
+ class ParWPDepotUms < ElementGroup
701
+ element :timerange
702
+ end
703
+
704
+ class ParWPInfoList < ElementGroup
705
+ element :needdepot
706
+ end
707
+
708
+ class ParWPKursList1 < ElementGroup
709
+ element :availboerses
710
+ element :kurspaket
711
+ end
712
+
713
+ class ParWPKursList2 < ElementGroup
714
+ element :needdepot
715
+ element :canquality
716
+ element :availboerses
717
+ element :kurspaket
718
+ end
719
+
720
+ class ParWPRefList < ElementGroup
721
+ element :searchallowed
722
+ element :regionallowed
723
+ element :standardallowed
724
+ element :newallowed
725
+ element :availboerses
726
+ element :availtypes
727
+ end
728
+
729
+ class ParWPStammList < ElementGroup
730
+ element :needdepot
731
+ element :risikodescr
732
+ end
733
+
734
+ class Prolong < ElementGroup
735
+ element :laufzeit
736
+ element :value
737
+ element :curr
738
+ element :wiederanlage
739
+ end
740
+
741
+ class Saldo < ElementGroup
742
+ element :credit_debit
743
+ element :btg_value
744
+ element :btg_curr
745
+ element :date
746
+ element :time
747
+ end
748
+
749
+ class Saldo2 < ElementGroup
750
+ element :credit_debit
751
+ element :value
752
+ element :curr
753
+ element :date
754
+ element :time
755
+ end
756
+
757
+ class TANInfo < ElementGroup
758
+ element :usagecode
759
+ element :usagetxt
760
+ element :tan
761
+ element :usagedate
762
+ element :usagetime
763
+ end
764
+
765
+ class TANMediaInfo1 < ElementGroup
766
+ element :mediacategory
767
+ element :status
768
+ element :cardnumber
769
+ element :cardseqnumber
770
+ element :tanlistnumber
771
+ element :freetans
772
+ element :lastuse
773
+ element :activatedon
774
+ end
775
+
776
+ class TANMediaInfo2 < ElementGroup
777
+ element :mediacategory
778
+ element :status
779
+ element :cardnumber
780
+ element :cardseqnumber
781
+ element :cardtype
782
+ element :number
783
+ element :subnumber
784
+ element :kik_country
785
+ element :kik_blz
786
+ element :validfrom
787
+ element :validto
788
+ element :tanlistnumber
789
+ element :medianame
790
+ element :iban
791
+ element :bic
792
+ element :number
793
+ element :subnumber
794
+ element :kik_country
795
+ element :kik_blz
796
+ element :freetans
797
+ element :lastuse
798
+ element :activatedon
799
+ end
800
+
801
+ class TANMediaInfo3 < ElementGroup
802
+ element :mediacategory
803
+ element :status
804
+ element :cardnumber
805
+ element :cardseqnumber
806
+ element :cardtype
807
+ element :number
808
+ element :subnumber
809
+ element :kik_country
810
+ element :kik_blz
811
+ element :validfrom
812
+ element :validto
813
+ element :tanlistnumber
814
+ element :medianame
815
+ element :mobilenumber_secure
816
+ element :iban
817
+ element :bic
818
+ element :number
819
+ element :subnumber
820
+ element :kik_country
821
+ element :kik_blz
822
+ element :freetans
823
+ element :lastuse
824
+ element :activatedon
825
+ end
826
+
827
+ class TANMediaInfo4 < ElementGroup
828
+ element :mediacategory
829
+ element :status
830
+ element :cardnumber
831
+ element :cardseqnumber
832
+ element :cardtype
833
+ element :number
834
+ element :subnumber
835
+ element :kik_country
836
+ element :kik_blz
837
+ element :validfrom
838
+ element :validto
839
+ element :tanlistnumber
840
+ element :medianame
841
+ element :mobilenumber_secure
842
+ element :mobilenumber
843
+ element :iban
844
+ element :bic
845
+ element :number
846
+ element :subnumber
847
+ element :kik_country
848
+ element :kik_blz
849
+ element :freetans
850
+ element :lastuse
851
+ element :activatedon
852
+ end
853
+
854
+ class TimeRange < ElementGroup
855
+ element :startdate
856
+ element :enddate
857
+ end
858
+
859
+ class Timestamp < ElementGroup
860
+ element :date
861
+ element :time
862
+ end
863
+
864
+ class Usage1 < ElementGroup
865
+ element :usage
866
+ end
867
+
868
+ class Usage2 < ElementGroup
869
+ element :usage
870
+ end
871
+
872
+ class Usage3 < ElementGroup
873
+ element :usage
874
+ end
875
+
876
+ class WPBInfo1 < ElementGroup
877
+ element :boerse
878
+ element :curr
879
+ element :smallestunit
880
+ element :marktsegment
881
+ end
882
+
883
+ class WPBInfo2 < ElementGroup
884
+ element :boerse
885
+ element :curr
886
+ element :type
887
+ element :type_xetra
888
+ element :smallestunit
889
+ element :marktsegmentausland
890
+ element :marktsegment
891
+ end
892
+
893
+ class WPBKurs < ElementGroup
894
+ element :kurs
895
+ element :curr
896
+ element :addkurs
897
+ element :date
898
+ element :time
899
+ element :boerse
900
+ end
901
+
902
+ class WPKursData < ElementGroup
903
+ element :boerse
904
+ element :notizeinheit
905
+ element :curr
906
+ element :date
907
+ element :time
908
+ element :kassakurs_kurs
909
+ element :vorboerse_kurs
910
+ element :openkurs_kurs
911
+ element :lastkurs_kurs
912
+ element :addkurs
913
+ element :nachboerse_kurs
914
+ element :zeitbezug
915
+ element :annmax_kurs
916
+ element :annmin_kurs
917
+ element :prevdaykurs_kurs
918
+ element :outputprice_kurs
919
+ element :retprice_kurs
920
+ end
921
+
922
+ class WPRef < ElementGroup
923
+ element :type
924
+ element :code
925
+ end
926
+
927
+ class WPStammAktien < ElementGroup
928
+ element :boerse
929
+ element :nennwert_value
930
+ element :kapitalchange
931
+ element :kapitalchangevalue_value
932
+ element :dividende_value
933
+ element :hvtermin
934
+ end
935
+
936
+ class WPStammFonds < ElementGroup
937
+ element :faelligkeit
938
+ element :wiederanlagerabattvon
939
+ element :wiederanlagerabatt_bis
940
+ element :wiederanlagerabatt
941
+ element :ausgabeaufschlag
942
+ element :verwaltungsgebuehr
943
+ element :depotbankgebuehr
944
+ element :info
945
+ end
946
+
947
+ class WPStammOptions < ElementGroup
948
+ element :boerse
949
+ element :faelligkeit
950
+ element :underlying
951
+ element :bezugsverhaeltnis
952
+ end
953
+
954
+ class WPStammRenten < ElementGroup
955
+ element :boerse
956
+ element :zinssatz
957
+ element :emissdate
958
+ element :faelligkeit
959
+ element :firstzinstermin
960
+ element :zinsperiode
961
+ element :einloesungskurs
962
+ element :einloesungstype
963
+ end
964
+
965
+ class WPZinsTermine < ElementGroup
966
+ element :termin
967
+ end
968
+ end
969
+ end