Class: Febraban150J

Inherits:
FormatSection
  • Object
show all
Defined in:
lib/formatos/febraban150/febraban_150_j.rb

Overview



Confirmação de Processamento - Empresa/Banco

Instance Method Summary collapse

Constructor Details

#initialize(master, versao = Febraban150::VERSAO) ⇒ Febraban150J

Returns a new instance of Febraban150J.



6
7
8
9
10
11
12
13
14
15
16
17
18
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 6

def initialize(master, versao = Febraban150::VERSAO)
  super(master, true, true)

  @section = Section.new({
    0 => Position.new(1, 1, false, "J", true), # Código do Registro
    1 => Position.new(2, 6, true),             # Número Sequencial
    2 => Position.new(3, 8, true),             # Data de Geração
    3 => Position.new(4, 6, true),             # Total de Registros Processados
    4 => Position.new(5, 17, true),            # Valor total
    5 => Position.new(6, 8, true),             # Data de processamento
    6 => Position.new(7, 104, false)           # Reservado pelo Sistema
  }, true)
end

Instance Method Details

#get_data_geracaoObject



50
51
52
53
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 50

def get_data_geracao
  data = self.set_section_value(2)
  Date.new(data[0..3].to_i, data[4..5].to_i, data[6..7].to_i)
end

#get_data_processamentoObject



63
64
65
66
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 63

def get_data_processamento
  data = self.set_section_value(5)
  Date.new(data[0..3].to_i, data[4..5].to_i, data[6..7].to_i)
end

#get_numero_sequencialObject



Getters



46
47
48
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 46

def get_numero_sequencial
  self.set_section_value(1).to_i
end

#get_total_processadosObject



55
56
57
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 55

def get_total_processados
  self.set_section_value(3).to_i
end

#get_valor_totalObject



59
60
61
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 59

def get_valor_total
  self.set_section_value(4).to_i
end

#is_valid?Boolean



Validações

Returns:

  • (Boolean)


35
36
37
38
39
40
41
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 35

def is_valid?
  result = (self.get_numero_sequencial > 0     and
            !self.get_data_geracao.nil?        and
            self.get_total_processados >= 0    and
            self.get_valor_total >= 0          and
            !self.get_data_processamento.nil?)
end

#process_section(file) ⇒ Object



Gerais



23
24
25
26
27
28
29
30
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 23

def process_section file
  self.set_numero_sequencial  file[1..6]
  self.set_data_geracao       file[7..14]
  self.set_total_processados  file[15..20]
  self.set_valor_total        file[21..37]
  self.set_data_processamento file[38..45]
  self.set_reservado          file[46..149]
end

#set_data_geracao(data) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 82

def set_data_geracao data
    data = Date.strptime(data, "%Y%m%d") if data.is_a?(String)
    real_data = data.strftime("%Y%m%d")

    if real_data.length == 8
    self.set_section_value(2, data)
  else
    raise "#{self.get_id}: Data de Geração não pode estar vazia
            Valor: #{data}"
  end
end

#set_data_processamento(data) ⇒ Object



116
117
118
119
120
121
122
123
124
125
126
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 116

def set_data_processamento data
  data = Date.strptime(data, "%Y%m%d") if data.is_a?(String)
  real_data = data.strftime("%Y%m%d")

  if real_data.length == 8
    self.set_section_value(5, real_data)
  else
    raise "#{self.get_id}: Data de Processamento não pode estar vazia
            Valor: #{data}"
  end
end

#set_numero_sequencial(numero) ⇒ Object



Setters



71
72
73
74
75
76
77
78
79
80
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 71

def set_numero_sequencial numero
  numero = numero.to_i

  if numero > 0
    self.set_section_value(1, numero)
  else
    raise "#{self.get_id}: Número Sequencial deve ser positivo e maior que 0
            Valor: #{numero}"
  end
end

#set_reservado(reservado) ⇒ Object



128
129
130
131
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 128

def set_reservado reservado
  reservado = reservado.to_s
  self.set_section_value(6, reservado)
end

#set_total_processados(total) ⇒ Object



94
95
96
97
98
99
100
101
102
103
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 94

def set_total_processados total
  total = total.to_i

  if total >= 0
    self.set_section_value(3, total)
  else
    raise "#{self.get_id}: Total de Arquivos Processados deve ser positivo ou 0
            Valor: #{total}"
  end
end

#set_valor_total(valor) ⇒ Object



105
106
107
108
109
110
111
112
113
114
# File 'lib/formatos/febraban150/febraban_150_j.rb', line 105

def set_valor_total valor
  valor = valor.to_i

  if valor >= 0
    self.set_section_value(4, valor)
  else
    raise "#{self.get_id}: Valor Total dos Arquivos Processados deve ser positivo ou 0
            Valor: #{valor}"
  end
end