vat_payer_cz 0.0.1 → 0.0.3
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
- data/Gemfile +1 -1
- data/README.md +46 -11
- data/lib/vat_info/models/vat_payer_extended.rb +26 -0
- data/lib/vat_info/models/vat_payers.rb +4 -4
- data/lib/vat_info/models.rb +1 -0
- data/lib/vat_info/request/unreliable_payer_extended.rb +19 -0
- data/lib/vat_info/request.rb +1 -0
- data/lib/vat_info/utils.rb +31 -0
- data/lib/vat_info/version.rb +1 -1
- data/lib/vat_info.rb +19 -4
- data/vat_info.gemspec +2 -3
- metadata +19 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 807e334a32d9d296115c356a28f12aa21aec3397
|
4
|
+
data.tar.gz: f5420d9d49965329a2a97941de66d19f01ac85e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9407c571506ee198838e31d539dda02d2cb5139efccb54670040021ac4764f4bacb8ba25b151c9632f1c737bae6e4aff18bb383716b3f9af1aa68f2926d2aca
|
7
|
+
data.tar.gz: 7730a090a5cc510c1de40ea11eecc719ff19b4a16a80433b45e9b286b3d124060afc5ccbe7bdc32fdb6c6bcdc0ab16b25472e6b4dafad870cad6b9ec6e9dfb98
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -6,18 +6,33 @@ This is Ruby wrapper for [web service for "searching information about reliabili
|
|
6
6
|
|
7
7
|
## Usage
|
8
8
|
The web service has the following three end-points:
|
9
|
-
- standard VAT payer info
|
10
|
-
- extended VAT payer info
|
11
|
-
- list of unreliable VAT payers
|
9
|
+
- [standard VAT payer info](#standard)
|
10
|
+
- [extended VAT payer info](#extended)
|
11
|
+
- list of unreliable VAT payers (not implemented)
|
12
12
|
|
13
|
-
This gem currently implements
|
13
|
+
This gem currently implements **standard VAT payer info** and **extended VAT payer info**.
|
14
14
|
|
15
|
-
|
15
|
+
## <a name="standard">Standard VAT payer info</a>
|
16
16
|
```ruby
|
17
|
+
require 'vat_info'
|
18
|
+
|
17
19
|
vat_ids = %w(CZ27169278 CZ26168685)
|
18
20
|
VatInfo.unreliable_payer(*vat_ids)
|
19
21
|
```
|
20
|
-
|
22
|
+
## <a name="extended">Extended VAT payer info</a>
|
23
|
+
Compared to Standard VAT payer info, the response is enriched by other VAT payer data, such as name and address.
|
24
|
+
The library normalizes some of the VAT payer attributes which are supplied in capitals (company name and address attributes).
|
25
|
+
```ruby
|
26
|
+
require 'vat_info'
|
27
|
+
|
28
|
+
vat_ids = %w(CZ27169278 CZ26168685)
|
29
|
+
VatInfo.unreliable_payer_extended(*vat_ids)
|
30
|
+
```
|
31
|
+
|
32
|
+
## Response
|
33
|
+
Object `VatInfo::Response`
|
34
|
+
|
35
|
+
#### Example
|
21
36
|
```shell
|
22
37
|
=> #<VatInfo::Response:0x0000000001ff61e8
|
23
38
|
@body=
|
@@ -33,24 +48,26 @@ You should see something like this:
|
|
33
48
|
{:predcisli=>nil, :cislo=>"2400915487", :kod_banky=>"2010", :iban=>nil, :datum_zverejneni=>"2016-05-05"}]},
|
34
49
|
...
|
35
50
|
```
|
36
|
-
|
37
|
-
Object `VatInfo::Response`
|
38
|
-
### status_code
|
51
|
+
### .status_code
|
39
52
|
`VatInfo::Response.status_code => String`
|
40
53
|
200 - OK: Valid response was received.
|
41
54
|
408 - Request Timeout: the web service timed out.
|
42
55
|
503 - Service Unavailable: there was another error fetching the response.
|
43
56
|
|
44
|
-
### body
|
57
|
+
### .body
|
45
58
|
Empty attributes have `nil` value.
|
46
59
|
|
47
60
|
`VatInfo::Response.body => Hash`
|
48
61
|
```ruby
|
49
62
|
{
|
50
63
|
status: { Status }
|
51
|
-
platci: [ { Payer }, .. ]
|
64
|
+
platci: [ { Payer | PayerExtended }, .. ]
|
52
65
|
}
|
53
66
|
```
|
67
|
+
|
68
|
+
### .raw
|
69
|
+
Raw data returned by the web service.
|
70
|
+
|
54
71
|
#### Status
|
55
72
|
See official docs for explanation.
|
56
73
|
```ruby
|
@@ -70,6 +87,24 @@ See official docs for explanation.
|
|
70
87
|
ucty: [ { Account }, .. ]
|
71
88
|
}
|
72
89
|
```
|
90
|
+
#### PayerExtended
|
91
|
+
```ruby
|
92
|
+
{
|
93
|
+
nespolehlivy_platce: String, # "ANO" | "NE" | "NENALEZEN"
|
94
|
+
datum_zverejneni: String, # ISO 8601 Date
|
95
|
+
dic: String,
|
96
|
+
cislo_fu: String,
|
97
|
+
ucty: [ { Account }, .. ]
|
98
|
+
|
99
|
+
#Extended info
|
100
|
+
nazev_subjektu: String,
|
101
|
+
ulice_cislo: String,
|
102
|
+
cast_obce: String,
|
103
|
+
mesto: String,
|
104
|
+
psc: String,
|
105
|
+
stat: String
|
106
|
+
}
|
107
|
+
```
|
73
108
|
#### Account
|
74
109
|
```ruby
|
75
110
|
{
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module VatInfo
|
2
|
+
module Models
|
3
|
+
class VatPayerExtended < VatPayer
|
4
|
+
def initialize(params)
|
5
|
+
super(params)
|
6
|
+
|
7
|
+
@data[:nazev_subjektu] = normalize(params[:nazev_subjektu])
|
8
|
+
|
9
|
+
address = params.fetch(:adresa, {})
|
10
|
+
@data[:ulice_cislo] = normalize(address[:ulice_cislo])
|
11
|
+
@data[:cast_obce] = normalize(address[:cast_obce])
|
12
|
+
@data[:mesto] = normalize(address[:mesto])
|
13
|
+
@data[:psc] = normalize(address[:psc])
|
14
|
+
@data[:stat] = address[:stat]
|
15
|
+
rescue KeyError => e
|
16
|
+
raise InvalidStructure, "Response XML is missing required attributes.\n" \
|
17
|
+
"Input params were: #{params}\n" \
|
18
|
+
"Rescued error: #{e}"
|
19
|
+
end
|
20
|
+
|
21
|
+
def normalize(string)
|
22
|
+
VatInfo::Utils.normalize(string)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -3,13 +3,13 @@ module VatInfo
|
|
3
3
|
class VatPayers
|
4
4
|
attr_accessor :data
|
5
5
|
|
6
|
-
def initialize(params = {})
|
6
|
+
def initialize(model, params = {})
|
7
7
|
@data = {}
|
8
|
-
@data[:platci] = create_vat_payers(params)
|
8
|
+
@data[:platci] = create_vat_payers(model, params)
|
9
9
|
end
|
10
10
|
|
11
|
-
def create_vat_payers(payers)
|
12
|
-
payers.map { |payer|
|
11
|
+
def create_vat_payers(model, payers)
|
12
|
+
payers.map { |payer| model.new(payer).data }
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
data/lib/vat_info/models.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
module VatInfo
|
2
|
+
class Request
|
3
|
+
class UnreliablePayerExtended < VatInfo::Request
|
4
|
+
attr_accessor :vat_ids
|
5
|
+
|
6
|
+
def initialize(*vat_ids)
|
7
|
+
self.vat_ids = vat_ids
|
8
|
+
end
|
9
|
+
|
10
|
+
def body
|
11
|
+
Nokogiri::XML::Builder.new('encoding' => 'UTF-8') do |xml|
|
12
|
+
xml.StatusNespolehlivyPlatceRozsirenyRequest(xmlns: 'http://adis.mfcr.cz/rozhraniCRPDPH/') do
|
13
|
+
vat_ids.each { |vat_id| xml.dic(vat_id) }
|
14
|
+
end
|
15
|
+
end.doc
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/vat_info/request.rb
CHANGED
data/lib/vat_info/utils.rb
CHANGED
@@ -1,7 +1,38 @@
|
|
1
1
|
module VatInfo
|
2
2
|
module Utils
|
3
|
+
COMPANY_TYPES = ['a.s.', 's.r.o.', 'v.o.s.', 'k.s.', 'z.s.'].freeze
|
4
|
+
SPECIAL_CHARS = [
|
5
|
+
%w(Á á), %w(Č č), %w(Ď ď), %w(É é), %w(Ě ě), %w(Í í), %w(Ň ń), %w(Ó ó),
|
6
|
+
%w(Ř ř), %w(Š š), %w(Ť ť), %w(Ú ú), %w(Ů ů), %w(Ž ž), %w(Ý ý)
|
7
|
+
].freeze
|
8
|
+
|
3
9
|
def self.wrap_in_array(content)
|
4
10
|
content.is_a?(Array) ? content : [content]
|
5
11
|
end
|
12
|
+
|
13
|
+
def self.normalize(string)
|
14
|
+
return unless string
|
15
|
+
replace_exceptions(string).strip.split(' ').map do |word|
|
16
|
+
format_this word
|
17
|
+
end.join(' ')
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.replace_special_chars(string)
|
21
|
+
sub_string = string[1..-1]
|
22
|
+
SPECIAL_CHARS.each do |pattern|
|
23
|
+
sub_string = sub_string.gsub(/#{pattern[0]}/i, pattern[1])
|
24
|
+
end
|
25
|
+
string[0].concat(sub_string)
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.replace_exceptions(string)
|
29
|
+
string.gsub(/,.+spol\.+ s r.o./i, ' s.r.o.')
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.format_this(string)
|
33
|
+
return string.downcase if string.size == 1
|
34
|
+
return string.downcase if COMPANY_TYPES.include? string.downcase
|
35
|
+
replace_special_chars(string.capitalize)
|
36
|
+
end
|
6
37
|
end
|
7
38
|
end
|
data/lib/vat_info/version.rb
CHANGED
data/lib/vat_info.rb
CHANGED
@@ -7,6 +7,8 @@ require 'vat_info/models'
|
|
7
7
|
|
8
8
|
module VatInfo
|
9
9
|
def self.unreliable_payer(*vat_ids)
|
10
|
+
raise ArgumentError, 'Supply at least one id for query' if vat_ids.blank?
|
11
|
+
|
10
12
|
request = VatInfo::Request::UnreliablePayer.new(*vat_ids).to_xml
|
11
13
|
response = VatInfo::Query.call(request, :get_status_nespolehlivy_platce)
|
12
14
|
|
@@ -15,16 +17,29 @@ module VatInfo
|
|
15
17
|
status = VatInfo::Models::Status.new(status_raw).data
|
16
18
|
|
17
19
|
payers_raw = VatInfo::Utils.wrap_in_array(response.raw[:status_nespolehlivy_platce_response][:status_platce_dph])
|
18
|
-
payers = VatInfo::Models::VatPayers.new(payers_raw).data
|
20
|
+
payers = VatInfo::Models::VatPayers.new(VatInfo::Models::VatPayer, payers_raw).data
|
19
21
|
|
20
22
|
response.body = status.merge(payers)
|
21
23
|
end
|
22
24
|
response
|
23
25
|
end
|
24
26
|
|
25
|
-
def self.unreliable_payer_extended
|
26
|
-
|
27
|
-
|
27
|
+
def self.unreliable_payer_extended(*vat_ids)
|
28
|
+
raise ArgumentError, 'Supply at least one id for query' if vat_ids.blank?
|
29
|
+
|
30
|
+
request = VatInfo::Request::UnreliablePayerExtended.new(*vat_ids).to_xml
|
31
|
+
response = VatInfo::Query.call(request, :get_status_nespolehlivy_platce_rozsireny)
|
32
|
+
|
33
|
+
if response.ok?
|
34
|
+
status_raw = response.raw[:status_nespolehlivy_platce_rozsireny_response][:status]
|
35
|
+
status = VatInfo::Models::Status.new(status_raw).data
|
36
|
+
|
37
|
+
payers_raw = VatInfo::Utils.wrap_in_array(response.raw[:status_nespolehlivy_platce_rozsireny_response][:status_platce_dph])
|
38
|
+
payers = VatInfo::Models::VatPayers.new(VatInfo::Models::VatPayerExtended, payers_raw).data
|
39
|
+
|
40
|
+
response.body = status.merge(payers)
|
41
|
+
end
|
42
|
+
response
|
28
43
|
end
|
29
44
|
|
30
45
|
def self.unreliable_payer_list
|
data/vat_info.gemspec
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
lib = File.expand_path('
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
3
|
require 'vat_info/version'
|
4
4
|
|
@@ -13,7 +13,6 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = 'https://github.com/ucetnictvi-on-line/vat_payer_cz'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
|
-
|
17
16
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
17
|
f.match(%r{^(test|spec|features)/})
|
19
18
|
end
|
@@ -27,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
27
26
|
spec.add_development_dependency 'pry', '~> 0.11'
|
28
27
|
spec.add_development_dependency 'rake', '~> 10.0'
|
29
28
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
29
|
+
spec.add_development_dependency 'rubocop'
|
30
30
|
spec.add_development_dependency 'vcr', '~> 4.0'
|
31
31
|
spec.add_development_dependency 'webmock', '~> 3.3'
|
32
32
|
end
|
33
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vat_payer_cz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomas Landovsky
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: savon
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: vcr
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -135,10 +149,12 @@ files:
|
|
135
149
|
- lib/vat_info/models.rb
|
136
150
|
- lib/vat_info/models/status.rb
|
137
151
|
- lib/vat_info/models/vat_payer.rb
|
152
|
+
- lib/vat_info/models/vat_payer_extended.rb
|
138
153
|
- lib/vat_info/models/vat_payers.rb
|
139
154
|
- lib/vat_info/query.rb
|
140
155
|
- lib/vat_info/request.rb
|
141
156
|
- lib/vat_info/request/unreliable_payer.rb
|
157
|
+
- lib/vat_info/request/unreliable_payer_extended.rb
|
142
158
|
- lib/vat_info/response.rb
|
143
159
|
- lib/vat_info/utils.rb
|
144
160
|
- lib/vat_info/version.rb
|
@@ -163,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
163
179
|
version: '0'
|
164
180
|
requirements: []
|
165
181
|
rubyforge_project:
|
166
|
-
rubygems_version: 2.
|
182
|
+
rubygems_version: 2.6.8
|
167
183
|
signing_key:
|
168
184
|
specification_version: 4
|
169
185
|
summary: Ruby wrapper for web service providing info about Czech VAT payers.
|