formatos-febraban 0.3.16 → 0.3.17

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: 8a9e54641b95f02c5dc2aac99b8ca96b73026c2a
4
- data.tar.gz: 3daa5c52e3415190ada3b52f53bb3cc3327305d2
3
+ metadata.gz: f429b930eb75a6140bf2549f525a7b611a1c6f9c
4
+ data.tar.gz: ef8bf6a24cdb3b1cc648c1c7a9b5f36a4bde383b
5
5
  SHA512:
6
- metadata.gz: b31a52b7eb61884c9ab49b53c38fe91f451ddd0d11813b9e08eee82cab77ed4c6e83219ef35ffa00b8e409e7bd211b3f5d2f82535939ae09a2b6bd165d12708d
7
- data.tar.gz: 60b5bf492b4970abe50d08cd24a1777c15d596c250eb71fad0329287ea03e5d18bac22bea4bed36ffff9d34343cbd364a191ac31e918502d0fb551c1a0f030a9
6
+ metadata.gz: bca6404e3c6e6da68a4754e867e259644293dbfddd53667cba408b220d7f5d2d8ba8b0f2ae39ab6ef85512e3a9d11cc85b01c3e9886157def13c07aa61126d72
7
+ data.tar.gz: 7006d4919af33b864fad60b86d752a61039b4e504a14e16e94bb8c16e10921c53073b43f883cbcfb375700ae659c2db2c149ef171c92a809281accf81e1cfc46
@@ -1,5 +1,5 @@
1
1
  module Formatos
2
2
  module Febraban
3
- VERSION = '0.3.16'
3
+ VERSION = '0.3.17'
4
4
  end
5
5
  end
@@ -6,26 +6,78 @@ class Febraban150F < FormatSection
6
6
  def initialize(master, versao = Febraban150::VERSAO)
7
7
  super(master, true, false)
8
8
 
9
+ @versao = versao
10
+
11
+ case @versao
12
+ when '04'
13
+ self.monta_versao_04
14
+ when '05'
15
+ self.monta_versao_05
16
+ else
17
+ raise "Seção F: Versão não suportada: #{@versao}"
18
+ end
19
+ end
20
+
21
+ protected
22
+ def monta_versao_04
9
23
  @section = Section.new({
10
- 0 => Position.new(1, 1, false, "F", true), # Código do Registro
11
- 1 => Position.new(2, 25, false), # Identificação do Cliente Empresa
12
- 2 => Position.new(3, 4, false), # Agência para Débito
13
- 3 => Position.new(4, 14, false), # Identificação Cliente Banco
14
- 4 => Position.new(5, 8, true), # Data Vencimento/Débito
15
- 5 => Position.new(6, 15, true), # Valor Original/Debitado
16
- 6 => Position.new(7, 2, false), # Código de Retorno
17
- 7 => Position.new(8, 60, false), # Uso da Empresa (Seção E)
18
- 8 => Position.new(9, 1, true), # Tipo de Identificação (1-CPF, 2-CNPJ)
19
- 9 => Position.new(10, 15, true), # Identificação
20
- 10 => Position.new(11, 4, false), # Reservado pelo Sistema
21
- 11 => Position.new(12, 1, true) # Código de movimento (Seção E)
24
+ 0 => Position.new(1, 1, false, 'F', true), # Código do Registro
25
+ 1 => Position.new(2, 25, false), # Identificação do Cliente Empresa
26
+ 2 => Position.new(3, 4, false), # Agência para Débito
27
+ 3 => Position.new(4, 14, false), # Identificação Cliente Banco
28
+ 4 => Position.new(5, 8, true), # Data Vencimento/Débito
29
+ 5 => Position.new(6, 15, true), # Valor Original/Debitado
30
+ 6 => Position.new(7, 2, false), # Código de Retorno
31
+ 7 => Position.new(8, 60, false), # Uso da Empresa (Seção E)
32
+ 10 => Position.new(11, 20, false), # Reservado pelo Sistema
33
+ 11 => Position.new(12, 1, true) # Código de movimento (Seção E)
34
+ })
35
+ end
36
+
37
+ def monta_versao_05
38
+ @section = Section.new({
39
+ 0 => Position.new(1, 1, false, 'F', true), # Código do Registro
40
+ 1 => Position.new(2, 25, false), # Identificação do Cliente Empresa
41
+ 2 => Position.new(3, 4, false), # Agência para Débito
42
+ 3 => Position.new(4, 14, false), # Identificação Cliente Banco
43
+ 4 => Position.new(5, 8, true), # Data Vencimento/Débito
44
+ 5 => Position.new(6, 15, true), # Valor Original/Debitado
45
+ 6 => Position.new(7, 2, false), # Código de Retorno
46
+ 7 => Position.new(8, 60, false), # Uso da Empresa (Seção E)
47
+ 8 => Position.new(9, 1, true), # Tipo de Identificação (1-CPF, 2-CNPJ)
48
+ 9 => Position.new(10, 15, true), # Identificação
49
+ 10 => Position.new(11, 4, false), # Reservado pelo Sistema
50
+ 11 => Position.new(12, 1, true) # Código de movimento (Seção E)
22
51
  })
23
52
  end
24
53
 
25
54
  #-------------------------------------------------------------------
26
55
  #-------------------------------------------------------------------
27
56
  # Gerais
28
- def process_section file
57
+ public
58
+ def process_section(file)
59
+ case @versao
60
+ when '04'
61
+ self.processa_arquivo_04(file)
62
+ when '05'
63
+ self.processa_arquivo_05(file)
64
+ end
65
+ end
66
+
67
+ protected
68
+ def processa_arquivo_04(file)
69
+ self.set_id_cliente_empresa file[1..25]
70
+ self.set_agencia_debito file[26..29]
71
+ self.set_id_cliente_banco file[30..43]
72
+ self.set_data_vencimento file[44..51]
73
+ self.set_valor_debito file[52..66]
74
+ self.set_codigo_moeda file[67..68]
75
+ self.set_obs_empresa file[69..128]
76
+ self.set_reservado file[129..148]
77
+ self.set_cod_movimento file[149..149]
78
+ end
79
+
80
+ def processa_arquivo_05(file)
29
81
  self.set_id_cliente_empresa file[1..25]
30
82
  self.set_agencia_debito file[26..29]
31
83
  self.set_id_cliente_banco file[30..43]
@@ -42,25 +94,44 @@ class Febraban150F < FormatSection
42
94
  #-------------------------------------------------------------------
43
95
  #-------------------------------------------------------------------
44
96
  # Validações
97
+ public
45
98
  def is_valid?
99
+ case @versao
100
+ when '04'
101
+ self.is_valid_04?
102
+ when '05'
103
+ self.is_valid_05?
104
+ end
105
+ end
106
+
107
+ protected
108
+ def is_valid_04?
109
+ result = (self.get_id_cliente_empresa.length > 0 and
110
+ self.get_id_cliente_banco.length > 0 and
111
+ !self.get_data_vencimento.nil? and
112
+ self.get_valor_debito > 0 and
113
+ self.get_codigo_moeda.length > 0 and
114
+ (self.get_cod_movimento == 0 or
115
+ self.get_cod_movimento == 1))
116
+ end
117
+
118
+ def is_valid_05?
46
119
  result = (self.get_id_cliente_empresa.length > 0 and
47
120
  self.get_id_cliente_banco.length > 0 and
48
- self.get_agencia_debito.length > 0 and
49
- !self.get_data_vencimento_debito.nil? and
50
- self.get_valor > 0 and
51
- (self.get_codigo_retorno >= 0 or
52
- self.get_codigo_retorno <= 99) and
53
- self.get_obs_empresa.length > 0 and
121
+ !self.get_data_vencimento.nil? and
122
+ self.get_valor_debito > 0 and
123
+ self.get_codigo_moeda.length > 0 and
54
124
  (self.get_tipo_id_cliente == 1 or
55
- self.get_tipo_id_cliente == 2) and
56
- self.get_id_cliente.to_s.length > 0 and
125
+ self.get_tipo_id_cliente == 2) and
126
+ self.get_id_cliente.length == 15 and
57
127
  (self.get_cod_movimento == 0 or
58
- self.get_cod_movimento == 1))
128
+ self.get_cod_movimento == 1))
59
129
  end
60
130
 
61
131
  #-------------------------------------------------------------------
62
132
  #-------------------------------------------------------------------
63
133
  # Getters
134
+ public
64
135
  def get_id_cliente_empresa
65
136
  self.get_section_value(1)
66
137
  end
@@ -99,7 +170,12 @@ class Febraban150F < FormatSection
99
170
  end
100
171
 
101
172
  def get_cod_movimento
102
- self.get_section_value(11).to_i
173
+ case @versao
174
+ when '04'
175
+ self.get_section_value(9).to_i
176
+ when '05'
177
+ self.get_section_value(11).to_i
178
+ end
103
179
  end
104
180
 
105
181
  def get_mensagem_retorno
@@ -148,6 +224,7 @@ class Febraban150F < FormatSection
148
224
  #-------------------------------------------------------------------
149
225
  #-------------------------------------------------------------------
150
226
  # Setters
227
+ public
151
228
  def set_id_cliente_empresa id_cliente_empresa
152
229
  id_cliente_empresa = id_cliente_empresa.to_s
153
230
 
@@ -102,6 +102,7 @@ class Febraban150Z < FormatSection
102
102
  #-------------------------------------------------------------------
103
103
  #-------------------------------------------------------------------
104
104
  # Setters
105
+ public
105
106
  def set_total_registros registros
106
107
  registros = registros.to_i
107
108
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: formatos-febraban
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.16
4
+ version: 0.3.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Ricardo Almeida