Class: Brcobranca::Remessa::Cnab400::Itau

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

Constant Summary collapse

VALOR_EM_REAIS =
'1'
VALOR_EM_PERCENTUAL =
'2'

Instance Attribute Summary

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

#quantidade_titulos_cobranca, #totaliza_valor_titulos, #valor_titulos_carteira

Methods included from Validations

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

Constructor Details

#initialize(campos = {}) ⇒ Itau

Nova instancia do Itau



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

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

Instance Method Details

#agencia=(valor) ⇒ Object



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

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

#carteira=(valor) ⇒ Object



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

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

#cod_bancoObject



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

def cod_banco
  '341'
end

#codigo_carteiraString

Codigo da carteira de acordo com a documentacao o Itau se a carteira nao forem as testadas (150, 191 e 147) retorna ‘I’ que é o codigo das carteiras restantes na documentacao

Returns:

  • (String)


73
74
75
76
77
78
79
# File 'lib/brcobranca/remessa/cnab400/itau.rb', line 73

def codigo_carteira
  return 'U' if carteira.to_s == '150'
  return '1' if carteira.to_s == '191'
  return 'E' if carteira.to_s == '147'

  'I'
end

#complementoString

Complemento do header (no caso do Itau, sao apenas espacos em branco)

Returns:

  • (String)


63
64
65
# File 'lib/brcobranca/remessa/cnab400/itau.rb', line 63

def complemento
  ''.rjust(294, ' ')
end

#conta_corrente=(valor) ⇒ Object



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

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

#info_contaString

Informacoes da conta corrente do cedente

Returns:

  • (String)


48
49
50
51
52
53
54
55
56
# File 'lib/brcobranca/remessa/cnab400/itau.rb', line 48

def info_conta
  # CAMPO            TAMANHO
  # agencia          4
  # complemento      2
  # conta corrente   5
  # digito da conta  1
  # complemento      8
  "#{agencia}00#{conta_corrente}#{digito_conta}#{''.rjust(8, ' ')}"
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:



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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/brcobranca/remessa/cnab400/itau.rb', line 90

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

  detalhe = '1'                                                     # identificacao transacao               9[01]
  detalhe += Brcobranca::Util::Empresa.new(documento_cedente).tipo  # tipo de identificacao da empresa      9[02]
  detalhe << documento_cedente.to_s.rjust(14, '0')                  # cpf/cnpj da empresa                   9[14]
  detalhe << agencia                                                # agencia                               9[04]
  detalhe << ''.rjust(2, '0')                                       # complemento de registro (zeros)       9[02]
  detalhe << conta_corrente                                         # conta corrente                        9[05]
  detalhe << digito_conta                                           # dac                                   9[01]
  detalhe << ''.rjust(4, ' ')                                       # complemento do registro (brancos)     X[04]
  detalhe << ''.rjust(4, '0')                                       # codigo cancelamento (zeros)           9[04]
  detalhe << pagamento.documento_ou_numero.to_s.ljust(25)           # identificacao do tit. na empresa      X[25]
  detalhe << pagamento.nosso_numero.to_s.rjust(8, '0')              # nosso numero                          9[08]
  detalhe << ''.rjust(13, '0')                                      # quantidade de moeda variavel          9[13]
  detalhe << carteira                                               # carteira                              9[03]
  detalhe << ''.rjust(21, ' ')                                      # identificacao da operacao no banco    X[21]
  detalhe << codigo_carteira                                        # codigo da carteira                    X[01]
  detalhe << pagamento.identificacao_ocorrencia                     # identificacao ocorrencia              9[02]
  detalhe << pagamento.numero.to_s.rjust(10, '0')                   # numero do documento                   X[10]
  detalhe << pagamento.data_vencimento.strftime('%d%m%y')           # data do vencimento                    9[06]
  detalhe << pagamento.formata_valor                                # valor do documento                    9[13]
  detalhe << cod_banco                                              # codigo banco                          9[03]
  detalhe << ''.rjust(5, '0')                                       # agencia cobradora - deixar zero       9[05]
  detalhe << pagamento.especie_titulo                               # especie  do titulo                    X[02]
  detalhe << aceite                                                 # aceite (A/N)                          X[01]
  detalhe << pagamento.data_emissao.strftime('%d%m%y')              # data de emissao                       9[06]
  detalhe << pagamento.cod_primeira_instrucao.to_s.rjust(2, '0')    # 1a instrucao - deixar zero            X[02]
  detalhe << pagamento.cod_segunda_instrucao.to_s.rjust(2, '0')     # 2a instrucao - deixar zero            X[02]
  detalhe << pagamento.formata_valor_mora                           # valor mora ao dia                     9[13]
  detalhe << pagamento.formata_data_desconto                        # data limite para desconto             9[06]
  detalhe << pagamento.formata_valor_desconto                       # valor do desconto                     9[13]
  detalhe << pagamento.formata_valor_iof                            # valor do iof                          9[13]
  detalhe << pagamento.formata_valor_abatimento                     # valor do abatimento                   9[13]
  detalhe << pagamento.identificacao_sacado                         # identificacao do pagador              9[02]
  detalhe << pagamento.documento_sacado.to_s.rjust(14, '0')         # documento do pagador                  9[14]
  detalhe << pagamento.nome_sacado.format_size(30)                  # nome do pagador                       X[30]
  detalhe << ''.rjust(10, ' ')                                      # complemento do registro (brancos)     X[10]
  detalhe << pagamento.endereco_sacado.format_size(40)              # endereco do pagador                   X[40]
  detalhe << pagamento.bairro_sacado.format_size(12)                # bairro do pagador                     X[12]
  detalhe << pagamento.cep_sacado                                   # cep do pagador                        9[08]
  detalhe << pagamento.cidade_sacado.format_size(15)                # cidade do pagador                     X[15]
  detalhe << pagamento.uf_sacado                                    # uf do pagador                         X[02]
  detalhe << pagamento.nome_avalista.format_size(30)                # nome do sacador/avalista              X[30]
  detalhe << ''.rjust(4, ' ')                                       # complemento do registro               X[04]
  detalhe << ''.rjust(6, '0')                                       # data da mora                          9[06] *
  detalhe << prazo_instrucao(pagamento)                             # prazo para a instrução          9[02]
  detalhe << ''.rjust(1, ' ')                                       # complemento do registro (brancos)     X[01]
  detalhe << sequencial.to_s.rjust(6, '0')                          # numero do registro no arquivo         9[06]
  detalhe
end

#monta_detalhe_multa(pagamento, sequencial) ⇒ Object



150
151
152
153
154
155
156
157
158
# File 'lib/brcobranca/remessa/cnab400/itau.rb', line 150

def monta_detalhe_multa(pagamento, sequencial)
  detalhe = '2'
  detalhe += pagamento.codigo_multa
  detalhe << pagamento.data_vencimento.strftime('%d%m%Y')
  detalhe << pagamento.formata_percentual_multa(13)
  detalhe << ''.rjust(371, ' ')
  detalhe << sequencial.to_s.rjust(6, '0')
  detalhe
end

#nome_bancoObject



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

def nome_banco
  'BANCO ITAU SA'.ljust(15, ' ')
end

#prazo_instrucao(pagamento) ⇒ Object



142
143
144
145
146
147
148
# File 'lib/brcobranca/remessa/cnab400/itau.rb', line 142

def prazo_instrucao(pagamento)
  return "03" unless %w[09 34 35].include?(
    pagamento.cod_primeira_instrucao
  )

  pagamento.dias_protesto.rjust(2, '0')
end