cnab240 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +2 -2
  3. data/cnab240.gemspec +10 -12
  4. data/lib/cnab240.rb +108 -91
  5. data/lib/cnab240/arquivo/arquivo.rb +6 -9
  6. data/lib/cnab240/arquivo/builder.rb +111 -90
  7. data/lib/cnab240/arquivo/estrutura.rb +161 -99
  8. data/lib/cnab240/arquivo/v40/header.rb +27 -29
  9. data/lib/cnab240/arquivo/v40/trailer.rb +8 -10
  10. data/lib/cnab240/arquivo/v60/header.rb +38 -0
  11. data/lib/cnab240/arquivo/v60/trailer.rb +17 -0
  12. data/lib/cnab240/arquivo/v80/header.rb +23 -26
  13. data/lib/cnab240/arquivo/v80/trailer.rb +8 -9
  14. data/lib/cnab240/arquivo/v81/header.rb +37 -0
  15. data/lib/cnab240/arquivo/v81/trailer.rb +17 -0
  16. data/lib/cnab240/arquivo/v83/header.rb +25 -26
  17. data/lib/cnab240/arquivo/v83/trailer.rb +9 -9
  18. data/lib/cnab240/arquivo/v86/header.rb +25 -26
  19. data/lib/cnab240/arquivo/v86/trailer.rb +9 -10
  20. data/lib/cnab240/arquivo/v87/header.rb +25 -26
  21. data/lib/cnab240/arquivo/v87/trailer.rb +9 -10
  22. data/lib/cnab240/ext/attribute_accessors.rb +4 -4
  23. data/lib/cnab240/ext/bindata.rb +4 -4
  24. data/lib/cnab240/ext/default_mixin.rb +2 -4
  25. data/lib/cnab240/ext/filler.rb +1 -3
  26. data/lib/cnab240/ext/lstring.rb +9 -10
  27. data/lib/cnab240/ext/segmento_mixin.rb +1 -3
  28. data/lib/cnab240/helper/boleto_bancoob.rb +60 -0
  29. data/lib/cnab240/helper/helper.rb +1 -1
  30. data/lib/cnab240/helper/pagamento_bb.rb +7 -9
  31. data/lib/cnab240/helper/pagamento_bradesco.rb +6 -8
  32. data/lib/cnab240/helper/pagamento_itau.rb +6 -8
  33. data/lib/cnab240/helper/transferencia_citibank.rb +56 -0
  34. data/lib/cnab240/helper/{pagamento_sicoob.rb → transferencia_sicoob.rb} +8 -15
  35. data/lib/cnab240/{arquivo/lote.rb → lote.rb} +29 -14
  36. data/lib/cnab240/lote/v40/boletos/header.rb +46 -0
  37. data/lib/cnab240/lote/v40/boletos/trailer.rb +29 -0
  38. data/lib/cnab240/pagamentos/v40/header.rb +30 -32
  39. data/lib/cnab240/pagamentos/v40/trailer.rb +10 -11
  40. data/lib/cnab240/pagamentos/v60/header.rb +43 -0
  41. data/lib/cnab240/pagamentos/v60/trailer.rb +17 -0
  42. data/lib/cnab240/pagamentos/v80/header.rb +35 -37
  43. data/lib/cnab240/pagamentos/v80/trailer.rb +10 -11
  44. data/lib/cnab240/pagamentos/v83/header.rb +33 -35
  45. data/lib/cnab240/pagamentos/v83/trailer.rb +11 -12
  46. data/lib/cnab240/pagamentos/v86/header.rb +34 -36
  47. data/lib/cnab240/pagamentos/v86/titulos/header.rb +28 -30
  48. data/lib/cnab240/pagamentos/v86/titulos/trailer.rb +11 -12
  49. data/lib/cnab240/pagamentos/v86/trailer.rb +11 -12
  50. data/lib/cnab240/pagamentos/v86/tributos/header.rb +35 -37
  51. data/lib/cnab240/pagamentos/v86/tributos/trailer.rb +9 -10
  52. data/lib/cnab240/pagamentos/v87/header.rb +34 -36
  53. data/lib/cnab240/pagamentos/v87/titulos/header.rb +28 -30
  54. data/lib/cnab240/pagamentos/v87/titulos/trailer.rb +11 -12
  55. data/lib/cnab240/pagamentos/v87/trailer.rb +11 -12
  56. data/lib/cnab240/pagamentos/v87/tributos/header.rb +35 -37
  57. data/lib/cnab240/pagamentos/v87/tributos/trailer.rb +9 -10
  58. data/lib/cnab240/segmentos/v40/segmento_a.rb +40 -41
  59. data/lib/cnab240/segmentos/v60/segmento_a.rb +43 -0
  60. data/lib/cnab240/segmentos/v60/segmento_b.rb +38 -0
  61. data/lib/cnab240/segmentos/v60/segmento_j.rb +32 -0
  62. data/lib/cnab240/segmentos/v80/agencia_itau.rb +8 -9
  63. data/lib/cnab240/segmentos/v80/agencia_outros.rb +6 -7
  64. data/lib/cnab240/segmentos/v80/segmento_a.rb +30 -32
  65. data/lib/cnab240/segmentos/v81/segmento_p.rb +79 -0
  66. data/lib/cnab240/segmentos/v81/segmento_q.rb +36 -0
  67. data/lib/cnab240/segmentos/v81/segmento_r.rb +49 -0
  68. data/lib/cnab240/segmentos/v81/segmento_s.rb +37 -0
  69. data/lib/cnab240/segmentos/v83/segmento_a.rb +35 -36
  70. data/lib/cnab240/segmentos/v83/segmento_b.rb +33 -34
  71. data/lib/cnab240/segmentos/v83/segmento_j.rb +22 -23
  72. data/lib/cnab240/segmentos/v83/segmento_z.rb +10 -11
  73. data/lib/cnab240/segmentos/v86/segmento_a.rb +37 -38
  74. data/lib/cnab240/segmentos/v86/segmento_b.rb +33 -34
  75. data/lib/cnab240/segmentos/v86/segmento_c.rb +19 -20
  76. data/lib/cnab240/segmentos/v86/segmento_j.rb +22 -23
  77. data/lib/cnab240/segmentos/v86/segmento_j52.rb +19 -20
  78. data/lib/cnab240/segmentos/v86/segmento_n.rb +17 -18
  79. data/lib/cnab240/segmentos/v86/segmento_n1.rb +10 -11
  80. data/lib/cnab240/segmentos/v86/segmento_n2.rb +12 -13
  81. data/lib/cnab240/segmentos/v86/segmento_n3.rb +12 -13
  82. data/lib/cnab240/segmentos/v86/segmento_n4.rb +14 -15
  83. data/lib/cnab240/segmentos/v86/segmento_n5.rb +12 -13
  84. data/lib/cnab240/segmentos/v86/segmento_n6.rb +12 -13
  85. data/lib/cnab240/segmentos/v86/segmento_n7.rb +13 -14
  86. data/lib/cnab240/segmentos/v86/segmento_n8.rb +12 -14
  87. data/lib/cnab240/segmentos/v86/segmento_o.rb +17 -18
  88. data/lib/cnab240/segmentos/v86/segmento_w.rb +12 -13
  89. data/lib/cnab240/segmentos/v86/segmento_w1.rb +9 -10
  90. data/lib/cnab240/segmentos/v86/segmento_z.rb +10 -11
  91. data/lib/cnab240/segmentos/v87/segmento_a.rb +37 -38
  92. data/lib/cnab240/segmentos/v87/segmento_b.rb +33 -34
  93. data/lib/cnab240/segmentos/v87/segmento_c.rb +19 -20
  94. data/lib/cnab240/segmentos/v87/segmento_j.rb +22 -23
  95. data/lib/cnab240/segmentos/v87/segmento_j52.rb +19 -20
  96. data/lib/cnab240/segmentos/v87/segmento_n.rb +17 -18
  97. data/lib/cnab240/segmentos/v87/segmento_n1.rb +10 -11
  98. data/lib/cnab240/segmentos/v87/segmento_n2.rb +12 -13
  99. data/lib/cnab240/segmentos/v87/segmento_n3.rb +12 -13
  100. data/lib/cnab240/segmentos/v87/segmento_n4.rb +14 -15
  101. data/lib/cnab240/segmentos/v87/segmento_n5.rb +12 -13
  102. data/lib/cnab240/segmentos/v87/segmento_n6.rb +12 -13
  103. data/lib/cnab240/segmentos/v87/segmento_n7.rb +13 -14
  104. data/lib/cnab240/segmentos/v87/segmento_n8.rb +12 -14
  105. data/lib/cnab240/segmentos/v87/segmento_o.rb +17 -18
  106. data/lib/cnab240/segmentos/v87/segmento_w.rb +12 -13
  107. data/lib/cnab240/segmentos/v87/segmento_w1.rb +9 -10
  108. data/lib/cnab240/segmentos/v87/segmento_z.rb +10 -11
  109. data/lib/cnab240/version.rb +1 -1
  110. metadata +30 -40
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7abc2f60eafc559fb95f0efd7875b96426b2faf
4
- data.tar.gz: d07c23e2e17044cde19afd54237cd44ce7d0ad3d
3
+ metadata.gz: 5e20d6063cf9ddd42d84cc9c30d79f46f831c3a1
4
+ data.tar.gz: 8c2287101ec6e0f112d62cc428ca6b4d554561cc
5
5
  SHA512:
6
- metadata.gz: a44d8711e5af6c8b68f49c2bb63f8112e9b01a4103c7b53fd825f9f68f8d969af0a99ce97d16331dba6ea30d93081a93ac5ce5151a0c2222163b94034689353c
7
- data.tar.gz: e5c9c0ab4916bee2193c2e330b781df9388dc5421ebbdd02c03bd74ed755e981de60f42aca0ce405e7d21d38b1beb289555804a8c2fb535982e2427d90ab9339
6
+ metadata.gz: 159d6fc3f14d3936e7c10cf014a645a1da3e2c931388d53c99f4b9fa86c54f0eaf73c411408093af279a68ee780bfb5b046b50ffcdef5ef9d7c9fae626a432e8
7
+ data.tar.gz: b1c769c4088dfce5c3151d47a465d8bbb8f1864f31e1150f4dd7ceb243dd43b3c8258a3bce06ec9db21da1c17e557f6b1d6f6f1747ba337619a7ec8e5523a5e0
data/Rakefile CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
2
+ require 'bundler/gem_tasks'
3
3
 
4
4
  require 'rspec/core/rake_task'
5
5
 
6
6
  RSpec::Core::RakeTask.new(:spec)
7
7
 
8
- task :default => :spec
8
+ task default: :spec
@@ -2,22 +2,20 @@
2
2
  require File.expand_path('../lib/cnab240/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
- gem.add_development_dependency "rspec"
6
- gem.add_development_dependency "debugger"
7
- gem.add_dependency "bindata"
5
+ gem.add_dependency 'bindata', '~> 2.2.0'
8
6
 
9
- gem.authors = ["Eduardo Mourao"]
10
- gem.email = ["eduardo.a20@gmail.com"]
11
- gem.description = %q{Formato CNAB 240.}
12
- gem.summary = %q{Formato CNAB 240.}
13
- gem.homepage = ""
7
+ gem.authors = ['Eduardo Mourao (RIP)', 'Kivanio Barbosa']
8
+ gem.email = ['kivanio@gmail.com']
9
+ gem.description = 'Formato CNAB 240.'
10
+ gem.summary = 'Formato CNAB 240.'
11
+ gem.homepage = 'https://github.com/eduardordm/cnab240'
14
12
 
15
- gem.rubyforge_project = "cnab240"
13
+ gem.rubyforge_project = 'cnab240'
16
14
 
17
15
  gem.files = Dir.glob('lib/**/*') + ['Rakefile'] + ['cnab240.gemspec']
18
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
+ gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
19
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
- gem.name = "cnab240"
21
- gem.require_paths = ["lib"]
18
+ gem.name = 'cnab240'
19
+ gem.require_paths = ['lib']
22
20
  gem.version = Cnab240::VERSION
23
21
  end
@@ -1,109 +1,127 @@
1
- require "cnab240/version"
1
+ require 'cnab240/version'
2
2
 
3
3
  require 'bindata'
4
4
 
5
- require "cnab240/ext/attribute_accessors"
6
- require "cnab240/ext/bindata"
7
- require "cnab240/ext/lstring"
8
- require "cnab240/ext/default_mixin"
9
- require "cnab240/ext/segmento_mixin"
10
- require "cnab240/ext/filler"
5
+ require 'cnab240/ext/attribute_accessors'
6
+ require 'cnab240/ext/bindata'
7
+ require 'cnab240/ext/lstring'
8
+ require 'cnab240/ext/default_mixin'
9
+ require 'cnab240/ext/segmento_mixin'
10
+ require 'cnab240/ext/filler'
11
11
 
12
- require "cnab240/arquivo/lote"
12
+ require 'cnab240/lote'
13
+ require 'cnab240/lote/v40/boletos/header'
14
+ require 'cnab240/lote/v40/boletos/trailer'
13
15
 
14
- require "cnab240/segmentos/v83/segmento_a"
15
- require "cnab240/segmentos/v83/segmento_b"
16
- require "cnab240/segmentos/v83/segmento_z"
17
- require "cnab240/segmentos/v83/segmento_j"
18
- require "cnab240/segmentos/v86/segmento_a"
19
- require "cnab240/segmentos/v86/segmento_b"
20
- require "cnab240/segmentos/v86/segmento_c"
21
- require "cnab240/segmentos/v86/segmento_j"
22
- require "cnab240/segmentos/v86/segmento_j52"
23
- require "cnab240/segmentos/v86/segmento_o"
24
- require "cnab240/segmentos/v86/segmento_n8"
25
- require "cnab240/segmentos/v86/segmento_n7"
26
- require "cnab240/segmentos/v86/segmento_n6"
27
- require "cnab240/segmentos/v86/segmento_n5"
28
- require "cnab240/segmentos/v86/segmento_n4"
29
- require "cnab240/segmentos/v86/segmento_n3"
30
- require "cnab240/segmentos/v86/segmento_n2"
31
- require "cnab240/segmentos/v86/segmento_n1"
32
- require "cnab240/segmentos/v86/segmento_n"
33
- require "cnab240/segmentos/v86/segmento_w1"
34
- require "cnab240/segmentos/v86/segmento_w"
35
- require "cnab240/segmentos/v86/segmento_z"
36
- require "cnab240/segmentos/v87/segmento_a"
37
- require "cnab240/segmentos/v87/segmento_b"
38
- require "cnab240/segmentos/v87/segmento_c"
39
- require "cnab240/segmentos/v87/segmento_j"
40
- require "cnab240/segmentos/v87/segmento_j52"
41
- require "cnab240/segmentos/v87/segmento_o"
42
- require "cnab240/segmentos/v87/segmento_n8"
43
- require "cnab240/segmentos/v87/segmento_n7"
44
- require "cnab240/segmentos/v87/segmento_n6"
45
- require "cnab240/segmentos/v87/segmento_n5"
46
- require "cnab240/segmentos/v87/segmento_n4"
47
- require "cnab240/segmentos/v87/segmento_n3"
48
- require "cnab240/segmentos/v87/segmento_n2"
49
- require "cnab240/segmentos/v87/segmento_n1"
50
- require "cnab240/segmentos/v87/segmento_n"
51
- require "cnab240/segmentos/v87/segmento_w1"
52
- require "cnab240/segmentos/v87/segmento_w"
53
- require "cnab240/segmentos/v87/segmento_z"
54
- require "cnab240/segmentos/v80/agencia_itau"
55
- require "cnab240/segmentos/v80/agencia_outros"
56
- require "cnab240/segmentos/v80/segmento_a"
57
- require "cnab240/segmentos/v40/segmento_a"
16
+ require 'cnab240/segmentos/v40/segmento_a'
17
+ require 'cnab240/segmentos/v60/segmento_a'
18
+ require 'cnab240/segmentos/v60/segmento_b'
19
+ require 'cnab240/segmentos/v60/segmento_j'
20
+ require 'cnab240/segmentos/v80/agencia_itau'
21
+ require 'cnab240/segmentos/v80/agencia_outros'
22
+ require 'cnab240/segmentos/v80/segmento_a'
23
+ require 'cnab240/segmentos/v81/segmento_p'
24
+ require 'cnab240/segmentos/v81/segmento_q'
25
+ require 'cnab240/segmentos/v81/segmento_r'
26
+ require 'cnab240/segmentos/v81/segmento_s'
27
+ require 'cnab240/segmentos/v83/segmento_a'
28
+ require 'cnab240/segmentos/v83/segmento_b'
29
+ require 'cnab240/segmentos/v83/segmento_z'
30
+ require 'cnab240/segmentos/v83/segmento_j'
31
+ require 'cnab240/segmentos/v86/segmento_a'
32
+ require 'cnab240/segmentos/v86/segmento_b'
33
+ require 'cnab240/segmentos/v86/segmento_c'
34
+ require 'cnab240/segmentos/v86/segmento_j'
35
+ require 'cnab240/segmentos/v86/segmento_j52'
36
+ require 'cnab240/segmentos/v86/segmento_o'
37
+ require 'cnab240/segmentos/v86/segmento_n8'
38
+ require 'cnab240/segmentos/v86/segmento_n7'
39
+ require 'cnab240/segmentos/v86/segmento_n6'
40
+ require 'cnab240/segmentos/v86/segmento_n5'
41
+ require 'cnab240/segmentos/v86/segmento_n4'
42
+ require 'cnab240/segmentos/v86/segmento_n3'
43
+ require 'cnab240/segmentos/v86/segmento_n2'
44
+ require 'cnab240/segmentos/v86/segmento_n1'
45
+ require 'cnab240/segmentos/v86/segmento_n'
46
+ require 'cnab240/segmentos/v86/segmento_w1'
47
+ require 'cnab240/segmentos/v86/segmento_w'
48
+ require 'cnab240/segmentos/v86/segmento_z'
49
+ require 'cnab240/segmentos/v87/segmento_a'
50
+ require 'cnab240/segmentos/v87/segmento_b'
51
+ require 'cnab240/segmentos/v87/segmento_c'
52
+ require 'cnab240/segmentos/v87/segmento_j'
53
+ require 'cnab240/segmentos/v87/segmento_j52'
54
+ require 'cnab240/segmentos/v87/segmento_o'
55
+ require 'cnab240/segmentos/v87/segmento_n8'
56
+ require 'cnab240/segmentos/v87/segmento_n7'
57
+ require 'cnab240/segmentos/v87/segmento_n6'
58
+ require 'cnab240/segmentos/v87/segmento_n5'
59
+ require 'cnab240/segmentos/v87/segmento_n4'
60
+ require 'cnab240/segmentos/v87/segmento_n3'
61
+ require 'cnab240/segmentos/v87/segmento_n2'
62
+ require 'cnab240/segmentos/v87/segmento_n1'
63
+ require 'cnab240/segmentos/v87/segmento_n'
64
+ require 'cnab240/segmentos/v87/segmento_w1'
65
+ require 'cnab240/segmentos/v87/segmento_w'
66
+ require 'cnab240/segmentos/v87/segmento_z'
58
67
 
59
- require "cnab240/arquivo/arquivo"
68
+ require 'cnab240/arquivo/arquivo'
60
69
 
61
- require "cnab240/arquivo/v80/header"
62
- require "cnab240/arquivo/v80/trailer"
63
- require "cnab240/arquivo/v83/header"
64
- require "cnab240/arquivo/v83/trailer"
65
- require "cnab240/arquivo/v86/header"
66
- require "cnab240/arquivo/v86/trailer"
67
- require "cnab240/arquivo/v40/header"
68
- require "cnab240/arquivo/v40/trailer"
69
- require "cnab240/arquivo/v87/header"
70
- require "cnab240/arquivo/v87/trailer"
70
+ require 'cnab240/arquivo/v80/header'
71
+ require 'cnab240/arquivo/v80/trailer'
72
+ require 'cnab240/arquivo/v81/header'
73
+ require 'cnab240/arquivo/v81/trailer'
74
+ require 'cnab240/arquivo/v83/header'
75
+ require 'cnab240/arquivo/v83/trailer'
76
+ require 'cnab240/arquivo/v86/header'
77
+ require 'cnab240/arquivo/v86/trailer'
78
+ require 'cnab240/arquivo/v40/header'
79
+ require 'cnab240/arquivo/v40/trailer'
80
+ require 'cnab240/arquivo/v87/header'
81
+ require 'cnab240/arquivo/v87/trailer'
82
+ require 'cnab240/arquivo/v60/header'
83
+ require 'cnab240/arquivo/v60/trailer'
71
84
 
72
- require "cnab240/pagamentos/v80/header"
73
- require "cnab240/pagamentos/v80/trailer"
74
- require "cnab240/pagamentos/v83/header"
75
- require "cnab240/pagamentos/v83/trailer"
76
- require "cnab240/pagamentos/v86/header"
77
- require "cnab240/pagamentos/v86/trailer"
78
- require "cnab240/pagamentos/v86/titulos/header"
79
- require "cnab240/pagamentos/v86/titulos/trailer"
80
- require "cnab240/pagamentos/v86/tributos/header"
81
- require "cnab240/pagamentos/v86/tributos/trailer"
82
- require "cnab240/pagamentos/v87/header"
83
- require "cnab240/pagamentos/v87/trailer"
84
- require "cnab240/pagamentos/v87/titulos/header"
85
- require "cnab240/pagamentos/v87/titulos/trailer"
86
- require "cnab240/pagamentos/v87/tributos/header"
87
- require "cnab240/pagamentos/v87/tributos/trailer"
88
- require "cnab240/pagamentos/v40/header"
89
- require "cnab240/pagamentos/v40/trailer"
85
+ require 'cnab240/pagamentos/v80/header'
86
+ require 'cnab240/pagamentos/v80/trailer'
87
+ require 'cnab240/pagamentos/v83/header'
88
+ require 'cnab240/pagamentos/v83/trailer'
89
+ require 'cnab240/pagamentos/v86/header'
90
+ require 'cnab240/pagamentos/v86/trailer'
91
+ require 'cnab240/pagamentos/v86/titulos/header'
92
+ require 'cnab240/pagamentos/v86/titulos/trailer'
93
+ require 'cnab240/pagamentos/v86/tributos/header'
94
+ require 'cnab240/pagamentos/v86/tributos/trailer'
95
+ require 'cnab240/pagamentos/v87/header'
96
+ require 'cnab240/pagamentos/v87/trailer'
97
+ require 'cnab240/pagamentos/v87/titulos/header'
98
+ require 'cnab240/pagamentos/v87/titulos/trailer'
99
+ require 'cnab240/pagamentos/v87/tributos/header'
100
+ require 'cnab240/pagamentos/v87/tributos/trailer'
101
+ require 'cnab240/pagamentos/v40/header'
102
+ require 'cnab240/pagamentos/v40/trailer'
103
+ require 'cnab240/pagamentos/v60/header'
104
+ require 'cnab240/pagamentos/v60/trailer'
90
105
 
91
- require "cnab240/arquivo/estrutura"
92
- require "cnab240/arquivo/builder"
106
+ require 'cnab240/arquivo/estrutura'
107
+ require 'cnab240/arquivo/builder'
93
108
 
94
- require "cnab240/helper/helper"
95
- require "cnab240/helper/pagamento_itau"
96
- require "cnab240/helper/pagamento_bradesco"
97
- require "cnab240/helper/pagamento_bb"
98
- require "cnab240/helper/pagamento_sicoob"
109
+ require 'cnab240/helper/helper'
110
+ require 'cnab240/helper/pagamento_itau'
111
+ require 'cnab240/helper/pagamento_bradesco'
112
+ require 'cnab240/helper/pagamento_bb'
99
113
 
100
- module Cnab240
114
+ require 'cnab240/helper/transferencia_sicoob'
115
+ require 'cnab240/helper/transferencia_citibank'
116
+
117
+ require 'cnab240/helper/boleto_bancoob'
101
118
 
119
+ module Cnab240
102
120
  mod_attr_accessor :defaults
103
121
  @@defaults = {}
104
122
 
105
123
  mod_attr_accessor :fallback
106
- @@fallback = "V86"
124
+ @@fallback = 'V86'
107
125
 
108
126
  mod_attr_accessor :auto_fill_enabled
109
127
  @@auto_fill_enabled = true
@@ -117,5 +135,4 @@ module Cnab240
117
135
  def self.setup
118
136
  yield self
119
137
  end
120
-
121
138
  end
@@ -1,12 +1,11 @@
1
1
  module Cnab240::Arquivo
2
2
  class Arquivo
3
-
4
3
  attr_accessor :header
5
4
  attr_accessor :lotes
6
5
  attr_accessor :trailer
7
6
  attr_accessor :versao
8
7
 
9
- def initialize(versao = "V86")
8
+ def initialize(versao = 'V86')
10
9
  @versao = versao
11
10
  @header = eval("Cnab240::#{versao}::Arquivo::Header").new
12
11
  @trailer = eval("Cnab240::#{versao}::Arquivo::Trailer").new
@@ -14,7 +13,7 @@ module Cnab240::Arquivo
14
13
  end
15
14
 
16
15
  def linhas
17
- self.auto_fill if Cnab240.auto_fill_enabled
16
+ auto_fill if Cnab240.auto_fill_enabled
18
17
  a = []
19
18
  a << @header.linha
20
19
  @lotes.each do |lote|
@@ -32,9 +31,9 @@ module Cnab240::Arquivo
32
31
  end
33
32
 
34
33
  def string
35
- linhas.join("\r\n") << "\r\n"
34
+ linhas.join("\n") << "\n"
36
35
  end
37
-
36
+
38
37
  # Writes +Cnab240::Arquivo::Arquivo+ contents into a +File+, overwriting its current contents.
39
38
  #
40
39
  # @example Save contents to a file.
@@ -46,9 +45,9 @@ module Cnab240::Arquivo
46
45
  #
47
46
  # @since 0.0.20
48
47
  def save_to_file(filename)
49
- File.open(filename, 'w'){|f| f.write(string)}
48
+ File.open(filename, 'w') { |f| f.write(string) }
50
49
  end
51
-
50
+
52
51
  # Loads contents from a +File+ into +Cnab240::Arquivo::Arquivo+ instances.
53
52
  #
54
53
  # @example Load contents from a file.
@@ -84,7 +83,5 @@ module Cnab240::Arquivo
84
83
  qtd_registros += 2 # header e trailer de arquivo
85
84
  trailer.totais_qtde_registros = qtd_registros.to_s
86
85
  end
87
-
88
86
  end
89
-
90
87
  end
@@ -1,6 +1,5 @@
1
1
  module Cnab240
2
2
  class Builder
3
-
4
3
  HEADER_ARQUIVO = '0'
5
4
  HEADER_LOTE = '1'
6
5
  INICIAIS_LOTE = '2'
@@ -27,29 +26,29 @@ module Cnab240
27
26
  check_line_encoding line, ++line_number
28
27
  case line[RANGE_TIPO_REGISTRO]
29
28
 
30
- when HEADER_ARQUIVO
31
- find_header_arquivo line, line_number
29
+ when HEADER_ARQUIVO
30
+ find_header_arquivo line, line_number
32
31
 
33
- when HEADER_LOTE
34
- find_header_lote line, line_number
32
+ when HEADER_LOTE
33
+ find_header_lote line, line_number
35
34
 
36
- when INICIAIS_LOTE
37
- raise NotImplementedError.new("Tipo de registro nao suportado")
35
+ when INICIAIS_LOTE
36
+ fail NotImplementedError.new('Tipo de registro nao suportado')
38
37
 
39
- when DETALHE
40
- find_segmento line, line_number
38
+ when DETALHE
39
+ find_segmento line, line_number
41
40
 
42
- when FINAIS_LOTE
43
- raise NotImplementedError.new("Tipo de registro not implemented")
41
+ when FINAIS_LOTE
42
+ fail NotImplementedError.new('Tipo de registro not implemented')
44
43
 
45
- when TRAILER_LOTE
46
- arquivos.last.lotes.last.trailer.read(line)
44
+ when TRAILER_LOTE
45
+ arquivos.last.lotes.last.trailer.read(line)
47
46
 
48
- when TRAILER_ARQUIVO
49
- arquivos.last.trailer.read(line)
47
+ when TRAILER_ARQUIVO
48
+ arquivos.last.trailer.read(line)
50
49
 
51
- else
52
- raise "Invalid tipo de registro: #{line[RANGE_TIPO_REGISTRO]} at line #{line_number} \n\t Line: [#{line}]"
50
+ else
51
+ fail "Invalid tipo de registro: #{line[RANGE_TIPO_REGISTRO]} at line #{line_number} \n\t Line: [#{line}]"
53
52
  end
54
53
  end
55
54
  arquivos
@@ -58,107 +57,129 @@ module Cnab240
58
57
  private
59
58
 
60
59
  def check_line_encoding(line, line_number = -1)
61
- line = line.force_encoding("US-ASCII").encode("UTF-8", :invalid => :replace) if line.respond_to?(:force_encoding)
62
- line.gsub!("\r", "")
63
- line.gsub!("\n", "")
64
- raise "Invalid line length: #{line.length} expected 240 at line number #{line_number}\n\t Line: [#{line}]" unless line.length == 240
60
+ line = line.force_encoding('US-ASCII').encode('UTF-8', invalid: :replace) if line.respond_to?(:force_encoding)
61
+ line.gsub!("\r", '')
62
+ line.gsub!("\n", '')
63
+ fail "Invalid line length: #{line.length} expected 240 at line number #{line_number}\n\t Line: [#{line}]" unless line.length == 240
65
64
  line
66
65
  end
67
66
 
68
67
  def find_header_arquivo(line, line_number = -1)
69
68
  arquivos << Cnab240::Arquivo::Arquivo.new
70
69
  case line[RANGE_LAYOUT_ARQUIVO]
71
- when '087'
72
- arquivos.last.versao = 'V87'
73
- arquivos.last.header = Cnab240::V87::Arquivo::Header.read(line)
74
- when '085'
75
- arquivos.last.versao = 'V86'
76
- arquivos.last.header = Cnab240::V86::Arquivo::Header.read(line)
77
- when '040'
78
- arquivos.last.versao = 'V40'
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
70
+ when '087'
71
+ arquivos.last.versao = 'V87'
72
+ arquivos.last.header = Cnab240::V87::Arquivo::Header.read(line)
73
+ when '085'
74
+ arquivos.last.versao = 'V86'
75
+ arquivos.last.header = Cnab240::V86::Arquivo::Header.read(line)
76
+ when '081'
77
+ arquivos.last.versao = 'V81'
78
+ arquivos.last.header = Cnab240::V81::Arquivo::Header.read(line)
79
+ when '040'
80
+ arquivos.last.versao = 'V40'
81
+ arquivos.last.header = Cnab240::V40::Arquivo::Header.read(line)
82
+ when '060'
83
+ arquivos.last.versao = 'V60'
84
+ arquivos.last.header = Cnab240::V60::Arquivo::Header.read(line)
85
+ when '000' # possivelmente V80 do itau
86
+ if line[14..16] == '080'
87
+ arquivos.last.versao = 'V80'
88
+ arquivos.last.header = Cnab240::V80::Arquivo::Header.read(line)
89
89
  else
90
- raise "Versao de arquivo nao suportado: #{line[RANGE_LAYOUT_ARQUIVO]} na linha #{line_number}" if Cnab240.fallback == false
90
+ fail "Versao de arquivo nao suportado: #{line[RANGE_LAYOUT_ARQUIVO]} na linha #{line_number}" if Cnab240.fallback == false
91
91
  arquivos.last.versao = 'V86'
92
92
  arquivos.last.header = Cnab240::V86::Arquivo::Header.read(line)
93
+ end
94
+ else
95
+ fail "Versao de arquivo nao suportado: #{line[RANGE_LAYOUT_ARQUIVO]} na linha #{line_number}" if Cnab240.fallback == false
96
+ arquivos.last.versao = 'V86'
97
+ arquivos.last.header = Cnab240::V86::Arquivo::Header.read(line)
93
98
  end
94
99
  end
95
100
 
96
101
  def find_header_lote(line, line_number = -1)
97
102
  case line[RANGE_HEADER_LOTE]
98
- when '080'
99
- arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento, :tipo => :none, :versao => 'V80') do |l|
103
+ when '080'
104
+ arquivos.last.lotes << Cnab240::Lote.new(operacao: :pagamento, tipo: :none, versao: 'V80') do |l|
105
+ l.header = Cnab240::V80::Pagamentos::Header.read(line)
106
+ end
107
+ when '030'
108
+ case arquivos.last.versao
109
+ when 'V80'
110
+ arquivos.last.lotes << Cnab240::Lote.new(operacao: :pagamento, tipo: :none) do |l|
100
111
  l.header = Cnab240::V80::Pagamentos::Header.read(line)
101
112
  end
102
- when '030'
103
- case arquivos.last.versao
104
- when 'V80'
105
- arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento, :tipo => :none) do |l|
106
- l.header = Cnab240::V80::Pagamentos::Header.read(line)
107
- end
108
- when 'V40'
109
- arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento, :tipo => :none) do |l|
110
- l.header = Cnab240::V40::Pagamentos::Header.read(line)
111
- end
112
- else
113
- raise "Header de lote nao suportado para a versao de arquivo."
113
+ when 'V40'
114
+ arquivos.last.lotes << Cnab240::Lote.new(operacao: :pagamento, tipo: :none) do |l|
115
+ l.header = Cnab240::V40::Pagamentos::Header.read(line)
114
116
  end
115
- when '045'
116
- arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento, :tipo => :none) do |l|
117
- l.header = Cnab240::V87::Pagamentos::Header.read(line)
117
+ else
118
+ fail 'Header de lote nao suportado para a versao de arquivo.'
119
+ end
120
+ when '031'
121
+ case arquivos.last.versao
122
+ when 'V60'
123
+ arquivos.last.lotes << Cnab240::Lote.new(operacao: :pagamento, tipo: :none) do |l|
124
+ l.header = Cnab240::V60::Pagamentos::Header.read(line)
118
125
  end
119
- when '044'
120
- arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento, :tipo => :none) do |l|
121
- l.header = Cnab240::V86::Pagamentos::Header.read(line)
126
+ when 'V83'
127
+ arquivos.last.lotes << Cnab240::Lote.new(operacao: :pagamento, tipo: :none) do |l|
128
+ l.header = Cnab240::V83::Pagamentos::Header.read(line)
122
129
  end
123
- when '040'
124
- case arquivos.last.versao
125
- when 'V80'
126
- arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento, :tipo => :none) do |l|
127
- l.header = Cnab240::V80::Pagamentos::Header.read(line)
128
- end
129
- when 'V86'
130
- arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento_titulo_cobranca, :tipo => :none) do |l|
131
- l.header = Cnab240::V86::PagamentosTitulos::Header.read(line)
132
- end
133
- when 'V87'
134
- arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento_titulo_cobranca, :tipo => :none) do |l|
135
- l.header = Cnab240::V87::PagamentosTitulos::Header.read(line)
136
- end
137
- else
138
- raise "Header de lote nao suportado para a versao de arquivo."
130
+ else
131
+ fail 'Header de lote nao suportado para a versao de arquivo.'
132
+ end
133
+ when '045'
134
+ arquivos.last.lotes << Cnab240::Lote.new(operacao: :pagamento, tipo: :none) do |l|
135
+ l.header = Cnab240::V87::Pagamentos::Header.read(line)
136
+ end
137
+ when '044'
138
+ arquivos.last.lotes << Cnab240::Lote.new(operacao: :pagamento, tipo: :none) do |l|
139
+ l.header = Cnab240::V86::Pagamentos::Header.read(line)
140
+ end
141
+ when '040'
142
+ case arquivos.last.versao
143
+ when 'V80'
144
+ arquivos.last.lotes << Cnab240::Lote.new(operacao: :pagamento, tipo: :none) do |l|
145
+ l.header = Cnab240::V80::Pagamentos::Header.read(line)
146
+ end
147
+ when 'V81'
148
+ arquivos.last.lotes << Cnab240::Lote.new(operacao: :boleto, tipo: :none, versao: 'V81') do |l|
149
+ l.header = Cnab240::Lote::V40::Boletos::Header.read(line)
150
+ end
151
+ when 'V86'
152
+ arquivos.last.lotes << Cnab240::Lote.new(operacao: :pagamento_titulo_cobranca, tipo: :none) do |l|
153
+ l.header = Cnab240::V86::PagamentosTitulos::Header.read(line)
139
154
  end
140
- when '011'
141
- arquivos.last.lotes << Cnab240::Lote.new(:operacao => :pagamento_titulo_tributos, :tipo => :none) do |l|
142
- l.header = Cnab240::V86::PagamentosTributos::Header.read(line)
155
+ when 'V87'
156
+ arquivos.last.lotes << Cnab240::Lote.new(operacao: :pagamento_titulo_cobranca, tipo: :none) do |l|
157
+ l.header = Cnab240::V87::PagamentosTitulos::Header.read(line)
143
158
  end
144
159
  else
145
- raise "Tipo de lote nao suportado: #{line[RANGE_HEADER_LOTE]} na linha #{line_number}"
160
+ fail 'Header de lote nao suportado para a versao de arquivo.'
161
+ end
162
+ when '011'
163
+ arquivos.last.lotes << Cnab240::Lote.new(operacao: :pagamento_titulo_tributos, tipo: :none) do |l|
164
+ l.header = Cnab240::V86::PagamentosTributos::Header.read(line)
165
+ end
166
+ else
167
+ fail "Tipo de lote nao suportado: #{line[RANGE_HEADER_LOTE]} na linha #{line_number}"
146
168
  end
147
169
  end
148
170
 
149
171
  def find_segmento(line, line_number = -1)
150
- raise "Invalid segmento de lote: #{line[RANGE_TIPO_OPERACAO_DETALHE]} at line #{line_number}" unless ESTRUTURA[arquivos.last.versao][:segmentos_implementados].include? line[RANGE_TIPO_OPERACAO_DETALHE].downcase.intern
172
+ fail "Invalid segmento de lote: #{line[RANGE_TIPO_OPERACAO_DETALHE]} at line #{line_number} in version #{arquivos.last.versao}" unless ESTRUTURA[arquivos.last.versao][:segmentos_implementados].include? line[RANGE_TIPO_OPERACAO_DETALHE].downcase.intern
151
173
  case line[RANGE_TIPO_OPERACAO_DETALHE]
152
- when 'J'
153
- if line[17..18] == '52'
154
- arquivos.last.lotes.last.read_segmento('J52', line)
155
- else
156
- arquivos.last.lotes.last.read_segmento('J', line)
157
- end
174
+ when 'J'
175
+ if line[17..18] == '52'
176
+ arquivos.last.lotes.last.read_segmento('J52', line)
158
177
  else
159
- arquivos.last.lotes.last.read_segmento(line[RANGE_TIPO_OPERACAO_DETALHE], line)
178
+ arquivos.last.lotes.last.read_segmento('J', line)
179
+ end
180
+ else
181
+ arquivos.last.lotes.last.read_segmento(line[RANGE_TIPO_OPERACAO_DETALHE], line)
160
182
  end
161
183
  end
162
-
163
184
  end
164
- end
185
+ end