cnab 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +10 -2
- data/lib/cnab/definition.rb +2 -0
- data/lib/cnab/exceptions.rb +1 -0
- data/lib/cnab/exceptions/version_not_implemented.rb +9 -0
- data/lib/cnab/version.rb +1 -1
- data/lib/cnab/versions/08.7/trailer_lote.yml +2 -2
- data/lib/cnab/versions/santander/header_arquivo.yml +17 -0
- data/lib/cnab/versions/santander/header_lote.yml +19 -0
- data/lib/cnab/versions/santander/segmento_t.yml +29 -0
- data/lib/cnab/versions/santander/segmento_u.yml +23 -0
- data/lib/cnab/versions/santander/trailer_arquivo.yml +7 -0
- data/lib/cnab/versions/santander/trailer_lote.yml +15 -0
- data/spec/cnab/definition_spec.rb +24 -16
- metadata +11 -4
data/README.md
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/cnab.png)](http://badge.fury.io/rb/cnab) [![Build Status](https://travis-ci.org/zertico/cnab.png)](https://travis-ci.org/zertico/cnab) [![Coverage Status](https://coveralls.io/repos/zertico/cnab/badge.png?branch=master)](https://coveralls.io/r/zertico/cnab) [![Code Climate](https://codeclimate.com/github/zertico/cnab.png)](https://codeclimate.com/github/zertico/cnab)
|
4
4
|
|
5
|
-
Gem used to parse return from Brazil banks in format of cnab files.
|
6
|
-
Right now it has support only for Segmento T and Segmento U.
|
5
|
+
Gem used to parse return from Brazil banks in format of cnab files.
|
6
|
+
Right now it has support only for Segmento T and Segmento U. By default, it will parse based on the version 08.7.
|
7
7
|
|
8
8
|
## Installation
|
9
9
|
|
@@ -33,9 +33,17 @@ If you need to merge the segments T and U, just pass true as the optional parame
|
|
33
33
|
cnab = Cnab.parse('path/to/your/file', true)
|
34
34
|
```
|
35
35
|
|
36
|
+
If you need to parse a cnab file of another version, just pass it as the second optional parameter:
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
cnab = Cnab.parse('path/to/your/file', true, 'santander')
|
40
|
+
```
|
41
|
+
|
36
42
|
## TODO
|
37
43
|
|
38
44
|
* Add support for another type of segments
|
45
|
+
* Add support for another cnab versions
|
46
|
+
* Refactor classes and mix headers and trailers
|
39
47
|
|
40
48
|
## Mantainers
|
41
49
|
[@plribeiro3000](https://github.com/plribeiro3000)
|
data/lib/cnab/definition.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module Cnab
|
2
2
|
class Definition
|
3
3
|
def initialize(version)
|
4
|
+
raise Exceptions::VersionNotImplemented unless File.directory?("lib/cnab/versions/#{version}")
|
5
|
+
|
4
6
|
@header_arquivo = Definitions::HeaderArquivo.new(version)
|
5
7
|
@header_lote = Definitions::HeaderLote.new(version)
|
6
8
|
@segmento_t = Definitions::SegmentoT.new(version)
|
data/lib/cnab/exceptions.rb
CHANGED
@@ -3,5 +3,6 @@ module Cnab
|
|
3
3
|
autoload :NoFileGiven, 'cnab/exceptions/no_file_given'
|
4
4
|
autoload :SegmentNotImplemented, 'cnab/exceptions/segment_not_implemented'
|
5
5
|
autoload :LineNotParseable, 'cnab/exceptions/line_not_parseable'
|
6
|
+
autoload :VersionNotImplemented, 'cnab/exceptions/version_not_implemented'
|
6
7
|
end
|
7
8
|
end
|
data/lib/cnab/version.rb
CHANGED
@@ -6,10 +6,10 @@ qtd_registros: 17..22
|
|
6
6
|
qtd_titulos_simples: 23..28
|
7
7
|
valor_titulos_simples: 29..45
|
8
8
|
qtd_titulos_vinculada: 46..51
|
9
|
-
|
9
|
+
valor_titulos_vinculada: 52..68
|
10
10
|
qtd_titulos_caucionada: 69..74
|
11
11
|
valor_titulos_caucionada: 75..91
|
12
12
|
qtd_titulos_descontada: 92..97
|
13
13
|
valor_titulos_descontada: 98..114
|
14
14
|
num_aviso: 115..122
|
15
|
-
|
15
|
+
res_cnab1: 123..239
|
@@ -0,0 +1,17 @@
|
|
1
|
+
banco: 0..2
|
2
|
+
lote: 3..6
|
3
|
+
registro: 7..7
|
4
|
+
res_banco1: 8..15
|
5
|
+
tipo_empresa: 16..16
|
6
|
+
num_empresa: 17..31
|
7
|
+
cod_transmissao: 32..46
|
8
|
+
res_banco2: 47..71
|
9
|
+
nome_empresa: 72..101
|
10
|
+
nome_banco: 102..131
|
11
|
+
res_banco3: 132..141
|
12
|
+
cod_retorno: 142..142
|
13
|
+
data_geracao_arq: 143..150
|
14
|
+
res_banco4: 151..156
|
15
|
+
sequencia: 157..162
|
16
|
+
versao: 163..165
|
17
|
+
res_banco5: 166..239
|
@@ -0,0 +1,19 @@
|
|
1
|
+
banco: 0..2
|
2
|
+
lote: 3..6
|
3
|
+
registro: 7..7
|
4
|
+
tipo_operacao: 8..8
|
5
|
+
tipo_servico: 9..10
|
6
|
+
res_banco1: 11..12
|
7
|
+
layout_lote: 13..15
|
8
|
+
res_banco2: 16..16
|
9
|
+
tipo_empresa: 17..17
|
10
|
+
num_empresa: 18..32
|
11
|
+
res_banco3: 33..52
|
12
|
+
cod_transmissao: 53..67
|
13
|
+
res_banco4: 68..72
|
14
|
+
nome_empresa: 73..102
|
15
|
+
informacao1: 103..142
|
16
|
+
informacao2: 143..182
|
17
|
+
numero_remessa: 183..190
|
18
|
+
data_gravacao: 191..198
|
19
|
+
res_banco5: 199..239
|
@@ -0,0 +1,29 @@
|
|
1
|
+
banco: 0..2
|
2
|
+
lote: 3..6
|
3
|
+
tipo_registro: 7..7
|
4
|
+
num_registro: 8..12
|
5
|
+
segmento: 13..13
|
6
|
+
res_banco1: 14..14
|
7
|
+
cod_movimentacao: 15..16
|
8
|
+
agencia: 17..20
|
9
|
+
dv_agencia: 21..21
|
10
|
+
conta_corrente: 22..30
|
11
|
+
dv_conta: 31..31
|
12
|
+
res_banco1: 32..39
|
13
|
+
id_titulo: 40..52
|
14
|
+
carteira: 53..53
|
15
|
+
doc_cobranca: 54..68
|
16
|
+
vencimento: 69..76
|
17
|
+
valor_titulo: 77..91
|
18
|
+
banco_recebimento: 92..94
|
19
|
+
ag_recebimento: 95..98
|
20
|
+
dv_ag_recebimento: 99..99
|
21
|
+
id_titulo_empresa: 100..124
|
22
|
+
cod_moeda: 125..126
|
23
|
+
tipo_inscricao: 127..127
|
24
|
+
num_inscricao: 128..142
|
25
|
+
nome: 143..182
|
26
|
+
conta_cobranca: 183..192
|
27
|
+
valor_tarifa: 193..207
|
28
|
+
identificacao: 208..217
|
29
|
+
res_banco2: 218..239
|
@@ -0,0 +1,23 @@
|
|
1
|
+
banco: 0..2
|
2
|
+
lote: 3..6
|
3
|
+
tipo_registro: 7..7
|
4
|
+
num_registro: 8..12
|
5
|
+
segmento: 13..13
|
6
|
+
res_banco1: 14..14
|
7
|
+
cod_movimentacao: 15..16
|
8
|
+
acrescimos: 17..31
|
9
|
+
valor_desconto: 32..46
|
10
|
+
valor_abatimento: 47..61
|
11
|
+
valor_iof: 62..76
|
12
|
+
valor_pago: 77..91
|
13
|
+
valor_liquido: 92..106
|
14
|
+
outras_despesas: 107..121
|
15
|
+
outros_creditos: 122..136
|
16
|
+
data_ocorrencia: 137..144
|
17
|
+
data_credito: 145..152
|
18
|
+
cod_ocorrencia_sacado: 153..156
|
19
|
+
data_ocorrencia_sacado: 157..164
|
20
|
+
valor_ocorrencia_sacado: 165..179
|
21
|
+
compl_ocorrencia_sacado: 180..209
|
22
|
+
cod_banco: 210..212
|
23
|
+
res_banco2: 213..239
|
@@ -0,0 +1,15 @@
|
|
1
|
+
banco: 0..2
|
2
|
+
lote: 3..6
|
3
|
+
registro: 7..7
|
4
|
+
res_banco1: 8..16
|
5
|
+
qtd_registros: 17..22
|
6
|
+
qtd_titulos_simples: 23..28
|
7
|
+
valor_titulos_simples: 29..45
|
8
|
+
qtd_titulos_vinculada: 46..51
|
9
|
+
valor_titulos_vinculada: 52..68
|
10
|
+
qtd_titulos_caucionada: 69..74
|
11
|
+
valor_titulos_caucionada: 75..91
|
12
|
+
qtd_titulos_descontada: 92..97
|
13
|
+
valor_titulos_descontada: 98..114
|
14
|
+
num_aviso: 115..122
|
15
|
+
res_banco1: 123..239
|
@@ -2,28 +2,36 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Cnab::Definition do
|
4
4
|
describe "#initialize" do
|
5
|
-
|
6
|
-
|
5
|
+
context "with a non existent version" do
|
6
|
+
it "should raise and error" do
|
7
|
+
lambda { Cnab::Definition.new("wrong") }.should raise_error(Cnab::Exceptions::VersionNotImplemented)
|
8
|
+
end
|
7
9
|
end
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
|
11
|
+
context "with an existent version" do
|
12
|
+
it "should initialize a header_arquivo instance" do
|
13
|
+
Cnab::Definition.new('08.7').header_arquivo.should be_an_instance_of(Cnab::Definitions::HeaderArquivo)
|
14
|
+
end
|
12
15
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
+
it "should initialize a header_lote instance" do
|
17
|
+
Cnab::Definition.new('08.7').header_lote.should be_an_instance_of(Cnab::Definitions::HeaderLote)
|
18
|
+
end
|
16
19
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
+
it "should initialize a segmento_t instance" do
|
21
|
+
Cnab::Definition.new('08.7').segmento_t.should be_an_instance_of(Cnab::Definitions::SegmentoT)
|
22
|
+
end
|
20
23
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
+
it "should initialize a segmento_u instance" do
|
25
|
+
Cnab::Definition.new('08.7').segmento_u.should be_an_instance_of(Cnab::Definitions::SegmentoU)
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should initialize a trailer_lote instance" do
|
29
|
+
Cnab::Definition.new('08.7').trailer_lote.should be_an_instance_of(Cnab::Definitions::TrailerLote)
|
30
|
+
end
|
24
31
|
|
25
|
-
|
26
|
-
|
32
|
+
it "should initialize a trailer_arquivo instance" do
|
33
|
+
Cnab::Definition.new('08.7').trailer_arquivo.should be_an_instance_of(Cnab::Definitions::TrailerArquivo)
|
34
|
+
end
|
27
35
|
end
|
28
36
|
end
|
29
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cnab
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-04-
|
13
|
+
date: 2013-04-02 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
@@ -94,6 +94,7 @@ files:
|
|
94
94
|
- lib/cnab/exceptions/line_not_parseable.rb
|
95
95
|
- lib/cnab/exceptions/no_file_given.rb
|
96
96
|
- lib/cnab/exceptions/segment_not_implemented.rb
|
97
|
+
- lib/cnab/exceptions/version_not_implemented.rb
|
97
98
|
- lib/cnab/header_arquivo.rb
|
98
99
|
- lib/cnab/header_lote.rb
|
99
100
|
- lib/cnab/header_lote/cobranca.rb
|
@@ -109,6 +110,12 @@ files:
|
|
109
110
|
- lib/cnab/versions/08.7/segmento_u.yml
|
110
111
|
- lib/cnab/versions/08.7/trailer_arquivo.yml
|
111
112
|
- lib/cnab/versions/08.7/trailer_lote.yml
|
113
|
+
- lib/cnab/versions/santander/header_arquivo.yml
|
114
|
+
- lib/cnab/versions/santander/header_lote.yml
|
115
|
+
- lib/cnab/versions/santander/segmento_t.yml
|
116
|
+
- lib/cnab/versions/santander/segmento_u.yml
|
117
|
+
- lib/cnab/versions/santander/trailer_arquivo.yml
|
118
|
+
- lib/cnab/versions/santander/trailer_lote.yml
|
112
119
|
- spec/cnab.txt
|
113
120
|
- spec/cnab/definition_spec.rb
|
114
121
|
- spec/cnab/definitions/header_arquivo_spec.rb
|
@@ -141,7 +148,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
141
148
|
version: '0'
|
142
149
|
segments:
|
143
150
|
- 0
|
144
|
-
hash:
|
151
|
+
hash: -501080544786458903
|
145
152
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
153
|
none: false
|
147
154
|
requirements:
|
@@ -150,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
150
157
|
version: '0'
|
151
158
|
segments:
|
152
159
|
- 0
|
153
|
-
hash:
|
160
|
+
hash: -501080544786458903
|
154
161
|
requirements: []
|
155
162
|
rubyforge_project:
|
156
163
|
rubygems_version: 1.8.25
|