class BankTransfer # Configuration class Configuration attr_accessor :bank def initialize(bank) @bank = bank end def attrs send("#{@bank}_config") end def attr_keys send("#{@bank}_config").keys end def bank_prefix send("#{@bank}_prefix") end def operation_types OPERATION_TYPES end def source_account SOURCE_ACCOUNT end private def banorte_config BANORTE_CONFIG end def banorte_prefix BANK_PREFIXES[:banorte] end BANORTE_CONFIG = { operation: { source_attr: :config, max_length: 2, range: (1..2), fill: ' ', fill_side: :rigth }, beneficiary_name: { source_attr: :data, max_length: 50, range: (3..52), fill: ' ', fill_side: :rigth }, source_account: { source_attr: :config, max_length: 18, range: (53..70), fill: '0', fill_side: :left }, target_account: { source_attr: :data, max_length: 18, range: (71..88), fill: '0', fill_side: :left }, transfer_ammount: { source_attr: :data, max_length: 13, range: (89..101), fill: '0', fill_side: :left }, reference_number: { source_attr: :config, max_length: 10, range: (102..111), fill: '0', fill_side: :left }, transfer_concept: { source_attr: :config, max_length: 35, range: (112..146), fill: ' ', fill_side: :rigth }, iva: { source_attr: :data, max_length: 29, range: (147..175), fill: ' ', fill_side: :rigth }, target_email: { source_attr: :data, max_length: 60, range: (176..235), fill: ' ', fill_side: :rigth }, target_message: { source_attr: :config, max_length: 100, range: (236..275), fill: ' ', fill_side: :rigth }, pay_date: { source_attr: :config, max_length: 8, range: (276..283), fill: ' ', fill_side: :rigth } }.freeze BANK_PREFIXES = { banorte: '072' }.freeze OPERATION_TYPES = { own_account_transfer: '01', third_party_transfer: '02', spei: '04', tef: '05' }.freeze # NOTE: May be configurable from the Dashboard configurations SOURCE_ACCOUNT = ENV['SOURCE_ACCOUNT'] end end