cnab240 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -7,6 +7,15 @@ Esta é uma implementação do Layout Padrão Febraban 240 posições, e algumas
7
7
 
8
8
  Os padrões da febraban são fruto de incompêtencia que ultrapassa os limites do patético. Espero que essa implementação lhe poupe algumas horas de sofrimento.
9
9
 
10
+ Cada banco tem uma visão particular sobre o padrão, os bancos:
11
+
12
+ - Subdividem os campos em outros menores;
13
+ - Trocam o nome e utilidade de campos;
14
+
15
+ Tudo isso para que eu sumisse do Rio de Janeiro e não fizesse a descoberta de seu King Size.
16
+
17
+ Dê um git clone no master do repositório para que voce tenha acesso aos modelos (sem RDoc ainda).
18
+
10
19
 
11
20
  Adicionar mais implementações é simples. Leia os testes. Aos poucos vou adicionando alguma documentação.
12
21
 
@@ -17,6 +26,7 @@ Somente pagamentos. Veja pasta docs/
17
26
 
18
27
  - Layout Padrão FEBRABAN 240 posições V8.6
19
28
  - Layout FEBRABAN 240 posições V4.0 (Itaú - SISDEB)
29
+ - Layout FEBRABAN 240 posições V8.0 (Itaú - SISPAG)
20
30
 
21
31
 
22
32
  ## Instalação
@@ -35,7 +45,7 @@ Ou adicione no seu chiqueiro:
35
45
 
36
46
  ## Como usar
37
47
 
38
- Por enquanto sem muita documentação (veja os testes). Voce vai precisar ler os documentos da pasta docs para se situar, sao muitos campos com nomes bem parecidos. Utilize a documentação dos bancos/febraban como referência.
48
+ Por enquanto sem muita documentação (veja os testes). Você vai precisar ler os documentos da pasta docs para se situar, são muitos campos com nomes bem parecidos. Utilize a documentação dos bancos/febraban como referência.
39
49
 
40
50
 
41
51
  Em algum lugar voce pode criar um arquivo de inicialização (não é obrigatório):
@@ -81,7 +91,7 @@ Ler do arquivo:
81
91
  Voce pode usar os helpers que vao preencher os campos automaticamente, se possivel:
82
92
 
83
93
  ```ruby
84
- pagamento = PagamentoItau.new({
94
+ debito = DebitoItau.new({
85
95
  # header de arquivo
86
96
  :empresa_tipo => '1',
87
97
  :empresa_convenio => '1234',
@@ -94,7 +104,7 @@ Voce pode usar os helpers que vao preencher os campos automaticamente, se possiv
94
104
  :arquivo_sequencia => '1'
95
105
  })
96
106
 
97
- pagamento.add({
107
+ debito.add({
98
108
  # header do lote
99
109
  :empresa_tipo => '2', # tipo empresa creditada
100
110
  :empresa_numero => '999999999999', # cpf cnpj creditado
@@ -119,7 +129,7 @@ Voce pode usar os helpers que vao preencher os campos automaticamente, se possiv
119
129
  :numero_inscricao => '12345678901234' # cpf ou cnpj do debitado
120
130
  })
121
131
 
122
- pagamento.save_to_file("spec/tmp/arquivo_itau.test")
132
+ debito.save_to_file("spec/tmp/arquivo_itau.test")
123
133
  ```
124
134
 
125
135
  ## Considerações
@@ -68,12 +68,24 @@ module Cnab240
68
68
  def find_header_arquivo(line, line_number = -1)
69
69
  arquivos << Cnab240::Arquivo::Arquivo.new
70
70
  case line[RANGE_LAYOUT_ARQUIVO]
71
+ # when '080'
72
+ # arquivos.last.versao = 'V80'
73
+ # arquivos.last.header = Cnab240::V80::Arquivo::Header.read(line)
71
74
  when '085'
72
75
  arquivos.last.versao = 'V86'
73
76
  arquivos.last.header = Cnab240::V86::Arquivo::Header.read(line)
74
77
  when '040'
75
78
  arquivos.last.versao = 'V40'
76
79
  arquivos.last.header = Cnab240::V40::Arquivo::Header.read(line)
80
+ when '000' # possivelmente V80 do itau
81
+ if line[14..16] == '080'
82
+ arquivos.last.versao = 'V80'
83
+ arquivos.last.header = Cnab240::V80::Arquivo::Header.read(line)
84
+ else
85
+ raise "Versao de arquivo nao suportado: #{line[RANGE_LAYOUT_ARQUIVO]} na linha #{line_number}" if Cnab240.fallback == false
86
+ arquivos.last.versao = 'V86'
87
+ arquivos.last.header = Cnab240::V86::Arquivo::Header.read(line)
88
+ end
77
89
  else
78
90
  raise "Versao de arquivo nao suportado: #{line[RANGE_LAYOUT_ARQUIVO]} na linha #{line_number}" if Cnab240.fallback == false
79
91
  arquivos.last.versao = 'V86'
@@ -83,13 +95,35 @@ module Cnab240
83
95
 
84
96
  def find_header_lote(line, line_number = -1)
85
97
  case line[RANGE_HEADER_LOTE]
98
+ when '030'
99
+ case arquivos.last.versao
100
+ when 'V80'
101
+ arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento, :tipo => :none) do |l|
102
+ l.header = Cnab240::V80::Pagamentos::Header.read(line)
103
+ end
104
+ when 'V40'
105
+ arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento, :tipo => :none) do |l|
106
+ l.header = Cnab240::V40::Pagamentos::Header.read(line)
107
+ end
108
+ else
109
+ raise "Header de lote nao suportado para a versao de arquivo."
110
+ end
86
111
  when '044'
87
112
  arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento, :tipo => :none) do |l|
88
113
  l.header = Cnab240::V86::Pagamentos::Header.read(line)
89
114
  end
90
115
  when '040'
91
- arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento_titulo_cobranca, :tipo => :none) do |l|
92
- l.header = Cnab240::V86::PagamentosTitulos::Header.read(line)
116
+ case arquivos.last.versao
117
+ when 'V80'
118
+ arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento, :tipo => :none) do |l|
119
+ l.header = Cnab240::V80::Pagamentos::Header.read(line)
120
+ end
121
+ when 'V86'
122
+ arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento_titulo_cobranca, :tipo => :none) do |l|
123
+ l.header = Cnab240::V86::PagamentosTitulos::Header.read(line)
124
+ end
125
+ else
126
+ raise "Header de lote nao suportado para a versao de arquivo."
93
127
  end
94
128
  when '011'
95
129
  arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento_titulo_tributos, :tipo => :none) do |l|
@@ -1,5 +1,18 @@
1
1
  module Cnab240
2
2
 
3
+ ESTRUTURA_V80 = {
4
+ :segmentos_implementados => [:a],
5
+ :pagamento => {
6
+ :header => Cnab240::V80::Pagamentos::Header,
7
+ :trailer => Cnab240::V80::Pagamentos::Trailer,
8
+ :segmentos => [:a],
9
+ :a => {
10
+ :remessa => true,
11
+ :retorno => true
12
+ }
13
+ }
14
+ }
15
+
3
16
  ESTRUTURA_V40 = {
4
17
  :segmentos_implementados => [:a],
5
18
  :pagamento => {
@@ -78,7 +91,8 @@ module Cnab240
78
91
 
79
92
  ESTRUTURA = {
80
93
  'V40' => ESTRUTURA_V40,
81
- 'V86' => ESTRUTURA_V86,
94
+ 'V80' => ESTRUTURA_V80,
95
+ 'V86' => ESTRUTURA_V86
82
96
  }
83
97
 
84
98
  end
@@ -29,9 +29,7 @@ module Cnab240
29
29
  if tipo != :none
30
30
  estrutura[:segmentos].each do |s|
31
31
  raise "Tipo nao suportado: [#{s}][#{tipo}]" if (estrutura[s][tipo].nil?) && tipo != :any
32
- if (tipo == :any) || (estrutura[s][tipo] == true)
33
- self << s
34
- end
32
+ self << s if (tipo == :any) || (estrutura[s][tipo] == true)
35
33
  end
36
34
  end
37
35
  end
@@ -0,0 +1,38 @@
1
+ module Cnab240::V80::Arquivo
2
+ class Header < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+
6
+ lstring :controle_banco, :length => 3, :pad_byte => '0'
7
+ lstring :controle_lote, :length => 4, :initial_value => '0000', :pad_byte => '0'
8
+ lstring :controle_registro, :length => 1, :initial_value => '0', :pad_byte => '0'
9
+
10
+ string :brancos_1, :length => 6, :initial_value => ' ', :pad_byte => ' '
11
+ string :arquivo_layout, :length => 3, :initial_value => '080'
12
+
13
+ lstring :empresa_tipo, :length => 1, :pad_byte => '0'
14
+ lstring :empresa_numero, :length => 14, :pad_byte => '0'
15
+
16
+ string :brancos_2, :length => 20, :initial_value => ' ', :pad_byte => ' '
17
+
18
+ lstring :empresa_agencia_codigo, :length => 5, :pad_byte => '0'
19
+ string :brancos_3, :length => 1, :initial_value => ' ', :pad_byte => ' '
20
+ lstring :empresa_conta_numero, :length => 12, :pad_byte => '0'
21
+ string :brancos_4, :length => 1, :initial_value => ' ', :pad_byte => ' '
22
+ string :empresa_agencia_conta_dv, :length => 1, :pad_byte => ' '
23
+ string :empresa_nome, :length => 30, :pad_byte => ' '
24
+ string :banco_nome, :length => 30, :pad_byte => ' '
25
+ string :brancos_5, :length => 10, :initial_value => ' ', :pad_byte => ' '
26
+
27
+ lstring :arquivo_codigo, :length => 1, :pad_byte => '0'
28
+ lstring :arquivo_data_geracao, :length => 8, :pad_byte => '0'
29
+ lstring :arquivo_hora_geracao,:length => 6, :pad_byte => '0'
30
+
31
+ string :brancos_6, :length => 9, :initial_value => ' ', :pad_byte => '0'
32
+
33
+ lstring :arquivo_densidade, :length => 5, :pad_byte => '0'
34
+
35
+ string :brancos_7, :length => 69, :pad_byte => ' '
36
+
37
+ end
38
+ end
@@ -0,0 +1,17 @@
1
+ module Cnab240::V80::Arquivo
2
+ class Trailer < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+
6
+ string :controle_banco, :length => 3, :pad_byte => '0'
7
+ string :controle_lote, :length => 4, :initial_value => '9999', :pad_byte => '0'
8
+ string :controle_registro, :length => 1, :initial_value => '9', :pad_byte => '0'
9
+
10
+ string :cnab_g004_1, :length => 9, :pad_byte => ' '
11
+
12
+ lstring :totais_qtde_lotes, :length => 6, :pad_byte => '0'
13
+ lstring :totais_qtde_registros, :length => 6, :pad_byte => '0'
14
+
15
+ string :cnab_g004_2, :length => 211, :pad_byte => ' '
16
+ end
17
+ end
@@ -9,5 +9,13 @@ module Cnab240
9
9
  end
10
10
  end
11
11
 
12
+ def fill!(hash, *objects)
13
+ objects.each do |object|
14
+ hash.each do |k,v|
15
+ object.send("#{k}=", v)
16
+ end
17
+ end
18
+ end
19
+
12
20
  end
13
21
  end
@@ -0,0 +1,56 @@
1
+ module Cnab240
2
+ class DebitoItau
3
+
4
+ include Cnab240::Filler
5
+
6
+ attr_accessor :arquivo
7
+
8
+ def initialize(campos = {})
9
+ @arquivo = Cnab240::Arquivo::Arquivo.new('V40')
10
+ # header e trailer arquivo
11
+ campos[:controle_banco] ||= '341'
12
+ campos[:banco_nome] ||= 'BANCO ITAU'
13
+ campos[:arquivo_codigo] ||= '1'
14
+ campos[:arquivo_data_geracao] ||= Time.now.strftime("%d%m%Y")
15
+ campos[:arquivo_hora_geracao] ||= Time.now.strftime("%H%M")
16
+
17
+ fill campos, arquivo.header, arquivo.trailer
18
+ end
19
+
20
+
21
+ def add(campos = {})
22
+ @arquivo.lotes << lote = Cnab240::Lote.new(:operacao => :pagamento, :tipo => :remessa, :versao => 'V40')
23
+
24
+ campos[:controle_banco] ||= '341'
25
+ campos[:servico_operacao] ||= 'D'
26
+ campos[:servico_tipo] ||= '05'
27
+ campos[:servico_forma] ||= '50'
28
+ campos[:servico_codigo_movimento] ||= '000'
29
+ campos[:servico_numero_registro] ||= '00001'
30
+ campos[:credito_moeda_tipo] ||= 'REA'
31
+ campos[:totais_qtde_registros] ||= '000003'
32
+
33
+ campos[:controle_lote] ||= @arquivo.lotes.length.to_s
34
+
35
+ if campos[:valor]
36
+ campos[:credito_valor_pagamento] ||= campos[:valor]
37
+ end
38
+
39
+ if campos[:data]
40
+ campos[:credito_data_pagamento] ||= campos[:data]
41
+ end
42
+
43
+ fill campos, lote.header, lote.trailer, lote.segmento_a
44
+ end
45
+
46
+ def string
47
+ arquivo.string
48
+ end
49
+
50
+ def save_to_file(filename)
51
+ arquivo.save_to_file(filename)
52
+ end
53
+
54
+ end
55
+
56
+ end
@@ -6,45 +6,39 @@ module Cnab240
6
6
  attr_accessor :arquivo
7
7
 
8
8
  def initialize(campos = {})
9
- @arquivo = Cnab240::Arquivo::Arquivo.new('V40')
9
+ @arquivo = Cnab240::Arquivo::Arquivo.new('V80')
10
10
  # header e trailer arquivo
11
- campos[:controle_banco] = '341'
12
- campos[:banco_nome] = 'BANCO ITAU'
13
- campos[:arquivo_codigo] = '1'
14
- campos[:arquivo_data_geracao] = Time.now.strftime("%d%m%Y")
15
- campos[:arquivo_hora_geracao] = Time.now.strftime("%H%M")
11
+ campos[:controle_banco] ||= '341'
12
+ campos[:arquivo_codigo] ||= '1'
13
+ campos[:banco_nome] ||= 'BANCO ITAU'
14
+ campos[:arquivo_data_geracao] ||= Time.now.strftime("%d%m%Y")
15
+ campos[:arquivo_hora_geracao] ||= Time.now.strftime("%H%M")
16
16
 
17
17
  fill campos, arquivo.header, arquivo.trailer
18
18
  end
19
19
 
20
20
 
21
21
  def add(campos = {})
22
- @arquivo.lotes << lote = Cnab240::Lote.new(:operacao => :pagamento, :tipo => :remessa, :versao => 'V40')
23
-
24
- # header e trailer lote
25
- campos[:controle_banco] = '341'
26
- campos[:servico_operacao] = 'D'
27
- campos[:servico_tipo] = '05'
28
- campos[:servico_forma] = '50'
29
- campos[:servico_codigo_movimento] = '000'
30
- campos[:servico_numero_registro] = '00001'
31
- campos[:credito_moeda_tipo] = 'REA'
32
- campos[:totais_qtde_registros] = '000003'
33
- campos[:favorecido_banco] = '341'
34
-
35
- campos[:controle_lote] = @arquivo.lotes.length.to_s
36
-
37
- if campos[:valor]
38
- campos[:credito_valor_pagamento] = campos[:valor]
39
- campos[:credito_valor_real] = campos[:valor]
40
- end
41
-
42
- if campos[:data]
43
- campos[:credito_data_pagamento] = campos[:data]
44
- campos[:credito_data_real] = campos[:data]
45
- end
46
-
47
- fill campos, lote.header, lote.trailer, lote.segmento_a
22
+ @arquivo.lotes << lote = Cnab240::Lote.new(:operacao => :pagamento, :tipo => :remessa, :versao => 'V80')
23
+
24
+ campos[:header] ||= {}
25
+ campos[:trailer] ||= {}
26
+ campos[:segmento_a] ||= {}
27
+
28
+ campos[:header][:controle_banco] ||= '341'
29
+ campos[:header][:servico_operacao] ||= 'C'
30
+ campos[:header][:controle_lote] ||= @arquivo.lotes.length.to_s
31
+
32
+ campos[:segmento_a][:controle_banco] ||= '341'
33
+ campos[:segmento_a][:controle_lote] ||= @arquivo.lotes.length.to_s
34
+ campos[:segmento_a][:servico_numero_registro] ||= '1'
35
+ campos[:segmento_a][:servico_tipo_movimento] ||= '000'
36
+ campos[:segmento_a][:credito_moeda_tipo] ||= 'REA'
37
+ campos[:trailer][:totais_qtde_registros] ||= '000003'
38
+
39
+ fill! campos[:header], lote.header
40
+ fill! campos[:segmento_a], lote.segmento_a
41
+ fill! campos[:trailer], lote.trailer
48
42
  end
49
43
 
50
44
  def string
@@ -0,0 +1,47 @@
1
+ module Cnab240::V80::Pagamentos
2
+ class Header < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+
6
+ lstring :controle_banco, :length => 3, :pad_byte => '0'
7
+ lstring :controle_lote, :length => 4, :pad_byte => '0'
8
+ lstring :controle_registro, :length => 1, :initial_value => '1', :pad_byte => '0'
9
+
10
+ string :servico_operacao, :length => 1, :initial_value => 'C', :pad_byte => ' '
11
+ lstring :servico_tipo, :length => 2 , :pad_byte => '0'
12
+ lstring :servico_forma, :length => 2, :pad_byte => '0'
13
+ lstring :servico_layout, :length => 3, :initial_value => '040', :pad_byte => '0'
14
+ string :cnab_g004_1, :length => 1, :pad_byte => ' '
15
+
16
+ lstring :empresa_tipo, :length => 1, :pad_byte => '0'
17
+ lstring :empresa_numero, :length => 14, :pad_byte => '0'
18
+ string :identificacao_lancamento, :length => 4, :pad_byte => ' '
19
+ string :brancos_1, :length => 16, :pad_byte => ' '
20
+
21
+ lstring :empresa_agencia_codigo, :length => 5, :pad_byte => '0'
22
+ string :brancos_2, :length => 1, :pad_byte => ' '
23
+ lstring :empresa_conta_numero, :length => 12, :pad_byte => '0'
24
+ string :brancos_3, :length => 1, :pad_byte => ' '
25
+ string :empresa_agencia_conta_dv, :length => 1, :pad_byte => ' '
26
+ string :empresa_nome, :length => 30, :pad_byte => ' '
27
+
28
+ string :finalidade_lote, :length => 30, :pad_byte => ' '
29
+ string :historico_cc, :length => 10, :pad_byte => ' '
30
+
31
+ string :endereco_logradouro, :length => 30, :pad_byte => ' '
32
+ lstring :endereco_numero, :length => 5, :pad_byte => '0'
33
+ string :endereco_complemento, :length => 15, :pad_byte => ' '
34
+ string :endereco_cidade, :length => 20, :pad_byte => ' '
35
+ lstring :endereco_cep, :length => 8, :pad_byte => '0'
36
+ string :endereco_estado, :length => 2, :pad_byte => ' '
37
+
38
+ lstring :brancos_4, :length => 8, :pad_byte => '0'
39
+ string :ocorrencias, :length => 10, :pad_byte => ' '
40
+
41
+ private
42
+
43
+ def auto_fill
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,17 @@
1
+ module Cnab240::V80::Pagamentos
2
+ class Trailer < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+
6
+ lstring :controle_banco, :length => 3, :pad_byte => '0'
7
+ lstring :controle_lote, :length => 4, :pad_byte => '0'
8
+ lstring :controle_registro, :length => 1, :initial_value => '5', :pad_byte => '0'
9
+
10
+ lstring :cnab_g004_1, :length => 9, :pad_byte => '0'
11
+ lstring :totais_qtde_registros, :length => 6, :pad_byte => '0'
12
+ lstring :totais_valor, :length => 18, :pad_byte => '0'
13
+ lstring :zeros, :length => 18, :pad_byte => '0'
14
+ string :cnab_g004_2, :length => 171, :pad_byte => ' '
15
+ string :ocorrencias, :length => 10, :pad_byte => ' '
16
+ end
17
+ end
@@ -0,0 +1,45 @@
1
+ module Cnab240::V80
2
+ class SegmentoA < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ lstring :controle_banco, :length => 3, :pad_byte => '0'
8
+ lstring :controle_lote, :length => 4, :pad_byte => '0'
9
+ string :controle_registro, :length => 1, :initial_value => '3', :pad_byte => '0'
10
+
11
+ lstring :servico_numero_registro, :length => 5, :pad_byte => '0'
12
+ string :servico_codigo_segmento, :length => 1, :initial_value => 'A', :pad_byte => ' '
13
+ lstring :servico_tipo_movimento, :length => 3, :pad_byte => '0'
14
+ lstring :zeros_1, :length => 3, :pad_byte => '0'
15
+
16
+ lstring :favorecido_banco, :length => 3, :pad_byte => '0'
17
+ lstring :favorecido_agencia_conta, :length => 20, :pad_byte => ' '
18
+ string :favorecido_nome, :length => 30, :pad_byte => ' '
19
+ string :credito_seu_numero, :length => 20, :pad_byte => ' '
20
+ lstring :credito_data_pagamento, :length => 8, :pad_byte => '0'
21
+
22
+
23
+ string :credito_moeda_tipo, :length => 3, :pad_byte => ' '
24
+
25
+ lstring :zeros_2, :length => 15, :pad_byte => '0'
26
+ lstring :credito_valor_pagamento, :length => 15, :pad_byte => '0'
27
+ string :credito_nosso_numero, :length => 15, :pad_byte => ' '
28
+ string :brancos_1, :length => 5, :pad_byte => ' '
29
+
30
+ lstring :credito_data_real, :length => 8, :pad_byte => '0'
31
+ lstring :credito_valor_real, :length => 15, :pad_byte => '0'
32
+
33
+ string :finalidade_detalhe, :length => 18, :pad_byte => ' '
34
+ string :brancos_2, :length => 2, :pad_byte => ' '
35
+
36
+ string :numero_documento, :length => 6, :pad_byte => ' '
37
+ string :numero_inscricao, :length => 14, :pad_byte => ' '
38
+ string :codigo_finalidade_complementar, :length => 2, :pad_byte => ' '
39
+ string :finalidade_ted, :length => 5, :pad_byte => ' '
40
+ string :brancos_3, :length => 5, :pad_byte => ' '
41
+ lstring :aviso, :length => 1, :pad_byte => ' '
42
+ string :ocorrencias, :length => 10, :pad_byte => ' '
43
+
44
+ end
45
+ end
@@ -1,4 +1,4 @@
1
1
  module Cnab240
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
4
4
 
data/lib/cnab240.rb CHANGED
@@ -32,14 +32,20 @@ require "cnab240/segmentos/v86/segmento_w"
32
32
  require "cnab240/segmentos/v86/segmento_z"
33
33
 
34
34
  require "cnab240/segmentos/v40/segmento_a"
35
+ require "cnab240/segmentos/v80/segmento_a"
35
36
 
36
37
  require "cnab240/arquivo/arquivo"
37
38
 
39
+ require "cnab240/arquivo/v80/header"
40
+ require "cnab240/arquivo/v80/trailer"
38
41
  require "cnab240/arquivo/v86/header"
39
42
  require "cnab240/arquivo/v86/trailer"
40
43
  require "cnab240/arquivo/v40/header"
41
44
  require "cnab240/arquivo/v40/trailer"
42
45
 
46
+
47
+ require "cnab240/pagamentos/v80/header"
48
+ require "cnab240/pagamentos/v80/trailer"
43
49
  require "cnab240/pagamentos/v86/header"
44
50
  require "cnab240/pagamentos/v86/trailer"
45
51
  require "cnab240/pagamentos/v86/titulos/header"
@@ -53,6 +59,7 @@ require "cnab240/pagamentos/v40/trailer"
53
59
  require "cnab240/arquivo/estrutura"
54
60
  require "cnab240/arquivo/builder"
55
61
 
62
+ require "cnab240/helper/debito_itau"
56
63
  require "cnab240/helper/pagamento_itau"
57
64
 
58
65
 
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+
3
+ describe Cnab240::V80::Arquivo::Header do
4
+
5
+ it "deve ter campos de header" do
6
+ header = Cnab240::V80::Arquivo::Header.new
7
+
8
+ header.should respond_to(:controle_banco)
9
+ header.should respond_to(:controle_lote)
10
+ header.should respond_to(:controle_registro)
11
+
12
+ header.should respond_to(:brancos_1)
13
+ header.should respond_to(:arquivo_layout)
14
+
15
+ header.should respond_to(:empresa_tipo)
16
+ header.should respond_to(:empresa_numero)
17
+
18
+ header.should respond_to(:brancos_2)
19
+
20
+ header.should respond_to(:empresa_agencia_codigo)
21
+ header.should respond_to(:brancos_3)
22
+ header.should respond_to(:empresa_conta_numero)
23
+ header.should respond_to(:brancos_4)
24
+ header.should respond_to(:empresa_agencia_conta_dv)
25
+ header.should respond_to(:empresa_nome)
26
+ header.should respond_to(:banco_nome)
27
+ header.should respond_to(:brancos_5)
28
+
29
+ header.should respond_to(:arquivo_codigo)
30
+ header.should respond_to(:arquivo_data_geracao)
31
+ header.should respond_to(:arquivo_hora_geracao)
32
+
33
+ header.should respond_to(:brancos_6)
34
+
35
+ header.should respond_to(:arquivo_densidade)
36
+
37
+ header.should respond_to(:brancos_7)
38
+ end
39
+
40
+ it "header deve ter 240 caracteres" do
41
+ header = Cnab240::V80::Arquivo::Header.new
42
+ header.linha.length.should be(240)
43
+ end
44
+
45
+ it "conversao deve manter consistencia" do
46
+ header = Cnab240::V80::Arquivo::Header.new
47
+
48
+ header.controle_banco= "8"
49
+ header.controle_lote= "8"
50
+ header.controle_registro= "8"
51
+
52
+
53
+ linha1 = header.linha
54
+
55
+ header2 = Cnab240::V80::Arquivo::Header.read(linha1)
56
+ linha2 = header2.linha
57
+
58
+ linha1.should eq linha2
59
+ end
60
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+
4
+ describe Cnab240::V80::Arquivo::Trailer do
5
+
6
+ it "deve conter campos trailer" do
7
+ header = Cnab240::V80::Arquivo::Trailer.new
8
+
9
+ header.should respond_to(:controle_banco)
10
+ header.should respond_to(:controle_lote)
11
+ header.should respond_to(:controle_registro)
12
+
13
+ header.should respond_to(:cnab_g004_1)
14
+
15
+ header.should respond_to(:totais_qtde_lotes)
16
+ header.should respond_to(:totais_qtde_registros)
17
+
18
+ header.should respond_to(:cnab_g004_2)
19
+ end
20
+
21
+ it "trailer deve ter 240 caracteres" do
22
+ trailer = Cnab240::V80::Arquivo::Trailer.new
23
+ trailer.linha.length.should be(240)
24
+ end
25
+
26
+ end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ include Cnab240
4
+
5
+ describe DebitoItau do
6
+
7
+ it "deve criar debito" do
8
+
9
+ debito = DebitoItau.new({
10
+ # header de arquivo
11
+ :empresa_convenio => '1234',
12
+ :empresa_tipo => '2',
13
+ :empresa_numero => '01234567891234',
14
+ :empresa_nome => 'EMPRESA FULANA',
15
+ :empresa_agencia_codigo => '',
16
+ :empresa_conta_numero => '',
17
+ :empresa_agencia_conta_dv => '',
18
+ :arquivo_sequencia => '1'
19
+ })
20
+
21
+ debito.add({
22
+ # header do lote
23
+ :empresa_tipo => '2', # tipo empresa creditada
24
+ :empresa_numero => '999999999999', # cpf cnpj creditado
25
+ :empresa_convenio => '12345', # convenio junto ao banco
26
+ :empresa_agencia_codigo => '2290', # agencia creditada
27
+ :empresa_conta_numero => '33595', # conta creditada
28
+ :empresa_agencia_conta_dv => '9', # dv conta agencia
29
+ :empresa_nome => 'ZECA URUBU',
30
+ :endereco_logradouro => 'AV BRASIL',
31
+ :endereco_numero => '123',
32
+ :endereco_cidade => 'RIO DE JANEIRO',
33
+ :endereco_cep => '12123412',
34
+ :endereco_estado => 'RJ',
35
+ # segmento a
36
+ :favorecido_agencia_codigo => '1234', # agencia do debitado
37
+ :favorecido_conta_numero => '12345', # conta do debitado
38
+ :favorecido_agencia_conta_dv => '1', # dv agencia e conta
39
+ :favorecido_nome => 'EMPRESA X', # nome do debitado
40
+ :credito_seu_numero => '1234',
41
+ :data => '30122012',
42
+ :valor => '100',
43
+ :numero_inscricao => '12345678901234' # cpf ou cnpj do debitado
44
+ })
45
+
46
+
47
+ debito.arquivo.header.banco_nome.strip.should eq 'BANCO ITAU'
48
+
49
+ debito.save_to_file("spec/tmp/arquivo_itau.test")
50
+
51
+ debito.string
52
+ end
53
+
54
+ end
@@ -20,28 +20,36 @@ describe PagamentoItau do
20
20
  })
21
21
 
22
22
  pagamento.add({
23
- # header do lote
24
- :empresa_tipo => '2', # tipo empresa creditada
25
- :empresa_numero => '999999999999', # cpf cnpj creditado
26
- :empresa_convenio => '12345', # convenio junto ao banco
27
- :empresa_agencia_codigo => '2290', # agencia creditada
28
- :empresa_conta_numero => '33595', # conta creditada
29
- :empresa_agencia_conta_dv => '9', # dv conta agencia
30
- :empresa_nome => 'ZECA URUBU',
31
- :endereco_logradouro => 'AV BRASIL',
32
- :endereco_numero => '123',
33
- :endereco_cidade => 'RIO DE JANEIRO',
34
- :endereco_cep => '12123412',
35
- :endereco_estado => 'RJ',
36
- # segmento a
37
- :favorecido_agencia_codigo => '1234', # agencia do debitado
38
- :favorecido_conta_numero => '12345', # conta do debitado
39
- :favorecido_agencia_conta_dv => '1', # dv agencia e conta
40
- :favorecido_nome => 'EMPRESA X', # nome do debitado
41
- :credito_seu_numero => '1234',
42
- :data => '30122012',
43
- :valor => '100',
44
- :numero_inscricao => '12345678901234' # cpf ou cnpj do debitado
23
+ :header => {
24
+ :empresa_tipo => '2', # tipo empresa creditada
25
+ :empresa_numero => '999999999999', # cpf cnpj creditado
26
+ :empresa_agencia_codigo => '2290', # agencia creditada
27
+ :empresa_conta_numero => '33595', # conta creditada
28
+ :empresa_agencia_conta_dv => '9', # dv conta agencia
29
+ :empresa_nome => 'ZECA URUBU',
30
+ :endereco_logradouro => 'AV BRASIL',
31
+ :endereco_numero => '123',
32
+ :endereco_cidade => 'RIO DE JANEIRO',
33
+ :endereco_cep => '12123412',
34
+ :endereco_estado => 'RJ',
35
+ :servico_tipo => '98', # pagamentos - diversos
36
+ :servico_forma => '03', # doc, ted, etc
37
+ },
38
+
39
+ :trailer => {},
40
+
41
+ :segmento_a => {
42
+ :favorecido_banco => '001',
43
+ :favorecido_agencia_conta => '2290124',
44
+ :credito_seu_numero => '1234',
45
+ :credito_data_pagamento => '31122012',
46
+ :credito_valor_pagamento => '100',
47
+ :numero_inscricao => '12312312312312',
48
+ :favorecido_nome => 'EMPRESA X',
49
+ :credito_seu_numero => '1234',
50
+ :credito_data_pagamento => '30122012',
51
+ :credito_valor_pagamento => '100',
52
+ }
45
53
  })
46
54
 
47
55
 
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe Cnab240::V80::Pagamentos::Header do
4
+
5
+ it "deve conter campos header" do
6
+ header = Cnab240::V80::Pagamentos::Header.new
7
+
8
+ header.should respond_to(:controle_banco)
9
+ header.should respond_to(:controle_banco)
10
+ header.should respond_to(:controle_lote)
11
+ header.should respond_to(:controle_registro)
12
+
13
+ header.should respond_to(:servico_operacao)
14
+ header.should respond_to(:servico_tipo)
15
+ header.should respond_to(:servico_forma)
16
+ header.should respond_to(:servico_layout)
17
+ header.should respond_to(:cnab_g004_1)
18
+
19
+ header.should respond_to(:empresa_tipo)
20
+ header.should respond_to(:empresa_numero)
21
+ header.should respond_to(:identificacao_lancamento)
22
+ header.should respond_to(:brancos_1)
23
+
24
+ header.should respond_to(:empresa_agencia_codigo)
25
+ header.should respond_to(:brancos_2)
26
+ header.should respond_to(:empresa_conta_numero)
27
+ header.should respond_to(:brancos_3)
28
+ header.should respond_to(:empresa_agencia_conta_dv)
29
+ header.should respond_to(:empresa_nome)
30
+
31
+ header.should respond_to(:finalidade_lote)
32
+ header.should respond_to(:historico_cc)
33
+
34
+ header.should respond_to(:endereco_logradouro)
35
+ header.should respond_to(:endereco_numero)
36
+ header.should respond_to(:endereco_complemento)
37
+ header.should respond_to(:endereco_cidade)
38
+ header.should respond_to(:endereco_cep)
39
+ header.should respond_to(:endereco_estado)
40
+
41
+ header.should respond_to(:brancos_4)
42
+ header.should respond_to(:ocorrencias)
43
+
44
+ end
45
+
46
+
47
+ it "header deve ter 240 caracteres" do
48
+ header = Cnab240::V80::Pagamentos::Header.new
49
+ header.linha.length.should be(240)
50
+ end
51
+
52
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Cnab240::Lote do
4
+
5
+ it "deve conter trailer e header" do
6
+ lote = Cnab240::Lote.new(:operacao => :pagamento, :tipo => :remessa, :versao => 'V80')
7
+ lote.header.should be_an_instance_of(Cnab240::V80::Pagamentos::Header)
8
+ lote.trailer.should be_an_instance_of(Cnab240::V80::Pagamentos::Trailer)
9
+ end
10
+
11
+ it "deve conter segmento a" do
12
+ lote = Cnab240::Lote.new(:operacao => :pagamento, :tipo => :remessa, :versao => 'V80')
13
+ lote.segmento_a.should be_an_instance_of(Cnab240::V80::SegmentoA)
14
+ end
15
+
16
+ it "linhas devem ter 240" do
17
+ lote = Cnab240::Lote.new(:operacao => :pagamento, :tipo => :remessa, :versao => 'V80')
18
+ lote.linhas.each do |linha|
19
+ linha.length.should be(240)
20
+ end
21
+ end
22
+
23
+
24
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe Cnab240::V80::Pagamentos::Trailer do
4
+
5
+ it "deve conter campos trailer" do
6
+ trailer = Cnab240::V80::Pagamentos::Trailer.new
7
+
8
+ trailer.should respond_to(:controle_banco)
9
+ trailer.should respond_to(:controle_lote)
10
+ trailer.should respond_to(:controle_registro)
11
+
12
+ trailer.should respond_to(:cnab_g004_1)
13
+
14
+ trailer.should respond_to(:totais_qtde_registros)
15
+ trailer.should respond_to(:totais_valor)
16
+ trailer.should respond_to(:zeros)
17
+
18
+ trailer.should respond_to(:cnab_g004_2)
19
+
20
+ trailer.should respond_to(:ocorrencias)
21
+ end
22
+
23
+ it "trailer deve ter 240 caracteres" do
24
+ trailer = Cnab240::V80::Pagamentos::Trailer.new
25
+ trailer.linha.length.should be(240)
26
+ end
27
+
28
+ end
@@ -0,0 +1,70 @@
1
+ require 'spec_helper'
2
+
3
+ include Cnab240::V80
4
+
5
+ describe Cnab240::V80::SegmentoA do
6
+
7
+ it "deve instanciar segmento" do
8
+ segmento = Cnab240::V80::SegmentoA.new
9
+ segmento.should be_an_instance_of(Cnab240::V80::SegmentoA)
10
+ end
11
+
12
+ it "deve conter campos" do
13
+ segmento = Cnab240::V80::SegmentoA.new
14
+
15
+ segmento.should respond_to(:controle_banco)
16
+
17
+ segmento.should respond_to(:controle_banco)
18
+ segmento.should respond_to(:controle_lote)
19
+ segmento.should respond_to(:controle_registro)
20
+
21
+ segmento.should respond_to(:servico_numero_registro)
22
+ segmento.should respond_to(:servico_codigo_segmento)
23
+ segmento.should respond_to(:servico_tipo_movimento)
24
+ segmento.should respond_to(:zeros_1)
25
+
26
+ segmento.should respond_to(:favorecido_banco)
27
+ segmento.should respond_to(:favorecido_agencia_conta)
28
+ segmento.should respond_to(:favorecido_nome)
29
+ segmento.should respond_to(:credito_seu_numero)
30
+ segmento.should respond_to(:credito_data_pagamento)
31
+
32
+
33
+ segmento.should respond_to(:credito_moeda_tipo)
34
+
35
+ segmento.should respond_to(:zeros_2)
36
+ segmento.should respond_to(:credito_valor_pagamento)
37
+ segmento.should respond_to(:credito_nosso_numero)
38
+ segmento.should respond_to(:brancos_1)
39
+
40
+ segmento.should respond_to(:credito_data_real)
41
+ segmento.should respond_to(:credito_valor_real)
42
+
43
+ segmento.should respond_to(:finalidade_detalhe)
44
+ segmento.should respond_to(:brancos_2)
45
+
46
+ segmento.should respond_to(:numero_documento)
47
+ segmento.should respond_to(:numero_inscricao)
48
+ segmento.should respond_to(:codigo_finalidade_complementar)
49
+ segmento.should respond_to(:finalidade_ted)
50
+ segmento.should respond_to(:brancos_3)
51
+ segmento.should respond_to(:aviso)
52
+ segmento.should respond_to(:ocorrencias)
53
+
54
+ end
55
+
56
+ it "deve ter 240 caracteres" do
57
+ segmento = Cnab240::V80::SegmentoA.new
58
+ segmento.linha.length.should be(240)
59
+ end
60
+
61
+ it "deve manter coesao" do
62
+ c = Cnab240::V80::SegmentoA
63
+ obj = c.new
64
+ linha1 = obj.linha
65
+ obj2 = c.read(linha1)
66
+ linha2 = obj2.linha
67
+ linha1.should eq linha2
68
+ end
69
+
70
+ end
@@ -2,15 +2,15 @@ require 'spec_helper'
2
2
 
3
3
  include Cnab240::V86
4
4
 
5
- describe SegmentoA do
5
+ describe Cnab240::V86::SegmentoA do
6
6
 
7
7
  it "deve instanciar segmento" do
8
- segmento = SegmentoA.new
9
- segmento.should be_an_instance_of(SegmentoA)
8
+ segmento = Cnab240::V86::SegmentoA.new
9
+ segmento.should be_an_instance_of(Cnab240::V86::SegmentoA)
10
10
  end
11
11
 
12
12
  it "deve conter campos" do
13
- segmento = SegmentoA.new
13
+ segmento = Cnab240::V86::SegmentoA.new
14
14
 
15
15
  segmento.should respond_to(:controle_banco)
16
16
  segmento.should respond_to(:controle_lote)
@@ -49,7 +49,7 @@ describe SegmentoA do
49
49
  end
50
50
 
51
51
  it "deve ter 240 caracteres" do
52
- segmento = SegmentoA.new
52
+ segmento = Cnab240::V86::SegmentoA.new
53
53
  segmento.linha.length.should be(240)
54
54
  end
55
55
 
metadata CHANGED
@@ -1,61 +1,55 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: cnab240
3
- version: !ruby/object:Gem::Version
4
- hash: 17
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.8
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 7
10
- version: 0.0.7
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Eduardo Mourao
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-07-23 00:00:00 -04:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
23
- none: false
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- hash: 3
28
- segments:
29
- - 0
30
- version: "0"
31
- requirement: *id001
32
- prerelease: false
12
+ date: 2012-07-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
33
15
  name: rspec
34
- type: :development
35
- - !ruby/object:Gem::Dependency
36
- version_requirements: &id002 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
37
17
  none: false
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- hash: 3
42
- segments:
43
- - 0
44
- version: "0"
45
- requirement: *id002
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
46
23
  prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
47
31
  name: bindata
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
48
38
  type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
49
46
  description: Formato CNAB 240.
50
- email:
47
+ email:
51
48
  - eduardo.a20@gmail.com
52
49
  executables: []
53
-
54
50
  extensions: []
55
-
56
51
  extra_rdoc_files: []
57
-
58
- files:
52
+ files:
59
53
  - .gitignore
60
54
  - .rspec
61
55
  - .travis.yml
@@ -65,6 +59,7 @@ files:
65
59
  - Rakefile
66
60
  - cnab240.gemspec
67
61
  - docs/vendor/febraban/subcpadr12_layout_padrao_V86.pdf
62
+ - docs/vendor/itau/SISPAG_CNAB_240.pdf
68
63
  - docs/vendor/itau/sisdeb_cnab_240.pdf
69
64
  - lib/cnab240.rb
70
65
  - lib/cnab240/arquivo/arquivo.rb
@@ -73,6 +68,8 @@ files:
73
68
  - lib/cnab240/arquivo/lote.rb
74
69
  - lib/cnab240/arquivo/v40/header.rb
75
70
  - lib/cnab240/arquivo/v40/trailer.rb
71
+ - lib/cnab240/arquivo/v80/header.rb
72
+ - lib/cnab240/arquivo/v80/trailer.rb
76
73
  - lib/cnab240/arquivo/v86/header.rb
77
74
  - lib/cnab240/arquivo/v86/trailer.rb
78
75
  - lib/cnab240/ext/attribute_accessors.rb
@@ -81,9 +78,12 @@ files:
81
78
  - lib/cnab240/ext/filler.rb
82
79
  - lib/cnab240/ext/lstring.rb
83
80
  - lib/cnab240/ext/segmento_mixin.rb
81
+ - lib/cnab240/helper/debito_itau.rb
84
82
  - lib/cnab240/helper/pagamento_itau.rb
85
83
  - lib/cnab240/pagamentos/v40/header.rb
86
84
  - lib/cnab240/pagamentos/v40/trailer.rb
85
+ - lib/cnab240/pagamentos/v80/header.rb
86
+ - lib/cnab240/pagamentos/v80/trailer.rb
87
87
  - lib/cnab240/pagamentos/v86/header.rb
88
88
  - lib/cnab240/pagamentos/v86/titulos/header.rb
89
89
  - lib/cnab240/pagamentos/v86/titulos/trailer.rb
@@ -91,6 +91,7 @@ files:
91
91
  - lib/cnab240/pagamentos/v86/tributos/header.rb
92
92
  - lib/cnab240/pagamentos/v86/tributos/trailer.rb
93
93
  - lib/cnab240/segmentos/v40/segmento_a.rb
94
+ - lib/cnab240/segmentos/v80/segmento_a.rb
94
95
  - lib/cnab240/segmentos/v86/segmento_a.rb
95
96
  - lib/cnab240/segmentos/v86/segmento_b.rb
96
97
  - lib/cnab240/segmentos/v86/segmento_c.rb
@@ -113,14 +114,20 @@ files:
113
114
  - spec/arquivo/arquivo_spec.rb
114
115
  - spec/arquivo/v40/header_spec.rb
115
116
  - spec/arquivo/v40/trailer_spec.rb
117
+ - spec/arquivo/v80/header_spec.rb
118
+ - spec/arquivo/v80/trailer_spec.rb
116
119
  - spec/arquivo/v86/header_spec.rb
117
120
  - spec/arquivo/v86/trailer_spec.rb
118
121
  - spec/bindata/bindata_spec.rb
119
122
  - spec/cnab240_spec.rb
123
+ - spec/helper/debito_itau_spec.rb
120
124
  - spec/helper/pagamento_itau_spec.rb
121
125
  - spec/pagamentos/v40/header_spec.rb
122
126
  - spec/pagamentos/v40/lote_spec.rb
123
127
  - spec/pagamentos/v40/trailer_spec.rb
128
+ - spec/pagamentos/v80/header_spec.rb
129
+ - spec/pagamentos/v80/lote_spec.rb
130
+ - spec/pagamentos/v80/trailer_spec.rb
124
131
  - spec/pagamentos/v86/header_spec.rb
125
132
  - spec/pagamentos/v86/lote_spec.rb
126
133
  - spec/pagamentos/v86/titulos/header_spec.rb
@@ -131,6 +138,7 @@ files:
131
138
  - spec/pagamentos/v86/tributos/lote_spec.rb
132
139
  - spec/pagamentos/v86/tributos/trailer_spec.rb
133
140
  - spec/segmentos/v40/segmento_a_spec.rb
141
+ - spec/segmentos/v80/segmento_a_spec.rb
134
142
  - spec/segmentos/v86/segmento_a_spec.rb
135
143
  - spec/segmentos/v86/segmento_b_spec.rb
136
144
  - spec/segmentos/v86/segmento_c_spec.rb
@@ -151,52 +159,54 @@ files:
151
159
  - spec/segmentos/v86/segmento_z_spec.rb
152
160
  - spec/spec_helper.rb
153
161
  - spec/tmp/.gitkeep
154
- has_rdoc: true
155
- homepage: ""
162
+ homepage: ''
156
163
  licenses: []
157
-
158
164
  post_install_message:
159
165
  rdoc_options: []
160
-
161
- require_paths:
166
+ require_paths:
162
167
  - lib
163
- required_ruby_version: !ruby/object:Gem::Requirement
168
+ required_ruby_version: !ruby/object:Gem::Requirement
164
169
  none: false
165
- requirements:
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- hash: 3
169
- segments:
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ segments:
170
175
  - 0
171
- version: "0"
172
- required_rubygems_version: !ruby/object:Gem::Requirement
176
+ hash: 544104447877304933
177
+ required_rubygems_version: !ruby/object:Gem::Requirement
173
178
  none: false
174
- requirements:
175
- - - ">="
176
- - !ruby/object:Gem::Version
177
- hash: 3
178
- segments:
179
+ requirements:
180
+ - - ! '>='
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ segments:
179
184
  - 0
180
- version: "0"
185
+ hash: 544104447877304933
181
186
  requirements: []
182
-
183
187
  rubyforge_project: cnab240
184
- rubygems_version: 1.5.3
188
+ rubygems_version: 1.8.24
185
189
  signing_key:
186
190
  specification_version: 3
187
191
  summary: Formato CNAB 240.
188
- test_files:
192
+ test_files:
189
193
  - spec/arquivo/arquivo_spec.rb
190
194
  - spec/arquivo/v40/header_spec.rb
191
195
  - spec/arquivo/v40/trailer_spec.rb
196
+ - spec/arquivo/v80/header_spec.rb
197
+ - spec/arquivo/v80/trailer_spec.rb
192
198
  - spec/arquivo/v86/header_spec.rb
193
199
  - spec/arquivo/v86/trailer_spec.rb
194
200
  - spec/bindata/bindata_spec.rb
195
201
  - spec/cnab240_spec.rb
202
+ - spec/helper/debito_itau_spec.rb
196
203
  - spec/helper/pagamento_itau_spec.rb
197
204
  - spec/pagamentos/v40/header_spec.rb
198
205
  - spec/pagamentos/v40/lote_spec.rb
199
206
  - spec/pagamentos/v40/trailer_spec.rb
207
+ - spec/pagamentos/v80/header_spec.rb
208
+ - spec/pagamentos/v80/lote_spec.rb
209
+ - spec/pagamentos/v80/trailer_spec.rb
200
210
  - spec/pagamentos/v86/header_spec.rb
201
211
  - spec/pagamentos/v86/lote_spec.rb
202
212
  - spec/pagamentos/v86/titulos/header_spec.rb
@@ -207,6 +217,7 @@ test_files:
207
217
  - spec/pagamentos/v86/tributos/lote_spec.rb
208
218
  - spec/pagamentos/v86/tributos/trailer_spec.rb
209
219
  - spec/segmentos/v40/segmento_a_spec.rb
220
+ - spec/segmentos/v80/segmento_a_spec.rb
210
221
  - spec/segmentos/v86/segmento_a_spec.rb
211
222
  - spec/segmentos/v86/segmento_b_spec.rb
212
223
  - spec/segmentos/v86/segmento_c_spec.rb