Class: Febraban150
- Inherits:
-
Object
- Object
- Febraban150
- Defined in:
- lib/formatos/febraban150/febraban_150.rb
Constant Summary collapse
- VersaoDisponivel =
[ '04', '05' ]
- VERSAO =
'05'
Instance Method Summary collapse
- #compara_resultado(outro_layout) ⇒ Object
-
#create_alteracao_id(id_cliente_empresa_old, agencia_debito, id_cliente_banco, id_cliente_empresa_new, ocorrencia, cod_movimento) ⇒ Object
Seção D.
-
#create_confirmacao_processo(data_processamento) ⇒ Object
Seção J.
-
#create_cronograma_faturamento(data_faturamento, data_vencimento, data_remessa_banco, data_remessa_fisica) ⇒ Object
Seção L.
-
#create_debito_conta(id_cliente_empresa, agencia_debito, id_cliente_banco, data_vencimento, valor_debito, codigo_moeda, obs_empresa, tipo_id_cliente, id_cliente, cod_movimento) ⇒ Object
Seção E.
-
#create_header(codigo_remessa, codigo_convenio, nome_empresa, codigo_banco, nome_banco, numero_sequencial) ⇒ Object
Seção A.
-
#create_incentivo_debito(id_cliente_empresa, tipo_id_cliente, id_cliente, nome, cidade, estado) ⇒ Object
Seção I.
-
#create_lei_10883(id_cliente_empresa, agencia_debito, id_cliente_banco, tipo_tratamento, valor_debito, codigo_receita, tipo_id_cliente, id_cliente) ⇒ Object
Seção K.
-
#create_occorencias(id_cliente_empresa, agencia_debito, id_cliente_banco, ocorrencia_1, ocorrencia_2, cod_movimento) ⇒ Object
Seção C.
-
#create_trailler ⇒ Object
Seção Z.
- #get_confirmacao ⇒ Object
- #get_header ⇒ Object
- #get_section(section) ⇒ Object
- #get_trailler ⇒ Object
- #get_valor_total ⇒ Object
- #has_section(section) ⇒ Object
- #identificacao_servico ⇒ Object
-
#initialize(file = '', versao = '') ⇒ Febraban150
constructor
——————————————————————- ——————————————————————- Construtor.
- #is_sections_valid? ⇒ Boolean
- #is_valid? ⇒ Boolean
- #layout_banco? ⇒ Boolean
- #layout_empresa? ⇒ Boolean
- #save(path) ⇒ Object
- #sections ⇒ Object
- #to_s ⇒ Object
-
#update_confirmacao_processo(data_processamento) ⇒ Object
Seção J.
-
#update_trailler ⇒ Object
Seção Z.
- #versao_layout ⇒ Object
Constructor Details
#initialize(file = '', versao = '') ⇒ Febraban150
Construtor
35 36 37 38 39 40 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 35 def initialize(file = '', versao = '') @sections = [] @versao = versao self.valida_arquivo(file) end |
Instance Method Details
#compara_resultado(outro_layout) ⇒ Object
395 396 397 398 399 400 401 402 403 404 405 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 395 def compara_resultado outro_layout if self.layout_empresa? raise "Layout de comparação deve ser de Banco" unless outro_layout.layout_banco? elsif self.layout_banco? raise "Layout de comparação deve ser de Empresa" unless outro_layout.layout_empresa? else raise "Tipo de Layout não definido!" end end |
#create_alteracao_id(id_cliente_empresa_old, agencia_debito, id_cliente_banco, id_cliente_empresa_new, ocorrencia, cod_movimento) ⇒ Object
Seção D
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 132 def create_alteracao_id(id_cliente_empresa_old, agencia_debito, id_cliente_banco, id_cliente_empresa_new, ocorrencia, cod_movimento) self.valida_existe_header section = self.get_new_section("D") section.set_id_cliente_empresa_old id_cliente_empresa_old section.set_agencia_debito agencia_debito section.set_id_cliente_banco id_cliente_banco section.set_id_cliente_empresa_new id_cliente_empresa_new section.set_ocorrencia ocorrencia section.set_reservado "" section.set_cod_movimento cod_movimento self.add_section_from_business section end |
#create_confirmacao_processo(data_processamento) ⇒ Object
Seção J
208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 208 def create_confirmacao_processo data_processamento self.valida_existe_header self.valida_existe_trailler raise "Confirmação do processo já executada" if self.get_section("J").length > 0 header = self.get_header trailler = self.get_trailler section = self.get_new_section("J") section.set_numero_sequencial header.get_numero_sequencial section.set_data_geracao header.get_data_geracao section.set_total_processados trailler.get_total_registros section.set_valor_total trailler.get_valor_total section.set_data_processamento data_processamento section.set_reservado "" self.add_section_from_business section end |
#create_cronograma_faturamento(data_faturamento, data_vencimento, data_remessa_banco, data_remessa_fisica) ⇒ Object
Seção L
271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 271 def create_cronograma_faturamento(data_faturamento, data_vencimento, data_remessa_banco, data_remessa_fisica) self.valida_existe_header section = self.get_new_section("L") section.set_data_faturamento data_faturamento section.set_data_vencimento_fatura data_vencimento section.set_data_remessa_banco data_remessa_banco section.set_data_remessa_fisica data_remessa_fisica section.set_reservado "" self.add_section_from_business section end |
#create_debito_conta(id_cliente_empresa, agencia_debito, id_cliente_banco, data_vencimento, valor_debito, codigo_moeda, obs_empresa, tipo_id_cliente, id_cliente, cod_movimento) ⇒ Object
Seção E
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 151 def create_debito_conta(id_cliente_empresa, agencia_debito, id_cliente_banco, data_vencimento, valor_debito, codigo_moeda, obs_empresa, tipo_id_cliente, id_cliente, cod_movimento) self.valida_existe_header section = self.get_new_section("E") case @versao when '04' section.set_id_cliente_empresa id_cliente_empresa section.set_agencia_debito agencia_debito section.set_id_cliente_banco id_cliente_banco section.set_data_vencimento data_vencimento section.set_valor_debito valor_debito section.set_codigo_moeda codigo_moeda section.set_obs_empresa obs_empresa section.set_reservado '' section.set_cod_movimento cod_movimento when '05' section.set_id_cliente_empresa id_cliente_empresa section.set_agencia_debito agencia_debito section.set_id_cliente_banco id_cliente_banco section.set_data_vencimento data_vencimento section.set_valor_debito valor_debito section.set_codigo_moeda codigo_moeda section.set_obs_empresa obs_empresa section.set_tipo_id_cliente tipo_id_cliente section.set_id_cliente id_cliente section.set_reservado '' section.set_cod_movimento cod_movimento end self.add_section_from_business section end |
#create_header(codigo_remessa, codigo_convenio, nome_empresa, codigo_banco, nome_banco, numero_sequencial) ⇒ Object
Seção A
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 88 def create_header(codigo_remessa, codigo_convenio, nome_empresa, codigo_banco, nome_banco, numero_sequencial) if self.get_header.nil? section = self.get_new_section('A') section.set_codigo_remessa codigo_remessa section.set_codigo_convenio codigo_convenio section.set_nome_empresa nome_empresa section.set_codigo_banco codigo_banco section.set_nome_banco nome_banco section.set_data_geracao Time.new section.set_numero_sequencial numero_sequencial section.set_versao_layout @versao section.set_identificacao_servico Febraban150A::ID_SERVICO section.set_reservado '' self.add_section_from_business section else raise 'Header já declarado!' end end |
#create_incentivo_debito(id_cliente_empresa, tipo_id_cliente, id_cliente, nome, cidade, estado) ⇒ Object
Seção I
189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 189 def create_incentivo_debito(id_cliente_empresa, tipo_id_cliente, id_cliente, nome, cidade, estado) self.valida_existe_header section = self.get_new_section("I") section.set_id_cliente_empresa id_cliente_empresa section.set_tipo_id_cliente tipo_id_cliente section.set_id_cliente id_cliente section.set_nome nome section.set_cidade cidade section.set_estado estado section.set_reservado "" self.add_section_from_business section end |
#create_lei_10883(id_cliente_empresa, agencia_debito, id_cliente_banco, tipo_tratamento, valor_debito, codigo_receita, tipo_id_cliente, id_cliente) ⇒ Object
Seção K
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 248 def create_lei_10883(id_cliente_empresa, agencia_debito, id_cliente_banco, tipo_tratamento, valor_debito, codigo_receita, tipo_id_cliente, id_cliente) self.valida_existe_header valida_existe_section "E" section = self.get_new_section("K") section.set_id_cliente_empresa id_cliente_empresa section.set_agencia_debito agencia_debito section.set_id_cliente_banco id_cliente_banco section.set_tipo_tratamento tipo_tratamento section.set_valor_debitado valor_debito section.set_codigo_receita codigo_receita section.set_tipo_id_cliente tipo_id_cliente section.set_id_cliente id_cliente section.set_reservado "" self.add_section_from_business section end |
#create_occorencias(id_cliente_empresa, agencia_debito, id_cliente_banco, ocorrencia_1, ocorrencia_2, cod_movimento) ⇒ Object
Seção C
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 113 def create_occorencias(id_cliente_empresa, agencia_debito, id_cliente_banco, ocorrencia_1, ocorrencia_2, cod_movimento) self.valida_existe_header section = self.get_new_section("C") section.set_id_cliente_empresa id_cliente_empresa section.set_agencia_debito agencia_debito section.set_id_cliente_banco id_cliente_banco section.set_ocorrencia_1 ocorrencia_1 section.set_ocorrencia_2 ocorrencia_2 section.set_reservado "" section.set_cod_movimento cod_movimento self.add_section_from_business section end |
#create_trailler ⇒ Object
Seção Z
288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 288 def create_trailler self.valida_existe_header if self.get_trailler.nil? if self.get_section("E").length > 0 section = self.get_new_section("Z") section.set_reservado "" self.sections << section self.update_trailler else raise "Nenhum valor declarado (Seções E)!" end else raise "Trailler já declarado!" end end |
#get_confirmacao ⇒ Object
439 440 441 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 439 def get_confirmacao self.get_section("J").first() end |
#get_header ⇒ Object
431 432 433 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 431 def get_header self.get_section("A").first() end |
#get_section(section) ⇒ Object
419 420 421 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 419 def get_section section self.sections.select {|c| c.is_section?(section) == true } end |
#get_trailler ⇒ Object
435 436 437 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 435 def get_trailler self.get_section("Z").first() end |
#get_valor_total ⇒ Object
443 444 445 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 443 def get_valor_total self.get_trailler.get_valor_total end |
#has_section(section) ⇒ Object
415 416 417 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 415 def has_section section self.get_section(section).length > 0 end |
#identificacao_servico ⇒ Object
451 452 453 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 451 def identificacao_servico self.get_header.get_identificacao_servico end |
#is_sections_valid? ⇒ Boolean
423 424 425 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 423 def is_sections_valid? self.sections.select {|b| b.is_valid? == false }.length == 0 end |
#is_valid? ⇒ Boolean
377 378 379 380 381 382 383 384 385 386 387 388 389 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 377 def is_valid? if self.layout_empresa? raise "Layout de Empresa inválido!" unless self.is_empresa_valid? elsif self.layout_banco? raise "Layout de Banco inválido!" unless self.is_banco_valid? else raise "Código de Remessa desconhecido: #{codigo_remessa}" end result = self.is_sections_valid? end |
#layout_banco? ⇒ Boolean
455 456 457 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 455 def layout_banco? self.get_header.get_codigo_remessa == 2 end |
#layout_empresa? ⇒ Boolean
459 460 461 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 459 def layout_empresa? self.get_header.get_codigo_remessa == 1 end |
#save(path) ⇒ Object
467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 467 def save (path) raise "Layout atual inválido!" unless self.is_valid? raise "Caminho para salvamento inválido!" if path.length < 0 if path.end_with?('/') header = self.get_header path += "#{header.get_data_geracao}_#{header.get_codigo_remessa}_#{header.get_codigo_banco}_#{self.versao_layout}.bat" end puts "Salvando arquivo: '#{path}'..." content = self.to_s File.open(path, 'w') do |file| file.truncate(0) file.write(content) end puts "Arquivo '#{path}' salvo!" self end |
#sections ⇒ Object
411 412 413 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 411 def sections @sections.to_a end |
#to_s ⇒ Object
427 428 429 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 427 def to_s self.sections.map {|a| a.to_s}.join("\r\n") end |
#update_confirmacao_processo(data_processamento) ⇒ Object
Seção J
230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 230 def update_confirmacao_processo data_processamento self.valida_existe_header self.valida_existe_trailler self.valida_existe_confirmacao header = self.get_header trailler = self.get_trailler section = self.get_confirmacao section.set_numero_sequencial header.get_numero_sequencial section.set_data_geracao header.get_data_geracao section.set_total_processados trailler.get_total_registros section.set_valor_total trailler.get_valor_total section.set_data_processamento data_processamento end |
#update_trailler ⇒ Object
Seção Z
307 308 309 310 311 312 313 314 315 316 317 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 307 def update_trailler self.valida_existe_trailler if self.get_section("E").length > 0 section = self.get_trailler section.set_total_registros self.sections.length section.set_valor_total self.calculate_valor_total else raise "Nenhum valor declarado (Seções E)!" end end |
#versao_layout ⇒ Object
447 448 449 |
# File 'lib/formatos/febraban150/febraban_150.rb', line 447 def versao_layout self.get_header.get_versao_layout end |