Class: KonoUtils::FiscalCode::ControllaPI

Inherits:
Object
  • Object
show all
Defined in:
lib/kono_utils/fiscal_code.rb

Defined Under Namespace

Classes: EmptyString, InvalidLength

Constant Summary collapse

NU =
('0'..'9').to_a

Class Method Summary collapse

Class Method Details

.valid?(pi) ⇒ Boolean

Raises:



37
38
39
40
41
42
43
44
# File 'lib/kono_utils/fiscal_code.rb', line 37

def self.valid?(pi)
  pi = pi.to_s
  raise EmptyString.new("partita iva non può essere lasciata in bianco") if pi.empty?
  raise InvalidLength.new("partita iva dev'essere composta da 11 cifre") if pi.size != 11
  s = (0..9).collect { |i| NU.include?(pi[i, 1]) ? ((i&1)!=0 ? (pi[i, 1].to_i > 4 ? ((pi[i, 1].to_i*2) - 9) : pi[i, 1].to_i * 2) : pi[i, 1].to_i) : nil }
  r = s.include?(nil) ? false : ((s.inject(0) { |t, n| t+n }) % 10)
  r != false && (r==0 ? r : 10-r) == pi[-1, 1].to_i
end