5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/kangal/tax_number.rb', line 5
def validate_each(object, attribute, value)
ActiveSupport::Deprecation.warn "`tax_number: :true` is deprecated and may be removed from future releases, use `tcvkn: true` instead.", caller
return if options[:allow_nil] && value.nil?
return if options[:allow_blank] && value.blank?
valid = false
val = value.to_s
if val.size == 10
val1 = Array.new
val2 = Array.new
last_digit = val[9].to_i
(0..8).each do |index|
val1 << ((val[index].to_i + (9 - index)) % 10).to_i
end
(0..8).each do |index|
val2 << ((val1[index].to_i * (2 ** (9 - index))) % 9).to_i
end
(0..8).each do |index|
val2[index] = 9 if (val1[index] != 0 && val2[index] == 0)
end
sum = 0
(0..8).each do |index|
sum += val2[index]
end
if (sum % 10) == 0
sum = 0
else
sum = 10 - (sum % 10)
end
valid = (sum == last_digit)
end
object.errors.add attribute, (options[:message] || I18n.t(:invalid, :scope => 'kangal.validations.tax_number')) unless valid
end
|