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: Возвращает экземпляр класса
из базы или nil. -
#search_by_main_reg_number(main_reg_number) ⇒ Object
Метод возвращает банк по основному государственному регистрационному номеру(ОГРН) == Parameters: main_reg_number:: Основной государственный регистрационный номер == Returns: Возвращает экземпляр класса
из базы или nil. -
#search_by_name(bank_name) ⇒ Object
Поиск по названию банка.
-
#search_by_reg_number(reg_number) ⇒ Object
Метод возвращает банк по регистрационному номеру ЦБ РФ == Parameters: reg_number:: Регистрационный номер банка == Returns: Возвращает экземпляр класса
из базы или 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:
Возвращает массив актуальных записей класса
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:
Возвращает экземпляр класса
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:
Возвращает экземпляр класса
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:
Возвращает массив актуальных записей класса
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:
Возвращает экземпляр класса
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:
Возвращает массив актуальных записей класса
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 |