class VerificadorBoletoBr::Slip::Arrecadation::Validity
Attributes
digitable_line[RW]
errors[RW]
kind[RW]
Public Class Methods
new(cod)
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 14 def initialize(cod) @digitable_line = cod raise ArgumentError, 'Expected String' unless @digitable_line.class.eql?(String) raise ArgumentError, 'Invalid Digitable Line' unless clean_digitable_line.size == 48 raise ArgumentError, 'Boleto Não é de Arrecadação' unless @digitable_line[0] == '8' @errors = [] @kind = :arrecadation_slip end
Public Instance Methods
bacen_module()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 79 def bacen_module case clean_digitable_line[2] when '6' 'modulo10' when '7' 'modulo10' when '8' 'modulo11' when '9' 'modulo11' else raise ArgumentError, 'Invalid Digitable Line' end end
clean_digitable_line()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 24 def clean_digitable_line clean_masks(@digitable_line) end
digitable_line_without_dvs()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 129 def digitable_line_without_dvs grouped_digitable_line.map { |group| group[:num] }.join end
due_date()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 42 def due_date begin Date.parse(digitable_line_without_dvs[-6..-1]) rescue nil end end
global_validity()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 115 def global_validity send(bacen_module, digitable_line_without_dvs[0..2] + digitable_line_without_dvs[4..-1]) == verification_digit end
grouped_digitable_line()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 119 def grouped_digitable_line clean_digitable_line.scan(/.{1,12}/).each_with_index.map do |group, index| { group: index, num: group[0..-2], dv: group[-1] } end end
groups_validity()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 103 def groups_validity grouped_digitable_line.map do |group| dv = send(bacen_module, group[:num]).to_s valid = dv.eql?(group[:dv]) errors << "Campo #{group[:group]}" unless valid { group: group[:group], valid: valid } end end
identification()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 71 def identification identification_str = JSON.parse(File.read(File.join( File.dirname(__FILE__), '../../data/Dealerships.json'))) .select { |d| d['code'] == clean_digitable_line[16..19] && d['segment'] == clean_digitable_line[1].to_i }&.dig(0,"dealership") return identification_str unless identification_str.nil? "Boleto de #{segment}" end
segment()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 50 def segment case clean_digitable_line[1] when '1' 'Prefeitura' when '2' 'Saneamento' when '3' 'Energia Elétrica e Gás' when '4' 'Telefonia' when '5' 'Órgãos Governamentais' when '6' 'Empresas / Órgãos com CNPJ.' when '7' 'Multa de trânsito' when '9' 'Uso exclusivo do banco' end end
valid?()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 94 def valid? global_validity && !groups_validity.map { |group| group[:valid] }.include?(false) end
valid_without_global?()
click to toggle source
Duplicate just for mantaining module methods
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 99 def valid_without_global? valid? end
value()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 37 def value return nil unless valid? value_in_cents.to_f / 100 end
value_in_cents()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 32 def value_in_cents return nil unless valid? digitable_line_without_dvs[4..14].to_i end
verification_digit()
click to toggle source
# File lib/verificador_boleto_br/slip/arrecadation/validity.rb, line 28 def verification_digit clean_digitable_line[3].to_i end