Class: Brcobranca::Remessa::Cnab400::BancoBrasilia

Inherits:
Base
  • Object
show all
Defined in:
lib/brcobranca/remessa/cnab400/banco_brasilia.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_trailer

Methods inherited from Base

#quantidade_titulos_cobranca, #totaliza_valor_titulos, #valor_titulos_carteira

Methods included from Validations

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

Constructor Details

#initialize(campos = {}) ⇒ BancoBrasilia

Nova instancia do Banco do Nordeste


15
16
17
18
19
20
21
# File 'lib/brcobranca/remessa/cnab400/banco_brasilia.rb', line 15

def initialize(campos = {})
  campos = {
    aceite: 'N',
  }.merge!(campos)

  super(campos)
end

Instance Attribute Details

#convenioObject

Returns the value of attribute convenio


6
7
8
# File 'lib/brcobranca/remessa/cnab400/banco_brasilia.rb', line 6

def convenio
  @convenio
end

Instance Method Details

#agencia=(valor) ⇒ Object


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

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

#carteira=(valor) ⇒ Object


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

def carteira=(valor)
  @carteira = valor.to_s.rjust(1, '0') if valor
end

#cod_bancoObject


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

def cod_banco
  '070'
end

#codigo_carteiraString

Codigo da carteira de acordo com a documentacao do Banco do Nordeste


78
79
80
# File 'lib/brcobranca/remessa/cnab400/banco_brasilia.rb', line 78

def codigo_carteira
  carteira.to_s
end

#codigo_tipo_desconto(pagamento) ⇒ Object


99
100
101
102
# File 'lib/brcobranca/remessa/cnab400/banco_brasilia.rb', line 99

def codigo_tipo_desconto(pagamento)
  return "52" if pagamento.valor_desconto.to_f > 0.0
  "00"
end

#codigo_tipo_juros(pagamento) ⇒ Object


94
95
96
97
# File 'lib/brcobranca/remessa/cnab400/banco_brasilia.rb', line 94

def codigo_tipo_juros(pagamento)
  return "50" if pagamento.valor_mora.to_f > 0.0
  "00"
end

#complementoString

Complemento do header (no caso do Banco de Brasilia, não é usado)


71
72
# File 'lib/brcobranca/remessa/cnab400/banco_brasilia.rb', line 71

def complemento
end

#conta_corrente=(valor) ⇒ Object


27
28
29
# File 'lib/brcobranca/remessa/cnab400/banco_brasilia.rb', line 27

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

#data_formacaoObject


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

def data_formacao
  Time.now.strftime('%Y%m%d%H%M%S')
end

#digito_nosso_numero(nosso_numero) ⇒ String

Dígito verificador do nosso número.


109
110
# File 'lib/brcobranca/remessa/cnab400/banco_brasilia.rb', line 109

def digito_nosso_numero(nosso_numero)
end

#info_contaString

Informacoes da conta corrente do cedente


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

def info_conta
  # CAMPO             TAMANHO
  # agencia           3
  # conta corrente    7
  "#{agencia}#{conta_corrente}"
end

#monta_detalhe(pagamento, sequencial) ⇒ String

Detalhe do arquivo


121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/brcobranca/remessa/cnab400/banco_brasilia.rb', line 121

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

  detalhe = '01'                                                    # identificacao transacao               9[02]
  detalhe << agencia                                                # agencia                               9[03]
  detalhe << conta_corrente                                         # conta corrente                        9[07]
  detalhe << pagamento.documento_sacado.to_s.rjust(14, '0')         # documento do pagador                  9[14]
  detalhe << pagamento.nome_sacado.format_size(35)                  # nome do pagador                       X[35]
  detalhe << pagamento.endereco_sacado.format_size(35)              # endereco do pagador                   X[35]
  detalhe << pagamento.cidade_sacado.format_size(15)                # cidade do pagador                     X[15]
  detalhe << pagamento.uf_sacado                                    # uf do pagador                         X[02]
  detalhe << pagamento.cep_sacado                                   # cep do pagador                        9[08]
  detalhe << pagamento.identificacao_sacado(false).to_s             # tipo de pessoa                        9[01]
  detalhe << pagamento.documento_ou_numero.to_s.rjust(13, "0")                                      # seu numero                            9[13]
  detalhe << codigo_carteira                                        # categoria de cobranca                 9[01]
  detalhe << pagamento.data_emissao.strftime('%d%m%Y')              # data de emissao                       9[08]
  detalhe << "21"                                                   # tipo do documento                     9[02]
  detalhe << "0"                                                    # código da natureza                    9[01]
  detalhe << "0"                                                    # código da cond. pagamento             9[02]
  detalhe << "02"                                                   # código da moeda                       9[02]
  detalhe << cod_banco                                              # código do banco                       9[03]
  detalhe << agencia.rjust(4, "0")                                  # código da agênica                     9[04]
  detalhe << ''.rjust(30, " ")                                      # praca de cobranca                     X[30]
  detalhe << pagamento.data_vencimento.strftime('%d%m%Y')           # data do vencimento                    9[08]
  detalhe << pagamento.formata_valor(14)                            # valor do documento                    9[14]
  detalhe << monta_nosso_numero(pagamento)                          # nosso numero                          9[12]
  detalhe << codigo_tipo_juros(pagamento)                           # codigo tipo juros                     9[02]
  detalhe << pagamento.formata_valor_mora(14)                       # valor mora ao dia                     9[14]
  detalhe << pagamento.formata_valor_abatimento(14)                 # valor do abatimento                   9[14]
  detalhe << codigo_tipo_desconto(pagamento)                        # codigo tipo desconto                  9[02]
  detalhe << pagamento.formata_data_desconto('%d%m%Y')              # data limite para desconto             9[08]
  detalhe << pagamento.formata_valor_desconto(14)                   # valor do desconto                     9[14]
  detalhe << "00"                                                   # primeira instrucao                    9[02]
  detalhe << "00"                                                   # prazo da instrucao                    9[02]
  detalhe << "00"                                                   # segunda instrucao                     9[02]
  detalhe << "00"                                                   # prazo da instrucao                    9[02]
  detalhe << "00000"                                                # taxa referente a instrucao            9[05]
  detalhe << empresa_mae.format_size(40)                            # emitente do titulo                    X[40]
  detalhe << ''.rjust(40, ' ')                                      # mensagem livre                        X[40]
  detalhe << ''.rjust(32, ' ')                                      # branco                                X[32]
  detalhe
end

#monta_headerObject


51
52
53
# File 'lib/brcobranca/remessa/cnab400/banco_brasilia.rb', line 51

def monta_header
  "DCB001075#{info_conta}#{data_formacao}#{quantidade_registros}"
end

#monta_nosso_numero(pagamento) ⇒ Object


82
83
84
85
86
87
88
89
90
91
92
# File 'lib/brcobranca/remessa/cnab400/banco_brasilia.rb', line 82

def monta_nosso_numero(pagamento)
  return nosso_numero.rjust(12, "0") if carteira == "3"

  formacao = "#{carteira}#{pagamento.nosso_numero.to_s.rjust(6, "0")}#{cod_banco}"

  formacao << formacao.modulo10.to_s
  formacao << formacao.modulo11(
    multiplicador: (2..7).to_a,
    mapeamento: { 10 => 0, 11 => 0}
  ) { |total| 11 - (total % 11) }.to_s
end

#nome_bancoObject


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

def nome_banco
  ''
end

#quantidade_registrosObject


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

def quantidade_registros
  (pagamentos.size + 1).to_s.rjust(6, '0')
end