Class: KonoUtils::FiscalCode::ControllaPI
- Inherits:
-
Object
- Object
- KonoUtils::FiscalCode::ControllaPI
- 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
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 |