cnab240 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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