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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e10b086891d2677a9f774153765e346ebe27e5a4
4
- data.tar.gz: 7eb8b625990512223419b082cd8a19265e9b9c8e
3
+ metadata.gz: 388c4b80c1232868cefade5b644967341efc0e19
4
+ data.tar.gz: b84a79de60765b872080fbf1d18e7007621e57c4
5
5
  SHA512:
6
- metadata.gz: b1a01a165bbb74703bae4a993c74422071acd6f08e498091b9ea034407d461c7124923ff073ace7450166282d1fd2fdc0a0b049b48ec8ffd30d523ff718df5dd
7
- data.tar.gz: 5a69498173c29ca765a23261e7dc6920834520023a0a3a8180afcac24213d77b272ddc8d9d5d0364715faf62a933a99e0bef07d7745e48517272ccc7d56e2f49
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? в app/models/bank.rb своего приложения:
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 = self.class.find_by_internal_code(internal_code.to_i)
64
- get_reg_number = lambda {
65
- cbr = RusBank.new
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
- resp = check_and_update(bic: bank.bic)
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
- 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
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
- # Возвращает true, если банк действующий
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
@@ -1,3 +1,3 @@
1
1
  module RusBankRails
2
- VERSION = "0.6.0"
2
+ VERSION = "0.7.1"
3
3
  end
Binary file
Binary file
@@ -6710,3 +6710,10 @@ Migrating to DeleteOldLicFromBanks (20140208123404)
6710
6710
   (0.1ms) begin transaction
6711
6711
  SQL (0.3ms) INSERT 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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [["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
   (0.4ms) commit transaction
6713
+ Bank Load (0.2ms) SELECT "banks".* FROM "banks" WHERE "banks"."internal_code" = 450000650 LIMIT 1
6714
+  (0.1ms) begin transaction
6715
+ SQL (24.4ms) INSERT 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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) [["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
+  (0.4ms) commit transaction
6717
+ Bank Load (0.2ms) SELECT "banks".* FROM "banks" WHERE "banks"."internal_code" = 450000650 LIMIT 1
6718
+ Bank Load (0.2ms) SELECT "banks".* FROM "banks" WHERE "banks"."internal_code" = 45000099650 LIMIT 1
6719
+ Bank Load (0.2ms) SELECT "banks".* FROM "banks" WHERE "banks"."internal_code" = 45000099 LIMIT 1