Class: Brcobranca::Remessa::Cnab240::Itau
- Defined in:
- lib/brcobranca/remessa/cnab240/itau.rb
Constant Summary
Constants inherited from Base
Instance Attribute Summary
Attributes inherited from Base
#codigo_baixa, #codigo_carteira, #convenio, #distribuicao_boleto, #emissao_boleto, #especie_titulo, #forma_cadastramento, #mensagem_1, #mensagem_2, #tipo_documento
Attributes inherited from Base
#aceite, #agencia, #carteira, #conta_corrente, #digito_conta, #documento_cedente, #empresa_mae, #pagamentos, #sequencial_remessa
Instance Method Summary collapse
- #agencia=(valor) ⇒ Object
-
#agencia_conta_corrente_dv ⇒ String
Digito verificador de agencia/conta corrente.
- #carteira=(valor) ⇒ Object
- #cod_banco ⇒ Object
-
#codigo_convenio ⇒ String
Sem uso de codigo de convenio pelo Itau neste layout (header arquivo).
-
#complemento_header ⇒ String
Complemento do header de arquivo.
-
#complemento_trailer ⇒ String
Complemento do trailer de lote.
- #conta_corrente=(valor) ⇒ Object
-
#convenio_lote ⇒ String
Sem uso de codigo de convenio pelo Itau neste layout (header lote).
-
#dias_baixa(pagamento) ⇒ String
Prazo para baixa com exatamente 2 posicoes.
- #dv_agencia_cobradora ⇒ Object
- #exclusivo_servico ⇒ Object
-
#formata_nosso_numero(pagamento) ⇒ String
Nosso numero com exatamente 8 posicoes.
-
#info_conta ⇒ String
Informacoes da conta corrente do cedente no header de lote.
-
#initialize(campos = {}) ⇒ Itau
constructor
A new instance of Itau.
-
#monta_segmento_p(pagamento, nro_lote, sequencial) ⇒ String
Monta o registro segmento P do arquivo.
-
#monta_segmento_q(pagamento, nro_lote, sequencial) ⇒ String
Monta o registro segmento Q do arquivo.
- #nome_banco ⇒ Object
-
#nosso_numero_dv(pagamento) ⇒ String
Digito verificador do nosso numero.
- #uso_exclusivo_banco ⇒ Object
- #uso_exclusivo_empresa ⇒ Object
- #versao_layout_arquivo ⇒ Object
- #versao_layout_lote ⇒ Object
Methods inherited from Base
#codigo_desconto, #complemento_r, #data_geracao, #data_mora, #data_multa, #densidade_gravacao, #gera_arquivo, #hora_geracao, #identificacao_titulo_empresa, #monta_header_arquivo, #monta_header_lote, #monta_lote, #monta_segmento_r, #monta_trailer_arquivo, #monta_trailer_lote, #numero, #total_segmentos
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
Returns a new instance of Itau.
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 14 def initialize(campos = {}) # emissao_boleto/distribuicao_boleto/codigo_carteira/ # forma_cadastramento nao fazem parte do layout do Segmento P do # Itau (ver #monta_segmento_p), mas precisam de um valor de 1 # digito para passar nas validacoes genericas de Cnab240::Base. campos = { especie_titulo: "01", emissao_boleto: "0", distribuicao_boleto: "0" }.merge!(campos) super end |
Instance Method Details
#agencia=(valor) ⇒ Object
25 26 27 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 25 def agencia=(valor) @agencia = valor.to_s.rjust(4, "0") if valor end |
#agencia_conta_corrente_dv ⇒ String
Digito verificador de agencia/conta corrente.
60 61 62 63 64 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 60 def agencia_conta_corrente_dv Brcobranca::Util::Itau.agencia_conta_corrente_dv( agencia, conta_corrente ).to_s end |
#carteira=(valor) ⇒ Object
33 34 35 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 33 def carteira=(valor) @carteira = valor.to_s.rjust(3, "0") if valor end |
#cod_banco ⇒ Object
37 38 39 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 37 def cod_banco "341" end |
#codigo_convenio ⇒ String
Sem uso de codigo de convenio pelo Itau neste layout (header arquivo)
112 113 114 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 112 def codigo_convenio "".rjust(20, " ") end |
#complemento_header ⇒ String
Complemento do header de arquivo
134 135 136 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 134 def complemento_header "#{''.rjust(14, ' ')}#{''.rjust(3, '0')}#{''.rjust(12, ' ')}" end |
#complemento_trailer ⇒ String
Complemento do trailer de lote
141 142 143 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 141 def complemento_trailer "".rjust(217, " ") end |
#conta_corrente=(valor) ⇒ Object
29 30 31 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 29 def conta_corrente=(valor) @conta_corrente = valor.to_s.rjust(5, "0") if valor end |
#convenio_lote ⇒ String
Sem uso de codigo de convenio pelo Itau neste layout (header lote)
119 120 121 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 119 def convenio_lote "".rjust(20, " ") end |
#dias_baixa(pagamento) ⇒ String
Prazo para baixa com exatamente 2 posicoes.
O valor padrao herdado de Brcobranca::Remessa::Pagamento e "000" (3 digitos, dimensionado para o layout generico de outros bancos) e nao e truncado por um rjust simples, o que descasa o segmento P do Itau (campo de 2 digitos, posicoes 225-226) em 1 byte quando o chamador nao informa esse campo explicitamente.
158 159 160 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 158 def dias_baixa(pagamento) pagamento.dias_baixa.to_s.rjust(2, "0")[-2..-1] end |
#dv_agencia_cobradora ⇒ Object
145 146 147 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 145 def dv_agencia_cobradora "0" end |
#exclusivo_servico ⇒ Object
53 54 55 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 53 def exclusivo_servico "00" end |
#formata_nosso_numero(pagamento) ⇒ String
Nosso numero com exatamente 8 posicoes.
O nosso numero pode vir do chamador (ex.: sequencia interna do Odoo) com mais de 8 digitos; nesse caso ficam os 8 ultimos digitos (o mesmo criterio usado para interpretar o nosso numero no arquivo de retorno), em vez de simplesmente preencher com zeros a esquerda sem cortar o excedente.
88 89 90 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 88 def formata_nosso_numero(pagamento) pagamento.nosso_numero.to_s.rjust(8, "0")[-8..-1] end |
#info_conta ⇒ String
Informacoes da conta corrente do cedente no header de lote.
CAMPO TAMANHO zeros 1 agencia 4 brancos 1 zeros 7 conta corrente 5 brancos 1 DAC ag/conta 1
104 105 106 107 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 104 def info_conta zeros = "".rjust(7, "0") "0#{agencia} #{zeros}#{conta_corrente} #{agencia_conta_corrente_dv}" end |
#monta_segmento_p(pagamento, nro_lote, sequencial) ⇒ String
Monta o registro segmento P do arquivo.
Layout especifico do Itau (manual "Cobranca FEBRABAN 240", item
3.1, Segmento P) - o campo "N. da carteira" (3 digitos, posicoes
038-040) nao corresponde ao hook generico codigo_carteira da
classe base (1 digito), por isso o segmento e montado por inteiro.
CAMPO POSICAO TAMANHO codigo banco 001-003 3 lote de servico 004-007 4 tipo de registro 008 1 num. sequencial do registro no lote 009-013 5 cod. segmento 014 1 uso exclusivo 015 1 cod. movimento remessa 016-017 2 zeros 018 1 agencia 019-022 4 brancos 023 1 zeros 024-030 7 conta corrente 031-035 5 brancos 036 1 DAC agencia/conta 037 1 numero da carteira 038-040 3 nosso numero 041-048 8 DAC nosso numero 049 1 brancos 050-057 8 zeros 058-062 5 numero do documento 063-072 10 brancos 073-077 5 data de vencimento 078-085 8 valor do titulo 086-100 15 agencia cobradora 101-105 5 DAC agencia cobradora 106 1 especie do titulo 107-108 2 aceite 109 1 data de emissao do titulo 110-117 8 zeros 118 1 data base juros de mora 119-126 8 valor de mora por dia de atraso 127-141 15 zeros 142 1 data limite do 1o desconto 143-150 8 valor do 1o desconto 151-165 15 valor do IOF 166-180 15 valor do abatimento 181-195 15 identificacao do titulo na empresa 196-220 25 codigo para negativacao/protesto 221 1 prazo para negativacao/protesto 222-223 2 codigo para baixa 224 1 prazo para baixa 225-226 2 zeros 227-239 13 brancos 240 1
215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 215 def monta_segmento_p(pagamento, nro_lote, sequencial) segmento_p = "" segmento_p += cod_banco segmento_p << nro_lote.to_s.rjust(4, "0") segmento_p << "3" segmento_p << sequencial.to_s.rjust(5, "0") segmento_p << "P" segmento_p << " " segmento_p << pagamento.identificacao_ocorrencia segmento_p << "0" segmento_p << agencia segmento_p << " " segmento_p << "".rjust(7, "0") segmento_p << conta_corrente segmento_p << " " segmento_p << agencia_conta_corrente_dv segmento_p << carteira segmento_p << formata_nosso_numero(pagamento) segmento_p << nosso_numero_dv(pagamento) segmento_p << "".rjust(8, " ") segmento_p << "".rjust(5, "0") segmento_p << pagamento.formata_documento_ou_numero(10, " ") segmento_p << "".rjust(5, " ") segmento_p << pagamento.data_vencimento.strftime("%d%m%Y") segmento_p << pagamento.formata_valor(15) segmento_p << "".rjust(5, "0") segmento_p << dv_agencia_cobradora segmento_p << especie_titulo segmento_p << aceite segmento_p << pagamento.data_emissao.strftime("%d%m%Y") segmento_p << "0" segmento_p << data_mora(pagamento) segmento_p << pagamento.formata_valor_mora(15) segmento_p << "0" segmento_p << pagamento.formata_data_desconto("%d%m%Y") segmento_p << pagamento.formata_valor_desconto(15) segmento_p << pagamento.formata_valor_iof(15) segmento_p << pagamento.formata_valor_abatimento(15) segmento_p << pagamento.formata_documento_ou_numero(25, " ") segmento_p << pagamento.codigo_protesto segmento_p << pagamento.dias_protesto.to_s.rjust(2, "0") segmento_p << codigo_baixa(pagamento) segmento_p << dias_baixa(pagamento) segmento_p << "".rjust(13, "0") segmento_p << " " segmento_p end |
#monta_segmento_q(pagamento, nro_lote, sequencial) ⇒ String
Monta o registro segmento Q do arquivo.
Layout especifico do Itau - o nome do pagador ocupa 30 posicoes (com 10 posicoes em branco a seguir) e o nome do sacador/avalista ocupa 30 posicoes, diferente do padrao generico de 40 posicoes sem espacamento usado pela classe base.
CAMPO POSICAO TAMANHO codigo banco 001-003 3 lote de servico 004-007 4 tipo de registro 008 1 num. sequencial do registro no lote 009-013 5 cod. segmento 014 1 brancos 015 1 cod. movimento remessa 016-017 2 tipo insc. pagador 018 1 documento pagador 019-033 15 nome pagador 034-063 30 brancos 064-073 10 logradouro 074-113 40 bairro 114-128 15 cep 129-133 5 sufixo cep 134-136 3 cidade 137-151 15 uf 152-153 2 tipo insc. sacador/avalista 154 1 documento sacador/avalista 155-169 15 nome sacador/avalista 170-199 30 brancos 200-209 10 zeros 210-212 3 brancos 213-240 28
296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 296 def monta_segmento_q(pagamento, nro_lote, sequencial) segmento_q = "" segmento_q += cod_banco segmento_q << nro_lote.to_s.rjust(4, "0") segmento_q << "3" segmento_q << sequencial.to_s.rjust(5, "0") segmento_q << "Q" segmento_q << " " segmento_q << pagamento.identificacao_ocorrencia segmento_q << pagamento.identificacao_sacado(false) segmento_q << pagamento.documento_sacado.to_s.rjust(15, "0") segmento_q << pagamento.nome_sacado.format_size(30) segmento_q << "".rjust(10, " ") segmento_q << pagamento.endereco_sacado.format_size(40) segmento_q << pagamento.bairro_sacado.format_size(15) segmento_q << pagamento.cep_sacado[0..4] segmento_q << pagamento.cep_sacado[5..7] segmento_q << pagamento.cidade_sacado.format_size(15) segmento_q << pagamento.uf_sacado segmento_q << pagamento.identificacao_avalista(false) segmento_q << pagamento.documento_avalista.to_s.rjust(15, "0") segmento_q << pagamento.nome_avalista.format_size(30) segmento_q << "".rjust(10, " ") segmento_q << "".rjust(3, "0") segmento_q << "".rjust(28, " ") segmento_q end |
#nome_banco ⇒ Object
41 42 43 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 41 def nome_banco "BANCO ITAU SA".ljust(30, " ") end |
#nosso_numero_dv(pagamento) ⇒ String
Digito verificador do nosso numero.
Calculado sobre o nosso numero ja com 8 posicoes (mesmo valor gravado no segmento P), e nao sobre o valor "cru" informado pelo usuario - ver #monta_segmento_p e #formata_nosso_numero.
73 74 75 76 77 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 73 def nosso_numero_dv(pagamento) Brcobranca::Util::Itau.nosso_numero_dv( agencia, conta_corrente, carteira, formata_nosso_numero(pagamento) ).to_s end |
#uso_exclusivo_banco ⇒ Object
123 124 125 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 123 def uso_exclusivo_banco "".rjust(20, " ") end |
#uso_exclusivo_empresa ⇒ Object
127 128 129 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 127 def uso_exclusivo_empresa "".rjust(20, " ") end |
#versao_layout_arquivo ⇒ Object
45 46 47 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 45 def versao_layout_arquivo "040" end |
#versao_layout_lote ⇒ Object
49 50 51 |
# File 'lib/brcobranca/remessa/cnab240/itau.rb', line 49 def versao_layout_lote "030" end |