ofx_for_ruby 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. data/.externalToolBuilders/Rebuild parsers.launch +10 -0
  2. data/.gitignore +9 -0
  3. data/.loadpath +5 -0
  4. data/.project +27 -0
  5. data/COPYING +674 -0
  6. data/Gemfile +2 -0
  7. data/README +47 -0
  8. data/RELEASE_NOTES +45 -0
  9. data/Rakefile +63 -0
  10. data/lib/ofx.rb +60 -0
  11. data/lib/ofx/1.0.2/banking_message_set.rb +261 -0
  12. data/lib/ofx/1.0.2/credit_card_statement_message_set.rb +269 -0
  13. data/lib/ofx/1.0.2/document.rb +34 -0
  14. data/lib/ofx/1.0.2/email_message_set.rb +34 -0
  15. data/lib/ofx/1.0.2/financial_institution_profile_message_set.rb +155 -0
  16. data/lib/ofx/1.0.2/header.rb +48 -0
  17. data/lib/ofx/1.0.2/interbank_funds_transfer_message_set.rb +30 -0
  18. data/lib/ofx/1.0.2/investment_security_list_message_set.rb +30 -0
  19. data/lib/ofx/1.0.2/investment_statement_message_set.rb +30 -0
  20. data/lib/ofx/1.0.2/lexer.rb +135 -0
  21. data/lib/ofx/1.0.2/message_set.rb +165 -0
  22. data/lib/ofx/1.0.2/ofx_102.racc +90 -0
  23. data/lib/ofx/1.0.2/ofx_102.rex +65 -0
  24. data/lib/ofx/1.0.2/parser.rb +215 -0
  25. data/lib/ofx/1.0.2/payment_message_set.rb +30 -0
  26. data/lib/ofx/1.0.2/serializer.rb +114 -0
  27. data/lib/ofx/1.0.2/signon_message_set.rb +121 -0
  28. data/lib/ofx/1.0.2/signup_message_set.rb +186 -0
  29. data/lib/ofx/1.0.2/statements.rb +54 -0
  30. data/lib/ofx/1.0.2/status.rb +30 -0
  31. data/lib/ofx/1.0.2/wire_funds_transfer_message_set.rb +30 -0
  32. data/lib/ofx/banking_message_set.rb +125 -0
  33. data/lib/ofx/credit_card_statement_message_set.rb +104 -0
  34. data/lib/ofx/document.rb +30 -0
  35. data/lib/ofx/email_message_set.rb +42 -0
  36. data/lib/ofx/file_unique_identifier.rb +28 -0
  37. data/lib/ofx/financial_client.rb +76 -0
  38. data/lib/ofx/financial_institution.rb +83 -0
  39. data/lib/ofx/financial_institution_profile_message_set.rb +67 -0
  40. data/lib/ofx/header.rb +115 -0
  41. data/lib/ofx/http/cacert.pem +3509 -0
  42. data/lib/ofx/http/ofx_http_client.rb +84 -0
  43. data/lib/ofx/interbank_funds_transfer_message_set.rb +33 -0
  44. data/lib/ofx/investment_security_list_message_set.rb +33 -0
  45. data/lib/ofx/investment_statement_message_set.rb +33 -0
  46. data/lib/ofx/message_set.rb +78 -0
  47. data/lib/ofx/payment_message_set.rb +33 -0
  48. data/lib/ofx/serializer.rb +39 -0
  49. data/lib/ofx/signon_message_set.rb +141 -0
  50. data/lib/ofx/signup_message_set.rb +84 -0
  51. data/lib/ofx/statements.rb +49 -0
  52. data/lib/ofx/status.rb +100 -0
  53. data/lib/ofx/transaction_unique_identifier.rb +28 -0
  54. data/lib/ofx/version.rb +82 -0
  55. data/lib/ofx/wire_funds_transfer_message_set.rb +33 -0
  56. data/ofx_for_ruby.gemspec +25 -0
  57. data/planning/OFX Specification completion.ods +0 -0
  58. data/test/capital_one/capital_one_helper.rb +77 -0
  59. data/test/capital_one/fixtures/README +10 -0
  60. data/test/capital_one/fixtures/fipid-5599.xml +98 -0
  61. data/test/capital_one/test_banking_statement.rb +108 -0
  62. data/test/capital_one/test_financial_institution_profile.rb +295 -0
  63. data/test/capital_one/test_ofx_http_client.rb +72 -0
  64. data/test/capital_one/test_signup_account_information.rb +100 -0
  65. data/test/citi/citi_helper.rb +77 -0
  66. data/test/citi/fixtures/README +9 -0
  67. data/test/citi/fixtures/fipid-6642.xml +98 -0
  68. data/test/citi/test_credit_card_statement.rb +159 -0
  69. data/test/citi/test_financial_institution_profile.rb +231 -0
  70. data/test/citi/test_ofx_http_client.rb +71 -0
  71. data/test/citi/test_signup_account_information.rb +85 -0
  72. data/test/test_helper.rb +4 -0
  73. data/test/test_ofx_version.rb +141 -0
  74. metadata +210 -0
@@ -0,0 +1,186 @@
1
+ # Copyright © 2007 Chris Guidry <chrisguidry@gmail.com>
2
+ #
3
+ # This file is part of OFX for Ruby.
4
+ #
5
+ # OFX for Ruby is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # OFX for Ruby is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ module OFX
19
+ class SignupMessageSet < MessageSet
20
+ def ofx_102_message_set_name
21
+ 'SIGNUP'
22
+ end
23
+
24
+ def request_or_response_from_ofx_102_tag_name(response_or_request_name)
25
+ case response_or_request_name
26
+ when "ACCTINFOTRNRQ" then AccountInformationRequest.new
27
+ when "ACCTINFOTRNRS" then AccountInformationResponse.new
28
+ else raise NotImplementedError, response_or_request_name
29
+ end
30
+ end
31
+
32
+ def self.from_ofx_102_hash(message_set_hash)
33
+ message_set = SignupMessageSet.new
34
+
35
+ message_set_hash.each_pair() do |transaction_name, transaction_hash|
36
+ case transaction_name
37
+ when "ACCTINFOTRNRQ" then message_set.requests << AccountInformationRequest.from_ofx_102_hash(transaction_hash)
38
+ when "ACCTINFOTRNRS" then message_set.responses << AccountInformationResponse.from_ofx_102_hash(transaction_hash)
39
+ else raise NotImplementedError, transaction_name
40
+ end
41
+ end
42
+
43
+ return message_set
44
+ end
45
+ end
46
+
47
+ class SignupMessageSetProfile < MessageSetProfile
48
+ def self.from_ofx_102_hash(message_set_description_hash)
49
+ profile = OFX::SignupMessageSetProfile.new
50
+ profile.message_set_class = OFX::SignupMessageSet
51
+ profile.from_ofx_102_hash(message_set_description_hash)
52
+
53
+ if (message_set_description_hash['CLIENTENROLL'])
54
+ profile.enrollment = OFX::ClientEnrollment.new((message_set_description_hash['CLIENTENROLL']['ACCTREQUIRED'] == 'Y'))
55
+ elsif (message_set_description_hash['WEBENROLL'])
56
+ profile.enrollment = OFX::WebEnrollment.new(URI.parse(message_set_description_hash['WEBENROLL']['URL']))
57
+ elsif (message_set_description_hash['OTHERENROLL'])
58
+ profile.enrollment = OFX::OtherEnrollment.new(message_set_description_hash['OTHERENROLL']['MESSAGE'])
59
+ end
60
+
61
+ profile.user_information_changes_allowed = message_set_description_hash['CHGUSERINFO'] == 'Y'
62
+ profile.available_account_requests_allowed = message_set_description_hash['AVAILACCTS'] == 'Y'
63
+ profile.service_activation_requests_allowed = message_set_description_hash['CLIENTACTREQ'] == 'Y'
64
+
65
+ profile
66
+ end
67
+ end
68
+ class SignupMessageSetProfile < MessageSetProfile
69
+ def self.message_set_class
70
+ SignupMessageSet
71
+ end
72
+
73
+ attr_accessor :enrollment
74
+ end
75
+ class Enrollment
76
+ end
77
+ class ClientEnrollment < Enrollment
78
+ attr_accessor :account_number_required
79
+ def account_number_required?
80
+ @account_number_required
81
+ end
82
+ end
83
+ class WebEnrollment < Enrollment
84
+ attr_accessor :url
85
+ end
86
+ class OtherEnrollment < Enrollment
87
+ attr_accessor :message
88
+ end
89
+
90
+ class AccountInformationRequest < TransactionalRequest
91
+ def ofx_102_name
92
+ 'ACCTINFO'
93
+ end
94
+
95
+ def ofx_102_request_body
96
+ " <DTACCTUP>#{date_of_last_account_update.to_ofx_102_s}"
97
+ end
98
+
99
+ def self.from_ofx_102_hash(request_hash)
100
+ raise NotImplementedError
101
+ end
102
+ end
103
+
104
+ class AccountInformationResponse < TransactionalResponse
105
+ def ofx_102_name
106
+ 'ACCTINFO'
107
+ end
108
+
109
+ def ofx_102_response_body
110
+ raise NotImplementedError
111
+ end
112
+
113
+ def self.from_ofx_102_hash(transaction_hash)
114
+ response = AccountInformationResponse.new
115
+
116
+ response.transaction_identifier = transaction_hash['TRNUID']
117
+ response.status = OFX::Status.from_ofx_102_hash(transaction_hash['STATUS'])
118
+
119
+ response_hash = transaction_hash['ACCTINFORS']
120
+ response.date_of_last_account_update = response_hash['DTACCTUP'].to_datetime
121
+
122
+ response.accounts = []
123
+ account_infos = response_hash['ACCTINFO'] if response_hash['ACCTINFO'].kind_of?(Array)
124
+ account_infos = [response_hash['ACCTINFO']] if response_hash['ACCTINFO'].kind_of?(Hash)
125
+ account_infos = [] unless account_infos
126
+ account_infos.each do |account_info_hash|
127
+ account_info = OFX::AccountInformation.new
128
+ account_info.description = account_info_hash['DESC']
129
+ account_info.phone_number = account_info_hash['PHONE']
130
+
131
+ if account_info_hash['BANKACCTINFO']
132
+ bank_acct_info_hash = account_info_hash['BANKACCTINFO']
133
+ account_info.account_information = OFX::BankingAccountInformation.new
134
+
135
+ acct_from_hash = bank_acct_info_hash['BANKACCTFROM']
136
+ account_info.account_information.account = OFX::BankingAccount.new
137
+ account_info.account_information.account.bank_identifier = acct_from_hash['BANKID']
138
+ account_info.account_information.account.branch_identifier = acct_from_hash['BRANCHID']
139
+ account_info.account_information.account.account_identifier = acct_from_hash['ACCTID']
140
+ account_info.account_information.account.account_type = case acct_from_hash['ACCTTYPE']
141
+ when 'CHECKING' then :checking
142
+ when 'SAVINGS' then :savings
143
+ when 'MONEYMRKT' then :money_market
144
+ when 'CREDITLINE' then :line_of_credit
145
+ else raise NotImplementedError
146
+ end
147
+ account_info.account_information.account.account_key = acct_from_hash['ACCTKEY']
148
+
149
+ account_info.account_information.supports_transaction_detail_downloads = bank_acct_info_hash['SUPTXDL'] == 'Y'
150
+ account_info.account_information.transfer_source = bank_acct_info_hash['XFERSRC'] == 'Y'
151
+ account_info.account_information.transfer_destination = bank_acct_info_hash['XFERDEST'] == 'Y'
152
+ account_info.account_information.status = case bank_acct_info_hash['SVCSTATUS']
153
+ when 'AVAIL' then :available
154
+ when 'PEND' then :pending
155
+ when 'ACTIVE' then :active
156
+ else raise NotImplementedError
157
+ end
158
+ elsif account_info_hash['CCACCTINFO']
159
+ cc_acct_info_hash = account_info_hash['CCACCTINFO']
160
+ account_info.account_information = OFX::CreditCardAccountInformation.new
161
+
162
+ acct_from_hash = cc_acct_info_hash['CCACCTFROM']
163
+ account_info.account_information.account = OFX::CreditCardAccount.new
164
+ account_info.account_information.account.account_identifier = acct_from_hash['ACCTID']
165
+ account_info.account_information.account.account_key = acct_from_hash['ACCTKEY']
166
+
167
+ account_info.account_information.supports_transaction_detail_downloads = cc_acct_info_hash['SUPTXDL'] == 'Y'
168
+ account_info.account_information.transfer_source = cc_acct_info_hash['XFERSRC'] == 'Y'
169
+ account_info.account_information.transfer_destination = cc_acct_info_hash['XFERDEST'] == 'Y'
170
+ account_info.account_information.status = case cc_acct_info_hash['SVCSTATUS']
171
+ when 'AVAIL' then :available
172
+ when 'PEND' then :pending
173
+ when 'ACTIVE' then :active
174
+ else raise NotImplementedError
175
+ end
176
+ else
177
+ raise NotImplementedError
178
+ end
179
+
180
+ response.accounts << account_info
181
+ end
182
+
183
+ response
184
+ end
185
+ end
186
+ end
@@ -0,0 +1,54 @@
1
+ # Copyright © 2007 Chris Guidry <chrisguidry@gmail.com>
2
+ #
3
+ # This file is part of OFX for Ruby.
4
+ #
5
+ # OFX for Ruby is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # OFX for Ruby is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ module OFX
19
+ class Balance
20
+ def self.from_ofx_102_hash(balance_hash)
21
+ balance = Balance.new
22
+
23
+ balance.amount = balance_hash['BALAMT']
24
+ balance.as_of = balance_hash['DTASOF'].to_datetime
25
+
26
+ balance
27
+ end
28
+ end
29
+
30
+ class Transaction
31
+ def self.ofx_102_transaction_type_name_to_transaction_type(transaction_type_name)
32
+ case transaction_type_name
33
+ when 'CREDIT' then :credit
34
+ when 'DEBIT' then :debit
35
+ when 'INT' then :interest
36
+ when 'DIV' then :dividend
37
+ when 'FEE' then :fee
38
+ when 'SRVCHG' then :service_charge
39
+ when 'DEP' then :deposit
40
+ when 'ATM' then :automated_teller_machine
41
+ when 'POS' then :point_of_sale
42
+ when 'XFER' then :transfer
43
+ when 'CHECK' then :check
44
+ when 'PAYMENT' then :electronic_payment
45
+ when 'CASH' then :cash_withdrawal
46
+ when 'DIRECTDEP' then :direct_deposit
47
+ when 'DIRECTDEBIT' then :direct_debit
48
+ when 'REPEATPMT' then :repeating_payment
49
+ when 'OTHER' then :other
50
+ else raise NotImplementedError
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,30 @@
1
+ # Copyright © 2007 Chris Guidry <chrisguidry@gmail.com>
2
+ #
3
+ # This file is part of OFX for Ruby.
4
+ #
5
+ # OFX for Ruby is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # OFX for Ruby is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ module OFX
19
+ class Status
20
+ def self.from_ofx_102_hash(status_hash)
21
+ return OFX::Status.from_numerical_code_severity_and_message(status_hash['CODE'].to_i,
22
+ case status_hash['SEVERITY']
23
+ when 'INFO' then :information
24
+ when 'WARN' then :warning
25
+ when 'ERROR' then :error
26
+ end,
27
+ status_hash['MESSAGE'])
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,30 @@
1
+ # Copyright © 2007 Chris Guidry <chrisguidry@gmail.com>
2
+ #
3
+ # This file is part of OFX for Ruby.
4
+ #
5
+ # OFX for Ruby is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # OFX for Ruby is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ module OFX
19
+ class WireFundsTransferMessageSet < MessageSet
20
+ end
21
+
22
+ class WireFundsTransferMessageSetProfile < MessageSetProfile
23
+ def self.from_ofx_102_hash(message_set_description_hash)
24
+ profile = OFX::WireFundsTransferMessageSetProfile.new
25
+ profile.message_set_class = OFX::WireFundsTransferMessageSet
26
+ profile.from_ofx_102_hash(message_set_description_hash)
27
+ profile
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,125 @@
1
+ # Copyright © 2007 Chris Guidry <chrisguidry@gmail.com>
2
+ #
3
+ # This file is part of OFX for Ruby.
4
+ #
5
+ # OFX for Ruby is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # OFX for Ruby is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ module OFX
19
+ class BankingMessageSet < MessageSet
20
+ def precedence
21
+ 3
22
+ end
23
+ def version
24
+ 1
25
+ end
26
+ end
27
+
28
+ class BankingMessageSetProfile < MessageSetProfile
29
+ def self.message_set_class
30
+ OFX::BankingMessageSet
31
+ end
32
+
33
+ attr_accessor :invalid_account_types
34
+ attr_accessor :closing_statement_available
35
+ def closing_statement_available?
36
+ closing_statement_available
37
+ end
38
+
39
+ attr_accessor :intrabank_transfer_profile
40
+ attr_accessor :stop_check_profile
41
+ attr_accessor :email_profile
42
+ end
43
+ class IntrabankTransferProfile
44
+ attr_accessor :processing_days_off
45
+ attr_accessor :processing_end_time_of_day
46
+ attr_accessor :supports_scheduled_transfers
47
+ def supports_scheduled_transfers?
48
+ supports_scheduled_transfers
49
+ end
50
+ attr_accessor :supports_recurring_transfers
51
+ def supports_recurring_transfers?
52
+ supports_recurring_transfers
53
+ end
54
+ attr_accessor :supports_modification_of_transfers
55
+ def supports_modification_of_transfers?
56
+ supports_modification_of_transfers
57
+ end
58
+ attr_accessor :supports_modification_of_models
59
+ def supports_modification_of_models?
60
+ supports_modification_of_models
61
+ end
62
+ attr_accessor :model_window
63
+ attr_accessor :number_of_days_early_funds_are_withdrawn
64
+ attr_accessor :default_number_of_days_to_pay
65
+ end
66
+ class StopCheckProfile
67
+ attr_accessor :processing_days_off
68
+ attr_accessor :processing_end_time_of_day
69
+ attr_accessor :can_stop_a_range_of_checks
70
+ def can_stop_a_range_of_checks?
71
+ can_stop_a_range_of_checks
72
+ end
73
+ attr_accessor :can_stop_checks_by_description
74
+ def can_stop_checks_by_description?
75
+ can_stop_checks_by_description
76
+ end
77
+ attr_accessor :default_stop_check_fee
78
+ end
79
+ class BankingEmailProfile
80
+ attr_accessor :supports_banking_email
81
+ def supports_banking_email?
82
+ supports_banking_email
83
+ end
84
+ attr_accessor :supports_notifications
85
+ def supports_notifications?
86
+ supports_notifications
87
+ end
88
+ end
89
+
90
+ class BankingAccount
91
+ attr_accessor :bank_identifier
92
+ attr_accessor :branch_identifier
93
+ attr_accessor :account_identifier
94
+ attr_accessor :account_type
95
+ attr_accessor :account_key
96
+ end
97
+ class BankingAccountInformation
98
+ attr_accessor :account
99
+ attr_accessor :supports_transaction_detail_downloads
100
+ attr_accessor :transfer_source
101
+ attr_accessor :transfer_destination
102
+ attr_accessor :status
103
+ end
104
+
105
+
106
+ class BankingStatementRequest < TransactionalRequest
107
+ attr_accessor :account
108
+ attr_accessor :include_transactions
109
+ def include_transactions?
110
+ include_transactions
111
+ end
112
+ attr_accessor :included_range
113
+ end
114
+ class BankingStatementResponse < TransactionalResponse
115
+ attr_accessor :default_currency
116
+ attr_accessor :account
117
+ attr_accessor :marketing_information
118
+
119
+ attr_accessor :ledger_balance
120
+ attr_accessor :available_balance
121
+
122
+ attr_accessor :transaction_range
123
+ attr_accessor :transactions
124
+ end
125
+ end
@@ -0,0 +1,104 @@
1
+ # Copyright © 2007 Chris Guidry <chrisguidry@gmail.com>
2
+ #
3
+ # This file is part of OFX for Ruby.
4
+ #
5
+ # OFX for Ruby is free software; you can redistribute it and/or modify
6
+ # it under the terms of the GNU General Public License as published by
7
+ # the Free Software Foundation; either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # OFX for Ruby is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+
18
+ module OFX
19
+ class CreditCardStatementMessageSet < MessageSet
20
+ def precedence
21
+ 4
22
+ end
23
+ def version
24
+ 1
25
+ end
26
+ end
27
+
28
+ class CreditCardStatementMessageSetProfile < MessageSetProfile
29
+ def self.message_set_class
30
+ CreditCardStatementMessageSet
31
+ end
32
+
33
+ attr_accessor :closing_statement_available
34
+ def closing_statement_available?
35
+ closing_statement_available
36
+ end
37
+ end
38
+
39
+ class CreditCardAccount
40
+ attr_accessor :account_identifier
41
+ attr_accessor :account_key
42
+ end
43
+ class CreditCardAccountInformation
44
+ attr_accessor :account
45
+ attr_accessor :supports_transaction_detail_downloads
46
+ attr_accessor :transfer_source
47
+ attr_accessor :transfer_destination
48
+ attr_accessor :status
49
+ end
50
+
51
+ class CreditCardStatementRequest < TransactionalRequest
52
+ attr_accessor :account
53
+ attr_accessor :include_transactions
54
+ def include_transactions?
55
+ include_transactions
56
+ end
57
+ attr_accessor :included_range
58
+ end
59
+ class CreditCardStatementResponse < TransactionalResponse
60
+ attr_accessor :default_currency
61
+ attr_accessor :account
62
+ attr_accessor :marketing_information
63
+
64
+ attr_accessor :ledger_balance
65
+ attr_accessor :available_balance
66
+
67
+ attr_accessor :transaction_range
68
+ attr_accessor :transactions
69
+ end
70
+
71
+ class CreditCardClosingStatementRequest < TransactionalRequest
72
+ attr_accessor :account
73
+ attr_accessor :statement_range
74
+ end
75
+ class CreditCardClosingStatementResponse < TransactionalResponse
76
+ attr_accessor :default_currency
77
+ attr_accessor :account
78
+
79
+ attr_accessor :statements
80
+ end
81
+ class CreditCardClosingStatement
82
+ attr_accessor :currency
83
+
84
+ attr_accessor :finanical_institution_transaction_identifier
85
+ attr_accessor :statement_range
86
+ attr_accessor :next_statement_close
87
+
88
+ attr_accessor :opening_balance
89
+ attr_accessor :closing_balance
90
+
91
+ attr_accessor :payment_due_date
92
+ attr_accessor :minimum_payment_due
93
+
94
+ attr_accessor :finance_charge
95
+ attr_accessor :total_of_payments_and_charges
96
+ attr_accessor :total_of_purchases_and_advances
97
+ attr_accessor :debit_adjustements
98
+ attr_accessor :credit_limit
99
+
100
+ attr_accessor :transaction_range
101
+
102
+ attr_accessor :marketing_information
103
+ end
104
+ end