Class: BrBoleto::Remessa::Cnab240::Base
- Inherits:
-
Base
- Object
- ActiveModelBase
- Base
- BrBoleto::Remessa::Cnab240::Base
- Includes:
- Helper::HeaderArquivo, Helper::HeaderLote, Helper::SegmentoP, Helper::SegmentoQ, Helper::SegmentoR, Helper::SegmentoS, Helper::TrailerArquivo, Helper::TrailerLote
- Defined in:
- lib/br_boleto/remessa/cnab240/base.rb
Instance Attribute Summary collapse
-
#lotes ⇒ Object
O atributo lotes sempre irá retornar umm Array.
-
#mensagem_1 ⇒ Object
mensagem 1.
-
#mensagem_2 ⇒ Object
mensagem 2.
Attributes inherited from Base
#data_hora_arquivo, #sequencial_remessa
Class Method Summary collapse
Instance Method Summary collapse
-
#codigo_convenio ⇒ Object
Codigo do convenio.
-
#complemento_header_arquivo ⇒ Object
Complemento do registro.
-
#complemento_p(pagamento) ⇒ Object
Complemento do segmento P Recebe um objeto da classe BrBoleto::Remessa::Pagamento Composto por 34 digitos Cada banco tem seu padrão Deve ser sobrescrito na classe do banco.
-
#complemento_trailer_lote(lote, nr_lote) ⇒ Object
Complemento final do trailer do lote Por padrão coloco 217 caracateres em branco pois é na maioria dos bancos Mas para alguns bancos isso pode mudar.
-
#convenio_lote(lote) ⇒ Object
Informacoes do convenio para o lote.
-
#dados_do_arquivo ⇒ String
Gera os dados para o arquivo remessa.
-
#informacoes_da_conta ⇒ Object
Informacoes da conta do cedente.
-
#monta_lote(lote, nro_lote) ⇒ Array
Monta um lote para o arquivo.
- #pagamento_valid_distribuicao_boleto_length ⇒ Object
- #pagamento_valid_emissao_boleto_length ⇒ Object
-
#segmento_p_numero_do_documento(pagamento) ⇒ Object
Número do Documento de Cobrança Cada banco tem sua maneira de identificar esse número, mas o padrão é o Valor que se encontra no numero_documento ou então em nosso numero 15 posições.
Methods included from Helper::TrailerArquivo
#monta_trailer_arquivo, #trailer_arquivo_posicao_001_a_003, #trailer_arquivo_posicao_004_a_007, #trailer_arquivo_posicao_008_a_008, #trailer_arquivo_posicao_009_a_017, #trailer_arquivo_posicao_018_a_023, #trailer_arquivo_posicao_024_a_029, #trailer_arquivo_posicao_030_a_035, #trailer_arquivo_posicao_036_a_240
Methods included from Helper::TrailerLote
#monta_trailer_lote, #trailer_lote_posicao_001_a_003, #trailer_lote_posicao_004_a_007, #trailer_lote_posicao_008_a_008, #trailer_lote_posicao_009_a_017, #trailer_lote_posicao_018_a_023, #trailer_lote_posicao_024_a_240
Methods included from Helper::SegmentoS
#monta_segmento_s, #segmento_s_posicao_001_a_003, #segmento_s_posicao_004_a_007, #segmento_s_posicao_008_a_008, #segmento_s_posicao_009_a_013, #segmento_s_posicao_014_a_014, #segmento_s_posicao_015_a_015, #segmento_s_posicao_016_a_017, #segmento_s_posicao_018_a_018, #segmento_s_posicao_019_a_020_tipo_impressao_1_ou_2, #segmento_s_posicao_019_a_058_tipo_impressao_3, #segmento_s_posicao_021_a_160_tipo_impressao_1_ou_2, #segmento_s_posicao_059_a_098_tipo_impressao_3, #segmento_s_posicao_099_a_138_tipo_impressao_3, #segmento_s_posicao_139_a_178_tipo_impressao_3, #segmento_s_posicao_161_a_162_tipo_impressao_1_ou_2, #segmento_s_posicao_163_a_240_tipo_impressao_1_ou_2, #segmento_s_posicao_179_a_218_tipo_impressao_3, #segmento_s_posicao_219_a_240_tipo_impressao_3, #segmento_s_tipo_impressao_1_ou_2, #segmento_s_tipo_impressao_3
Methods included from Helper::SegmentoR
#monta_segmento_r, #segmento_r_posicao_001_a_003, #segmento_r_posicao_004_a_007, #segmento_r_posicao_008_a_008, #segmento_r_posicao_009_a_013, #segmento_r_posicao_014_a_014, #segmento_r_posicao_015_a_015, #segmento_r_posicao_016_a_017, #segmento_r_posicao_018_a_018, #segmento_r_posicao_019_a_026, #segmento_r_posicao_027_a_041, #segmento_r_posicao_042_a_042, #segmento_r_posicao_043_a_050, #segmento_r_posicao_051_a_065, #segmento_r_posicao_066_a_066, #segmento_r_posicao_067_a_074, #segmento_r_posicao_075_a_089, #segmento_r_posicao_090_a_099, #segmento_r_posicao_100_a_139, #segmento_r_posicao_140_a_179, #segmento_r_posicao_180_a_199, #segmento_r_posicao_200_a_207, #segmento_r_posicao_208_a_210, #segmento_r_posicao_211_a_215, #segmento_r_posicao_216_a_216, #segmento_r_posicao_217_a_228, #segmento_r_posicao_229_a_229, #segmento_r_posicao_230_a_230, #segmento_r_posicao_231_a_231, #segmento_r_posicao_232_a_240
Methods included from Helper::SegmentoQ
#monta_segmento_q, #segmento_q_posicao_001_a_003, #segmento_q_posicao_004_a_007, #segmento_q_posicao_008_a_008, #segmento_q_posicao_009_a_013, #segmento_q_posicao_014_a_014, #segmento_q_posicao_015_a_015, #segmento_q_posicao_016_a_017, #segmento_q_posicao_018_a_018, #segmento_q_posicao_019_a_033, #segmento_q_posicao_034_a_073, #segmento_q_posicao_074_a_113, #segmento_q_posicao_114_a_128, #segmento_q_posicao_129_a_133, #segmento_q_posicao_134_a_136, #segmento_q_posicao_137_a_151, #segmento_q_posicao_152_a_153, #segmento_q_posicao_154_a_154, #segmento_q_posicao_155_a_169, #segmento_q_posicao_170_a_209, #segmento_q_posicao_210_a_212, #segmento_q_posicao_213_a_232, #segmento_q_posicao_233_a_240
Methods included from Helper::SegmentoP
#monta_segmento_p, #segmento_p_posicao_001_a_003, #segmento_p_posicao_004_a_007, #segmento_p_posicao_008_a_008, #segmento_p_posicao_009_a_013, #segmento_p_posicao_014_a_014, #segmento_p_posicao_015_a_015, #segmento_p_posicao_016_a_017, #segmento_p_posicao_018_a_022, #segmento_p_posicao_023_a_023, #segmento_p_posicao_024_a_057, #segmento_p_posicao_058_a_058, #segmento_p_posicao_059_a_059, #segmento_p_posicao_060_a_060, #segmento_p_posicao_061_a_061, #segmento_p_posicao_062_a_062, #segmento_p_posicao_063_a_077, #segmento_p_posicao_078_a_085, #segmento_p_posicao_086_a_100, #segmento_p_posicao_101_a_105, #segmento_p_posicao_106_a_106, #segmento_p_posicao_107_a_108, #segmento_p_posicao_109_a_109, #segmento_p_posicao_110_a_117, #segmento_p_posicao_118_a_118, #segmento_p_posicao_119_a_126, #segmento_p_posicao_127_a_141, #segmento_p_posicao_142_a_142, #segmento_p_posicao_143_a_150, #segmento_p_posicao_151_a_165, #segmento_p_posicao_166_a_180, #segmento_p_posicao_181_a_195, #segmento_p_posicao_196_a_220, #segmento_p_posicao_221_a_221, #segmento_p_posicao_222_a_223, #segmento_p_posicao_224_a_224, #segmento_p_posicao_225_a_227, #segmento_p_posicao_228_a_229, #segmento_p_posicao_230_a_239, #segmento_p_posicao_240_a_240
Methods included from Helper::HeaderLote
#header_lote_posicao_001_a_003, #header_lote_posicao_004_a_007, #header_lote_posicao_008_a_008, #header_lote_posicao_009_a_009, #header_lote_posicao_010_a_011, #header_lote_posicao_012_a_013, #header_lote_posicao_014_a_016, #header_lote_posicao_017_a_017, #header_lote_posicao_018_a_018, #header_lote_posicao_019_a_033, #header_lote_posicao_034_a_053, #header_lote_posicao_054_a_073, #header_lote_posicao_074_a_103, #header_lote_posicao_104_a_143, #header_lote_posicao_144_a_183, #header_lote_posicao_184_a_191, #header_lote_posicao_192_a_199, #header_lote_posicao_200_a_207, #header_lote_posicao_208_a_240, #monta_header_lote
Methods included from Helper::HeaderArquivo
#header_arquivo_posicao_001_a_003, #header_arquivo_posicao_004_a_007, #header_arquivo_posicao_008_a_008, #header_arquivo_posicao_009_a_017, #header_arquivo_posicao_018_a_018, #header_arquivo_posicao_019_a_032, #header_arquivo_posicao_033_a_052, #header_arquivo_posicao_053_a_072, #header_arquivo_posicao_073_a_102, #header_arquivo_posicao_103_a_132, #header_arquivo_posicao_133_a_142, #header_arquivo_posicao_143_a_143, #header_arquivo_posicao_144_a_151, #header_arquivo_posicao_152_a_157, #header_arquivo_posicao_158_a_163, #header_arquivo_posicao_164_a_166, #header_arquivo_posicao_167_a_171, #header_arquivo_posicao_172_a_191, #header_arquivo_posicao_192_a_211, #header_arquivo_posicao_212_a_240, #monta_header_arquivo
Methods inherited from Base
#data_geracao, #hora_geracao, #pagamento_valid_cod_desconto_length, #pagamento_valid_tipo_impressao_required, #persisted?
Methods included from HaveConta
Methods inherited from ActiveModelBase
#assign_attributes, #default_values, #initialize
Constructor Details
This class inherits a constructor from BrBoleto::ActiveModelBase
Instance Attribute Details
#lotes ⇒ Object
O atributo lotes sempre irá retornar umm Array
49 50 51 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 49 def lotes @lotes end |
#mensagem_1 ⇒ Object
mensagem 1
41 42 43 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 41 def mensagem_1 @mensagem_1 end |
#mensagem_2 ⇒ Object
mensagem 2
44 45 46 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 44 def mensagem_2 @mensagem_2 end |
Class Method Details
.class_for_lote ⇒ Object
51 52 53 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 51 def self.class_for_lote BrBoleto::Remessa::Lote end |
Instance Method Details
#codigo_convenio ⇒ Object
Codigo do convenio
Este metodo deve ser sobrescrevido na classe do banco
198 199 200 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 198 def codigo_convenio raise NotImplementedError.new('Sobreescreva este método na classe referente ao banco que você esta criando') end |
#complemento_header_arquivo ⇒ Object
Complemento do registro
Este metodo deve ser sobrescrevido na classe do banco
174 175 176 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 174 def complemento_header_arquivo raise NotImplementedError.new('Sobreescreva este método na classe referente ao banco que você esta criando') end |
#complemento_p(pagamento) ⇒ Object
Complemento do segmento P Recebe um objeto da classe BrBoleto::Remessa::Pagamento Composto por 34 digitos Cada banco tem seu padrão Deve ser sobrescrito na classe do banco
208 209 210 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 208 def complemento_p(pagamento) raise NotImplementedError.new('Sobreescreva este método na classe referente ao banco que você esta criando') end |
#complemento_trailer_lote(lote, nr_lote) ⇒ Object
Complemento final do trailer do lote Por padrão coloco 217 caracateres em branco pois é na maioria dos bancos Mas para alguns bancos isso pode mudar
216 217 218 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 216 def complemento_trailer_lote(lote, nr_lote) ''.rjust(217, ' ') end |
#convenio_lote(lote) ⇒ Object
Informacoes do convenio para o lote
Este metodo deve ser sobrescrevido na classe do banco
182 183 184 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 182 def convenio_lote(lote) raise NotImplementedError.new('Sobreescreva este método na classe referente ao banco que você esta criando') end |
#dados_do_arquivo ⇒ String
Gera os dados para o arquivo remessa
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 134 def dados_do_arquivo return if self.invalid? # contador dos registros do lote contador = 1 # Metodo 'monta_header_arquivo' implementado no module -> BrBoleto::Remessa::Cnab240::Helper::HeaderArquivo arquivo = [monta_header_arquivo] contador += 1 lotes.each_with_index do |lote, index| novo_lote = monta_lote(lote, (index + 1)) arquivo.push novo_lote novo_lote.each { |_lote| contador += 1 } end # Metodo 'monta_trailer_arquivo' implementado no module -> BrBoleto::Remessa::Cnab240::Helper::TrailerArquivo arquivo << monta_trailer_arquivo(lotes.count, contador) retorno = arquivo.join("\n") ActiveSupport::Inflector.transliterate(retorno).upcase end |
#informacoes_da_conta ⇒ Object
Informacoes da conta do cedente
Este metodo deve ser sobrescrevido na classe do banco
190 191 192 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 190 def informacoes_da_conta raise NotImplementedError.new('Sobreescreva este método na classe referente ao banco que você esta criando') end |
#monta_lote(lote, nro_lote) ⇒ Array
Monta um lote para o arquivo
numero do lote no arquivo
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 91 def monta_lote(lote, nro_lote) return if lote.invalid? # Metodo 'monta_header_lote' implementado no module -> BrBoleto::Remessa::Cnab240::Helper::HeaderLote itens_lote = [monta_header_lote(lote, nro_lote)] #Nº Sequencial de Registros no Lote: sequencial_do_lote = 0 lote.pagamentos.each do |pagamento| # Metodo 'monta_segmento_p' implementado no module -> BrBoleto::Remessa::Cnab240::Helper::SegmentoP sequencial_do_lote += 1 itens_lote << monta_segmento_p(pagamento, nro_lote, sequencial_do_lote) # Metodo 'monta_segmento_q' implementado no module -> BrBoleto::Remessa::Cnab240::Helper::SegmentoQ sequencial_do_lote += 1 itens_lote << monta_segmento_q(pagamento, nro_lote, sequencial_do_lote) # Metodo 'monta_segmento_r' implementado no module -> BrBoleto::Remessa::Cnab240::Helper::SegmentoR sequencial_do_lote += 1 itens_lote << monta_segmento_r(pagamento, nro_lote, sequencial_do_lote) # Metodo 'monta_segmento_s' implementado no module -> BrBoleto::Remessa::Cnab240::Helper::SegmentoS sequencial_do_lote += 1 itens_lote << monta_segmento_s(pagamento, nro_lote, sequencial_do_lote) end # total_de_registros_do_lote é a quantidade de registros(linhas) que constam em um lote # Total de complementos do lote + o HEADER_LOTE + TRAILER_LOTE # sequencial_do_lote + 1 + 1 total_de_registros_do_lote = sequencial_do_lote + 2 # Metodo 'monta_trailer_lote' implementado no module -> BrBoleto::Remessa::Cnab240::Helper::TrailerLote itens_lote << monta_trailer_lote(lote, nro_lote, total_de_registros_do_lote) itens_lote end |
#pagamento_valid_distribuicao_boleto_length ⇒ Object
59 60 61 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 59 def pagamento_valid_distribuicao_boleto_length 1 end |
#pagamento_valid_emissao_boleto_length ⇒ Object
55 56 57 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 55 def pagamento_valid_emissao_boleto_length 1 end |
#segmento_p_numero_do_documento(pagamento) ⇒ Object
Número do Documento de Cobrança Cada banco tem sua maneira de identificar esse número, mas o padrão é o Valor que se encontra no numero_documento ou então em nosso numero 15 posições
162 163 164 165 166 167 168 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 162 def segmento_p_numero_do_documento(pagamento) if pagamento.numero_documento.present? pagamento.numero_documento.to_s.rjust(15, '0') else pagamento.nosso_numero.to_s.rjust(15, '0') end end |