Class: Brcobranca::Remessa::Cnab400::Bradesco

Inherits:
Base
  • Object
show all
Defined in:
lib/brcobranca/remessa/cnab400/bradesco.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#aceite, #agencia, #carteira, #conta_corrente, #digito_conta, #documento_cedente, #empresa_mae, #pagamentos, #sequencial_remessa

Instance Method Summary collapse

Methods inherited from Base

#data_geracao, #gera_arquivo, #monta_header, #monta_trailer

Methods inherited from Base

#initialize, #quantidade_titulos_cobranca, #totaliza_valor_titulos, #valor_titulos_carteira

Methods included from Validations

#errors, included, #invalid?, #valid?

Constructor Details

This class inherits a constructor from Brcobranca::Remessa::Base

Instance Attribute Details

#codigo_empresaObject

codigo da empresa (informado pelo Bradesco no cadastramento)


7
8
9
# File 'lib/brcobranca/remessa/cnab400/bradesco.rb', line 7

def codigo_empresa
  @codigo_empresa
end

Instance Method Details

#agencia=(valor) ⇒ Object


19
20
21
# File 'lib/brcobranca/remessa/cnab400/bradesco.rb', line 19

def agencia=(valor)
  @agencia = valor.to_s.rjust(5, '0') if valor
end

#cod_bancoObject


39
40
41
# File 'lib/brcobranca/remessa/cnab400/bradesco.rb', line 39

def cod_banco
  '237'
end

#complementoObject


47
48
49
# File 'lib/brcobranca/remessa/cnab400/bradesco.rb', line 47

def complemento
  "#{''.rjust(8, ' ')}MX#{sequencial_remessa}#{''.rjust(277, ' ')}"
end

#conta_corrente=(valor) ⇒ Object


23
24
25
# File 'lib/brcobranca/remessa/cnab400/bradesco.rb', line 23

def conta_corrente=(valor)
  @conta_corrente = valor.to_s.rjust(7, '0') if valor
end

#digito_nosso_numero(nosso_numero) ⇒ Object


60
61
62
63
64
65
# File 'lib/brcobranca/remessa/cnab400/bradesco.rb', line 60

def digito_nosso_numero(nosso_numero)
  "#{carteira}#{nosso_numero.to_s.rjust(11, '0')}".modulo11(
    multiplicador: [2, 3, 4, 5, 6, 7],
    mapeamento: { 10 => 'P', 11 => 0 }
  ) { |total| 11 - (total % 11) }
end

#formata_endereco_sacado(pgto) ⇒ Object

Formata o endereco do sacado de acordo com os caracteres disponiveis (40) concatenando o endereco, cidade e uf


71
72
73
74
75
# File 'lib/brcobranca/remessa/cnab400/bradesco.rb', line 71

def formata_endereco_sacado(pgto)
  endereco = "#{pgto.endereco_sacado}, #{pgto.cidade_sacado}/#{pgto.uf_sacado}"
  return endereco.ljust(40, ' ') if endereco.size <= 40
  "#{pgto.endereco_sacado[0..19]} #{pgto.cidade_sacado[0..14]}/#{pgto.uf_sacado}".format_size(40)
end

#identificacao_empresaObject


51
52
53
54
55
56
57
58
# File 'lib/brcobranca/remessa/cnab400/bradesco.rb', line 51

def identificacao_empresa
  # identificacao da empresa no banco
  identificacao = '0'                            # vazio                       [1]
  identificacao << carteira.to_s.rjust(3, '0')   # carteira                    [3]
  identificacao << agencia                       # codigo da agencia (sem dv)  [5]
  identificacao << conta_corrente                # codigo da conta             [7]
  identificacao << digito_conta                  # digito da conta             [1]
end

#info_contaObject


35
36
37
# File 'lib/brcobranca/remessa/cnab400/bradesco.rb', line 35

def info_conta
  codigo_empresa
end

#monta_detalhe(pagamento, sequencial) ⇒ Object


77
78
79
80
81
82
83
84
85
86
87
88
89
90
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
# File 'lib/brcobranca/remessa/cnab400/bradesco.rb', line 77

def monta_detalhe(pagamento, sequencial)
  raise Brcobranca::RemessaInvalida, pagamento if pagamento.invalid?

  detalhe = '1'                                               # identificacao do registro                   9[01]       001 a 001
  detalhe << ''.rjust(5, '0')                                 # agencia de debito (op)                      9[05]       002 a 006
  detalhe << ''.rjust(1, '0')                                 # digito da agencia de debito (op)            X[01]       007 a 007
  detalhe << ''.rjust(5, '0')                                 # razao da conta corrente de debito (op)      9[05]       008 a 012
  detalhe << ''.rjust(7, '0')                                 # conta corrente (op)                         9[07]       013 a 019
  detalhe << ''.rjust(1, '0')                                 # digito da conta corrente (op)               X[01]       020 a 020
  detalhe << identificacao_empresa                            # identficacao da empresa                     X[17]       021 a 037
  detalhe << pagamento.documento_ou_numero.to_s.ljust(25, ' ')   # num. controle                               X[25]       038 a 062
  detalhe << ''.rjust(3, '0')                                 # codigo do banco (debito automatico apenas)  9[03]       063 a 065
  detalhe << pagamento.codigo_multa                           # campo da multa (0 = sem, 2 = com)           9[01]       066 a 066 *
  detalhe << pagamento.formata_percentual_multa               # percentual multa                            9[04]       067 a 070 *
  detalhe << pagamento.nosso_numero.to_s.rjust(11, '0')       # identificacao do titulo (nosso numero)      9[11]       071 a 081
  detalhe << digito_nosso_numero(pagamento.nosso_numero).to_s # digito de conferencia do nosso numero (dv)  X[01]       082 a 082
  detalhe << ''.rjust(10, '0')                                # desconto por dia                            9[10]       083 a 092
  detalhe << '2'                                              # condicao emissao boleto (2 = cliente)       9[01]       093 a 093
  detalhe << 'N'                                              # emite boleto para debito                    X[01]       094 a 094
  detalhe << ''.rjust(10, ' ')                                # operacao no banco (brancos)                 X[10]       095 a 104
  detalhe << ' '                                              # indicador rateio                            X[01]       105 a 105
  detalhe << '2'                                              # endereco para aviso debito (op 2 = ignora)  9[01]       106 a 106
  detalhe << ''.rjust(2, ' ')                                 # brancos                                     X[02]       107 a 108
  detalhe << pagamento.identificacao_ocorrencia               # identificacao ocorrencia                    9[02]
  detalhe << pagamento.numero.to_s.ljust(10, ' ')             # numero do documento alfanum.                X[10]       111 a 120
  detalhe << pagamento.data_vencimento.strftime('%d%m%y')     # data de vencimento                          9[06]       121 a 126
  detalhe << pagamento.formata_valor                          # valor do titulo                             9[13]       127 a 139
  detalhe << ''.rjust(3, '0')                                 # banco encarregado (zeros)                   9[03]       140 a 142
  detalhe << ''.rjust(5, '0')                                 # agencia depositaria (zeros)                 9[05]       143 a 147
  detalhe << '01'                                             # especie do titulo                           9[02]       148 a 149
  detalhe << 'N'                                              # identificacao (sempre N)                    X[01]       150 a 150
  detalhe << pagamento.data_emissao.strftime('%d%m%y')        # data de emissao                             9[06]       151 a 156
  detalhe << ''.rjust(2, '0')                                 # 1a instrucao                                9[02]       157 a 158
  detalhe << ''.rjust(2, '0')                                 # 2a instrucao                                9[02]       159 a 160
  detalhe << pagamento.formata_valor_mora                     # mora                                        9[13]       161 a 173
  detalhe << pagamento.formata_data_desconto                  # data desconto                               9[06]       174 a 179
  detalhe << pagamento.formata_valor_desconto                 # valor desconto                              9[13]       180 a 192
  detalhe << pagamento.formata_valor_iof                      # valor iof                                   9[13]       193 a 205
  detalhe << pagamento.formata_valor_abatimento               # valor abatimento                            9[13]       206 a 218
  detalhe << pagamento.identificacao_sacado                   # identificacao do pagador                    9[02]       219 a 220
  detalhe << pagamento.documento_sacado.to_s.rjust(14, '0')   # cpf/cnpj do pagador                         9[14]       221 a 234
  detalhe << pagamento.nome_sacado.format_size(40)            # nome do pagador                             9[40]       235 a 274
  detalhe << formata_endereco_sacado(pagamento)               # endereco do pagador                         X[40]       275 a 314
  detalhe << ''.rjust(12, ' ')                                # 1a mensagem                                 X[12]       315 a 326
  detalhe << pagamento.cep_sacado[0..4]                       # cep do pagador                              9[05]       327 a 331
  detalhe << pagamento.cep_sacado[5..7]                       # sufixo do cep do pagador                    9[03]       332 a 334
  detalhe << ''.rjust(60, ' ')                                # sacador/2a mensagem - verificar             X[60]       335 a 394
  detalhe << sequencial.to_s.rjust(6, '0')                    # numero do registro do arquivo               9[06]       395 a 400
  detalhe
end

#nome_bancoObject


43
44
45
# File 'lib/brcobranca/remessa/cnab400/bradesco.rb', line 43

def nome_banco
  'BRADESCO'.ljust(15, ' ')
end

#sequencial_remessa=(valor) ⇒ Object


31
32
33
# File 'lib/brcobranca/remessa/cnab400/bradesco.rb', line 31

def sequencial_remessa=(valor)
  @sequencial_remessa = valor.to_s.rjust(7, '0') if valor
end