rus_bank_rails 0.5.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rus_bank_rails/acts_as_bank.rb +103 -37
- data/lib/rus_bank_rails/version.rb +1 -1
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +4497 -0
- data/test/dummy/log/test.log +12760 -0
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e10b086891d2677a9f774153765e346ebe27e5a4
|
4
|
+
data.tar.gz: 7eb8b625990512223419b082cd8a19265e9b9c8e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b1a01a165bbb74703bae4a993c74422071acd6f08e498091b9ea034407d461c7124923ff073ace7450166282d1fd2fdc0a0b049b48ec8ffd30d523ff718df5dd
|
7
|
+
data.tar.gz: 5a69498173c29ca765a23261e7dc6920834520023a0a3a8180afcac24213d77b272ddc8d9d5d0364715faf62a933a99e0bef07d7745e48517272ccc7d56e2f49
|
@@ -20,7 +20,7 @@ module RusBankRails
|
|
20
20
|
# Метод возвращает внутренний номер банка по БИК
|
21
21
|
|
22
22
|
def BicToIntCode(bic)
|
23
|
-
resp = check_and_update(bic)
|
23
|
+
resp = check_and_update(bic: bic)
|
24
24
|
resp ? resp.internal_code : nil
|
25
25
|
end
|
26
26
|
|
@@ -28,7 +28,7 @@ module RusBankRails
|
|
28
28
|
# Метод возвращает регистрационный номер банка по БИК
|
29
29
|
|
30
30
|
def BicToRegNumber(bic)
|
31
|
-
resp = check_and_update(bic)
|
31
|
+
resp = check_and_update(bic: bic)
|
32
32
|
resp ? resp.reg_number : nil
|
33
33
|
end
|
34
34
|
|
@@ -38,21 +38,16 @@ module RusBankRails
|
|
38
38
|
def RegNumToIntCode(reg_number)
|
39
39
|
bank = self.class.find_by_reg_number(reg_number.to_i)
|
40
40
|
get_int_code_by_reg_number = lambda {
|
41
|
-
#begin
|
42
41
|
cbr = RusBank.new
|
43
42
|
internal_code = cbr.RegNumToIntCode(reg_number)
|
44
43
|
bic = cbr.CreditInfoByIntCode(internal_code)[:co][:bic]
|
45
|
-
check_and_update(bic)
|
44
|
+
check_and_update(bic: bic)
|
46
45
|
return internal_code.to_i
|
47
|
-
#rescue SocketError, Savon::SOAPFault => e
|
48
|
-
# handle_exception(e)
|
49
|
-
# return nil
|
50
|
-
#end
|
51
46
|
}
|
52
47
|
if bank.nil?
|
53
48
|
get_int_code_by_reg_number.call
|
54
49
|
else
|
55
|
-
resp = check_and_update(bank.bic)
|
50
|
+
resp = check_and_update(bic: bank.bic)
|
56
51
|
if resp.reg_number == reg_number.to_i # на случай если после обновления записи в базе reg_number
|
57
52
|
resp.internal_code # поменялся и найденный банк из базы становится неактуальным
|
58
53
|
else
|
@@ -67,23 +62,18 @@ module RusBankRails
|
|
67
62
|
def IntCodeToRegNum(internal_code)
|
68
63
|
bank = self.class.find_by_internal_code(internal_code.to_i)
|
69
64
|
get_reg_number = lambda {
|
70
|
-
#begin
|
71
65
|
cbr = RusBank.new
|
72
66
|
info = cbr.CreditInfoByIntCode(internal_code)
|
73
67
|
if info.nil?
|
74
68
|
return nil
|
75
69
|
else
|
76
|
-
return check_and_update(info[:co][:bic]).reg_number
|
70
|
+
return check_and_update(bic: info[:co][:bic]).reg_number
|
77
71
|
end
|
78
|
-
#rescue SocketError, Savon::SOAPFault => e
|
79
|
-
# handle_exception(e)
|
80
|
-
# return nil
|
81
|
-
#end
|
82
72
|
}
|
83
73
|
if bank.nil?
|
84
74
|
get_reg_number.call
|
85
75
|
else
|
86
|
-
resp = check_and_update(bank.bic)
|
76
|
+
resp = check_and_update(bic: bank.bic)
|
87
77
|
if resp.internal_code == internal_code.to_i
|
88
78
|
resp.reg_number
|
89
79
|
else
|
@@ -93,11 +83,61 @@ module RusBankRails
|
|
93
83
|
end
|
94
84
|
|
95
85
|
##
|
96
|
-
# Поиск по названию банка. Прокси метод, при каждом вызове обращается к внешнему API.
|
86
|
+
# Поиск по названию банка. Прокси метод, при каждом вызове обращается к внешнему API. Возвращает массив записей из базы.
|
97
87
|
|
98
88
|
def SearchByName(bank_name)
|
99
89
|
cbr = RusBank.new
|
100
|
-
cbr.SearchByName(bank_name)
|
90
|
+
result = cbr.SearchByName(bank_name)
|
91
|
+
if result
|
92
|
+
banks = []
|
93
|
+
result.each do |b|
|
94
|
+
bank = check_and_update(internal_code: b[:int_code])
|
95
|
+
banks << bank unless bank.nil?
|
96
|
+
end
|
97
|
+
banks
|
98
|
+
else
|
99
|
+
nil
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
##
|
104
|
+
# Список банков по коду региона. Прокси метод, при каждом вызове обращается к внешнему API.
|
105
|
+
|
106
|
+
def SearchByRegionCode(region_code)
|
107
|
+
cbr = RusBank.new
|
108
|
+
cbr.SearchByRegionCode(region_code)
|
109
|
+
end
|
110
|
+
|
111
|
+
##
|
112
|
+
# Возвращает список отделений по внутреннему номеру банка. Прокси метод, при каждом вызове обращается к внешнему API.
|
113
|
+
|
114
|
+
def GetOffices(int_code)
|
115
|
+
cbr = RusBank.new
|
116
|
+
cbr.GetOffices(int_code)
|
117
|
+
end
|
118
|
+
|
119
|
+
##
|
120
|
+
# Список филиалов в указанном регионе. Прокси метод, при каждом вызове обращается к внешнему API.
|
121
|
+
|
122
|
+
def GetOfficesByRegion(region_code)
|
123
|
+
cbr = RusBank.new
|
124
|
+
cbr.GetOfficesByRegion(region_code)
|
125
|
+
end
|
126
|
+
|
127
|
+
##
|
128
|
+
# Полный список банков. Прокси метод, при каждом вызове обращается к внешнему API.
|
129
|
+
|
130
|
+
def EnumBic
|
131
|
+
cbr = RusBank.new
|
132
|
+
cbr.EnumBic
|
133
|
+
end
|
134
|
+
|
135
|
+
##
|
136
|
+
# Список регионов. Прокси метод, при каждом вызове обращается к внешнему API.
|
137
|
+
|
138
|
+
def RegionsEnum
|
139
|
+
cbr = RusBank.new
|
140
|
+
cbr.RegionsEnum
|
101
141
|
end
|
102
142
|
|
103
143
|
##
|
@@ -124,7 +164,7 @@ module RusBankRails
|
|
124
164
|
# Возвращает true, если банк действующий
|
125
165
|
|
126
166
|
def is_active?
|
127
|
-
(self.org_status != "лицензия отозвана") && !(self.get_licences_as_array_of_hashes.empty?)
|
167
|
+
(self.org_status != "лицензия отозвана") && (self.org_status != "ликвидирована") && !(self.get_licences_as_array_of_hashes.empty?)
|
128
168
|
end
|
129
169
|
|
130
170
|
private
|
@@ -132,10 +172,20 @@ module RusBankRails
|
|
132
172
|
##
|
133
173
|
# Метод проверяет дату обновления записи в базе и пытается обновить в случае необходимости
|
134
174
|
|
135
|
-
def check_and_update(
|
136
|
-
|
175
|
+
def check_and_update(params = {})
|
176
|
+
if(params[:bic])
|
177
|
+
bank = self.class.find_by_bic(params[:bic])
|
178
|
+
info = get_info_by_bic(params[:bic])
|
179
|
+
internal_code = info[:internal_code] if info
|
180
|
+
elsif(params[:internal_code])
|
181
|
+
bank = self.class.find_by_internal_code(params[:internal_code])
|
182
|
+
internal_code = params[:internal_code]
|
183
|
+
else
|
184
|
+
return nil
|
185
|
+
end
|
186
|
+
|
137
187
|
if bank.nil?
|
138
|
-
new_bank(
|
188
|
+
internal_code ? new_bank(internal_code) : nil
|
139
189
|
else
|
140
190
|
if bank.expire?
|
141
191
|
update_bank(bank)
|
@@ -148,8 +198,8 @@ module RusBankRails
|
|
148
198
|
##
|
149
199
|
# Метод создает новый банк в базе
|
150
200
|
|
151
|
-
def new_bank(
|
152
|
-
if info =
|
201
|
+
def new_bank(internal_code)
|
202
|
+
if info = get_info_by_internal_code(internal_code)
|
153
203
|
bank = self.class.new(info)
|
154
204
|
bank.save
|
155
205
|
bank
|
@@ -163,7 +213,7 @@ module RusBankRails
|
|
163
213
|
# Обновляет переданный экземпляр банка в базе
|
164
214
|
|
165
215
|
def update_bank(bank)
|
166
|
-
info =
|
216
|
+
info = get_info_by_internal_code(bank.internal_code)
|
167
217
|
if info.nil?
|
168
218
|
bank.delete
|
169
219
|
nil
|
@@ -174,20 +224,36 @@ module RusBankRails
|
|
174
224
|
end
|
175
225
|
|
176
226
|
##
|
177
|
-
# Метод возвращает актуальную информацию по банку с сайта ЦБР
|
227
|
+
# Метод возвращает актуальную информацию по банку с сайта ЦБР по БИК банка
|
178
228
|
|
179
|
-
def
|
180
|
-
#begin
|
229
|
+
def get_info_by_bic(bic)
|
181
230
|
cbr = RusBank.new
|
182
231
|
internal_code = cbr.BicToIntCode(bic)
|
183
|
-
|
184
|
-
|
232
|
+
get_info_by_internal_code(internal_code) if internal_code
|
233
|
+
end
|
234
|
+
|
235
|
+
##
|
236
|
+
# Метод возвращает актуальную информацию по банку с сайта ЦБР по регистрационному номеру
|
237
|
+
|
238
|
+
def get_info_by_reg_number(reg_number)
|
239
|
+
cbr = RusBank.new
|
240
|
+
internal_code = cbr.RegNumToIntCode(reg_number)
|
241
|
+
get_info_by_internal_code(internal_code) if internal_code
|
242
|
+
end
|
243
|
+
|
244
|
+
##
|
245
|
+
# Метод возвращает актуальную информацию по банку с сайта ЦБР по внутреннему коду
|
246
|
+
|
247
|
+
def get_info_by_internal_code(internal_code)
|
248
|
+
#begin
|
249
|
+
cbr = RusBank.new
|
250
|
+
info = cbr.CreditInfoByIntCode(internal_code)
|
185
251
|
#rescue SocketError, Savon::SOAPFault => e
|
186
252
|
# handle_exception(e)
|
187
253
|
# return nil
|
188
254
|
#end
|
189
255
|
|
190
|
-
if
|
256
|
+
if info
|
191
257
|
if info[:lic].nil? # Лицензии нет
|
192
258
|
lic = {}
|
193
259
|
elsif info[:lic].instance_of?(Array) # API вернул более одной лицензии
|
@@ -195,17 +261,17 @@ module RusBankRails
|
|
195
261
|
else # Одна лицензия, приводим ее к массиву из одного элемента
|
196
262
|
lic = {:licences => [info[:lic]]}
|
197
263
|
end
|
198
|
-
info[:co].merge(lic).merge(internal_code: internal_code
|
264
|
+
info[:co].merge(lic).merge(internal_code: internal_code)
|
199
265
|
else
|
200
266
|
nil
|
201
267
|
end
|
202
268
|
end
|
203
269
|
|
204
|
-
def handle_exception(e)
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
end
|
270
|
+
#def handle_exception(e)
|
271
|
+
# puts "========== ========== =========="
|
272
|
+
# puts e.inspect
|
273
|
+
# puts "========== ========== =========="
|
274
|
+
#end
|
209
275
|
|
210
276
|
end
|
211
277
|
|
Binary file
|
data/test/dummy/db/test.sqlite3
CHANGED
Binary file
|