valvat 0.7.1 → 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/CHANGES.md +8 -1
- data/README.md +1 -1
- data/lib/valvat/checksum/gb.rb +35 -0
- data/lib/valvat/locales/nl.yml +1 -1
- data/lib/valvat/version.rb +1 -1
- data/spec/valvat/checksum/gb_spec.rb +29 -0
- metadata +5 -2
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e373ba20e8fed84df96a492189f89b9ada0019f0
|
4
|
+
data.tar.gz: 53ede53f7b0e013f3453e1874e29435a22397551
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 541abfbb3d0138b2bbdb446f49f5bf9ad7d967e10b78d8594405113cf0d1b9144483820b28ba7536b459f9bd62ac53ae59f86c75467ca281349101ad1c3dd012
|
7
|
+
data.tar.gz: 26a115b8ddb9e833754648b3738f08fdf54cb79482b4f4643033f095d6272687bae5bef01ccdd3c27aa5aff821e3b94c0d7f009abf9579e7b45d64f6f7c8484e
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/CHANGES.md
CHANGED
@@ -1,6 +1,13 @@
|
|
1
1
|
### dev
|
2
2
|
|
3
|
-
[full changelog](http://github.com/yolk/valvat/compare/v0.7.
|
3
|
+
[full changelog](http://github.com/yolk/valvat/compare/v0.7.2...master)
|
4
|
+
|
5
|
+
### 0.7.2 / 2018-02-26
|
6
|
+
|
7
|
+
[full changelog](http://github.com/yolk/valvat/compare/v0.7.1...v0.7.2)
|
8
|
+
|
9
|
+
* Added support for GB vats checksum validation (by [ivopashov](https://github.com/ivopashov))
|
10
|
+
* Corrected dutch language support (by [ploomans](https://github.com/ploomans))
|
4
11
|
|
5
12
|
### 0.7.1 / 2017-06-21
|
6
13
|
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
valvat
|
2
2
|
===========
|
3
3
|
|
4
|
-
[](http://badge.fury.io/rb/valvat) [](https://travis-ci.org/yolk/valvat) [](https://codeclimate.com/github/yolk/valvat)
|
5
5
|
|
6
6
|
Validates european vat numbers. Standalone or as a ActiveModel validator.
|
7
7
|
|
@@ -0,0 +1,35 @@
|
|
1
|
+
class Valvat
|
2
|
+
module Checksum
|
3
|
+
class GB < Base
|
4
|
+
OLD_FORMAT_FORBIDDEN_RANGES = [(100_000..999_999), (9_490_001..9_700_000), (9_990_001..9_999_999)]
|
5
|
+
NEW_FORMAT_FORBIDDEN_RANGES = [(1..100_000), (100_001..1_000_000)]
|
6
|
+
|
7
|
+
def validate
|
8
|
+
vat_number = vat.to_s_wo_country
|
9
|
+
check_sum = vat.to_s_wo_country[7..8].to_i
|
10
|
+
vat_base = vat_number[0..6]
|
11
|
+
|
12
|
+
# government departments and health authorities, so no checksum
|
13
|
+
return true if vat_number =~ /\A(GD[0-4]{1}\d{2})\Z/ || vat_number =~ /\A(HA[5-9]{1}\d{2})\Z/
|
14
|
+
return false if vat_number =~ /\A0{9}\Z/ || vat_number =~ /\A0{12}\Z/
|
15
|
+
|
16
|
+
vat_base_sum = vat_base.split('').
|
17
|
+
map(&:to_i).
|
18
|
+
zip([8, 7, 6, 5, 4, 3, 2]).
|
19
|
+
map { |vat_number_digit, multiplier| vat_number_digit * multiplier }.
|
20
|
+
inject(:+)
|
21
|
+
|
22
|
+
old_format_remainder = (vat_base_sum + check_sum).modulo(97)
|
23
|
+
new_format_remainder = (vat_base_sum + 55 + check_sum).modulo(97)
|
24
|
+
|
25
|
+
return false if old_format_remainder == 0 &&
|
26
|
+
OLD_FORMAT_FORBIDDEN_RANGES.any? { |range| range.include? vat_base.to_i }
|
27
|
+
|
28
|
+
return false if new_format_remainder == 0 &&
|
29
|
+
NEW_FORMAT_FORBIDDEN_RANGES.any? { |range| range.include? vat_base.to_i }
|
30
|
+
|
31
|
+
old_format_remainder == 0 || new_format_remainder == 0
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/valvat/locales/nl.yml
CHANGED
data/lib/valvat/version.rb
CHANGED
@@ -0,0 +1,29 @@
|
|
1
|
+
describe Valvat::Checksum::GB do
|
2
|
+
%w(GBGD100 GBHA600).each do |gov_agency_vat|
|
3
|
+
it "returns true on valid vat for government agency #{gov_agency_vat}" do
|
4
|
+
expect(Valvat::Checksum.validate(gov_agency_vat)).to be true
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
%w(GB000000000 GB000000000000).each do |invalid_vat|
|
9
|
+
it 'is false for all zero number' do
|
10
|
+
expect(Valvat::Checksum.validate(invalid_vat)).to be false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'is true for an old format valid vat' do
|
15
|
+
expect(Valvat::Checksum.validate('GB434031494')).to be true
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'is true for a new format valid vat' do
|
19
|
+
expect(Valvat::Checksum.validate('GB434031439')).to be true
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'is false for an old format vat in forbidden group' do
|
23
|
+
expect(Valvat::Checksum.validate('GB999999973')).to be false
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'is false for a new format vat in forbidden group' do
|
27
|
+
expect(Valvat::Checksum.validate('GB100000034')).to be false
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: valvat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastian Munz
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
30
30
|
uE5yNhiszXkFmLQWPm57rwu8PbwT7av5kmYVhn8qkRz2aZnuAlLV3rcq2Khe5F0/
|
31
31
|
jZmT2fJ8H8g=
|
32
32
|
-----END CERTIFICATE-----
|
33
|
-
date:
|
33
|
+
date: 2018-02-26 00:00:00.000000000 Z
|
34
34
|
dependencies:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: savon
|
@@ -111,6 +111,7 @@ files:
|
|
111
111
|
- lib/valvat/checksum/es.rb
|
112
112
|
- lib/valvat/checksum/fi.rb
|
113
113
|
- lib/valvat/checksum/fr.rb
|
114
|
+
- lib/valvat/checksum/gb.rb
|
114
115
|
- lib/valvat/checksum/gr.rb
|
115
116
|
- lib/valvat/checksum/hr.rb
|
116
117
|
- lib/valvat/checksum/hu.rb
|
@@ -160,6 +161,7 @@ files:
|
|
160
161
|
- spec/valvat/checksum/es_spec.rb
|
161
162
|
- spec/valvat/checksum/fi_spec.rb
|
162
163
|
- spec/valvat/checksum/fr_spec.rb
|
164
|
+
- spec/valvat/checksum/gb_spec.rb
|
163
165
|
- spec/valvat/checksum/gr_spec.rb
|
164
166
|
- spec/valvat/checksum/hr_spec.rb
|
165
167
|
- spec/valvat/checksum/hu_spec.rb
|
@@ -217,6 +219,7 @@ test_files:
|
|
217
219
|
- spec/valvat/checksum/es_spec.rb
|
218
220
|
- spec/valvat/checksum/fi_spec.rb
|
219
221
|
- spec/valvat/checksum/fr_spec.rb
|
222
|
+
- spec/valvat/checksum/gb_spec.rb
|
220
223
|
- spec/valvat/checksum/gr_spec.rb
|
221
224
|
- spec/valvat/checksum/hr_spec.rb
|
222
225
|
- spec/valvat/checksum/hu_spec.rb
|
metadata.gz.sig
CHANGED
Binary file
|