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
-
#codigo_carteira ⇒ Object
modalidade da carteira opcoes: 11: título Registrado emissão CAIXA 14: título Registrado emissão Cedente 21: título Sem Registro emissão CAIXA.
-
#convenio ⇒ Object
convenio do cedente.
-
#data_hora_arquivo ⇒ Object
Data e hora da geração do arquivo.
-
#distribuicao_boleto ⇒ Object
identificacao da distribuicao do boleto (verificar opcoes nas classes referentes aos bancos).
-
#documento_cedente ⇒ Object
documento do cedente (CPF/CNPJ).
-
#emissao_boleto ⇒ Object
identificacao da emissao do boleto (verificar opcoes nas classes referentes aos bancos).
-
#especie_titulo ⇒ Object
especie do titulo (verificar o padrao nas classes referentes aos bancos).
-
#forma_cadastramento ⇒ Object
forma de cadastramento dos titulos (campo nao tratado pelo Banco do Brasil) opcoes: 1 - com cadastramento (cobrança registrada) 2 - sem cadastramento (cobrança sem registro).
-
#mensagem_1 ⇒ Object
mensagem 1.
-
#mensagem_2 ⇒ Object
mensagem 2.
Attributes inherited from Base
#aceite, #agencia, #carteira, #conta_corrente, #digito_conta, #lotes, #nome_empresa, #sequencial_remessa
Class Method Summary collapse
- .tamanho_codigo_carteira ⇒ Object
- .tamanho_distribuicao_boleto ⇒ Object
- .tamanho_emissao_boleto ⇒ Object
- .tamanho_especie_titulo ⇒ Object
- .tamanho_forma_cadastramento ⇒ Object
Instance Method Summary collapse
-
#codigo_banco ⇒ Object
Codigo do banco.
-
#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.
- #convenio_obrigatorio? ⇒ Boolean
-
#dados_do_arquivo ⇒ String
Gera os dados para o arquivo remessa.
-
#data_geracao ⇒ String
Data de geracao do arquivo.
- #default_values ⇒ Object
-
#digito_agencia ⇒ Object
Digito verificado da agência Normalmente calculado pelo Modulo 11 Deve ser sobrescrito na classe do banco.
-
#hora_geracao ⇒ String
Hora de geracao do arquivo.
-
#informacoes_da_conta ⇒ Object
Informacoes da conta do cedente.
-
#monta_lote(lote, nro_lote) ⇒ Array
Monta um lote para o arquivo.
-
#nome_banco ⇒ Object
Nome do banco.
-
#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.
-
#tipo_inscricao ⇒ String
Tipo de inscricao do cedente (pessoa fisica ou juridica).
-
#versao_layout_arquivo ⇒ Object
Numero da versao do layout do arquivo.
-
#versao_layout_lote ⇒ Object
Numero da versao do layout do lote.
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
class_for_lote, #nome_empresa_formatada, #persisted?
Methods inherited from ActiveModelBase
#assign_attributes, #initialize
Constructor Details
This class inherits a constructor from BrBoleto::ActiveModelBase
Instance Attribute Details
#codigo_carteira ⇒ Object
modalidade da carteira
opcoes:
11: título Registrado emissão CAIXA
14: título Registrado emissão Cedente
21: título Sem Registro emissão CAIXA
60 61 62 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 60 def codigo_carteira @codigo_carteira end |
#convenio ⇒ Object
convenio do cedente
44 45 46 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 44 def convenio @convenio end |
#data_hora_arquivo ⇒ Object
Data e hora da geração do arquivo
53 54 55 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 53 def data_hora_arquivo @data_hora_arquivo end |
#distribuicao_boleto ⇒ Object
identificacao da distribuicao do boleto (verificar opcoes nas classes referentes aos bancos)
72 73 74 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 72 def distribuicao_boleto @distribuicao_boleto end |
#documento_cedente ⇒ Object
documento do cedente (CPF/CNPJ)
41 42 43 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 41 def documento_cedente @documento_cedente end |
#emissao_boleto ⇒ Object
identificacao da emissao do boleto (verificar opcoes nas classes referentes aos bancos)
69 70 71 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 69 def emissao_boleto @emissao_boleto end |
#especie_titulo ⇒ Object
especie do titulo (verificar o padrao nas classes referentes aos bancos)
75 76 77 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 75 def especie_titulo @especie_titulo end |
#forma_cadastramento ⇒ Object
forma de cadastramento dos titulos (campo nao tratado pelo Banco do Brasil)
opcoes:
1 - com cadastramento (cobrança registrada)
2 - sem cadastramento (cobrança sem registro)
66 67 68 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 66 def forma_cadastramento @forma_cadastramento end |
#mensagem_1 ⇒ Object
mensagem 1
47 48 49 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 47 def mensagem_1 @mensagem_1 end |
#mensagem_2 ⇒ Object
mensagem 2
50 51 52 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 50 def mensagem_2 @mensagem_2 end |
Class Method Details
.tamanho_codigo_carteira ⇒ Object
78 79 80 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 78 def self.tamanho_codigo_carteira 1 end |
.tamanho_distribuicao_boleto ⇒ Object
90 91 92 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 90 def self.tamanho_distribuicao_boleto 1 end |
.tamanho_emissao_boleto ⇒ Object
86 87 88 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 86 def self.tamanho_emissao_boleto 1 end |
.tamanho_especie_titulo ⇒ Object
94 95 96 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 94 def self.tamanho_especie_titulo 2 end |
.tamanho_forma_cadastramento ⇒ Object
82 83 84 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 82 def self.tamanho_forma_cadastramento 1 end |
Instance Method Details
#codigo_banco ⇒ Object
Codigo do banco
Este metodo deve ser sobrescrevido na classe do banco
283 284 285 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 283 def codigo_banco raise NotImplementedError.new('Sobreescreva este método na classe referente ao banco que você esta criando') end |
#codigo_convenio ⇒ Object
Codigo do convenio
Este metodo deve ser sobrescrevido na classe do banco
299 300 301 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 299 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
243 244 245 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 243 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
317 318 319 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 317 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
325 326 327 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 325 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
267 268 269 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 267 def convenio_lote(lote) raise NotImplementedError.new('Sobreescreva este método na classe referente ao banco que você esta criando') end |
#convenio_obrigatorio? ⇒ Boolean
98 99 100 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 98 def convenio_obrigatorio? true end |
#dados_do_arquivo ⇒ String
Gera os dados para o arquivo remessa
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 203 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 |
#data_geracao ⇒ String
Data de geracao do arquivo
132 133 134 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 132 def data_geracao data_hora_arquivo.to_date.strftime('%d%m%Y') end |
#default_values ⇒ Object
111 112 113 114 115 116 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 111 def default_values super.merge({ codigo_carteira: '1', forma_cadastramento: '1' }) end |
#digito_agencia ⇒ Object
Digito verificado da agência Normalmente calculado pelo Modulo 11 Deve ser sobrescrito na classe do banco
307 308 309 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 307 def digito_agencia raise NotImplementedError.new('Sobreescreva este método na classe referente ao banco que você esta criando') end |
#hora_geracao ⇒ String
Hora de geracao do arquivo
140 141 142 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 140 def hora_geracao data_hora_arquivo.strftime('%H%M%S') end |
#informacoes_da_conta ⇒ Object
Informacoes da conta do cedente
Este metodo deve ser sobrescrevido na classe do banco
291 292 293 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 291 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
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 160 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 |
#nome_banco ⇒ Object
Nome do banco
Este metodo deve ser sobrescrevido na classe do banco
275 276 277 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 275 def nome_banco raise NotImplementedError.new('Sobreescreva este método na classe referente ao banco que você esta criando') 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
231 232 233 234 235 236 237 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 231 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 |
#tipo_inscricao ⇒ String
Tipo de inscricao do cedente (pessoa fisica ou juridica)
123 124 125 126 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 123 def tipo_inscricao # Retorna 1 se CPF e 2 se CNPJ BrBoleto::Helper::CpfCnpj.new(documento_cedente).tipo_documento(1) end |
#versao_layout_arquivo ⇒ Object
Numero da versao do layout do arquivo
Este metodo deve ser sobrescrevido na classe do banco
251 252 253 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 251 def versao_layout_arquivo raise NotImplementedError.new('Sobreescreva este método na classe referente ao banco que você esta criando') end |
#versao_layout_lote ⇒ Object
Numero da versao do layout do lote
Este metodo deve ser sobrescrevido na classe do banco
259 260 261 |
# File 'lib/br_boleto/remessa/cnab240/base.rb', line 259 def versao_layout_lote raise NotImplementedError.new('Sobreescreva este método na classe referente ao banco que você esta criando') end |