rus_bank_rails 0.6.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/rus_bank_rails/acts_as_bank.rb +25 -46
- 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 +7 -0
- data/test/dummy/log/test.log +23316 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 388c4b80c1232868cefade5b644967341efc0e19
|
4
|
+
data.tar.gz: b84a79de60765b872080fbf1d18e7007621e57c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 39b730fa5565e59b27552fd74bb33f8271b3f105bf5c8c68057b088b76bdd352baa1eba4f7fbf641fa1de374c889a52874792af599f473df1ae758fe48bd8252
|
7
|
+
data.tar.gz: 193717f212ce3f7bc20618fb16dee2f4b3200244619328ad45b7961d821672583e30ecc373af5f2ce9d9825e99174c318bf3855f2ec9da2aa90369e444de733e
|
data/README.md
CHANGED
@@ -36,7 +36,7 @@ Rails-обертка вокруг гема rus_bank - https://github.com/wildDAl
|
|
36
36
|
@bank = Bank.new
|
37
37
|
internal_code = @bank.BicToIntCode(some_bank_bic)
|
38
38
|
|
39
|
-
Далее можно кастомизировать модель по своему усмотрению. Например, в модели можно переопределить поведение тех или иных методов гема. Например, логика определения, требуется ли возвращать банк из базы или тянуть из API ЦБ, построена на том факте, что справочник БИК вступает в действие в 0:00 по московскому времени на всей территории страны. Т.е. если дата обновления записи(по MSK) в бд не текущие сутки, то обновляем ее. Можно поменять эту логику, переопределив метод expire
|
39
|
+
Далее можно кастомизировать модель по своему усмотрению. Например, в модели можно переопределить поведение тех или иных методов гема. Например, логика определения, требуется ли возвращать банк из базы или тянуть из API ЦБ, построена на том факте, что справочник БИК вступает в действие в 0:00 по московскому времени на всей территории страны. Т.е. если дата обновления записи(по MSK) в бд не текущие сутки, то обновляем ее. Можно поменять эту логику, переопределив метод `expire?` в `app/models/bank.rb` своего приложения:
|
40
40
|
|
41
41
|
def expire?
|
42
42
|
self.updated_at < 1.minute.ago # Например, обновляем все, что старше минуты
|
@@ -44,6 +44,7 @@ Rails-обертка вокруг гема rus_bank - https://github.com/wildDAl
|
|
44
44
|
|
45
45
|
Подобным образом переопределям любое поведение гема.
|
46
46
|
|
47
|
+
Кроме того, следует иметь в виду, что часть методов при каждом вызове "дергает" внешнее API(о чем упомянуто в описании соответствующего метода) и при этом сохраняет результат в базу, что может сказаться на отклике вашего приложения. Например, `SearchByName("")` вернет все банки из API и при этом добавит/обновит их в базе, что крайне накладно(на каждый банк, что требуется обновить, вызов внешнего сервиса). Потому стоит использовать подобные методы с осторожностью, как вариант выполнять их отложенно.
|
47
48
|
|
48
49
|
Описание доступных методов тут - http://rubydoc.info/gems/rus_bank_rails/RusBankRails/ActsAsBank/LocalInstanceMethods
|
49
50
|
|
@@ -16,6 +16,7 @@ module RusBankRails
|
|
16
16
|
end
|
17
17
|
|
18
18
|
module LocalInstanceMethods
|
19
|
+
|
19
20
|
##
|
20
21
|
# Метод возвращает внутренний номер банка по БИК
|
21
22
|
|
@@ -36,6 +37,7 @@ module RusBankRails
|
|
36
37
|
# Возвращает внутренний номер по регистрационному номеру
|
37
38
|
|
38
39
|
def RegNumToIntCode(reg_number)
|
40
|
+
# TODO: Подумать, стоит ли учет смены регистрационного номера столь лишнего кода. Данный подход основывается на данных с API ЦБ, что более точно. Но можно все упростить, если допустить, что регистрационный код никогда не меняется.
|
39
41
|
bank = self.class.find_by_reg_number(reg_number.to_i)
|
40
42
|
get_int_code_by_reg_number = lambda {
|
41
43
|
cbr = RusBank.new
|
@@ -60,25 +62,11 @@ module RusBankRails
|
|
60
62
|
# Возвращает регистрационный номер по внутреннему номеру
|
61
63
|
|
62
64
|
def IntCodeToRegNum(internal_code)
|
63
|
-
bank =
|
64
|
-
|
65
|
-
|
66
|
-
info = cbr.CreditInfoByIntCode(internal_code)
|
67
|
-
if info.nil?
|
68
|
-
return nil
|
69
|
-
else
|
70
|
-
return check_and_update(bic: info[:co][:bic]).reg_number
|
71
|
-
end
|
72
|
-
}
|
73
|
-
if bank.nil?
|
74
|
-
get_reg_number.call
|
65
|
+
bank = check_and_update(internal_code: internal_code)
|
66
|
+
if bank
|
67
|
+
bank.reg_number
|
75
68
|
else
|
76
|
-
|
77
|
-
if resp.internal_code == internal_code.to_i
|
78
|
-
resp.reg_number
|
79
|
-
else
|
80
|
-
get_reg_number.call
|
81
|
-
end
|
69
|
+
nil
|
82
70
|
end
|
83
71
|
end
|
84
72
|
|
@@ -87,17 +75,7 @@ module RusBankRails
|
|
87
75
|
|
88
76
|
def SearchByName(bank_name)
|
89
77
|
cbr = RusBank.new
|
90
|
-
|
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
|
78
|
+
get_updated_array( cbr.SearchByName(bank_name) )
|
101
79
|
end
|
102
80
|
|
103
81
|
##
|
@@ -105,7 +83,7 @@ module RusBankRails
|
|
105
83
|
|
106
84
|
def SearchByRegionCode(region_code)
|
107
85
|
cbr = RusBank.new
|
108
|
-
cbr.SearchByRegionCode(region_code)
|
86
|
+
get_updated_array( cbr.SearchByRegionCode(region_code) )
|
109
87
|
end
|
110
88
|
|
111
89
|
##
|
@@ -161,7 +139,7 @@ module RusBankRails
|
|
161
139
|
end
|
162
140
|
|
163
141
|
##
|
164
|
-
#
|
142
|
+
# Проверяет, действующий ли банк
|
165
143
|
|
166
144
|
def is_active?
|
167
145
|
(self.org_status != "лицензия отозвана") && (self.org_status != "ликвидирована") && !(self.get_licences_as_array_of_hashes.empty?)
|
@@ -223,6 +201,22 @@ module RusBankRails
|
|
223
201
|
end
|
224
202
|
end
|
225
203
|
|
204
|
+
##
|
205
|
+
# Получает массив хэшей банков и возвращает массив соответствующих записей в базе данных
|
206
|
+
|
207
|
+
def get_updated_array(array_of_banks)
|
208
|
+
if array_of_banks
|
209
|
+
banks = []
|
210
|
+
array_of_banks.each do |b|
|
211
|
+
bank = check_and_update(internal_code: b[:int_code])
|
212
|
+
banks << bank unless bank.nil?
|
213
|
+
end
|
214
|
+
banks
|
215
|
+
else
|
216
|
+
nil
|
217
|
+
end
|
218
|
+
end
|
219
|
+
|
226
220
|
##
|
227
221
|
# Метод возвращает актуальную информацию по банку с сайта ЦБР по БИК банка
|
228
222
|
|
@@ -232,15 +226,6 @@ module RusBankRails
|
|
232
226
|
get_info_by_internal_code(internal_code) if internal_code
|
233
227
|
end
|
234
228
|
|
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
229
|
##
|
245
230
|
# Метод возвращает актуальную информацию по банку с сайта ЦБР по внутреннему коду
|
246
231
|
|
@@ -267,12 +252,6 @@ module RusBankRails
|
|
267
252
|
end
|
268
253
|
end
|
269
254
|
|
270
|
-
#def handle_exception(e)
|
271
|
-
# puts "========== ========== =========="
|
272
|
-
# puts e.inspect
|
273
|
-
# puts "========== ========== =========="
|
274
|
-
#end
|
275
|
-
|
276
255
|
end
|
277
256
|
|
278
257
|
end
|
Binary file
|
data/test/dummy/db/test.sqlite3
CHANGED
Binary file
|
@@ -6710,3 +6710,10 @@ Migrating to DeleteOldLicFromBanks (20140208123404)
|
|
6710
6710
|
[1m[35m (0.1ms)[0m begin transaction
|
6711
6711
|
[1m[36mSQL (0.3ms)[0m [1mINSERT INTO "banks" ("created_at", "date_kgr_registration", "fact_adr", "internal_code", "licences", "org_full_name", "org_name", "org_status", "reg_code", "reg_number", "updated_at", "ustav_adr") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)[0m [["created_at", Wed, 12 Feb 2014 13:07:07 UTC +00:00], ["date_kgr_registration", Mon, 17 Aug 1992], ["fact_adr", "Нет данных"], ["internal_code", 460001027], ["licences", "--- []\n"], ["org_full_name", "Акционерный коммерческий банк \"Московский купеческий банк\""], ["org_name", "МОСКОВСКИЙ КУПЕЧЕСКИЙ БАНК"], ["org_status", "ликвидирована"], ["reg_code", 17], ["reg_number", 2019], ["updated_at", Wed, 12 Feb 2014 13:07:07 UTC +00:00], ["ustav_adr", "103012, г.Москва, ул.Варварка, 8"]]
|
6712
6712
|
[1m[35m (0.4ms)[0m commit transaction
|
6713
|
+
[1m[36mBank Load (0.2ms)[0m [1mSELECT "banks".* FROM "banks" WHERE "banks"."internal_code" = 450000650 LIMIT 1[0m
|
6714
|
+
[1m[35m (0.1ms)[0m begin transaction
|
6715
|
+
[1m[36mSQL (24.4ms)[0m [1mINSERT INTO "banks" ("bic", "created_at", "date_kgr_registration", "fact_adr", "internal_code", "licences", "main_date_reg", "main_reg_number", "org_full_name", "org_name", "org_status", "phones", "reg_code", "reg_number", "ssv_date", "updated_at", "ust_money", "ustav_adr") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)[0m [["bic", "044585216"], ["created_at", Thu, 13 Feb 2014 15:52:31 UTC +00:00], ["date_kgr_registration", Tue, 12 May 1992], ["fact_adr", "125040, г. Москва, ул. Правды, д. 8, корпус 1"], ["internal_code", 450000650], ["licences", "---\n- :l_code: !ruby/string:Nori::StringWithAttributes\n str: !binary |-\n Nw==\n attributes: {}\n :lt: !ruby/string:Nori::StringWithAttributes\n str: !binary |-\n 0JPQtdC90LXRgNCw0LvRjNC90LDRjyDQu9C40YbQtdC90LfQuNGPINC90LAg\n 0L7RgdGD0YnQtdGB0YLQstC70LXQvdC40LUg0LHQsNC90LrQvtCy0YHQutC4\n 0YUg0L7Qv9C10YDQsNGG0LjQuQ==\n attributes: {}\n :l_date: !ruby/object:DateTime 2012-03-15 00:00:00.000000000 +04:00\n"], ["main_date_reg", Fri, 04 Oct 2002], ["main_reg_number", "1027700280937"], ["org_full_name", "Общество с ограниченной ответственностью \"Хоум Кредит энд Финанс Банк\""], ["org_name", "ХКФ БАНК"], ["org_status", "норм."], ["phones", "(495)785-82-25"], ["reg_code", 16], ["reg_number", 316], ["ssv_date", Wed, 10 Nov 2004], ["updated_at", Thu, 13 Feb 2014 15:52:31 UTC +00:00], ["ust_money", 4173000000], ["ustav_adr", "125040, г. Москва, ул. Правды, д. 8, корпус 1"]]
|
6716
|
+
[1m[35m (0.4ms)[0m commit transaction
|
6717
|
+
[1m[36mBank Load (0.2ms)[0m [1mSELECT "banks".* FROM "banks" WHERE "banks"."internal_code" = 450000650 LIMIT 1[0m
|
6718
|
+
[1m[35mBank Load (0.2ms)[0m SELECT "banks".* FROM "banks" WHERE "banks"."internal_code" = 45000099650 LIMIT 1
|
6719
|
+
[1m[36mBank Load (0.2ms)[0m [1mSELECT "banks".* FROM "banks" WHERE "banks"."internal_code" = 45000099 LIMIT 1[0m
|