class KonoUtils::FiscalCode::ControllaPI
Constants
- NU
Public Class Methods
valid?(pi)
click to toggle source
# 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