Class: Brcobranca::Remessa::Cnab240::Unicred
- Defined in:
- lib/brcobranca/remessa/cnab240/unicred.rb
Overview
Banco Unicred (136)
Layout proprio do Unicred, baseado no manual "COBRANCA UNICRED - TROCA ELETRONICA CEDENTE CNAB 240 E 400" (item 6), disponivel em docs/unicred. Difere do padrao generico FEBRABAN principalmente no segmento P (posicao do nosso numero, carteira com 2 posicoes e diversos campos tratados como filler) e no segmento R, onde ficam as mensagens do titulo.
Constant Summary
Constants inherited from Base
Instance Attribute Summary collapse
-
#parametro_movimento ⇒ Object
Parametro de movimento vinculado ao cedente no momento do cadastramento (campo 22 do header de arquivo - UN001).
Attributes inherited from Base
#codigo_baixa, #codigo_carteira, #convenio, #dias_baixa, #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
- #carteira=(valor) ⇒ Object
-
#cod_banco ⇒ String
Codigo do banco na camara de compensacao.
-
#codigo_convenio ⇒ Object
(also: #convenio_lote)
O Unicred nao utiliza o codigo do convenio: campo 7 do header de arquivo e campo 11 do header de lote sao filler.
-
#complemento_header ⇒ Object
Campo 25 do header de arquivo (posicoes 212 a 240).
-
#complemento_r ⇒ String
Complemento do segmento R (posicoes 180 a 240).
-
#complemento_trailer ⇒ String
Complemento do trailer de lote (posicoes 24 a 240).
-
#densidade_gravacao ⇒ Object
Densidade de gravacao do arquivo: 1600 BPI.
-
#digito_agencia ⇒ String
Digito verificador da agencia, calculado pelo modulo 11 com o mesmo criterio usado na remessa CNAB 400 do Unicred.
-
#formata_nosso_numero(nosso_numero) ⇒ String
Nosso numero com o digito verificador (campo 13 do segmento P).
-
#info_conta ⇒ String
Informacoes da conta do cedente (header de arquivo 053-072 / header de lote 054-073).
-
#initialize(campos = {}) ⇒ Unicred
constructor
Nova instancia do Unicred.
-
#monta_header_lote(nro_lote) ⇒ String
Monta o registro header do lote.
-
#monta_segmento_p(pagamento, nro_lote, sequencial) ⇒ String
Monta o registro segmento P do arquivo.
-
#monta_segmento_r(pagamento, nro_lote, sequencial) ⇒ String
Monta o registro segmento R do arquivo.
-
#monta_trailer_arquivo(nro_lotes, sequencial) ⇒ String
Monta o registro trailer do arquivo.
-
#nome_banco ⇒ String
Nome do banco.
-
#uso_exclusivo_banco ⇒ Object
Campos 22 e 23 do header de arquivo (posicoes 172 a 191): parametro de movimento seguido do campo reservado ao banco.
-
#uso_exclusivo_empresa ⇒ Object
Campo 24 do header de arquivo (posicoes 192 a 211).
-
#versao_layout_arquivo ⇒ Object
Versao do layout do arquivo (campo 20 do header de arquivo).
-
#versao_layout_lote ⇒ Object
Versao do layout do lote (campo 7 do header de lote).
Methods inherited from Base
#codigo_desconto, #data_geracao, #data_mora, #data_multa, #dv_agencia_cobradora, #exclusivo_servico, #gera_arquivo, #hora_geracao, #identificacao_titulo_empresa, #monta_header_arquivo, #monta_lote, #monta_segmento_q, #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 = {}) ⇒ Unicred
Nova instancia do Unicred
29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 29 def initialize(campos = {}) campos = { carteira: '21', parametro_movimento: '000', emissao_boleto: '2', distribuicao_boleto: '2', especie_titulo: '02', forma_cadastramento: '1', tipo_documento: '1' }.merge!(campos) super(campos) end |
Instance Attribute Details
#parametro_movimento ⇒ Object
Parametro de movimento vinculado ao cedente no momento do cadastramento (campo 22 do header de arquivo - UN001).
17 18 19 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 17 def parametro_movimento @parametro_movimento end |
Instance Method Details
#agencia=(valor) ⇒ Object
42 43 44 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 42 def agencia=(valor) @agencia = valor.to_s.rjust(4, '0') if valor end |
#carteira=(valor) ⇒ Object
46 47 48 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 46 def carteira=(valor) @carteira = valor.to_s.rjust(2, '0') if valor end |
#cod_banco ⇒ String
Codigo do banco na camara de compensacao
52 53 54 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 52 def cod_banco '136' end |
#codigo_convenio ⇒ Object Also known as: convenio_lote
O Unicred nao utiliza o codigo do convenio: campo 7 do header de arquivo e campo 11 do header de lote sao filler.
93 94 95 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 93 def codigo_convenio ''.rjust(20, ' ') end |
#complemento_header ⇒ Object
Campo 25 do header de arquivo (posicoes 212 a 240)
125 126 127 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 125 def complemento_header ''.rjust(29, ' ') end |
#complemento_r ⇒ String
Complemento do segmento R (posicoes 180 a 240)
148 149 150 151 152 153 154 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 148 def complemento_r # CAMPO TAMANHO # uso exclusivo FEBRABAN 20 # filler 32 # uso exclusivo FEBRABAN 9 "#{''.rjust(20, ' ')}#{''.rjust(32, '0')}#{''.rjust(9, ' ')}" end |
#complemento_trailer ⇒ String
Complemento do trailer de lote (posicoes 24 a 240)
132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 132 def complemento_trailer # CAMPO TAMANHO # qtde de titulos em cobranca simples 6 # valor total dos titulos em cobranca simples 17 # qtde/valor dos titulos em cobranca vinculada 23 # qtde/valor dos titulos em cobranca caucionada 23 # qtde/valor dos titulos em cobranca descontada 23 # numero do aviso de lancamento 8 # uso exclusivo FEBRABAN 117 cobranca_simples = "#{quantidade_titulos_cobranca}#{valor_titulos_carteira(17)}" "#{cobranca_simples}#{''.rjust(69, '0')}#{''.rjust(125, ' ')}" end |
#densidade_gravacao ⇒ Object
Densidade de gravacao do arquivo: 1600 BPI
73 74 75 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 73 def densidade_gravacao '01600' end |
#digito_agencia ⇒ String
Digito verificador da agencia, calculado pelo modulo 11 com o mesmo criterio usado na remessa CNAB 400 do Unicred.
80 81 82 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 80 def digito_agencia agencia.modulo11(mapeamento: { 10 => 'X' }).to_s end |
#formata_nosso_numero(nosso_numero) ⇒ String
Nosso numero com o digito verificador (campo 13 do segmento P).
86 87 88 89 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 86 def formata_nosso_numero(nosso_numero) numero = nosso_numero.to_s.somente_numeros.rjust(10, '0') "#{numero}#{numero.modulo11(mapeamento: { 10 => 0, 11 => 0 })}" end |
#info_conta ⇒ String
Informacoes da conta do cedente (header de arquivo 053-072 / header de lote 054-073)
103 104 105 106 107 108 109 110 111 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 103 def info_conta # CAMPO TAMANHO # agencia 5 # dv agencia 1 # conta corrente 12 # dv conta 1 # filler 1 "#{agencia.rjust(5, '0')}#{digito_agencia}#{conta_corrente.to_s.rjust(12, '0')}#{digito_conta}0" end |
#monta_header_lote(nro_lote) ⇒ String
Monta o registro header do lote
No layout do Unicred as duas mensagens do header de lote (posicoes 104 a 183) e a data do credito (posicoes 200 a 207) sao filler - as mensagens do titulo trafegam no segmento R.
164 165 166 167 168 169 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 164 def monta_header_lote(nro_lote) header_lote = super header_lote[103, 80] = ''.rjust(80, ' ') header_lote[199, 8] = ''.rjust(8, ' ') header_lote end |
#monta_segmento_p(pagamento, nro_lote, sequencial) ⇒ String
Monta o registro segmento P do arquivo
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 FEBRABAN 015 1 cod. movimento remessa 016-017 2 agencia 018-022 5 dv agencia 023 1 conta corrente 024-035 12 dv conta 036 1 filler 037 1 nosso numero (com dv) 038-048 11 filler 049-056 8 carteira 057-058 2 filler 059-062 4 numero do documento (seu numero) 063-077 15 data de vencimento 078-085 8 valor nominal do titulo 086-100 15 agencia cobradora 101-105 5 dv agencia cobradora 106 1 filler 107-108 2 aceite 109 1 data de emissao do titulo 110-117 8 codigo do juros de mora 118 1 filler 119-126 8 juros de mora por dia/taxa 127-141 15 codigo do desconto 1 142 1 data do desconto 1 143-150 8 valor/percentual do desconto 1 151-165 15 filler 166-180 15 valor do abatimento 181-195 15 identificacao do titulo na empresa 196-220 25 codigo para protesto 221 1 prazo para protesto 222-223 2 filler 224-227 4 codigo da moeda 228-229 2 numero do contrato 230-239 10 uso exclusivo FEBRABAN 240 1
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 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 216 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 << agencia.rjust(5, '0') segmento_p << digito_agencia segmento_p << conta_corrente.to_s.rjust(12, '0') segmento_p << digito_conta.to_s segmento_p << '0' segmento_p << formata_nosso_numero(pagamento.nosso_numero) segmento_p << ''.rjust(8, ' ') segmento_p << carteira segmento_p << '0 0 ' segmento_p << numero(pagamento) segmento_p << pagamento.data_vencimento.strftime('%d%m%Y') segmento_p << pagamento.formata_valor(15) segmento_p << ''.rjust(5, ' ') segmento_p << ' ' segmento_p << ''.rjust(2, '0') segmento_p << aceite segmento_p << pagamento.data_emissao.strftime('%d%m%Y') segmento_p << pagamento.tipo_mora segmento_p << ''.rjust(8, '0') segmento_p << pagamento.formata_valor_mora(15) segmento_p << codigo_desconto(pagamento) segmento_p << pagamento.formata_data_desconto('%d%m%Y') segmento_p << pagamento.formata_valor_desconto(15) segmento_p << ''.rjust(15, '0') segmento_p << pagamento.formata_valor_abatimento(15) segmento_p << identificacao_titulo_empresa(pagamento) segmento_p << pagamento.codigo_protesto segmento_p << pagamento.dias_protesto.to_s.rjust(2, '0') segmento_p << '0' segmento_p << ''.rjust(3, ' ') segmento_p << '09' segmento_p << ''.rjust(10, '0') segmento_p << ' ' segmento_p end |
#monta_segmento_r(pagamento, nro_lote, sequencial) ⇒ String
Monta o registro segmento R do arquivo
No layout do Unicred os campos de desconto 2/3 e de multa sao filler; o segmento carrega a informacao ao sacado e as duas mensagens.
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 FEBRABAN 015 1 cod. movimento remessa 016-017 2 filler (desconto 2 e desconto 3) 018-065 48 filler 066 1 filler (multa) 067-089 23 informacao ao sacado 090-099 10 mensagem 1 100-139 40 mensagem 2 140-179 40 complemento 180-240 61
284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 284 def monta_segmento_r(pagamento, nro_lote, sequencial) segmento_r = '' segmento_r += cod_banco segmento_r << nro_lote.to_s.rjust(4, '0') segmento_r << '3' segmento_r << sequencial.to_s.rjust(5, '0') segmento_r << 'R' segmento_r << ' ' segmento_r << pagamento.identificacao_ocorrencia segmento_r << ''.rjust(48, '0') segmento_r << ' ' segmento_r << ''.rjust(23, '0') segmento_r << ''.rjust(10, ' ') segmento_r << mensagem_1.to_s.format_size(40) segmento_r << mensagem_2.to_s.format_size(40) segmento_r << complemento_r segmento_r end |
#monta_trailer_arquivo(nro_lotes, sequencial) ⇒ String
Monta o registro trailer do arquivo
CAMPO POSICAO TAMANHO codigo banco 001-003 3 lote de servico 004-007 4 tipo de registro 008 1 uso exclusivo FEBRABAN 009-017 9 qtde de lotes do arquivo 018-023 6 qtde de registros do arquivo 024-029 6 qtde de contas para conciliacao 030-035 6 uso exclusivo FEBRABAN 036-240 205
317 318 319 320 321 322 323 324 325 326 327 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 317 def monta_trailer_arquivo(nro_lotes, sequencial) trailer_arquivo = '' trailer_arquivo += cod_banco trailer_arquivo << '99999' trailer_arquivo << ''.rjust(9, ' ') trailer_arquivo << nro_lotes.to_s.rjust(6, '0') trailer_arquivo << sequencial.to_s.rjust(6, '0') trailer_arquivo << ''.rjust(6, '0') trailer_arquivo << ''.rjust(205, ' ') trailer_arquivo end |
#nome_banco ⇒ String
Nome do banco
58 59 60 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 58 def nome_banco 'UNICRED'.ljust(30, ' ') end |
#uso_exclusivo_banco ⇒ Object
Campos 22 e 23 do header de arquivo (posicoes 172 a 191): parametro de movimento seguido do campo reservado ao banco.
115 116 117 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 115 def uso_exclusivo_banco "#{parametro_movimento}#{''.rjust(17, ' ')}" end |
#uso_exclusivo_empresa ⇒ Object
Campo 24 do header de arquivo (posicoes 192 a 211)
120 121 122 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 120 def uso_exclusivo_empresa ''.rjust(20, ' ') end |
#versao_layout_arquivo ⇒ Object
Versao do layout do arquivo (campo 20 do header de arquivo)
63 64 65 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 63 def versao_layout_arquivo '085' end |
#versao_layout_lote ⇒ Object
Versao do layout do lote (campo 7 do header de lote)
68 69 70 |
# File 'lib/brcobranca/remessa/cnab240/unicred.rb', line 68 def versao_layout_lote '044' end |