Module: RusBankRails::ActsAsBank::ClassMethods
- Defined in:
- lib/rus_bank_rails/acts_as_bank.rb
Instance Method Summary collapse
- #acts_as_bank ⇒ Object
-
#bic_to_int_code(bic) ⇒ Object
- Метод возвращает внутренний номер банка по БИК == Parameters: bic
-
Банковский Идентификационный Код.
-
#bic_to_reg_number(bic) ⇒ Object
- Метод возвращает регистрационный номер банка по БИК == Parameters: bic
-
Банковский Идентификационный Код.
-
#enum_bic ⇒ Object
Данные по BIC кодам КО, без филиалов.
-
#get_offices(internal_code) ⇒ Object
Возвращает список филиалов по внутреннему номеру банка.
-
#get_offices_by_region(region_code) ⇒ Object
Список филиалов в указанном регионе.
-
#int_code_to_reg_number(internal_code) ⇒ Object
- Возвращает регистрационный номер по внутреннему номеру == Parameters: internal_code
-
Внутренний номер банка.
-
#reg_num_to_int_code(reg_number) ⇒ Object
- Возвращает внутренний номер по регистрационному номеру == Parameters: reg_number
-
Регистрационный номер банка.
-
#regions_enum ⇒ Object
Список регионов.
-
#search_by_bic(bic) ⇒ Object
- Метод возвращает банк по БИК == Parameters: bic
-
Банковский Идентификационный Код == Returns: Возвращает экземпляр класса <Bank> из базы или nil.
-
#search_by_main_reg_number(main_reg_number) ⇒ Object
- Метод возвращает банк по основному государственному регистрационному номеру(ОГРН) == Parameters: main_reg_number
-
Основной государственный регистрационный номер == Returns: Возвращает экземпляр класса <Bank> из базы или nil.
-
#search_by_name(bank_name) ⇒ Object
Поиск по названию банка.
-
#search_by_reg_number(reg_number) ⇒ Object
- Метод возвращает банк по регистрационному номеру ЦБ РФ == Parameters: reg_number
-
Регистрационный номер банка == Returns: Возвращает экземпляр класса <Bank> из базы или nil.
-
#search_by_region_code(region_code) ⇒ Object
Список банков по коду региона.
Instance Method Details
#acts_as_bank ⇒ Object
14 15 16 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 14 def acts_as_bank include RusBankRails::ActsAsBank::LocalInstanceMethods end |
#bic_to_int_code(bic) ⇒ Object
Метод возвращает внутренний номер банка по БИК
Parameters:
- bic
-
Банковский Идентификационный Код
24 25 26 27 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 24 def bic_to_int_code(bic) resp = check_and_update(bic: bic) resp ? resp.internal_code : nil end |
#bic_to_reg_number(bic) ⇒ Object
Метод возвращает регистрационный номер банка по БИК
Parameters:
- bic
-
Банковский Идентификационный Код
35 36 37 38 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 35 def bic_to_reg_number(bic) resp = check_and_update(bic: bic) resp ? resp.reg_number : nil end |
#enum_bic ⇒ Object
Данные по BIC кодам КО, без филиалов. При этом обновляет в базе каждый экземпляр результата. Ресурсоемкий метод, использовать с учетом этого.
Returns:
Возвращает массив актуальных записей класса <Bank> из базы.
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 159 def enum_bic cbr = RusBank.new bics = cbr.EnumBic if bics banks = [] bics.each do |b| bank = check_and_update(bic: b[:bic]) banks << bank unless bank.nil? end banks else nil end end |
#get_offices(internal_code) ⇒ Object
Возвращает список филиалов по внутреннему номеру банка. Метод делегирует вызов к соответствующему методу RusBank. В базу не сохраняет, все результаты онлайн из API ЦБ.
Parameters:
- internal_code
-
Внутренний номер банка
Returns:
Возвращает массив хэшей вида номер филиала”, :cname=>“название филиала”, :cndate=>“Дата регистрации филиала”, :straddrmn=>“Место нахождения (фактический адрес)”, :reg_id=>“вн. Код региона”
129 130 131 132 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 129 def get_offices(internal_code) cbr = RusBank.new cbr.GetOffices(internal_code) end |
#get_offices_by_region(region_code) ⇒ Object
Список филиалов в указанном регионе. Метод делегирует вызов к соответствующему методу RusBank. В базу не сохраняет, все результаты онлайн из API ЦБ. Ресурсоемкий метод, использовать с учетом этого.
Parameters:
- region_code
-
код региона
Returns:
Возвращает массив хэшей вида Код банка (головного)”, :cregnum=>“рег. номер филиала”, :cname=>“название филиала”, :cndate=>“Дата регистрации филиала”, :straddrmn=>“Место нахождения (фактический адрес)”
148 149 150 151 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 148 def get_offices_by_region(region_code) cbr = RusBank.new cbr.GetOfficesByRegion(region_code) end |
#int_code_to_reg_number(internal_code) ⇒ Object
Возвращает регистрационный номер по внутреннему номеру
Parameters:
- internal_code
-
Внутренний номер банка
82 83 84 85 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 82 def int_code_to_reg_number(internal_code) bank = check_and_update(internal_code: internal_code) bank.reg_number if bank end |
#reg_num_to_int_code(reg_number) ⇒ Object
Возвращает внутренний номер по регистрационному номеру
Parameters:
- reg_number
-
Регистрационный номер банка
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 46 def reg_num_to_int_code(reg_number) # TODO: Подумать, стоит ли учет смены регистрационного номера столь лишнего кода. Данный подход основывается на данных с API ЦБ, что более точно. Но можно все упростить, если допустить, что регистрационный код никогда не меняется. bank = self.find_by_reg_number(reg_number.to_i) get_int_code_by_reg_number = lambda { cbr = RusBank.new internal_code = cbr.RegNumToIntCode(reg_number) if internal_code bic = cbr.CreditInfoByIntCode(internal_code)[:co][:bic] check_and_update(bic: bic) return internal_code.to_i else return nil end } if bank.nil? get_int_code_by_reg_number.call else if bank.bic # Банк в базе может быть без БИК resp = check_and_update(bic: bank.bic) if resp.reg_number == reg_number.to_i # На случай если после обновления записи в базе reg_number resp.internal_code # поменялся и найденный банк из базы становится неактуальным else get_int_code_by_reg_number.call end else # Если без БИК, обновлять не требуется, банк не действующий. bank.internal_code end end end |
#regions_enum ⇒ Object
Список регионов. Метод делегирует вызов к соответствующему методу RusBank. В базу не сохраняет, все результаты онлайн из API ЦБ.
Returns:
Возвращает массив хэшей вида код региона”, :cname=>“Название региона”
182 183 184 185 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 182 def regions_enum cbr = RusBank.new cbr.RegionsEnum end |
#search_by_bic(bic) ⇒ Object
Метод возвращает банк по БИК
Parameters:
- bic
-
Банковский Идентификационный Код
Returns:
Возвращает экземпляр класса <Bank> из базы или nil.
195 196 197 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 195 def search_by_bic(bic) check_and_update(bic: bic) end |
#search_by_main_reg_number(main_reg_number) ⇒ Object
Метод возвращает банк по основному государственному регистрационному номеру(ОГРН)
Parameters:
- main_reg_number
-
Основной государственный регистрационный номер
Returns:
Возвращает экземпляр класса <Bank> из базы или nil.
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 220 def search_by_main_reg_number(main_reg_number) bank = Bank.where(main_reg_number: main_reg_number.to_s).first if bank check_and_update(internal_code: bank.internal_code ) else # Единственный метод в API, из которого можно вытянуть банк по ОГРН cbr = RusBank.new # является enum_bic, но локальный вариант метода обновляет ВСЕ полученные банки all_banks = cbr.EnumBic # в базе, что лишнее для данного случая. Поэтому используем enum_bic из rus_bank. if all_banks all_banks.each do |b| if b[:rb] == main_reg_number return check_and_update(bic: b[:bic] ) end end return nil end end end |
#search_by_name(bank_name) ⇒ Object
Поиск по названию банка. При этом, обращаясь к API, обновляет в базе каждый экземпляр результата. Чем большая выборка на выходе, тем более ресурсоемкий метод.
Parameters:
- bank_name
-
наименование банка
Returns:
Возвращает массив актуальных записей класса <Bank> из базы.
96 97 98 99 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 96 def search_by_name(bank_name) cbr = RusBank.new get_updated_array( cbr.SearchByName(bank_name) ) end |
#search_by_reg_number(reg_number) ⇒ Object
Метод возвращает банк по регистрационному номеру ЦБ РФ
Parameters:
- reg_number
-
Регистрационный номер банка
Returns:
Возвращает экземпляр класса <Bank> из базы или nil.
207 208 209 210 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 207 def search_by_reg_number(reg_number) internal_code = reg_num_to_int_code(reg_number.to_i) internal_code ? check_and_update(internal_code: internal_code) : nil end |
#search_by_region_code(region_code) ⇒ Object
Список банков по коду региона. При этом обновляет в базе каждый экземпляр результата. Ресурсоемкий метод, использовать с учетом этого.
Parameters:
- region_code
-
код региона
Returns:
Возвращает массив актуальных записей класса <Bank> из базы.
111 112 113 114 |
# File 'lib/rus_bank_rails/acts_as_bank.rb', line 111 def search_by_region_code(region_code) cbr = RusBank.new get_updated_array( cbr.SearchByRegionCode(region_code) ) end |