Class: Brcobranca::Boleto::Base
- Inherits:
-
Object
- Object
- Brcobranca::Boleto::Base
- Extended by:
- Template::Base
- Includes:
- Validations
- Defined in:
- lib/brcobranca/boleto/base.rb
Overview
Classe base para todas as classes de boletos
Direct Known Subclasses
Ailos, BancoBrasil, BancoBrasilia, BancoNordeste, Banestes, Banrisul, Bradesco, Caixa, Citibank, Credisis, Hsbc, Itau, Safra, Santander, Sicoob, Sicredi, Unicred
Instance Attribute Summary collapse
-
#aceite ⇒ Object
REQUERIDO: Informa se o banco deve aceitar o boleto após o vencimento ou não( S ou N, quase sempre S).
-
#agencia ⇒ Object
REQUERIDO: Número da agencia sem Digito Verificador.
-
#avalista ⇒ Object
OPCIONAL: Nome do avalista.
-
#avalista_documento ⇒ Object
OPCIONAL: Documento do avalista.
-
#carteira ⇒ Object
REQUERIDO: Carteira utilizada.
-
#carteira_label ⇒ Object
OPCIONAL: Variacao da carteira(opcional para a maioria dos bancos).
-
#cedente ⇒ Object
REQUERIDO: Nome do beneficiário.
-
#cedente_endereco ⇒ Object
OPCIONAL: Endereço do beneficiário.
-
#codigo_servico ⇒ Object
OPCIONAL: Código utilizado para identificar o tipo de serviço cobrado.
-
#conta_corrente ⇒ Object
REQUERIDO: Número da conta corrente sem Digito Verificador.
-
#convenio ⇒ Object
REQUERIDO: Número do convênio/contrato do cliente junto ao banco emissor.
-
#data_documento ⇒ Object
REQUERIDO: Data de pedido, Nota fiscal ou documento que originou o boleto.
-
#data_processamento ⇒ Object
OPCIONAL: Data de processamento do boleto.
-
#data_vencimento ⇒ Object
REQUERIDO: Data de vencimento do boleto.
-
#demonstrativo ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado.
-
#descontos_e_abatimentos ⇒ Object
OPCIONAL: Descontos e abatimentos.
-
#documento_cedente ⇒ Object
REQUERIDO: Documento do beneficiário (CPF ou CNPJ).
-
#documento_numero ⇒ Object
OPCIONAL: Número de pedido, Nota fiscal ou documento que originou o boleto.
-
#emv ⇒ Object
OPCIONAL: EMV para gerar QRCode para pagamento via PIX.
-
#especie ⇒ Object
REQUERIDO: Símbolo da moeda utilizada (R$ no brasil).
-
#especie_documento ⇒ Object
REQUERIDO: Tipo do documento (Geralmente DM que quer dizer Duplicata Mercantil).
-
#instrucao1 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa.
-
#instrucao2 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa.
-
#instrucao3 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa.
-
#instrucao4 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa.
-
#instrucao5 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa.
-
#instrucao6 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa.
-
#instrucao7 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa.
-
#instrucoes ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa.
-
#local_pagamento ⇒ Object
REQUERIDO: Informação sobre onde o sacado podera efetuar o pagamento.
-
#moeda ⇒ Object
REQUERIDO: Tipo de moeda utilizada (Real(R$) e igual a 9).
-
#nosso_numero ⇒ Object
OPCIONAL: Número sequencial utilizado para identificar o boleto.
-
#quantidade ⇒ Object
REQUERIDO: Quantidade de boleto(padrão = 1).
-
#sacado ⇒ Object
REQUERIDO: Nome do pagador.
-
#sacado_documento ⇒ Object
REQUERIDO: Documento do pagador.
-
#sacado_endereco ⇒ Object
OPCIONAL: Endereco do pagador.
-
#valor ⇒ Object
REQUERIDO: Valor do boleto.
-
#variacao ⇒ Object
OPCIONAL: Rótulo da Carteira, RG ou SR, somente para impressão no boleto.
Instance Method Summary collapse
- #agencia_conta_boleto ⇒ Object abstract
-
#agencia_dv ⇒ Integer
Dígito verificador da agência.
-
#banco_dv ⇒ Integer
Dígito verificador do banco.
-
#codigo_barras ⇒ String
Codigo de barras do boleto.
-
#codigo_barras_segunda_parte ⇒ Object
abstract
Monta a segunda parte do código de barras, que é específico para cada banco.
-
#conta_corrente_dv ⇒ Integer
Dígito verificador da conta corrente.
-
#fator_vencimento ⇒ String
Fator de vencimento calculado com base na data de vencimento do boleto.
-
#initialize(campos = {}) {|_self| ... } ⇒ Base
constructor
Nova instancia da classe Base.
-
#logotipo ⇒ Path
Logotipo do banco.
- #nosso_numero_boleto ⇒ Object abstract
-
#nosso_numero_dv ⇒ Integer
Dígito verificador do nosso número.
-
#valor_documento ⇒ Float
Valor total do documento: quantidate * valor.
Methods included from Template::Base
Methods included from Validations
#errors, included, #invalid?, #valid?
Constructor Details
#initialize(campos = {}) {|_self| ... } ⇒ Base
Nova instancia da classe Base
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/brcobranca/boleto/base.rb', line 105 def initialize(campos = {}) padrao = { moeda: '9', data_processamento: Date.current, data_vencimento: Date.current, quantidade: 1, especie_documento: 'DM', especie: 'R$', aceite: 'S', valor: 0.0, local_pagamento: 'QUALQUER BANCO ATÉ O VENCIMENTO' } campos = padrao.merge!(campos) campos.each do |campo, valor| send :"#{campo}=", valor end yield self if block_given? end |
Instance Attribute Details
#aceite ⇒ Object
REQUERIDO: Informa se o banco deve aceitar o boleto após o vencimento ou não( S ou N, quase sempre S)
79 80 81 |
# File 'lib/brcobranca/boleto/base.rb', line 79 def aceite @aceite end |
#agencia ⇒ Object
REQUERIDO: Número da agencia sem Digito Verificador
37 38 39 |
# File 'lib/brcobranca/boleto/base.rb', line 37 def agencia @agencia end |
#avalista ⇒ Object
OPCIONAL: Nome do avalista
87 88 89 |
# File 'lib/brcobranca/boleto/base.rb', line 87 def avalista @avalista end |
#avalista_documento ⇒ Object
OPCIONAL: Documento do avalista
89 90 91 |
# File 'lib/brcobranca/boleto/base.rb', line 89 def avalista_documento @avalista_documento end |
#carteira ⇒ Object
REQUERIDO: Carteira utilizada
25 26 27 |
# File 'lib/brcobranca/boleto/base.rb', line 25 def carteira @carteira end |
#carteira_label ⇒ Object
OPCIONAL: Variacao da carteira(opcional para a maioria dos bancos)
27 28 29 |
# File 'lib/brcobranca/boleto/base.rb', line 27 def carteira_label @carteira_label end |
#cedente ⇒ Object
REQUERIDO: Nome do beneficiário
41 42 43 |
# File 'lib/brcobranca/boleto/base.rb', line 41 def cedente @cedente end |
#cedente_endereco ⇒ Object
OPCIONAL: Endereço do beneficiário
91 92 93 |
# File 'lib/brcobranca/boleto/base.rb', line 91 def cedente_endereco @cedente_endereco end |
#codigo_servico ⇒ Object
OPCIONAL: Código utilizado para identificar o tipo de serviço cobrado
57 58 59 |
# File 'lib/brcobranca/boleto/base.rb', line 57 def codigo_servico @codigo_servico end |
#conta_corrente ⇒ Object
REQUERIDO: Número da conta corrente sem Digito Verificador
39 40 41 |
# File 'lib/brcobranca/boleto/base.rb', line 39 def conta_corrente @conta_corrente end |
#convenio ⇒ Object
REQUERIDO: Número do convênio/contrato do cliente junto ao banco emissor
21 22 23 |
# File 'lib/brcobranca/boleto/base.rb', line 21 def convenio @convenio end |
#data_documento ⇒ Object
REQUERIDO: Data de pedido, Nota fiscal ou documento que originou o boleto
51 52 53 |
# File 'lib/brcobranca/boleto/base.rb', line 51 def data_documento @data_documento end |
#data_processamento ⇒ Object
OPCIONAL: Data de processamento do boleto
31 32 33 |
# File 'lib/brcobranca/boleto/base.rb', line 31 def data_processamento @data_processamento end |
#data_vencimento ⇒ Object
REQUERIDO: Data de vencimento do boleto
53 54 55 |
# File 'lib/brcobranca/boleto/base.rb', line 53 def data_vencimento @data_vencimento end |
#demonstrativo ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao sacado
59 60 61 |
# File 'lib/brcobranca/boleto/base.rb', line 59 def demonstrativo @demonstrativo end |
#descontos_e_abatimentos ⇒ Object
OPCIONAL: Descontos e abatimentos
95 96 97 |
# File 'lib/brcobranca/boleto/base.rb', line 95 def descontos_e_abatimentos @descontos_e_abatimentos end |
#documento_cedente ⇒ Object
REQUERIDO: Documento do beneficiário (CPF ou CNPJ)
43 44 45 |
# File 'lib/brcobranca/boleto/base.rb', line 43 def documento_cedente @documento_cedente end |
#documento_numero ⇒ Object
OPCIONAL: Número de pedido, Nota fiscal ou documento que originou o boleto
55 56 57 |
# File 'lib/brcobranca/boleto/base.rb', line 55 def documento_numero @documento_numero end |
#emv ⇒ Object
OPCIONAL: EMV para gerar QRCode para pagamento via PIX
93 94 95 |
# File 'lib/brcobranca/boleto/base.rb', line 93 def emv @emv end |
#especie ⇒ Object
REQUERIDO: Símbolo da moeda utilizada (R$ no brasil)
47 48 49 |
# File 'lib/brcobranca/boleto/base.rb', line 47 def especie @especie end |
#especie_documento ⇒ Object
REQUERIDO: Tipo do documento (Geralmente DM que quer dizer Duplicata Mercantil)
49 50 51 |
# File 'lib/brcobranca/boleto/base.rb', line 49 def especie_documento @especie_documento end |
#instrucao1 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa
63 64 65 |
# File 'lib/brcobranca/boleto/base.rb', line 63 def instrucao1 @instrucao1 end |
#instrucao2 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa
65 66 67 |
# File 'lib/brcobranca/boleto/base.rb', line 65 def instrucao2 @instrucao2 end |
#instrucao3 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa
67 68 69 |
# File 'lib/brcobranca/boleto/base.rb', line 67 def instrucao3 @instrucao3 end |
#instrucao4 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa
69 70 71 |
# File 'lib/brcobranca/boleto/base.rb', line 69 def instrucao4 @instrucao4 end |
#instrucao5 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa
71 72 73 |
# File 'lib/brcobranca/boleto/base.rb', line 71 def instrucao5 @instrucao5 end |
#instrucao6 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa
73 74 75 |
# File 'lib/brcobranca/boleto/base.rb', line 73 def instrucao6 @instrucao6 end |
#instrucao7 ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa
75 76 77 |
# File 'lib/brcobranca/boleto/base.rb', line 75 def instrucao7 @instrucao7 end |
#instrucoes ⇒ Object
OPCIONAL: Utilizado para mostrar alguma informação ao caixa
61 62 63 |
# File 'lib/brcobranca/boleto/base.rb', line 61 def instrucoes @instrucoes end |
#local_pagamento ⇒ Object
REQUERIDO: Informação sobre onde o sacado podera efetuar o pagamento
77 78 79 |
# File 'lib/brcobranca/boleto/base.rb', line 77 def local_pagamento @local_pagamento end |
#moeda ⇒ Object
REQUERIDO: Tipo de moeda utilizada (Real(R$) e igual a 9)
23 24 25 |
# File 'lib/brcobranca/boleto/base.rb', line 23 def moeda @moeda end |
#nosso_numero ⇒ Object
OPCIONAL: Número sequencial utilizado para identificar o boleto
45 46 47 |
# File 'lib/brcobranca/boleto/base.rb', line 45 def nosso_numero @nosso_numero end |
#quantidade ⇒ Object
REQUERIDO: Quantidade de boleto(padrão = 1)
33 34 35 |
# File 'lib/brcobranca/boleto/base.rb', line 33 def quantidade @quantidade end |
#sacado ⇒ Object
REQUERIDO: Nome do pagador
81 82 83 |
# File 'lib/brcobranca/boleto/base.rb', line 81 def sacado @sacado end |
#sacado_documento ⇒ Object
REQUERIDO: Documento do pagador
85 86 87 |
# File 'lib/brcobranca/boleto/base.rb', line 85 def sacado_documento @sacado_documento end |
#sacado_endereco ⇒ Object
OPCIONAL: Endereco do pagador
83 84 85 |
# File 'lib/brcobranca/boleto/base.rb', line 83 def sacado_endereco @sacado_endereco end |
#valor ⇒ Object
REQUERIDO: Valor do boleto
35 36 37 |
# File 'lib/brcobranca/boleto/base.rb', line 35 def valor @valor end |
#variacao ⇒ Object
OPCIONAL: Rótulo da Carteira, RG ou SR, somente para impressão no boleto.
29 30 31 |
# File 'lib/brcobranca/boleto/base.rb', line 29 def variacao @variacao end |
Instance Method Details
#agencia_conta_boleto ⇒ Object
Deverá ser sobreescrito para cada banco.
172 173 174 |
# File 'lib/brcobranca/boleto/base.rb', line 172 def agencia_conta_boleto raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando' end |
#agencia_dv ⇒ Integer
Dígito verificador da agência
150 151 152 |
# File 'lib/brcobranca/boleto/base.rb', line 150 def agencia_dv agencia.modulo11 end |
#banco_dv ⇒ Integer
Dígito verificador do banco
138 139 140 |
# File 'lib/brcobranca/boleto/base.rb', line 138 def banco_dv banco.modulo11 end |
#codigo_barras ⇒ String
Codigo de barras do boleto
O codigo de barra para cobrança contém 44 posições dispostas da seguinte forma:<br/> Posição |Tamanho |Conteúdo<br/> 01 a 03 | 3 | Identificação do Banco<br/> 04 a 04 | 1 | Código da Moeda (Real = 9, Outras=0)<br/> 05 a 05 | 1 | Dígito verificador do Código de Barras<br/> 06 a 09 | 4 | Fator de Vencimento (Vide Nota)<br/> 10 a 19 | 10 | Valor<br/> 20 a 44 | 25 | Campo Livre - As posições do campo livre ficam a critério de cada Banco arrecadador.<br/>
207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 |
# File 'lib/brcobranca/boleto/base.rb', line 207 def raise Brcobranca::BoletoInvalido, self unless valid? codigo = # 18 digitos codigo += # 25 digitos if codigo =~ /^(\d{4})(\d{39})$/ codigo_dv = codigo.modulo11( multiplicador: (2..9).to_a, mapeamento: { 0 => 1, 10 => 1, 11 => 1 } ) { |t| 11 - (t % 11) } "#{Regexp.last_match[1]}#{codigo_dv}#{Regexp.last_match[2]}" else errors.add(:base, :too_long, message: "tamanho(#{codigo.size}) prévio do código de barras(#{codigo}) inválido, deveria ser 43 dígitos") raise Brcobranca::BoletoInvalido, self end end |
#codigo_barras_segunda_parte ⇒ Object
Deverá ser sobreescrito para cada banco.
Monta a segunda parte do código de barras, que é específico para cada banco.
231 232 233 |
# File 'lib/brcobranca/boleto/base.rb', line 231 def raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando' end |
#conta_corrente_dv ⇒ Integer
Dígito verificador da conta corrente
156 157 158 |
# File 'lib/brcobranca/boleto/base.rb', line 156 def conta_corrente_dv conta_corrente.modulo11 end |
#fator_vencimento ⇒ String
Fator de vencimento calculado com base na data de vencimento do boleto.
184 185 186 |
# File 'lib/brcobranca/boleto/base.rb', line 184 def fator_vencimento data_vencimento.fator_vencimento end |
#logotipo ⇒ Path
Logotipo do banco
128 129 130 131 132 133 134 |
# File 'lib/brcobranca/boleto/base.rb', line 128 def logotipo if Brcobranca.configuration.gerador == :rghost_carne File.join(File.dirname(__FILE__), '..', 'arquivos', 'logos', "#{class_name}_carne.eps") else File.join(File.dirname(__FILE__), '..', 'arquivos', 'logos', "#{class_name}.eps") end end |
#nosso_numero_boleto ⇒ Object
Deverá ser sobreescrito para cada banco.
167 168 169 |
# File 'lib/brcobranca/boleto/base.rb', line 167 def nosso_numero_boleto raise Brcobranca::NaoImplementado, 'Sobreescreva este método na classe referente ao banco que você esta criando' end |
#nosso_numero_dv ⇒ Integer
Dígito verificador do nosso número
162 163 164 |
# File 'lib/brcobranca/boleto/base.rb', line 162 def nosso_numero_dv nosso_numero.modulo11(mapeamento: { 10 => 0, 11 => 0 }) end |
#valor_documento ⇒ Float
Valor total do documento: quantidate * valor
178 179 180 |
# File 'lib/brcobranca/boleto/base.rb', line 178 def valor_documento quantidade.to_f * valor.to_f end |