Module: FFaker::CompanyIT

Extended by:
CompanyIT, ModuleUtils
Included in:
CompanyIT
Defined in:
lib/ffaker/company_it.rb

Constant Summary collapse

PREFIXES =
['Studio Legale', 'Studio Tecnico', 'Laboratorio'].freeze
SUFFIXES =
%w[S.p.a. s.r.l. s.n.c. Avvocati Architetti Ingegneri].freeze

Instance Method Summary collapse

Methods included from ModuleUtils

const_missing, k, luhn_check, underscore, unique

Methods included from RandomUtils

#fetch_sample, #rand, #shuffle

Instance Method Details

#nameObject



11
12
13
14
15
16
17
# File 'lib/ffaker/company_it.rb', line 11

def name
  case rand(0..2)
  when 0 then "#{NameIT.last_name} #{suffix}"
  when 1 then "#{NameIT.last_name} e #{NameIT.last_name} #{suffix}"
  when 2 then "#{prefix} #{NameIT.last_name}"
  end
end

#partita_ivaObject

Calculated using the algorithm at it.wikipedia.org/wiki/Partita_IVA to return a valid Partita IVA (Italian VAT number)

Returns:

  • a valid Italian VAT number (Partita IVA)



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/ffaker/company_it.rb', line 30

def partita_iva
  matricola = Array.new(7) { rand(0..9) }
  office_code = fetch_sample(PIVA_OFFICE_CODES)
  base = matricola + office_code.chars.map(&:to_i)

  # Thanks https://stackoverflow.com/a/9189731/1627766
  sum = base.reverse.each_slice(2).flat_map do |x, y = 0|
    [(x * 2).divmod(10), y]
  end.flatten.sum

  control_digit = (10 - (sum % 10)) % 10

  (base << control_digit).join
end

#prefixObject



23
24
25
# File 'lib/ffaker/company_it.rb', line 23

def prefix
  fetch_sample(PREFIXES)
end

#suffixObject



19
20
21
# File 'lib/ffaker/company_it.rb', line 19

def suffix
  fetch_sample(SUFFIXES)
end