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



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

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

  super(campos)
end

Instance Attribute Details

#convenioObject

Returns the value of attribute convenio.



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

def convenio
  @convenio
end

Instance Method Details

#agencia=(valor) ⇒ Object



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

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

#carteira=(valor) ⇒ Object



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

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

#cod_bancoObject



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

def cod_banco
  '070'
end

#codigo_carteiraString

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

Returns:

  • (String)


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



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

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
98
# 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)

Returns:

  • (String)


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

def complemento; end

#conta_corrente=(valor) ⇒ Object



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

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

#data_formacaoObject



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

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.

Parameters:

  • nosso_numero

Returns:

  • (String)

    1 caracteres numéricos.



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

def digito_nosso_numero(nosso_numero); end

#info_contaString

Informacoes da conta corrente do cedente

Returns:

  • (String)


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

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

#monta_detalhe(pagamento, _sequencial) ⇒ String

Detalhe do arquivo

Parameters:

  • pagamento (PagamentoCnab400)

    objeto contendo as informacoes referentes ao boleto (valor, vencimento, cliente)

  • sequencial

    num. sequencial do registro no arquivo

Returns:

  • (String)

Raises:



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
163
# File 'lib/brcobranca/remessa/cnab400/banco_brasilia.rb', line 122

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



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

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



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

def nome_banco
  ''
end

#quantidade_registrosObject



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

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