cnab240 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/lib/cnab240/arquivo/arquivo.rb +34 -9
  2. data/lib/cnab240/arquivo/estrutura.rb +1 -0
  3. data/lib/cnab240/arquivo/header.rb +5 -5
  4. data/lib/cnab240/arquivo/lote.rb +15 -4
  5. data/lib/cnab240/arquivo/trailer.rb +2 -2
  6. data/lib/cnab240/{core_ext → ext}/bindata.rb +1 -1
  7. data/lib/cnab240/{core_ext → ext}/default_mixin.rb +1 -0
  8. data/lib/cnab240/ext/segmento_mixin.rb +7 -0
  9. data/lib/cnab240/pagamentos/header.rb +2 -2
  10. data/lib/cnab240/pagamentos/titulos/header.rb +2 -2
  11. data/lib/cnab240/pagamentos/titulos/trailer.rb +1 -1
  12. data/lib/cnab240/pagamentos/trailer.rb +1 -1
  13. data/lib/cnab240/pagamentos/tributos/header.rb +2 -2
  14. data/lib/cnab240/pagamentos/tributos/trailer.rb +1 -1
  15. data/lib/cnab240/segmentos/segmento_a.rb +2 -1
  16. data/lib/cnab240/segmentos/segmento_b.rb +2 -1
  17. data/lib/cnab240/segmentos/segmento_c.rb +2 -1
  18. data/lib/cnab240/segmentos/segmento_j.rb +2 -1
  19. data/lib/cnab240/segmentos/segmento_j52.rb +3 -2
  20. data/lib/cnab240/segmentos/segmento_n.rb +37 -3
  21. data/lib/cnab240/segmentos/segmento_n1.rb +21 -0
  22. data/lib/cnab240/segmentos/segmento_n2.rb +23 -0
  23. data/lib/cnab240/segmentos/segmento_n3.rb +23 -0
  24. data/lib/cnab240/segmentos/segmento_n4.rb +25 -0
  25. data/lib/cnab240/segmentos/segmento_n5.rb +23 -0
  26. data/lib/cnab240/segmentos/segmento_n6.rb +23 -0
  27. data/lib/cnab240/segmentos/segmento_n7.rb +23 -0
  28. data/lib/cnab240/segmentos/segmento_n8.rb +25 -0
  29. data/lib/cnab240/segmentos/segmento_o.rb +2 -1
  30. data/lib/cnab240/segmentos/segmento_w.rb +2 -1
  31. data/lib/cnab240/segmentos/segmento_w1.rb +1 -0
  32. data/lib/cnab240/segmentos/segmento_z.rb +2 -1
  33. data/lib/cnab240/version.rb +1 -1
  34. data/lib/cnab240.rb +12 -3
  35. data/spec/arquivo/arquivo_spec.rb +29 -2
  36. data/spec/arquivo/header_spec.rb +43 -0
  37. data/spec/bindata/bindata_spec.rb +40 -0
  38. data/spec/segmentos/segmento_a_spec.rb +9 -0
  39. data/spec/segmentos/segmento_b_spec.rb +9 -0
  40. data/spec/segmentos/segmento_c_spec.rb +9 -0
  41. data/spec/segmentos/segmento_j52_spec.rb +9 -0
  42. data/spec/segmentos/segmento_j_spec.rb +9 -0
  43. data/spec/segmentos/segmento_n1_spec.rb +43 -0
  44. data/spec/segmentos/segmento_n2_spec.rb +46 -0
  45. data/spec/segmentos/segmento_n3_spec.rb +45 -0
  46. data/spec/segmentos/segmento_n4_spec.rb +47 -0
  47. data/spec/segmentos/segmento_n5_spec.rb +45 -0
  48. data/spec/segmentos/segmento_n6_spec.rb +45 -0
  49. data/spec/segmentos/segmento_n7_spec.rb +46 -0
  50. data/spec/segmentos/segmento_n8_spec.rb +45 -0
  51. data/spec/segmentos/segmento_n_spec.rb +34 -1
  52. data/spec/segmentos/segmento_o_spec.rb +9 -0
  53. data/spec/segmentos/segmento_spec.rb +12 -0
  54. data/spec/segmentos/segmento_w_spec.rb +9 -0
  55. data/spec/segmentos/segmento_z_spec.rb +9 -0
  56. metadata +36 -7
  57. /data/lib/cnab240/{core_ext → ext}/attribute_accessors.rb +0 -0
@@ -42,24 +42,49 @@ module Cnab240::Arquivo
42
42
  line.gsub!("\n", "")
43
43
  line_number = line_number + 1
44
44
  raise "Invalid line length: #{line.length} expected 240 at line number #{line_number}\n\t Line: [#{line}]" unless line.length == 240
45
- case line[7..7] # ruby 1.8.7 requires this fuck
45
+ case line[7..7] # ruby 1.8.7
46
46
  when '0' # header de arquivo
47
47
  arquivos << Arquivo.new
48
48
  arquivos.last.header = Header.read(line)
49
49
  when '1'
50
- # raise NotImplementedError.new("Tipo de registro not implemented")
50
+ case line[13..15]
51
+ when '044'
52
+ arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento, :tipo => :none) do |l|
53
+ l.header = Cnab240::Pagamentos::Header.read(line)
54
+ end
55
+ when '040'
56
+ arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento_titulo_cobranca, :tipo => :none) do |l|
57
+ l.header = Cnab240::PagamentosTitulos::Header.read(line)
58
+ end
59
+ when '011'
60
+ arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento_titulo_tributos, :tipo => :none) do |l|
61
+ l.header = Cnab240::PagamentosTributos::Header.read(line)
62
+ end
63
+ else
64
+ raise "Invalid tipo de lote: #{line[13..15]} at line #{line_number}"
65
+ end
51
66
  when '2'
52
- # raise NotImplementedError.new("Tipo de registro not implemented")
53
- when '3'
54
- # raise NotImplementedError.new("Tipo de registro not implemented")
67
+ raise NotImplementedError.new("Tipo de registro not implemented")
68
+ when '3'
69
+ raise "Invalid segmento de lote: #{line[13..13]} at line #{line_number}" unless ESTRUTURA[:segmentos_implementados].include? line[13..13].downcase.intern
70
+ case line[13..13]
71
+ when 'J'
72
+ if line[17..18] == '52'
73
+ arquivos.last.lotes.last.read_segmento('J52', line)
74
+ else
75
+ arquivos.last.lotes.last.read_segmento('J', line)
76
+ end
77
+ else
78
+ arquivos.last.lotes.last.read_segmento(line[13..13], line)
79
+ end
55
80
  when '4'
56
- # raise NotImplementedError.new("Tipo de registro not implemented")
81
+ raise NotImplementedError.new("Tipo de registro not implemented")
57
82
  when '5'
58
- # raise NotImplementedError.new("Tipo de registro not implemented")
83
+ arquivos.last.lotes.last.trailer.read(line)
59
84
  when '9'
60
- arquivos.last.header = Trailer.read(line)
85
+ arquivos.last.trailer = Trailer.read(line)
61
86
  else
62
- raise "Invalid tipo de registro: #{line[7]} at line #{line_number} \n\t Line: [#{line}]"
87
+ raise "Invalid tipo de registro: #{line[7..7]} at line #{line_number} \n\t Line: [#{line}]"
63
88
  end
64
89
  end
65
90
  arquivos
@@ -1,6 +1,7 @@
1
1
  module Cnab240
2
2
 
3
3
  ESTRUTURA = {
4
+ :segmentos_implementados => [:a, :b, :c, :j, :j52, :o, :n, :w, :z],
4
5
  :pagamento => {
5
6
  :header => Cnab240::Pagamentos::Header,
6
7
  :trailer => Cnab240::Pagamentos::Trailer,
@@ -1,13 +1,13 @@
1
1
  module Cnab240::Arquivo
2
2
  class Header < BinData::Record
3
3
 
4
- include Cnab240::DefaultMixin
4
+ include Cnab240::DefaultMixin
5
5
 
6
6
  string :controle_banco, :length => 3, :pad_byte => '0'
7
- string :controle_lote, :value => '0000'
8
- string :controle_registro, :value => '0'
7
+ string :controle_lote, :length => 4, :initial_value => '0000', :pad_byte => '0'
8
+ string :controle_registro, :length => 1, :initial_value => '0', :pad_byte => '0'
9
9
 
10
- string :cnab_g004_1, :length => 9, :pad_byte => ' '
10
+ string :cnab_g004_1, :length => 9, :initial_value => ' ', :pad_byte => ' '
11
11
 
12
12
  string :empresa_tipo, :length => 1, :pad_byte => '0'
13
13
  string :empresa_numero, :length => 14, :pad_byte => '0'
@@ -27,7 +27,7 @@ module Cnab240::Arquivo
27
27
  string :arquivo_data_geracao, :length => 8, :pad_byte => '0'
28
28
  string :arquivo_hora_geracao,:length => 6, :pad_byte => '0'
29
29
  string :arquivo_sequencia, :length => 6, :pad_byte => '0'
30
- string :arquivo_layout, :value => '085'
30
+ string :arquivo_layout, :length => 3, :initial_value => '085'
31
31
  string :arquivo_densidade, :length => 5, :pad_byte => '0'
32
32
 
33
33
  string :reservado_banco, :length => 20, :pad_byte => ' '
@@ -19,17 +19,28 @@ module Cnab240
19
19
  @header = estrutura[:header].new
20
20
  @trailer = estrutura[:trailer].new
21
21
 
22
- estrutura[:segmentos].each do |s|
23
- raise "Tipo nao suportado: [#{s}][#{tipo}]" if estrutura[s][tipo].nil?
24
- if estrutura[s][tipo] == true
25
- self << s
22
+ yield self if block_given?
23
+
24
+ if tipo != :none
25
+ estrutura[:segmentos].each do |s|
26
+ raise "Tipo nao suportado: [#{s}][#{tipo}]" if (estrutura[s][tipo].nil?) && tipo != :any
27
+ if (tipo == :any) || (estrutura[s][tipo] == true)
28
+ self << s
29
+ end
26
30
  end
27
31
  end
28
32
  end
29
33
 
34
+ def read_segmento(s, line)
35
+ segmento = self << s
36
+ segmentos[s] = segmento.read(line)
37
+ end
38
+
30
39
  def <<(s)
31
40
  segmentos[s] = eval("Segmento#{s.to_s.upcase}.new")
41
+ segmentos[s].lote = self
32
42
  add_segmento_accessors(s)
43
+ segmentos[s]
33
44
  end
34
45
 
35
46
  def linhas
@@ -4,8 +4,8 @@ module Cnab240::Arquivo
4
4
  include Cnab240::DefaultMixin
5
5
 
6
6
  string :controle_banco, :length => 3, :pad_byte => '0'
7
- string :controle_lote, :value => '9999', :pad_byte => '0'
8
- string :controle_registro, :value => '9', :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
9
 
10
10
  string :cnab_g004_1, :length => 9, :pad_byte => ' '
11
11
 
@@ -4,7 +4,7 @@ module BinData
4
4
  self.auto_fill if self.respond_to?(:auto_fill)
5
5
  s = StringIO.new
6
6
  self.write(s)
7
- raise "Invalid line length #{s.string.length}" unless s.string.length == 240
7
+ raise "Invalid line length #{s.string.length}" unless (s.string.length == 240) || self.respond_to?(:lote)
8
8
  s.string
9
9
  end
10
10
  end
@@ -1,5 +1,6 @@
1
1
  module Cnab240
2
2
  module DefaultMixin
3
+
3
4
  def initialize_instance
4
5
  super
5
6
  Cnab240.defaults.each do |k, v|
@@ -0,0 +1,7 @@
1
+ module Cnab240
2
+ module SegmentoMixin
3
+
4
+ attr_accessor :lote
5
+
6
+ end
7
+ end
@@ -7,10 +7,10 @@ module Cnab240::Pagamentos
7
7
  string :controle_lote, :length => 4, :pad_byte => '0'
8
8
  string :controle_registro, :length => 1, :initial_value => '1', :pad_byte => '0'
9
9
 
10
- string :servico_operacao, :value => 'C', :pad_byte => ' '
10
+ string :servico_operacao, :length => 1, :initial_value => 'C', :pad_byte => ' '
11
11
  string :servico_tipo, :length => 2 , :pad_byte => '0'
12
12
  string :servico_forma, :length => 2, :pad_byte => '0'
13
- string :servico_layout, :value => '044', :pad_byte => '0'
13
+ string :servico_layout, :length => 3, :initial_value => '044', :pad_byte => '0'
14
14
 
15
15
  string :cnab_g004_1, :length => 1, :pad_byte => ' '
16
16
 
@@ -7,10 +7,10 @@ module Cnab240::PagamentosTitulos
7
7
  string :controle_lote, :length => 4, :pad_byte => '0'
8
8
  string :controle_registro, :length => 1, :initial_value => '1', :pad_byte => '0'
9
9
 
10
- string :servico_operacao, :value => 'C', :pad_byte => ' '
10
+ string :servico_operacao, :length => 1, :initial_value => 'C', :pad_byte => ' '
11
11
  string :servico_tipo, :length => 2 , :pad_byte => '0'
12
12
  string :servico_forma, :length => 2, :pad_byte => '0'
13
- string :servico_layout, :value => '040', :pad_byte => '0'
13
+ string :servico_layout, :length => 3, :initial_value => '040', :pad_byte => '0'
14
14
 
15
15
  string :cnab_g004_1, :length => 1, :pad_byte => ' '
16
16
 
@@ -5,7 +5,7 @@ module Cnab240::PagamentosTitulos
5
5
 
6
6
  string :controle_banco, :length => 3, :pad_byte => '0'
7
7
  string :controle_lote, :length => 4, :pad_byte => '0'
8
- string :controle_registro, :value => '5', :pad_byte => '0'
8
+ string :controle_registro, :length => 1, :initial_value => '5', :pad_byte => '0'
9
9
 
10
10
  string :cnab_g004_1, :length => 9, :pad_byte => '0'
11
11
  string :totais_qtde_registros, :length => 6, :pad_byte => '0'
@@ -5,7 +5,7 @@ module Cnab240::Pagamentos
5
5
 
6
6
  string :controle_banco, :length => 3, :pad_byte => '0'
7
7
  string :controle_lote, :length => 4, :pad_byte => '0'
8
- string :controle_registro, :value => '5', :pad_byte => '0'
8
+ string :controle_registro, :length => 1, :initial_value => '5', :pad_byte => '0'
9
9
 
10
10
  string :cnab_g004_1, :length => 9, :pad_byte => '0'
11
11
  string :totais_qtde_registros, :length => 6, :pad_byte => '0'
@@ -7,10 +7,10 @@ module Cnab240::PagamentosTributos
7
7
  string :controle_lote, :length => 4, :pad_byte => '0'
8
8
  string :controle_registro, :length => 1, :initial_value => '1', :pad_byte => '0'
9
9
 
10
- string :servico_operacao, :value => 'C', :pad_byte => ' '
10
+ string :servico_operacao, :length => 1, :initial_value => 'C', :pad_byte => ' '
11
11
  string :servico_tipo, :length => 2 , :pad_byte => '0'
12
12
  string :servico_forma, :length => 2, :pad_byte => '0'
13
- string :servico_layout, :value => '011', :pad_byte => '0'
13
+ string :servico_layout, :length => 3, :initial_value => '011', :pad_byte => '0'
14
14
 
15
15
  string :cnab_g004_1, :length => 1, :pad_byte => ' '
16
16
 
@@ -5,7 +5,7 @@ module Cnab240::PagamentosTributos
5
5
 
6
6
  string :controle_banco, :length => 3, :pad_byte => '0'
7
7
  string :controle_lote, :length => 4, :pad_byte => '0'
8
- string :controle_registro, :value => '5', :pad_byte => '0'
8
+ string :controle_registro, :length => 1, :initial_value => '5', :pad_byte => '0'
9
9
 
10
10
  string :cnab_g004_1, :length => 9, :pad_byte => '0'
11
11
  string :totais_qtde_registros, :length => 6, :pad_byte => '0'
@@ -2,13 +2,14 @@ module Cnab240
2
2
  class SegmentoA < BinData::Record
3
3
 
4
4
  include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
5
6
 
6
7
  string :controle_banco, :length => 3, :pad_byte => '0'
7
8
  string :controle_lote, :length => 4, :pad_byte => '0'
8
9
  string :controle_registro, :length => 1, :initial_value => '3', :pad_byte => '0'
9
10
 
10
11
  string :servico_numero_registro, :length => 5, :pad_byte => '0'
11
- string :servico_codigo_segmento, :value => 'A', :pad_byte => ' '
12
+ string :servico_codigo_segmento, :length => 1, :initial_value => 'A', :pad_byte => ' '
12
13
  string :servico_tipo_movimento, :length => 1, :pad_byte => '0'
13
14
  string :servico_codigo_movimento, :length => 2, :pad_byte => '0'
14
15
 
@@ -2,13 +2,14 @@ module Cnab240
2
2
  class SegmentoB < BinData::Record
3
3
 
4
4
  include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
5
6
 
6
7
  string :controle_banco, :length => 3, :pad_byte => '0'
7
8
  string :controle_lote, :length => 4, :pad_byte => '0'
8
9
  string :controle_registro, :length => 1, :initial_value => '3', :pad_byte => '0'
9
10
 
10
11
  string :servico_numero_registro, :length => 5, :pad_byte => '0'
11
- string :servico_codigo_segmento, :value => 'B', :pad_byte => ' '
12
+ string :servico_codigo_segmento, :length => 1, :initial_value => 'B', :pad_byte => ' '
12
13
 
13
14
  string :cnab240_g004_1, :length => 3, :pad_byte => ' '
14
15
 
@@ -2,13 +2,14 @@ module Cnab240
2
2
  class SegmentoC < BinData::Record
3
3
 
4
4
  include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
5
6
 
6
7
  string :controle_banco, :length => 3, :pad_byte => '0'
7
8
  string :controle_lote, :length => 4, :pad_byte => '0'
8
9
  string :controle_registro, :length => 1, :initial_value => '3', :pad_byte => '0'
9
10
 
10
11
  string :servico_numero_registro, :length => 5, :pad_byte => '0'
11
- string :servico_codigo_segmento, :value => 'C', :pad_byte => ' '
12
+ string :servico_codigo_segmento, :length => 1, :initial_value => 'C', :pad_byte => ' '
12
13
 
13
14
  string :cnab240_g004_1, :length => 3, :pad_byte => ' '
14
15
 
@@ -2,13 +2,14 @@ module Cnab240
2
2
  class SegmentoJ < BinData::Record
3
3
 
4
4
  include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
5
6
 
6
7
  string :controle_banco, :length => 3, :pad_byte => '0'
7
8
  string :controle_lote, :length => 4, :pad_byte => '0'
8
9
  string :controle_registro, :length => 1, :initial_value => '3', :pad_byte => '0'
9
10
 
10
11
  string :servico_numero_registro, :length => 5, :pad_byte => '0'
11
- string :servico_codigo_segmento, :value => 'J', :pad_byte => ' '
12
+ string :servico_codigo_segmento, :length => 1, :initial_value => 'J', :pad_byte => ' '
12
13
  string :servico_tipo_movimento, :length => 1, :pad_byte => '0'
13
14
  string :servico_codigo_movimento, :length => 2, :pad_byte => '0'
14
15
 
@@ -2,17 +2,18 @@ module Cnab240
2
2
  class SegmentoJ52 < BinData::Record
3
3
 
4
4
  include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
5
6
 
6
7
  string :controle_banco, :length => 3, :pad_byte => '0'
7
8
  string :controle_lote, :length => 4, :pad_byte => '0'
8
9
  string :controle_registro, :length => 1, :initial_value => '3', :pad_byte => '0'
9
10
 
10
11
  string :servico_numero_registro, :length => 5, :pad_byte => '0'
11
- string :servico_codigo_segmento, :value => 'J', :pad_byte => ' '
12
+ string :servico_codigo_segmento, :length => 1, :initial_value => 'J', :pad_byte => ' '
12
13
  string :servico_tipo_movimento, :length => 1, :pad_byte => '0'
13
14
  string :servico_codigo_movimento, :length => 2, :pad_byte => '0'
14
15
 
15
- string :cod_registro_opcional, :value => '52'
16
+ string :cod_registro_opcional, :length => 2, :initial_value => '52'
16
17
 
17
18
  string :sacado_tipo_inscricao, :length => 1, :pad_byte => '0'
18
19
  string :sacado_numero_inscricao, :length => 15, :pad_byte => '0'
@@ -2,13 +2,14 @@ module Cnab240
2
2
  class SegmentoN < BinData::Record
3
3
 
4
4
  include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
5
6
 
6
7
  string :controle_banco, :length => 3, :pad_byte => '0'
7
8
  string :controle_lote, :length => 4, :pad_byte => '0'
8
9
  string :controle_registro, :length => 1, :initial_value => '3', :pad_byte => '0'
9
10
 
10
11
  string :servico_numero_registro, :length => 5, :pad_byte => '0'
11
- string :servico_codigo_segmento, :value => 'N', :pad_byte => ' '
12
+ string :servico_codigo_segmento, :length => 1, :initial_value => 'N', :pad_byte => ' '
12
13
  string :servico_tipo_movimento, :length => 1, :pad_byte => '0'
13
14
  string :servico_codigo_movimento, :length => 2, :pad_byte => '0'
14
15
 
@@ -18,9 +19,42 @@ module Cnab240
18
19
  string :data_pagamento, :length => 8, :pad_byte => '0'
19
20
  string :valor_pagamento, :length => 15, :pad_byte => '0'
20
21
 
21
- string :informacoes_complementares, :length => 120, :pad_byte => ' '
22
+ # string :informacoes_complementares, :length => 120, :pad_byte => ' '
23
+ choice :n_complemento, :selection => :get_n do
24
+ string 0, :length => 120, :pad_byte => ' '
25
+ segmento_n1 1
26
+ segmento_n1 2
27
+ segmento_n3 3
28
+ segmento_n4 4
29
+ segmento_n5 5
30
+ segmento_n6 6
31
+ segmento_n7 7
32
+ segmento_n8 8
33
+ end
22
34
 
23
- string :ocorrencias, :length => 10, :pad_byte => ' '
35
+ string :ocorrencias, :length => 10, :pad_byte => ' '
36
+
37
+ def get_n
38
+ servico_forma_nX = {
39
+ '00' => 0,
40
+ '17' => 1,
41
+ '16' => 2,
42
+ '18' => 3,
43
+ '22' => 4,
44
+ '23' => 4,
45
+ '24' => 4,
46
+ '25' => 5,
47
+ '27' => 6,
48
+ '26' => 7,
49
+ '21' => 8
50
+ }
51
+ begin
52
+ servico_forma = lote.header.servico_forma
53
+ rescue
54
+ servico_forma = '00'
55
+ end
56
+ return servico_forma_nX[servico_forma]
57
+ end
24
58
 
25
59
  end
26
60
  end
@@ -0,0 +1,21 @@
1
+ module Cnab240
2
+ class SegmentoN1 < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ string :receita, :length => 6, :pad_byte => ' '
8
+ string :tipo_identificacao_contribuinte, :length => 2, :pad_byte => '0'
9
+ string :identificacao_contribuinte, :length => 14, :pad_byte => '0'
10
+ string :identificacao_tributo, :length => 2, :pad_byte => ' '
11
+
12
+ string :mes_ano_competencia, :length => 6, :pad_byte => '0'
13
+ string :valor_tributo, :length => 15, :pad_byte => '0'
14
+ string :valor_outras_entidades, :length => 15, :pad_byte => '0'
15
+ string :atualizacao_monetaria, :length => 15, :pad_byte => '0'
16
+
17
+ string :cnab, :length => 45, :pad_byte => ' '
18
+
19
+
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ module Cnab240
2
+ class SegmentoN2 < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ string :receita, :length => 6, :pad_byte => ' '
8
+ string :tipo_identificacao_contribuinte, :length => 2, :pad_byte => '0'
9
+ string :identificacao_contribuinte, :length => 14, :pad_byte => '0'
10
+ string :identificacao_tributo, :length => 2, :pad_byte => ' '
11
+
12
+ string :periodo_apuracao, :length => 8, :pad_byte => '0'
13
+ string :numero_referencia, :length => 17, :pad_byte => '0'
14
+ string :valor_principal, :length => 15, :pad_byte => '0'
15
+ string :valor_multa, :length => 15, :pad_byte => '0'
16
+ string :valor_juros_encargos, :length => 15, :pad_byte => '0'
17
+ string :data_vencimento, :length => 8, :pad_byte => '0'
18
+
19
+ string :cnab, :length => 18, :pad_byte => ' '
20
+
21
+
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module Cnab240
2
+ class SegmentoN3 < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ string :receita, :length => 6, :pad_byte => ' '
8
+ string :tipo_identificacao_contribuinte, :length => 2, :pad_byte => '0'
9
+ string :identificacao_contribuinte, :length => 14, :pad_byte => '0'
10
+ string :identificacao_tributo, :length => 2, :pad_byte => ' '
11
+
12
+ string :periodo_apuracao, :length => 8, :pad_byte => '0'
13
+ string :receita_bruta, :length => 15, :pad_byte => '0'
14
+ string :percentual, :length => 7, :pad_byte => '0'
15
+ string :valor_principal, :length => 15, :pad_byte => '0'
16
+ string :valor_multa, :length => 15, :pad_byte => '0'
17
+ string :valor_juros_encargos, :length => 15, :pad_byte => '0'
18
+
19
+ string :cnab, :length => 21, :pad_byte => ' '
20
+
21
+
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ module Cnab240
2
+ class SegmentoN4 < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ string :receita, :length => 6, :pad_byte => ' '
8
+ string :tipo_identificacao_contribuinte, :length => 2, :pad_byte => '0'
9
+ string :identificacao_contribuinte, :length => 14, :pad_byte => '0'
10
+ string :identificacao_tributo, :length => 2, :pad_byte => ' '
11
+
12
+ string :vencimento, :length => 8, :pad_byte => '0'
13
+ string :ie_munic_declar, :length => 12, :pad_byte => '0'
14
+ string :divida_ativa_etiqueta, :length => 13, :pad_byte => '0'
15
+ string :periodo_referencia, :length => 6, :pad_byte => '0'
16
+ string :numero_parcela_notificacao, :length => 13, :pad_byte => '0'
17
+ string :valor_receita, :length => 15, :pad_byte => '0'
18
+ string :valor_juros_encargos, :length => 14, :pad_byte => '0'
19
+ string :valor_multa, :length => 14, :pad_byte => '0'
20
+
21
+ string :cnab, :length => 1, :pad_byte => ' '
22
+
23
+
24
+ end
25
+ end
@@ -0,0 +1,23 @@
1
+ module Cnab240
2
+ class SegmentoN5 < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ string :receita, :length => 6, :pad_byte => ' '
8
+ string :tipo_identificacao_contribuinte, :length => 2, :pad_byte => '0'
9
+ string :identificacao_contribuinte, :length => 14, :pad_byte => '0'
10
+ string :identificacao_tributo, :length => 2, :pad_byte => ' '
11
+
12
+ string :exercicio, :length => 4, :pad_byte => '0'
13
+ string :renavam, :length => 9, :pad_byte => '0'
14
+ string :uf, :length => 2, :pad_byte => ' '
15
+ string :municipio, :length => 5, :pad_byte => '0'
16
+ string :placa, :length => 7, :pad_byte => ' '
17
+ string :opcao_pagamento, :length => 1, :pad_byte => ' '
18
+
19
+ string :cnab, :length => 68, :pad_byte => ' '
20
+
21
+
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module Cnab240
2
+ class SegmentoN6 < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ string :receita, :length => 6, :pad_byte => ' '
8
+ string :tipo_identificacao_contribuinte, :length => 2, :pad_byte => '0'
9
+ string :identificacao_contribuinte, :length => 14, :pad_byte => '0'
10
+ string :identificacao_tributo, :length => 2, :pad_byte => ' '
11
+
12
+ string :exercicio, :length => 4, :pad_byte => '0'
13
+ string :renavam, :length => 9, :pad_byte => '0'
14
+ string :uf, :length => 2, :pad_byte => ' '
15
+ string :municipio, :length => 5, :pad_byte => '0'
16
+ string :placa, :length => 7, :pad_byte => ' '
17
+ string :opcao_pagamento, :length => 1, :pad_byte => ' '
18
+
19
+ string :cnab, :length => 68, :pad_byte => ' '
20
+
21
+
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module Cnab240
2
+ class SegmentoN7 < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ string :receita, :length => 6, :pad_byte => ' '
8
+ string :tipo_identificacao_contribuinte, :length => 2, :pad_byte => '0'
9
+ string :identificacao_contribuinte, :length => 14, :pad_byte => '0'
10
+ string :identificacao_tributo, :length => 2, :pad_byte => ' '
11
+
12
+ string :exercicio, :length => 4, :pad_byte => '0'
13
+ string :renavam, :length => 9, :pad_byte => '0'
14
+ string :uf, :length => 2, :pad_byte => ' '
15
+ string :municipio, :length => 5, :pad_byte => '0'
16
+ string :placa, :length => 7, :pad_byte => ' '
17
+ string :opcao_pagamento, :length => 1, :pad_byte => ' '
18
+ string :opcao_retirada, :length => 1, :pad_byte => ' '
19
+ string :cnab, :length => 67, :pad_byte => ' '
20
+
21
+
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ module Cnab240
2
+ class SegmentoN8 < BinData::Record
3
+
4
+ include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
6
+
7
+ string :receita, :length => 6, :pad_byte => ' '
8
+ string :tipo_identificacao_contribuinte, :length => 2, :pad_byte => '0'
9
+ string :identificacao_contribuinte, :length => 14, :pad_byte => '0'
10
+
11
+
12
+ string :ie_munic_declar, :length => 8, :pad_byte => ' '
13
+
14
+ string :origem, :length => 16, :pad_byte => '0'
15
+ string :valor_principal, :length => 15, :pad_byte => '0'
16
+ string :atualizacao_monetaria, :length => 15, :pad_byte => ' '
17
+ string :valor_mora, :length => 15, :pad_byte => '0'
18
+ string :valor_multa, :length => 15, :pad_byte => ' '
19
+ string :data_vencimento, :length => 8, :pad_byte => ' '
20
+ string :periodo_parcela, :length => 6, :pad_byte => ' '
21
+
22
+
23
+
24
+ end
25
+ end
@@ -2,13 +2,14 @@ module Cnab240
2
2
  class SegmentoO < BinData::Record
3
3
 
4
4
  include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
5
6
 
6
7
  string :controle_banco, :length => 3, :pad_byte => '0'
7
8
  string :controle_lote, :length => 4, :pad_byte => '0'
8
9
  string :controle_registro, :length => 1, :initial_value => '3', :pad_byte => '0'
9
10
 
10
11
  string :servico_numero_registro, :length => 5, :pad_byte => '0'
11
- string :servico_codigo_segmento, :value => 'O', :pad_byte => ' '
12
+ string :servico_codigo_segmento, :length => 1, :initial_value => 'O', :pad_byte => ' '
12
13
  string :servico_tipo_movimento, :length => 1, :pad_byte => '0'
13
14
  string :servico_codigo_movimento, :length => 2, :pad_byte => '0'
14
15
 
@@ -2,13 +2,14 @@ module Cnab240
2
2
  class SegmentoW < BinData::Record
3
3
 
4
4
  include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
5
6
 
6
7
  string :controle_banco, :length => 3, :pad_byte => '0'
7
8
  string :controle_lote, :length => 4, :pad_byte => '0'
8
9
  string :controle_registro, :length => 1, :initial_value => '3', :pad_byte => '0'
9
10
 
10
11
  string :servico_numero_registro, :length => 5, :pad_byte => '0'
11
- string :servico_codigo_segmento, :value => 'W', :pad_byte => ' '
12
+ string :servico_codigo_segmento, :length => 1, :initial_value => 'W', :pad_byte => ' '
12
13
  string :complemento, :length => 1, :pad_byte => '0'
13
14
 
14
15
  string :uso_informacoes_1_e_2, :length => 1, :pad_byte => ' '
@@ -2,6 +2,7 @@ module Cnab240
2
2
  class SegmentoW1 < BinData::Record
3
3
 
4
4
  include Cnab240::DefaultMixin
5
+ include Cnab240::SegmentoMixin
5
6
 
6
7
  string :identificador_tributo, :length => 2, :pad_byte => ' '
7
8
  string :receita, :length => 6, :pad_byte => ' '