brcobranca_sicredi_400 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +3 -0
- data/LICENSE +20 -0
- data/README.md +91 -0
- data/Rakefile +8 -0
- data/lib/brcobranca/arquivos/logos/ailos.eps +412 -0
- data/lib/brcobranca/arquivos/logos/ailos_carne.eps +412 -0
- data/lib/brcobranca/arquivos/logos/bancobrasil.eps +5402 -0
- data/lib/brcobranca/arquivos/logos/bancobrasil_carne.eps +5410 -0
- data/lib/brcobranca/arquivos/logos/bancobrasilia.eps +0 -0
- data/lib/brcobranca/arquivos/logos/bancobrasilia_carne.eps +0 -0
- data/lib/brcobranca/arquivos/logos/banconordeste.eps +0 -0
- data/lib/brcobranca/arquivos/logos/banconordeste_carne.eps +0 -0
- data/lib/brcobranca/arquivos/logos/banestes.eps +5198 -0
- data/lib/brcobranca/arquivos/logos/banestes_carne.eps +5206 -0
- data/lib/brcobranca/arquivos/logos/banrisul.eps +121 -0
- data/lib/brcobranca/arquivos/logos/banrisul_carne.eps +121 -0
- data/lib/brcobranca/arquivos/logos/bradesco.eps +5210 -0
- data/lib/brcobranca/arquivos/logos/bradesco_carne.eps +5214 -0
- data/lib/brcobranca/arquivos/logos/caixa.eps +5111 -0
- data/lib/brcobranca/arquivos/logos/caixa_carne.eps +5115 -0
- data/lib/brcobranca/arquivos/logos/cecred.eps +0 -0
- data/lib/brcobranca/arquivos/logos/cecred_carne.eps +0 -0
- data/lib/brcobranca/arquivos/logos/citibank.eps +745 -0
- data/lib/brcobranca/arquivos/logos/citibank_carne.eps +745 -0
- data/lib/brcobranca/arquivos/logos/credisis.eps +0 -0
- data/lib/brcobranca/arquivos/logos/credisis_carne.eps +0 -0
- data/lib/brcobranca/arquivos/logos/hsbc.eps +5124 -0
- data/lib/brcobranca/arquivos/logos/hsbc_carne.eps +5128 -0
- data/lib/brcobranca/arquivos/logos/itau.eps +5318 -0
- data/lib/brcobranca/arquivos/logos/itau_carne.eps +5322 -0
- data/lib/brcobranca/arquivos/logos/safra.eps +0 -0
- data/lib/brcobranca/arquivos/logos/safra_carne.eps +0 -0
- data/lib/brcobranca/arquivos/logos/santander.eps +5305 -0
- data/lib/brcobranca/arquivos/logos/santander_carne.eps +5313 -0
- data/lib/brcobranca/arquivos/logos/sicoob.eps +5375 -0
- data/lib/brcobranca/arquivos/logos/sicoob_carne.eps +5379 -0
- data/lib/brcobranca/arquivos/logos/sicredi.eps +5379 -0
- data/lib/brcobranca/arquivos/logos/sicredi_carne.eps +5383 -0
- data/lib/brcobranca/arquivos/logos/unicred.eps +0 -0
- data/lib/brcobranca/arquivos/logos/unicred_carne.eps +0 -0
- data/lib/brcobranca/arquivos/templates/modelo_carne.eps +1112 -0
- data/lib/brcobranca/arquivos/templates/modelo_generico.eps +0 -0
- data/lib/brcobranca/arquivos/templates/modelo_generico2.eps +9967 -0
- data/lib/brcobranca/boleto/ailos.rb +89 -0
- data/lib/brcobranca/boleto/banco_brasil.rb +165 -0
- data/lib/brcobranca/boleto/banco_brasilia.rb +102 -0
- data/lib/brcobranca/boleto/banco_nordeste.rb +80 -0
- data/lib/brcobranca/boleto/banestes.rb +86 -0
- data/lib/brcobranca/boleto/banrisul.rb +95 -0
- data/lib/brcobranca/boleto/base.rb +256 -0
- data/lib/brcobranca/boleto/bradesco.rb +100 -0
- data/lib/brcobranca/boleto/caixa.rb +123 -0
- data/lib/brcobranca/boleto/citibank.rb +97 -0
- data/lib/brcobranca/boleto/credisis.rb +118 -0
- data/lib/brcobranca/boleto/hsbc.rb +96 -0
- data/lib/brcobranca/boleto/itau.rb +138 -0
- data/lib/brcobranca/boleto/safra.rb +152 -0
- data/lib/brcobranca/boleto/santander.rb +86 -0
- data/lib/brcobranca/boleto/sicoob.rb +120 -0
- data/lib/brcobranca/boleto/sicredi.rb +145 -0
- data/lib/brcobranca/boleto/template/base.rb +28 -0
- data/lib/brcobranca/boleto/template/rghost.rb +308 -0
- data/lib/brcobranca/boleto/template/rghost2.rb +264 -0
- data/lib/brcobranca/boleto/template/rghost_bolepix.rb +286 -0
- data/lib/brcobranca/boleto/template/rghost_carne.rb +319 -0
- data/lib/brcobranca/boleto/unicred.rb +99 -0
- data/lib/brcobranca/calculo.rb +120 -0
- data/lib/brcobranca/calculo_data.rb +63 -0
- data/lib/brcobranca/currency.rb +69 -0
- data/lib/brcobranca/formatacao.rb +104 -0
- data/lib/brcobranca/formatacao_string.rb +37 -0
- data/lib/brcobranca/limpeza.rb +20 -0
- data/lib/brcobranca/remessa/base.rb +72 -0
- data/lib/brcobranca/remessa/cnab240/ailos.rb +156 -0
- data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +249 -0
- data/lib/brcobranca/remessa/cnab240/base.rb +529 -0
- data/lib/brcobranca/remessa/cnab240/base_correspondente.rb +307 -0
- data/lib/brcobranca/remessa/cnab240/caixa.rb +171 -0
- data/lib/brcobranca/remessa/cnab240/santander.rb +225 -0
- data/lib/brcobranca/remessa/cnab240/sicoob.rb +229 -0
- data/lib/brcobranca/remessa/cnab240/sicoob_banco_brasil.rb +101 -0
- data/lib/brcobranca/remessa/cnab240/sicredi.rb +183 -0
- data/lib/brcobranca/remessa/cnab240/unicred.rb +10 -0
- data/lib/brcobranca/remessa/cnab400/banco_brasil.rb +169 -0
- data/lib/brcobranca/remessa/cnab400/banco_brasilia.rb +167 -0
- data/lib/brcobranca/remessa/cnab400/banco_nordeste.rb +161 -0
- data/lib/brcobranca/remessa/cnab400/banrisul.rb +158 -0
- data/lib/brcobranca/remessa/cnab400/base.rb +132 -0
- data/lib/brcobranca/remessa/cnab400/bradesco.rb +155 -0
- data/lib/brcobranca/remessa/cnab400/citibank.rb +139 -0
- data/lib/brcobranca/remessa/cnab400/credisis.rb +130 -0
- data/lib/brcobranca/remessa/cnab400/itau.rb +162 -0
- data/lib/brcobranca/remessa/cnab400/santander.rb +233 -0
- data/lib/brcobranca/remessa/cnab400/sicoob.rb +305 -0
- data/lib/brcobranca/remessa/cnab400/sicredi.rb +117 -0
- data/lib/brcobranca/remessa/cnab400/unicred.rb +259 -0
- data/lib/brcobranca/remessa/pagamento.rb +320 -0
- data/lib/brcobranca/retorno/base.rb +11 -0
- data/lib/brcobranca/retorno/cnab240/ailos.rb +104 -0
- data/lib/brcobranca/retorno/cnab240/base.rb +41 -0
- data/lib/brcobranca/retorno/cnab240/caixa.rb +47 -0
- data/lib/brcobranca/retorno/cnab240/santander.rb +99 -0
- data/lib/brcobranca/retorno/cnab240/sicoob.rb +101 -0
- data/lib/brcobranca/retorno/cnab240/sicredi.rb +82 -0
- data/lib/brcobranca/retorno/cnab400/banco_brasil.rb +130 -0
- data/lib/brcobranca/retorno/cnab400/banco_brasilia.rb +90 -0
- data/lib/brcobranca/retorno/cnab400/banco_nordeste.rb +113 -0
- data/lib/brcobranca/retorno/cnab400/banrisul.rb +42 -0
- data/lib/brcobranca/retorno/cnab400/base.rb +53 -0
- data/lib/brcobranca/retorno/cnab400/bradesco.rb +124 -0
- data/lib/brcobranca/retorno/cnab400/credisis.rb +116 -0
- data/lib/brcobranca/retorno/cnab400/itau.rb +144 -0
- data/lib/brcobranca/retorno/cnab400/santander.rb +58 -0
- data/lib/brcobranca/retorno/cnab400/sicredi.rb +78 -0
- data/lib/brcobranca/retorno/cnab400/unicred.rb +123 -0
- data/lib/brcobranca/retorno/retorno_cbr643.rb +48 -0
- data/lib/brcobranca/retorno/retorno_cnab240.rb +99 -0
- data/lib/brcobranca/retorno/retorno_cnab400.rb +71 -0
- data/lib/brcobranca/util/date.rb +21 -0
- data/lib/brcobranca/util/empresa.rb +29 -0
- data/lib/brcobranca/util/errors.rb +76 -0
- data/lib/brcobranca/validations.rb +208 -0
- data/lib/brcobranca/version.rb +5 -0
- data/lib/brcobranca.rb +200 -0
- metadata +225 -0
@@ -0,0 +1,113 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'parseline'
|
4
|
+
|
5
|
+
module Brcobranca
|
6
|
+
module Retorno
|
7
|
+
module Cnab400
|
8
|
+
# Formato de Retorno CNAB 400
|
9
|
+
class BancoNordeste < Brcobranca::Retorno::Base
|
10
|
+
extend ParseLine::FixedWidth
|
11
|
+
|
12
|
+
def self.load_lines(file, options = {})
|
13
|
+
default_options = { except: [1] } # por padrao ignora a primeira linha que é header
|
14
|
+
options = default_options.merge!(options)
|
15
|
+
|
16
|
+
super(file, options)
|
17
|
+
end
|
18
|
+
|
19
|
+
fixed_width_layout do |parse|
|
20
|
+
# Todos os campos descritos no documento em ordem
|
21
|
+
parse.field :codigo_registro, 0..0
|
22
|
+
|
23
|
+
# :codigo_de_inscricao, 1..2 # identificacao do tipo de inscricao/empresa
|
24
|
+
# :numero_de_inscricao, 3..16 # numero de inscricao da empresa (cpf/cnpj)
|
25
|
+
# :zeros, 17..19
|
26
|
+
|
27
|
+
# Identificacao da empresa no banco
|
28
|
+
# :zeros, 20..20
|
29
|
+
parse.field :agencia_sem_dv, 17..20
|
30
|
+
parse.field :cedente_com_dv, 23..30
|
31
|
+
|
32
|
+
# :numero_controle_empresa, 37..61, # numero de controle da empresa
|
33
|
+
# :zeros, 62..69
|
34
|
+
|
35
|
+
parse.field :nosso_numero, 62..69
|
36
|
+
|
37
|
+
# :zeros, 82..91 # uso do banco
|
38
|
+
# :zeros, 92..103 # uso do banco
|
39
|
+
# :indicador_de_rateio, 104..104 # indicador de rateio de credito
|
40
|
+
# :zeros, 105..106
|
41
|
+
# :carteira, 107..107 # de novo?
|
42
|
+
parse.field :carteira, 107..107
|
43
|
+
parse.field :codigo_ocorrencia, 108..109
|
44
|
+
parse.field :data_ocorrencia, 110..115
|
45
|
+
|
46
|
+
# :n_do_documento, 116..125 # n umero do documento de cobranca (dupl, np etc)
|
47
|
+
# :nosso_numero, 126..133 # confirmacao do numero do titulo no banco
|
48
|
+
# :brancos, 134..145 # complemento de registro
|
49
|
+
|
50
|
+
# :vencimento, 146..151 # data de vencimento do titulo (ddmmaa)
|
51
|
+
parse.field :data_vencimento, 146..151
|
52
|
+
|
53
|
+
# :valor_do_titulo, 152..164 # valor nominal do titulo (ultimos 2 digitos, virgula decimal assumida)
|
54
|
+
parse.field :valor_titulo, 152..164
|
55
|
+
|
56
|
+
# :codigo_do_banco, 165..167 # numero do banco na camara de compensacao
|
57
|
+
parse.field :banco_recebedor, 165..167
|
58
|
+
|
59
|
+
# :agencia_cobradora, 168..171 # agencia cobradora, ag de liquidacao ou baixa
|
60
|
+
# :dac_ag_cobradora, 172..172 # dac da agencia cobradora
|
61
|
+
# :agencia_recebedora_com_dv, 168..172
|
62
|
+
|
63
|
+
# :especie, 173..174 # especie do titulo
|
64
|
+
parse.field :especie_documento, 173..174
|
65
|
+
|
66
|
+
# :tarifa_de_cobranca, 175..187 # valor da despesa de cobranca (ultimos 2 digitos, virgula decimal assumida)
|
67
|
+
parse.field :valor_tarifa, 175..187
|
68
|
+
|
69
|
+
# :outras_despesas 188..200, # valor de outras despesas ou custos do protesto
|
70
|
+
# :juros_operacao_em_atraso, 201..213 # zeros?
|
71
|
+
|
72
|
+
# :valor_do_iof, 214..226 # valor do iof a ser recolhido (ultimos 2 digitos, virgula decimal assumida)
|
73
|
+
# :iof, 214..226
|
74
|
+
|
75
|
+
# :valor_abatimento, 227..239 # valor do abatimento concedido (ultimos 2 digitos, virgula decimal assumida)
|
76
|
+
parse.field :valor_abatimento, 227..239
|
77
|
+
|
78
|
+
# :descontos, 240..252 # valor do desconto concedido (ultimos 2 digitos, virgula decimal assumida)
|
79
|
+
parse.field :desconto, 240..252
|
80
|
+
|
81
|
+
# :valor_recebido, 253..265 # valor lancado em conta corrente (ultimos 2 digitos, virgula decimal assumida)
|
82
|
+
parse.field :valor_recebido, 253..265
|
83
|
+
|
84
|
+
# :juros_mora, 266..278 # valor de mora e multa pagos pelo sacado (ultimos 2 digitos, virgula decimal assumida)
|
85
|
+
parse.field :juros_mora, 266..278
|
86
|
+
|
87
|
+
# :outros_creditos, 279..291 # valor de outros creditos (ultimos 2 digitos, virgula decimal assumida)
|
88
|
+
# :outros_recebimento, 279..291
|
89
|
+
|
90
|
+
# :brancos, 292..293
|
91
|
+
# :motivo_do_codigo_de_ocorrencia, 294..294
|
92
|
+
|
93
|
+
# :data_credito, 295..300 # data de credito desta liquidacao
|
94
|
+
parse.field :data_credito, 146..151
|
95
|
+
|
96
|
+
# :origem_pagamento, 301..303
|
97
|
+
# :brancos, 304..313
|
98
|
+
# :cheque_bradesco, 314..317
|
99
|
+
# :motivo_rejeicao, 318..327
|
100
|
+
# :brancos, 328..367
|
101
|
+
# :numero_do_cartorio, 368..369
|
102
|
+
# :numero_do_protocolo, 370..379
|
103
|
+
# :brancos, 380..393
|
104
|
+
|
105
|
+
parse.field :motivo_ocorrencia, 279..393
|
106
|
+
|
107
|
+
# :numero_sequencial, 394..399 # numero sequencial no arquivo
|
108
|
+
parse.field :sequencial, 394..399
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brcobranca
|
4
|
+
module Retorno
|
5
|
+
module Cnab400
|
6
|
+
class Banrisul < Brcobranca::Retorno::Cnab400::Base
|
7
|
+
extend ParseLine::FixedWidth # Extendendo parseline
|
8
|
+
|
9
|
+
def self.load_lines(file, options = {})
|
10
|
+
default_options = { except: [1] } # por padrao ignora a primeira linha que é header
|
11
|
+
options = default_options.merge!(options)
|
12
|
+
super(file, options)
|
13
|
+
end
|
14
|
+
|
15
|
+
fixed_width_layout do |parse|
|
16
|
+
parse.field :codigo_registro, 0..0
|
17
|
+
parse.field :agencia_sem_dv, 17..20
|
18
|
+
parse.field :cedente_com_dv, 21..29
|
19
|
+
parse.field :nosso_numero, 62..71
|
20
|
+
parse.field :carteira, 107..107
|
21
|
+
parse.field :codigo_ocorrencia, 108..109
|
22
|
+
parse.field :data_ocorrencia, 110..115
|
23
|
+
parse.field :data_vencimento, 146..151
|
24
|
+
parse.field :valor_titulo, 152..164
|
25
|
+
parse.field :banco_recebedor, 165..167
|
26
|
+
parse.field :agencia_recebedora_com_dv, 168..172
|
27
|
+
parse.field :especie_documento, 173..174
|
28
|
+
parse.field :valor_tarifa, 175..187
|
29
|
+
parse.field :iof, 188..200
|
30
|
+
parse.field :valor_abatimento, 227..239
|
31
|
+
parse.field :desconto, 240..252
|
32
|
+
parse.field :valor_recebido, 253..265
|
33
|
+
parse.field :juros_mora, 266..278
|
34
|
+
parse.field :outros_recebimento, 279..291
|
35
|
+
parse.field :data_credito, 295..300
|
36
|
+
parse.field :motivo_ocorrencia, 382..391
|
37
|
+
parse.field :sequencial, 394..399
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'parseline'
|
4
|
+
|
5
|
+
module Brcobranca
|
6
|
+
module Retorno
|
7
|
+
module Cnab400
|
8
|
+
class Base < Brcobranca::Retorno::Base
|
9
|
+
# Load lines
|
10
|
+
def self.load_lines(file, options = {})
|
11
|
+
return nil unless file
|
12
|
+
|
13
|
+
codigo_banco = codigo_banco_do_arquivo(file)
|
14
|
+
|
15
|
+
case codigo_banco
|
16
|
+
when '001'
|
17
|
+
Brcobranca::Retorno::Cnab400::BancoBrasil.load_lines(file, options)
|
18
|
+
when '004'
|
19
|
+
Brcobranca::Retorno::Cnab400::BancoNordeste.load_lines(file, options)
|
20
|
+
when '041'
|
21
|
+
Brcobranca::Retorno::Cnab400::Banrisul.load_lines(file, options)
|
22
|
+
when '070'
|
23
|
+
Brcobranca::Retorno::Cnab400::BancoBrasilia.load_lines(file, options)
|
24
|
+
when '097'
|
25
|
+
Brcobranca::Retorno::Cnab400::Credisis.load_lines(file, options)
|
26
|
+
when '237'
|
27
|
+
Brcobranca::Retorno::Cnab400::Bradesco.load_lines(file, options)
|
28
|
+
when '341'
|
29
|
+
Brcobranca::Retorno::Cnab400::Itau.load_lines(file, options)
|
30
|
+
when '033', '353'
|
31
|
+
Brcobranca::Retorno::Cnab400::Santander.load_lines(file, options)
|
32
|
+
when '136'
|
33
|
+
Brcobranca::Retorno::Cnab400::Unicred.load_lines(file, options)
|
34
|
+
when '748'
|
35
|
+
Brcobranca::Retorno::Cnab400::Sicredi.load_lines(file, options)
|
36
|
+
else
|
37
|
+
Brcobranca::Retorno::RetornoCnab400.load_lines(file, options)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# Codigo do banco lido do arquivo.
|
42
|
+
# Registro Header [76..78]
|
43
|
+
def self.codigo_banco_do_arquivo(file)
|
44
|
+
arquivo = File.open(file, 'r')
|
45
|
+
header = arquivo.gets
|
46
|
+
codigo_banco = header.blank? ? nil : header[76..78]
|
47
|
+
arquivo.close
|
48
|
+
codigo_banco
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,124 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Brcobranca
|
4
|
+
module Retorno
|
5
|
+
module Cnab400
|
6
|
+
# Formato de Retorno CNAB 400
|
7
|
+
# Baseado em: http://www.bradesco.com.br/portal/PDF/pessoajuridica/solucoes-integradas/outros/layout-de-arquivo/cobranca/4008-524-0121-08-layout-cobranca-versao-portugues.pdf
|
8
|
+
class Bradesco < Brcobranca::Retorno::Cnab400::Base
|
9
|
+
extend ParseLine::FixedWidth # Extendendo parseline
|
10
|
+
|
11
|
+
# Load lines
|
12
|
+
def self.load_lines(file, options = {})
|
13
|
+
default_options = { except: [1] } # por padrao ignora a primeira linha que é header
|
14
|
+
options = default_options.merge!(options)
|
15
|
+
super(file, options)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Fixed width layout for Bradesco
|
19
|
+
fixed_width_layout do |parse|
|
20
|
+
# Todos os campos descritos no documento em ordem
|
21
|
+
# :tipo_de_registro, 0..0 # identificacao do registro transacao
|
22
|
+
parse.field :codigo_registro, 0..0
|
23
|
+
|
24
|
+
# :codigo_de_inscricao, 1..2 # identificacao do tipo de inscricao/empresa
|
25
|
+
# :numero_de_inscricao, 3..16 # numero de inscricao da empresa (cpf/cnpj)
|
26
|
+
# :zeros, 17..19
|
27
|
+
|
28
|
+
# Identificacao da empresa no banco
|
29
|
+
# :zeros, 20..20
|
30
|
+
# :carteira, 21..23
|
31
|
+
# :agencia_sem_dv, 24..28
|
32
|
+
# :cedente_com_dv 29..36
|
33
|
+
parse.field :carteira, 21..23
|
34
|
+
parse.field :agencia_sem_dv, 24..28
|
35
|
+
parse.field :cedente_com_dv, 29..36
|
36
|
+
|
37
|
+
# :numero_controle_empresa, 37..61, # numero de controle da empresa
|
38
|
+
# :zeros, 62..69
|
39
|
+
|
40
|
+
# :nosso_numero, 70..81 # identificacao do titulo no banco
|
41
|
+
parse.field :nosso_numero, 70..81
|
42
|
+
|
43
|
+
# :zeros, 82..91 # uso do banco
|
44
|
+
# :zeros, 92..103 # uso do banco
|
45
|
+
# :indicador_de_rateio, 104..104 # indicador de rateio de credito
|
46
|
+
# :zeros, 105..106
|
47
|
+
# :carteira, 107..107 # de novo?
|
48
|
+
parse.field :codigo_ocorrencia, 108..109
|
49
|
+
parse.field :data_ocorrencia, 110..115 # data de ocorrencia no banco (ddmmaa)
|
50
|
+
# :n_do_documento, 116..125 # n umero do documento de cobranca (dupl, np etc)
|
51
|
+
parse.field :documento_numero, 116..125
|
52
|
+
# :nosso_numero, 126..133 # confirmacao do numero do titulo no banco
|
53
|
+
# :brancos, 134..145 # complemento de registro
|
54
|
+
|
55
|
+
# :vencimento, 146..151 # data de vencimento do titulo (ddmmaa)
|
56
|
+
parse.field :data_vencimento, 146..151
|
57
|
+
|
58
|
+
# :valor_do_titulo, 152..164 # valor nominal do titulo (ultimos 2 digitos, virgula decimal assumida)
|
59
|
+
parse.field :valor_titulo, 152..164
|
60
|
+
|
61
|
+
# :codigo_do_banco, 165..167 # numero do banco na camara de compensacao
|
62
|
+
parse.field :banco_recebedor, 165..167
|
63
|
+
|
64
|
+
# :agencia_cobradora, 168..171 # agencia cobradora, ag de liquidacao ou baixa
|
65
|
+
# :dac_ag_cobradora, 172..172 # dac da agencia cobradora
|
66
|
+
parse.field :agencia_recebedora_com_dv, 168..172
|
67
|
+
|
68
|
+
# :especie, 173..174 # especie do titulo
|
69
|
+
parse.field :especie_documento, 173..174
|
70
|
+
|
71
|
+
# :tarifa_de_cobranca, 175..187 # valor da despesa de cobranca (ultimos 2 digitos, virgula decimal assumida)
|
72
|
+
parse.field :valor_tarifa, 175..187
|
73
|
+
|
74
|
+
# :outras_despesas 188..200, # valor de outras despesas ou custos do protesto
|
75
|
+
# :juros_operacao_em_atraso, 201..213 # zeros?
|
76
|
+
|
77
|
+
# :valor_do_iof, 214..226 # valor do iof a ser recolhido (ultimos 2 digitos, virgula decimal assumida)
|
78
|
+
parse.field :iof, 214..226
|
79
|
+
|
80
|
+
# :valor_abatimento, 227..239 # valor do abatimento concedido (ultimos 2 digitos, virgula decimal assumida)
|
81
|
+
parse.field :valor_abatimento, 227..239
|
82
|
+
|
83
|
+
# :descontos, 240..252 # valor do desconto concedido (ultimos 2 digitos, virgula decimal assumida)
|
84
|
+
parse.field :desconto, 240..252
|
85
|
+
|
86
|
+
# :valor_recebido, 253..265 # valor lancado em conta corrente (ultimos 2 digitos, virgula decimal assumida)
|
87
|
+
parse.field :valor_recebido, 253..265
|
88
|
+
|
89
|
+
# :juros_mora, 266..278 # valor de mora e multa pagos pelo sacado (ultimos 2 digitos, virgula decimal assumida)
|
90
|
+
parse.field :juros_mora, 266..278
|
91
|
+
|
92
|
+
# :outros_creditos, 279..291 # valor de outros creditos (ultimos 2 digitos, virgula decimal assumida)
|
93
|
+
parse.field :outros_recebimento, 279..291
|
94
|
+
|
95
|
+
# :brancos, 292..293
|
96
|
+
# :motivo_do_codigo_de_ocorrencia, 294..294
|
97
|
+
|
98
|
+
# :data_credito, 295..300 # data de credito desta liquidacao
|
99
|
+
parse.field :data_credito, 295..300
|
100
|
+
|
101
|
+
# :origem_pagamento, 301..303
|
102
|
+
# :brancos, 304..313
|
103
|
+
# :cheque_bradesco, 314..317
|
104
|
+
# :motivo_rejeicao, 318..327
|
105
|
+
# :brancos, 328..367
|
106
|
+
# :numero_do_cartorio, 368..369
|
107
|
+
# :numero_do_protocolo, 370..379
|
108
|
+
# :brancos, 380..393
|
109
|
+
|
110
|
+
parse.field :motivo_ocorrencia, 318..327, lambda { |motivos|
|
111
|
+
motivos.scan(/.{2}/).reject(&:blank?).reject { |motivo| motivo == '00' }
|
112
|
+
}
|
113
|
+
|
114
|
+
# :numero_sequencial, 394..399 # numero sequencial no arquivo
|
115
|
+
parse.field :sequencial, 394..399
|
116
|
+
end
|
117
|
+
|
118
|
+
def agencia_com_dv
|
119
|
+
"#{agencia_sem_dv}-#{agencia_sem_dv.modulo11}"
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'parseline'
|
4
|
+
|
5
|
+
module Brcobranca
|
6
|
+
module Retorno
|
7
|
+
module Cnab400
|
8
|
+
# Formato de Retorno CNAB 400
|
9
|
+
class Credisis < Brcobranca::Retorno::Base
|
10
|
+
extend ParseLine::FixedWidth
|
11
|
+
|
12
|
+
def self.load_lines(file, options = {})
|
13
|
+
default_options = { except: [1] } # por padrao ignora a primeira linha que é header
|
14
|
+
options = default_options.merge!(options)
|
15
|
+
|
16
|
+
super(file, options)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Fixed width layout for Bradesco
|
20
|
+
fixed_width_layout do |parse|
|
21
|
+
# Todos os campos descritos no documento em ordem
|
22
|
+
# :tipo_de_registro, 0..0 # identificacao do registro transacao
|
23
|
+
parse.field :codigo_registro, 0..0
|
24
|
+
|
25
|
+
# :codigo_de_inscricao, 1..2 # identificacao do tipo de inscricao/empresa
|
26
|
+
# :numero_de_inscricao, 3..16 # numero de inscricao da empresa (cpf/cnpj)
|
27
|
+
# :zeros, 17..19
|
28
|
+
|
29
|
+
# Identificacao da empresa no banco
|
30
|
+
# :zeros, 20..20
|
31
|
+
# :carteira, 21..23
|
32
|
+
# :agencia_sem_dv, 24..28
|
33
|
+
# :cedente_com_dv 29..36
|
34
|
+
# :carteira, 21..23
|
35
|
+
# :agencia_sem_dv, 24..28
|
36
|
+
# :cedente_com_dv, 29..36
|
37
|
+
|
38
|
+
# :numero_controle_empresa, 37..61, # numero de controle da empresa
|
39
|
+
# :zeros, 62..69
|
40
|
+
|
41
|
+
# :nosso_numero, 62..72 # identificacao do titulo no banco
|
42
|
+
parse.field :nosso_numero, 62..72
|
43
|
+
|
44
|
+
# :zeros, 82..91 # uso do banco
|
45
|
+
# :zeros, 92..103 # uso do banco
|
46
|
+
# :indicador_de_rateio, 104..104 # indicador de rateio de credito
|
47
|
+
# :zeros, 105..106
|
48
|
+
# :carteira, 107..107 # de novo?
|
49
|
+
# :cod_de_ocorrencia, 108..109 # código de ocorrencia
|
50
|
+
# :data_de_ocorrencia, 110..115 # data de ocorrencia no banco (ddmmaa)
|
51
|
+
# :n_do_documento, 116..125 # n umero do documento de cobranca (dupl, np etc)
|
52
|
+
# :nosso_numero, 126..133 # confirmacao do numero do titulo no banco
|
53
|
+
# :brancos, 134..145 # complemento de registro
|
54
|
+
|
55
|
+
# :vencimento, 146..151 # data de vencimento do titulo (ddmmaa)
|
56
|
+
parse.field :data_vencimento, 146..151
|
57
|
+
|
58
|
+
# :valor_do_titulo, 152..164 # valor nominal do titulo (ultimos 2 digitos, virgula decimal assumida)
|
59
|
+
parse.field :valor_titulo, 152..164
|
60
|
+
|
61
|
+
# :codigo_do_banco, 165..167 # numero do banco na camara de compensacao
|
62
|
+
# :banco_recebedor, 165..167
|
63
|
+
|
64
|
+
# :agencia_cobradora, 168..171 # agencia cobradora, ag de liquidacao ou baixa
|
65
|
+
# :dac_ag_cobradora, 172..172 # dac da agencia cobradora
|
66
|
+
# :agencia_recebedora_com_dv, 168..172
|
67
|
+
|
68
|
+
# :especie, 173..174 # especie do titulo
|
69
|
+
# :especie_documento, 173..174
|
70
|
+
|
71
|
+
# :tarifa_de_cobranca, 175..187 # valor da despesa de cobranca (ultimos 2 digitos, virgula decimal assumida)
|
72
|
+
# :valor_tarifa, 175..187
|
73
|
+
|
74
|
+
# :outras_despesas 188..200, # valor de outras despesas ou custos do protesto
|
75
|
+
# :juros_operacao_em_atraso, 201..213 # zeros?
|
76
|
+
|
77
|
+
# :valor_do_iof, 214..226 # valor do iof a ser recolhido (ultimos 2 digitos, virgula decimal assumida)
|
78
|
+
# :iof, 214..226
|
79
|
+
|
80
|
+
# :valor_abatimento, 227..239 # valor do abatimento concedido (ultimos 2 digitos, virgula decimal assumida)
|
81
|
+
# :valor_abatimento, 227..239
|
82
|
+
|
83
|
+
# :descontos, 240..252 # valor do desconto concedido (ultimos 2 digitos, virgula decimal assumida)
|
84
|
+
# :desconto, 240..252
|
85
|
+
|
86
|
+
# :valor_recebido, 253..265 # valor lancado em conta corrente (ultimos 2 digitos, virgula decimal assumida)
|
87
|
+
parse.field :valor_recebido, 253..265
|
88
|
+
|
89
|
+
# :juros_mora, 266..278 # valor de mora e multa pagos pelo sacado (ultimos 2 digitos, virgula decimal assumida)
|
90
|
+
# :juros_mora, 266..278
|
91
|
+
|
92
|
+
# :outros_creditos, 279..291 # valor de outros creditos (ultimos 2 digitos, virgula decimal assumida)
|
93
|
+
# :outros_recebimento, 279..291
|
94
|
+
|
95
|
+
# :brancos, 292..293
|
96
|
+
# :motivo_do_codigo_de_ocorrencia, 294..294
|
97
|
+
|
98
|
+
# :data_credito, 295..300 # data de credito desta liquidacao
|
99
|
+
parse.field :data_credito, 175..180
|
100
|
+
|
101
|
+
# :origem_pagamento, 301..303
|
102
|
+
# :brancos, 304..313
|
103
|
+
# :cheque_bradesco, 314..317
|
104
|
+
# :motivo_rejeicao, 318..327
|
105
|
+
# :brancos, 328..367
|
106
|
+
# :numero_do_cartorio, 368..369
|
107
|
+
# :numero_do_protocolo, 370..379
|
108
|
+
# :brancos, 380..393
|
109
|
+
|
110
|
+
# :numero_sequencial, 394..399 # numero sequencial no arquivo
|
111
|
+
parse.field :sequencial, 394..399
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'parseline'
|
4
|
+
|
5
|
+
module Brcobranca
|
6
|
+
module Retorno
|
7
|
+
module Cnab400
|
8
|
+
# Formato de Retorno CNAB 400
|
9
|
+
# Baseado em: http://download.itau.com.br/bankline/layout_cobranca_400bytes_cnab_itau_mensagem.pdf
|
10
|
+
class Itau < Brcobranca::Retorno::Cnab400::Base
|
11
|
+
extend ParseLine::FixedWidth # Extendendo parseline
|
12
|
+
|
13
|
+
# Load lines
|
14
|
+
def self.load_lines(file, options = {})
|
15
|
+
default_options = { except: [1] } # por padrao ignora a primeira linha que é header
|
16
|
+
options = default_options.merge!(options)
|
17
|
+
super(file, options)
|
18
|
+
end
|
19
|
+
|
20
|
+
fixed_width_layout do |parse|
|
21
|
+
# Todos os campos descritos no documento em ordem
|
22
|
+
# identificacao do registro transacao
|
23
|
+
parse.field :codigo_registro, 0..0
|
24
|
+
# :codigo_de_inscricao, 1..2 # identificacao do tipo de inscrica/empresa
|
25
|
+
# :numero_de_inscricao, 3..16 #numero de inscricao da empresa (cpf/cnpj)
|
26
|
+
|
27
|
+
# :agencia, 17..20 #agencia mantenedora da conta
|
28
|
+
parse.field :agencia_com_dv, 17..20 # FIXME: - SEM DIV
|
29
|
+
|
30
|
+
# :zeros, 21..22 # complemento de registro
|
31
|
+
|
32
|
+
# :conta, 23..27 #numero da conta corrente da empresa
|
33
|
+
# :dac, 28..28 #digito de auto conferencia ag/conta empresa
|
34
|
+
parse.field :cedente_com_dv, 23..28
|
35
|
+
|
36
|
+
# :brancos, 29..36 #complemento de registro
|
37
|
+
# :uso_da_empresa, 37..61 #identificacao do titulo na empresa
|
38
|
+
|
39
|
+
# :nosso_numero,62..69 # identificacao do titulo no banco
|
40
|
+
parse.field :nosso_numero, 62..69
|
41
|
+
|
42
|
+
# :brancos, 70..81 #complemento do registro
|
43
|
+
|
44
|
+
# :carteira, 82..84 #numero da carteira
|
45
|
+
parse.field :carteira_variacao, 82..84
|
46
|
+
|
47
|
+
# :nosso_numero, 85..92 #identificacao do titulo no banco (novamente?)
|
48
|
+
# :dac_nosso_numero, 93..93 #dac nosso numero
|
49
|
+
# :brancos, 94..106 #complemento do registro
|
50
|
+
|
51
|
+
# :carteira, 107..107 #código da carteira
|
52
|
+
parse.field :carteira, 107..107
|
53
|
+
|
54
|
+
parse.field :codigo_ocorrencia, 108..109
|
55
|
+
|
56
|
+
parse.field :data_ocorrencia, 110..115
|
57
|
+
|
58
|
+
# :n_do_documento, 116..125 # n umero do documento de cobranca (dupl, np etc)
|
59
|
+
# :nosso_numero, 126..133 # confirmacao do numero do titulo no banco
|
60
|
+
# :brancos, 134..145 #complemento de registro
|
61
|
+
|
62
|
+
# :vencimento, 146..151 #data de vencimento do titulo (ddmmaa)
|
63
|
+
parse.field :data_vencimento, 146..151
|
64
|
+
|
65
|
+
# :valor_do_titulo, 152..164 #valor nominal do titulo (ultimos 2 digitos, virgula decimal assumida)
|
66
|
+
parse.field :valor_titulo, 152..164
|
67
|
+
|
68
|
+
# :codigo_do_banco, 165..167 # numero do banco na camara de compensacao
|
69
|
+
parse.field :banco_recebedor, 165..167
|
70
|
+
|
71
|
+
# :agencia_cobradora, 168..171 # agencia cobradora, ag de liquidacao ou baixa
|
72
|
+
# :dac_ag_cobradora, 172..172 # dac da agencia cobradora
|
73
|
+
parse.field :agencia_recebedora_com_dv, 168..172
|
74
|
+
|
75
|
+
# :especie, 173..174 # especie do titulo
|
76
|
+
parse.field :especie_documento, 173..174
|
77
|
+
|
78
|
+
# :tarifa_de_cobranca, 175..187 #valor da despesa de cobranca (ultimos 2 digitos, virgula decimal assumida)
|
79
|
+
parse.field :valor_tarifa, 175..187
|
80
|
+
|
81
|
+
# :brancos, 188..213 #complemento do registro
|
82
|
+
|
83
|
+
# :valor_do_iof, 214..226 #valor do iof a ser recolhido (ultimos 2 digitos, virgula decimal assumida)
|
84
|
+
parse.field :iof, 214..226
|
85
|
+
|
86
|
+
# :valor_abatimento, 227..239 #valor do abatimento concedido (ultimos 2 digitos, virgula decimal assumida)
|
87
|
+
parse.field :valor_abatimento, 227..239
|
88
|
+
|
89
|
+
# :descontos, 240..252 #valor do desconto concedido (ultimos 2 digitos, virgula decimal assumida)
|
90
|
+
parse.field :desconto, 240..252
|
91
|
+
|
92
|
+
# :valor_principal, 253..265 #valor lancado em conta corrente (ultimos 2 digitos, virgula decimal assumida)
|
93
|
+
|
94
|
+
parse.field :valor_recebido, 253..265
|
95
|
+
|
96
|
+
# :juros_mora_multa, 266..278 #valor de mora e multa pagos pelo sacado (ultimos 2 digitos, virgula decimal assumida)
|
97
|
+
parse.field :juros_mora, 266..278
|
98
|
+
|
99
|
+
# :outros_creditos, 279..291 #valor de outros creditos (ultimos 2 digitos, virgula decimal assumida)
|
100
|
+
parse.field :outros_recebimento, 279..291
|
101
|
+
|
102
|
+
# :boleto_dda, 292..292 #indicador de boleto dda
|
103
|
+
# :brancos, 293..294 #complemento de registro
|
104
|
+
|
105
|
+
# :data_credito, 295..300 #data de credito desta liquidacao
|
106
|
+
parse.field :data_credito, 295..300
|
107
|
+
|
108
|
+
# :instr_cancelada, 301..304 # codigo da instrucao cancelada
|
109
|
+
# :brancos , 305..310 # complemento de registro
|
110
|
+
# :zeros, 311..323 #complemento de registro
|
111
|
+
# :nome_do_sacado, 324..353, #nome do sacado
|
112
|
+
# :brancos , 354..376 # complemento de registro
|
113
|
+
# :erros_msg, 377..384 #registros rejeitados ou laegacao do sacado ou registro de mensagem informativa
|
114
|
+
# :brancos, 385..391 #complemento de registro
|
115
|
+
# :cod_de_liquidacao, 392..393 #meio pelo qual o título foi liquidado
|
116
|
+
|
117
|
+
parse.field :motivo_ocorrencia, 377..384, lambda { |motivos|
|
118
|
+
motivos.scan(/.{2}/).reject(&:blank?).reject { |motivo| motivo == '00' }
|
119
|
+
}
|
120
|
+
|
121
|
+
# :numero_sequencial, 394..399 #numero sequencial no arquivo
|
122
|
+
parse.field :sequencial, 394..399
|
123
|
+
|
124
|
+
# Campos da classe base que não encontrei a relação com CNAB400
|
125
|
+
# parse.field :tipo_cobranca, 80..80
|
126
|
+
# parse.field :tipo_cobranca_anterior, 81..81
|
127
|
+
# parse.field :natureza_recebimento, 86..87
|
128
|
+
# parse.field :convenio, 31..37
|
129
|
+
# parse.field :comando, 108..109
|
130
|
+
# parse.field :juros_desconto, 201..213
|
131
|
+
# parse.field :iof_desconto, 214..226
|
132
|
+
# parse.field :desconto_concedito, 240..252
|
133
|
+
# parse.field :outras_despesas, 279..291
|
134
|
+
# parse.field :abatimento_nao_aproveitado, 292..304
|
135
|
+
# parse.field :data_liquidacao, 295..300
|
136
|
+
# parse.field :valor_lancamento, 305..317
|
137
|
+
# parse.field :indicativo_lancamento, 318..318
|
138
|
+
# parse.field :indicador_valor, 319..319
|
139
|
+
# parse.field :valor_ajuste, 320..331
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'parseline'
|
4
|
+
|
5
|
+
module Brcobranca
|
6
|
+
module Retorno
|
7
|
+
module Cnab400
|
8
|
+
# Formato de Retorno CNAB 400
|
9
|
+
# Baseado em: http://download.itau.com.br/bankline/layout_cobranca_400bytes_cnab_itau_mensagem.pdf
|
10
|
+
class Santander < Brcobranca::Retorno::Cnab400::Base
|
11
|
+
extend ParseLine::FixedWidth # Extendendo parseline
|
12
|
+
|
13
|
+
# Load lines
|
14
|
+
def self.load_lines(file, options = {})
|
15
|
+
default_options = { except: [1] } # por padrao ignora a primeira linha que é header
|
16
|
+
options = default_options.merge!(options)
|
17
|
+
super(file, options)
|
18
|
+
end
|
19
|
+
|
20
|
+
fixed_width_layout do |parse|
|
21
|
+
# Todos os campos descritos no documento em ordem
|
22
|
+
# identificacao do registro transacao
|
23
|
+
# começa do 0 então contar com +1 as posições
|
24
|
+
parse.field :codigo_registro, 0..0
|
25
|
+
parse.field :agencia_com_dv, 17..20
|
26
|
+
parse.field :cedente_com_dv, 23..28
|
27
|
+
parse.field :nosso_numero, 62..69
|
28
|
+
# parse.field :carteira_variacao, 82..84
|
29
|
+
parse.field :carteira, 107..107
|
30
|
+
parse.field :codigo_ocorrencia, 108..109
|
31
|
+
parse.field :data_ocorrencia, 110..115
|
32
|
+
# identificados na documentação mas não parseados
|
33
|
+
# parse.field :seu_numero, 116..125 seu numero
|
34
|
+
# parse.field :nosso_numero, 126..133 nosso numero denovo?
|
35
|
+
# parse.field :codigo_rejeicao, 134..135 nosso numero
|
36
|
+
parse.field :motivo_ocorrencia, 136..145, lambda { |motivos|
|
37
|
+
motivos.scan(/.{2}/).reject(&:blank?).reject { |motivo| motivo == '00' }
|
38
|
+
}
|
39
|
+
|
40
|
+
parse.field :data_vencimento, 146..151
|
41
|
+
parse.field :valor_titulo, 152..164
|
42
|
+
parse.field :banco_recebedor, 165..167
|
43
|
+
parse.field :agencia_recebedora_com_dv, 168..172
|
44
|
+
parse.field :especie_documento, 173..174
|
45
|
+
parse.field :valor_tarifa, 175..187
|
46
|
+
parse.field :iof, 214..226
|
47
|
+
parse.field :valor_abatimento, 227..239
|
48
|
+
parse.field :desconto, 240..252
|
49
|
+
parse.field :valor_recebido, 253..265
|
50
|
+
parse.field :juros_mora, 266..278
|
51
|
+
parse.field :outros_recebimento, 279..291
|
52
|
+
parse.field :data_credito, 295..300
|
53
|
+
parse.field :sequencial, 394..399
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|