formatos-febraban 0.2.24 → 0.2.25

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 99df663aea7aa001ffb625d3cb95cdef80c2363d
4
- data.tar.gz: 22276c19bbf7b7265f274a7e216fd21cdf52d8e4
3
+ metadata.gz: e0dfe4df7c2f0b4704b79a7da9e5c711913d9e6e
4
+ data.tar.gz: 1f338f19f0520664f7f9ab530c19340442dffa7d
5
5
  SHA512:
6
- metadata.gz: 5fa848dea73082edc917cf028ad71cc9e3f147ce53a7a0049a431896248026606df6b5d12cde958433a83549a1f20ee532259ac550072d3fea82032b0b4c3774
7
- data.tar.gz: a385a308a781f7c11eacab868fc27f66ad01eda3eb0c0604c059eddad9e49934d3967aa54dd30edff03824e3de5a589650d33dcca03204d59d171ef69a73f0b6
6
+ metadata.gz: 31354ae8e856a1b0fe201c9f9c4e6253220cf956c859f4079c374e19f8b93162c7bbbd257e813fa61b1522ef03529708e24659e155849757ec3420994f41336a
7
+ data.tar.gz: 0d421331e8718d161ad6edcc306a85817f994e1a95e8736df699d86ff40cf3d4fc536ea4e59c9366efad08a40d46ac5403f0cc06197731c053a8752c92c749c7
@@ -1,6 +1,9 @@
1
1
  class Cielo
2
2
  require 'date'
3
3
 
4
+ SECTION_TYPES = {header: '00', client: "01", trailler: '99'}
5
+
6
+
4
7
  VERSAO = "01"
5
8
 
6
9
  # Carrega todas as dependências de Layout
@@ -52,7 +55,7 @@ class Cielo
52
55
  def create_header(params = {})
53
56
 
54
57
  if self.get_header.nil?
55
- section = self.get_new_section("header")
58
+ section = self.get_new_section(:header)
56
59
 
57
60
 
58
61
  section.set_data_deposito params[:data_deposito]
@@ -78,7 +81,7 @@ class Cielo
78
81
 
79
82
  self.valida_existe_header
80
83
 
81
- section = self.get_new_section("client")
84
+ section = self.get_new_section(:client)
82
85
 
83
86
  section.set_sequencial params[:sequencial]
84
87
  section.set_numero_cartao params[:numero_cartao]
@@ -115,8 +118,8 @@ class Cielo
115
118
  self.valida_existe_header
116
119
 
117
120
  if self.get_trailler.nil?
118
- if self.get_section("01").length > 0
119
- section = self.get_new_section("trailler")
121
+ if self.get_section(SECTION_TYPES[:client]).length > 0
122
+ section = self.get_new_section(:trailler)
120
123
  section.set_total_registros self.sections.length + 1
121
124
  section.set_valor_total self.calculate_valor_total
122
125
  section.set_valor_aceito
@@ -151,11 +154,11 @@ class Cielo
151
154
  protected
152
155
  def get_new_section section_type
153
156
  case section_type
154
- when "header"
157
+ when :header
155
158
  CieloHeader.new(self)
156
- when "client"
159
+ when :client
157
160
  CieloDetalhe.new(self)
158
- when "trailler"
161
+ when :trailler
159
162
  CieloTrailler.new(self)
160
163
  end
161
164
  end
@@ -176,7 +179,7 @@ class Cielo
176
179
  self.sections.select {|c| c.is_section?(section) == true }
177
180
  end
178
181
 
179
- def is_sections_valid?
182
+ def is_valid?
180
183
  self.sections.select {|b| b.is_valid? == false }.length == 0
181
184
  end
182
185
 
@@ -185,11 +188,11 @@ class Cielo
185
188
  end
186
189
 
187
190
  def get_header
188
- self.get_section("00").first()
191
+ self.get_section(SECTION_TYPES[:header]).first()
189
192
  end
190
193
 
191
194
  def get_trailler
192
- self.get_section("99").first()
195
+ self.get_section(SECTION_TYPES[:trailler]).first()
193
196
  end
194
197
 
195
198
  #--------------------------------------------------------------------------------------
@@ -198,8 +201,32 @@ class Cielo
198
201
 
199
202
  protected
200
203
  def calculate_valor_total
201
- self.get_section("01").inject(0) do |sum, section|
204
+ self.get_section(SECTION_TYPES[:client]).inject(0) do |sum, section|
202
205
  sum += section.get_valor
203
206
  end
204
207
  end
208
+
209
+ #--------------------------------------------------------------------------------------
210
+ #--------------------------------------------------------------------------------------
211
+ # Carregamento de Arquivo
212
+ protected
213
+ def process_file location
214
+ file = File.new(location, "r")
215
+
216
+ while (line = file.gets)
217
+ process_string line
218
+ end
219
+
220
+ file.close
221
+ end
222
+
223
+ def process_string file
224
+ section_type = file[0,2]
225
+
226
+ section = get_new_section SECTION_TYPES.key(section_type)
227
+ section.process_section(file)
228
+
229
+ self.add_section section
230
+ end
231
+
205
232
  end
@@ -8,7 +8,7 @@ class CieloDetalhe < FormatSection
8
8
  0 => Position.new(1, 2, false, "01", true), # Tipo do Registro
9
9
  1 => Position.new(2, 7, true), # Numero Sequencial
10
10
  2 => Position.new(3, 19, true), # Numero do Cartao
11
- 3 => Position.new(4, 6, true, "000000"), # Código de Autorização
11
+ 3 => Position.new(4, 6, false, "000000"), # Código de Autorização
12
12
  4 => Position.new(5, 8, false), # Data da Venda
13
13
  5 => Position.new(6, 1, true), # Opção da Venda
14
14
  6 => Position.new(7, 15, true), # Valor da venda
@@ -36,6 +36,38 @@ class CieloDetalhe < FormatSection
36
36
  })
37
37
  end
38
38
 
39
+ #-------------------------------------------------------------------
40
+ #-------------------------------------------------------------------
41
+ # Gerais
42
+ def process_section file
43
+ self.set_sequencial file[2..8]
44
+ self.set_numero_cartao file[9..27]
45
+ self.set_codigo_autorizacao file[28..33]
46
+ self.set_data_venda file[34..41]
47
+ self.set_opcao_venda file[42..42]
48
+ self.set_valor_venda file[43..57]
49
+ self.numero_parcelas file[58..60]
50
+ self.set_reservado_1 file[61..75]
51
+ self.set_reservado_2 file[76..90]
52
+ self.set_reservado_3 file[91..105]
53
+ self.set_valor_parcela file[106..120]
54
+ self.set_numero_lote file[121..127]
55
+ self.set_reservado_4 file[128..130]
56
+ self.set_numero_cielo file[131..140]
57
+ self.set_reservado_5 file[141..170]
58
+ self.set_status_venda file[171..172]
59
+ self.set_data_liquidacao file[173..180]
60
+ self.set_validade_cartao file[181..184]
61
+ self.set_reservado_6 file[185..191]
62
+ self.set_reservado_7 file[192..206]
63
+ self.set_reservado_8 file[207..209]
64
+ self.set_codigo_erro file[210..213]
65
+ self.set_reservado_9 file[214..224]
66
+ self.set_cartao_novo file[225..243]
67
+ self.set_vencimento_novo file[244..247]
68
+ self.set_reservado_10 file[248..249]
69
+ end
70
+
39
71
  def get_sequencial
40
72
  self.get_section_value(1)
41
73
  end
@@ -64,6 +96,10 @@ class CieloDetalhe < FormatSection
64
96
  self.get_section_value(18)
65
97
  end
66
98
 
99
+ def get_status_venda
100
+ self.get_section_value(16)
101
+ end
102
+
67
103
  def set_sequencial valor
68
104
  self.set_section_value(1, valor)
69
105
  end
@@ -72,8 +108,8 @@ class CieloDetalhe < FormatSection
72
108
  self.set_section_value(2, valor)
73
109
  end
74
110
 
75
- def set_codigo_autorizacao
76
- self.set_section_value(3, "000000")
111
+ def set_codigo_autorizacao valor = "000000"
112
+ self.set_section_value(3, valor)
77
113
  end
78
114
 
79
115
  def set_data_venda valor
@@ -93,80 +129,80 @@ class CieloDetalhe < FormatSection
93
129
  end
94
130
  end
95
131
 
96
- def set_opcao_venda
97
- self.set_section_value(5, "0")
132
+ def set_opcao_venda valor = "0"
133
+ self.set_section_value(5, valor)
98
134
  end
99
135
 
100
136
  def set_valor_venda valor
101
137
  self.set_section_value(6, valor)
102
138
  end
103
139
 
104
- def numero_parcelas
105
- self.set_section_value(7, "0")
140
+ def numero_parcelas valor = "0"
141
+ self.set_section_value(7, valor)
106
142
  end
107
143
 
108
- def set_reservado_1
109
- self.set_section_value(8, "0")
144
+ def set_reservado_1 valor = "0"
145
+ self.set_section_value(8, valor)
110
146
  end
111
147
 
112
- def set_reservado_2
113
- self.set_section_value(9, "0")
148
+ def set_reservado_2 valor = "0"
149
+ self.set_section_value(9, valor)
114
150
  end
115
151
 
116
- def set_reservado_3
117
- self.set_section_value(10, "0")
152
+ def set_reservado_3 valor = "0"
153
+ self.set_section_value(10, valor)
118
154
  end
119
155
 
120
- def set_valor_parcela
121
- self.set_section_value(11, "0")
156
+ def set_valor_parcela valor = "0"
157
+ self.set_section_value(11, valor)
122
158
  end
123
159
 
124
160
  def set_numero_lote valor
125
161
  self.set_section_value(12, valor)
126
162
  end
127
163
 
128
- def set_reservado_4
129
- self.set_section_value(13, "0")
164
+ def set_reservado_4 valor = "0"
165
+ self.set_section_value(13, valor)
130
166
  end
131
167
 
132
168
  def set_numero_cielo valor
133
169
  self.set_section_value(14, valor)
134
170
  end
135
171
 
136
- def set_reservado_5
137
- self.set_section_value(15, "")
172
+ def set_reservado_5 valor = ""
173
+ self.set_section_value(15, valor)
138
174
  end
139
175
 
140
- def set_status_venda
141
- self.set_section_value(16, "0")
176
+ def set_status_venda valor = "0"
177
+ self.set_section_value(16, valor)
142
178
  end
143
179
 
144
- def set_data_liquidacao
145
- self.set_section_value(17, "0")
180
+ def set_data_liquidacao valor = "0"
181
+ self.set_section_value(17, valor)
146
182
  end
147
183
 
148
184
  def set_validade_cartao valor
149
185
  self.set_section_value(18, valor)
150
186
  end
151
187
 
152
- def set_reservado_6
153
- self.set_section_value(19, "0")
188
+ def set_reservado_6 valor = "0"
189
+ self.set_section_value(19, valor)
154
190
  end
155
191
 
156
- def set_reservado_7
157
- self.set_section_value(20, "0")
192
+ def set_reservado_7 valor = "0"
193
+ self.set_section_value(20, valor)
158
194
  end
159
195
 
160
- def set_reservado_8
161
- self.set_section_value(21, "")
196
+ def set_reservado_8 valor = ""
197
+ self.set_section_value(21, valor)
162
198
  end
163
199
 
164
- def set_codigo_erro
165
- self.set_section_value(22, "")
200
+ def set_codigo_erro valor = ""
201
+ self.set_section_value(22, valor)
166
202
  end
167
203
 
168
- def set_reservado_9
169
- self.set_section_value(23, "")
204
+ def set_reservado_9 valor = ""
205
+ self.set_section_value(23, valor)
170
206
  end
171
207
 
172
208
  def set_cartao_novo valor
@@ -177,8 +213,8 @@ class CieloDetalhe < FormatSection
177
213
  self.set_section_value(25, valor)
178
214
  end
179
215
 
180
- def set_reservado_10
181
- self.set_section_value(26, "")
216
+ def set_reservado_10 valor = ""
217
+ self.set_section_value(26, valor)
182
218
  end
183
219
 
184
220
  #-------------------------------------------------------------------
@@ -19,6 +19,22 @@ class CieloHeader < FormatSection
19
19
  })
20
20
  end
21
21
 
22
+ #-------------------------------------------------------------------
23
+ #-------------------------------------------------------------------
24
+ # Gerais
25
+ def process_section file
26
+ self.set_data_deposito file[2..9]
27
+ self.set_numero_lote file[10..16]
28
+ self.set_reservado_1 file[17..26]
29
+ self.set_reservado_2 file[27..29]
30
+ self.set_numero_cielo file[30..39]
31
+ self.set_moeda file[40..42]
32
+ self.set_indicador_processo file[43..43]
33
+ self.set_indicador_venda file[44..44]
34
+ self.set_indicador_especial file[45..45]
35
+ self.set_reservado_3 file[46..249]
36
+ end
37
+
22
38
  def get_data_deposito
23
39
  self.get_section_value(1)
24
40
  end
@@ -56,12 +72,12 @@ class CieloHeader < FormatSection
56
72
  self.set_section_value(2, valor)
57
73
  end
58
74
 
59
- def set_reservado_1
60
- self.set_section_value(3, "")
75
+ def set_reservado_1 valor = ""
76
+ self.set_section_value(3, valor)
61
77
  end
62
78
 
63
- def set_reservado_2
64
- self.set_section_value(4, "000")
79
+ def set_reservado_2 valor = "000"
80
+ self.set_section_value(4, valor)
65
81
  end
66
82
 
67
83
  def set_numero_cielo valor
@@ -76,20 +92,20 @@ class CieloHeader < FormatSection
76
92
  end
77
93
  end
78
94
 
79
- def set_indicador_processo
80
- self.set_section_value(7, "P")
95
+ def set_indicador_processo valor = "P"
96
+ self.set_section_value(7, valor)
81
97
  end
82
98
 
83
- def set_indicador_venda
84
- self.set_section_value(8, "V")
99
+ def set_indicador_venda valor = "V"
100
+ self.set_section_value(8, valor)
85
101
  end
86
102
 
87
- def set_indicador_especial
88
- self.set_section_value(9, "")
103
+ def set_indicador_especial valor = ""
104
+ self.set_section_value(9, valor)
89
105
  end
90
106
 
91
- def set_reservado_3
92
- self.set_section_value(10, "")
107
+ def set_reservado_3 valor = ""
108
+ self.set_section_value(10, valor)
93
109
  end
94
110
 
95
111
  #-------------------------------------------------------------------
@@ -15,6 +15,28 @@ class CieloTrailler < FormatSection
15
15
  })
16
16
  end
17
17
 
18
+ #-------------------------------------------------------------------
19
+ #-------------------------------------------------------------------
20
+ # Gerais
21
+ def process_section file
22
+ self.set_total_registros file[2..8]
23
+ self.set_valor_total file[9..24]
24
+ self.set_valor_aceito file[25..39]
25
+ self.set_valor_liquido file[40..54]
26
+ self.set_data_prevista file[55..62]
27
+ self.set_reservado file[63..249]
28
+ end
29
+
30
+
31
+ def get_total_registros
32
+ self.get_section_value(1)
33
+ end
34
+
35
+ def get_valor_total
36
+ self.get_section_value(2).to_i
37
+ end
38
+
39
+
18
40
  def set_total_registros registros
19
41
  registros = registros.to_i
20
42
 
@@ -37,20 +59,27 @@ class CieloTrailler < FormatSection
37
59
  end
38
60
  end
39
61
 
40
- def set_valor_aceito
41
- self.set_section_value(3, "0")
62
+ def set_valor_aceito valor = "0"
63
+ self.set_section_value(3, valor)
64
+ end
65
+
66
+ def set_valor_liquido valor = "0"
67
+ self.set_section_value(4, valor)
42
68
  end
43
69
 
44
- def set_valor_liquido
45
- self.set_section_value(4, "0")
70
+ def set_data_prevista valor = "0"
71
+ self.set_section_value(5, valor)
46
72
  end
47
73
 
48
- def set_data_prevista
49
- self.set_section_value(5, "0")
74
+ def set_reservado valor = ""
75
+ self.set_section_value(6, valor)
50
76
  end
51
77
 
52
- def set_reservado
53
- self.set_section_value(6, "")
78
+ #-------------------------------------------------------------------
79
+ #-------------------------------------------------------------------
80
+ # Validações
81
+ def is_valid?
82
+ self.get_total_registros.length > 0 and self.get_valor_total > 0
54
83
  end
55
84
 
56
85
  end
@@ -1,5 +1,5 @@
1
1
  module Formatos
2
2
  module Febraban
3
- VERSION = "0.2.24"
3
+ VERSION = "0.2.25"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formatos-febraban
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.24
4
+ version: 0.2.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - josé Ricardo Almeida
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-04-28 00:00:00.000000000 Z
11
+ date: 2015-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler