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


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

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

Instance Method Details

#agencia=(valor) ⇒ Object


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

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

#carteira=(valor) ⇒ Object


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

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

#cod_bancoObject


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

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)

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

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)

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

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

#conta_corrente=(valor) ⇒ Object


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

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)

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

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:


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

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 << '99'                                                   # 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                       # 1a instrucao - deixar zero            X[02]
  detalhe << pagamento.cod_segunda_instrucao                        # 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


145
146
147
148
149
150
151
152
153
# File 'lib/brcobranca/remessa/cnab400/itau.rb', line 145

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


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

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

#prazo_instrucao(pagamento) ⇒ Object


140
141
142
143
# File 'lib/brcobranca/remessa/cnab400/itau.rb', line 140

def prazo_instrucao(pagamento)
  return '03' unless pagamento.cod_primeira_instrucao == '09'
  pagamento.dias_protesto.rjust(2, '0')
end