From 88793ba40aec1e4842f8d9ccb3444caba4b48a01 Mon Sep 17 00:00:00 2001 From: Jindrich Skupa Date: Thu, 16 Jul 2020 08:28:23 +0200 Subject: [PATCH 1/3] Added subject status detail --- README.md | 4 +++- lib/ruby-ares.rb | 3 ++- lib/ruby-ares/address.rb | 4 +++- lib/ruby-ares/parser.rb | 11 +++++++++-- lib/ruby-ares/state.rb | 37 +++++++++++++++++++++++++++++++++++++ lib/ruby-ares/subject.rb | 4 +++- test/test_ares.rb | 12 ++++++++++++ test/test_ares_address.rb | 2 +- test/test_state.rb | 20 ++++++++++++++++++++ 9 files changed, 90 insertions(+), 7 deletions(-) create mode 100644 lib/ruby-ares/state.rb create mode 100644 test/test_state.rb diff --git a/README.md b/README.md index 026d9bd..485cd0e 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ su -c 'yum install libxml2-devel' * Addresses * Legal form / Legal form ARES id * Case reference (where company is registered) +* Company status ## Usage @@ -39,13 +40,14 @@ subject = RubyARES::Subject.get(27074358) ``` And then: ```ruby -subject => #], @updated_at=nil, @legal_form=”Akciová společnost”, @legal_form_id=”121”, @case_reference=#> +subject => #, @addresses=[#], @updated_at=nil, @legal_form="Akciová společnost", @legal_form_id="121", @case_reference=#> subject.name => “Asseco Central Europe, a.s.” subject.ic => “27074358” subject.address => # subject.address.to_str => “Budějovická 3a/778\n14000 Praha\nMichle\n” subject.case_reference => # subject.case_reference.to_str => “Městský soud v Praze B 8525” +subject.state => # ``` ### Exceptions diff --git a/lib/ruby-ares.rb b/lib/ruby-ares.rb index d0e766f..f447070 100644 --- a/lib/ruby-ares.rb +++ b/lib/ruby-ares.rb @@ -6,8 +6,9 @@ require 'ruby-ares/subject' require 'ruby-ares/address' require 'ruby-ares/case_reference' +require 'ruby-ares/state' require 'ruby-ares/parser' module RubyARES - VERSION = '0.0.3' + VERSION = '0.0.4' end diff --git a/lib/ruby-ares/address.rb b/lib/ruby-ares/address.rb index 412e664..cd96141 100644 --- a/lib/ruby-ares/address.rb +++ b/lib/ruby-ares/address.rb @@ -10,9 +10,10 @@ class Address :house_number_type, # Typ_cislo_domovni :orientational_number, # Cislo_orientacni :postcode # PSC + :county # Okres def initialize(id, street, postcode, city, city_part, - house_number, house_number_type, orientational_number) + house_number, house_number_type, orientational_number, county) @id = id @street = street @postcode = postcode @@ -21,6 +22,7 @@ def initialize(id, street, postcode, city, city_part, @house_number = house_number @house_number_type = house_number_type @orientational_number = orientational_number + @county = county end def to_str diff --git a/lib/ruby-ares/parser.rb b/lib/ruby-ares/parser.rb index 6addcb4..fc018b7 100644 --- a/lib/ruby-ares/parser.rb +++ b/lib/ruby-ares/parser.rb @@ -29,8 +29,14 @@ def self.get_subject(xml) place = node.find('//D:SZ/D:SD/D:T').to_a[0].content unless node.find('//D:SZ/D:SD/D:T').to_a.size == 0 record = node.find('//D:SZ/D:OV').to_a[0].content unless node.find('//D:SZ/D:OV').to_a.size == 0 section, insert = record.split if record + state = node.find('//D:SOR/D:SSU').to_a[0].content unless node.find('//D:SOR/D:SSU').to_a.size == 0 + bankruptcy = node.find('//D:SOR/D:KKZ/D:K').to_a[0].content unless node.find('//D:SOR/D:KKZ/D:K').to_a.size == 0 + compensation = node.find('//D:SOR/D:VY/D:K').to_a[0].content unless node.find('//D:SOR/D:VY/D:K').to_a.size == 0 + refusal = node.find('//D:SOR/D:ZAM/D:K').to_a[0].content unless node.find('//D:SOR/D:ZAM/D:K').to_a.size == 0 + liquidation = node.find('//D:SOR/D:LI/D:K').to_a[0].content unless node.find('//D:SOR/D:LI/D:K').to_a.size == 0 @case_reference = RubyARES::CaseReference.new(place, section, insert) + @state = RubyARES::State.new(state, bankruptcy, compensation, refusal, liquidation) end # Corresponding addresses @@ -44,7 +50,7 @@ def self.get_subject(xml) end # Create and return subject - return RubyARES::Subject.new(@ic, @dic, @name, @status, @addresses, @updated_at, @legal_form, @legal_form_id, @case_reference) + return RubyARES::Subject.new(@ic, @dic, @name, @status, @addresses, @updated_at, @legal_form, @legal_form_id, @case_reference, @state) end protected @@ -61,9 +67,10 @@ def self.find_addresses(doc) house_number = node.find('D:CD').to_a[0].content unless node.find('D:CD').to_a.size == 0 house_number_type = node.find('D:TCD').to_a[0].content unless node.find('D:TCD').to_a.size == 0 orientational_number = node.find('D:CO').to_a[0].content unless node.find('D:CO').to_a.size == 0 + county = node.find('D:NOK').to_a[0].content unless node.find('D:NOK').to_a.size == 0 @addresses << RubyARES::Address.new(id, street, postcode, city, city_part, - house_number, house_number_type, orientational_number) + house_number, house_number_type, orientational_number, county) end return @addresses diff --git a/lib/ruby-ares/state.rb b/lib/ruby-ares/state.rb new file mode 100644 index 0000000..8e98c47 --- /dev/null +++ b/lib/ruby-ares/state.rb @@ -0,0 +1,37 @@ +# encoding: utf-8 + +module RubyARES + class State + MAPPINGS_STATE = { + "Aktivní" => :active, + "Zaniklý" => :closed + }.freeze + + MAPPINGS_KVZ = { + 0 => 'není a nebyl', + 1 => 'poslední nastal(-a) před více než rokem od této aktualizace', + 2 => 'poslední nastal(-a) před méně než rokem a více než půlrokem od této aktualizace', + 3 => 'poslední nastal(-a) před méně než půlrokem od této aktualizace', + 4 => 'poslední nastal(-a) právě při této aktualizaci' + }.freeze + + attr_reader :state, # Stav + :bankruptcy, # Konkurz + :compensation, # Vyrovnani + :refusal, # Zamitnuti + :liquidation # Likvidace + + def initialize(state, bankruptcy, compensation, refusal, liquidation) + @state = MAPPINGS_STATE[state] + @bankruptcy = bankruptcy.to_i + @compensation = compensation.to_i + @refusal = refusal.to_i + @liquidation = liquidation.to_i + end + + def self.kvz_to_str(kvz_id) + MAPPINGS_KVZ[kvz_id.to_i] + end + + end +end diff --git a/lib/ruby-ares/subject.rb b/lib/ruby-ares/subject.rb index cb8f6ec..d56de80 100644 --- a/lib/ruby-ares/subject.rb +++ b/lib/ruby-ares/subject.rb @@ -13,6 +13,7 @@ class Subject :legal_form,# Pravni forma :legal_form_id, # Id pravni formy :status, # Stav + :state, # Stav - podrobneji :case_reference, # Spisova znacka :addresses, # Adresy :updated_at # Datum_zmeny @@ -22,11 +23,12 @@ def self.get(ic) RubyARES::Parser.get_subject xml end - def initialize(ic, dic, name, status, addresses, updated_at, legal_form, legal_form_id, case_reference) + def initialize(ic, dic, name, status, addresses, updated_at, legal_form, legal_form_id, case_reference, state) @ic, @ico = ic, ic @dic = dic @name, @company = name @status = status + @state = state @addresses = addresses @updated_at = updated_at @legal_form = legal_form diff --git a/test/test_ares.rb b/test/test_ares.rb index c6eb590..50ddc39 100644 --- a/test/test_ares.rb +++ b/test/test_ares.rb @@ -65,4 +65,16 @@ def test_case_reference_insert assert_equal '8525', @subject.case_reference.insert end + def test_state_active + assert_equal :active, @subject.state.state + end + + def test_state_liquidation + assert_equal 0, @subject.state.liquidation + end + + def test_state_mappings + assert_equal 'není a nebyl', RubyARES::State.kvz_to_str(@subject.state.liquidation) + end + end diff --git a/test/test_ares_address.rb b/test/test_ares_address.rb index 0eb7ebc..7ce26ba 100644 --- a/test/test_ares_address.rb +++ b/test/test_ares_address.rb @@ -6,7 +6,7 @@ class RubyARESAddressTest < Minitest::Test def setup - @address = RubyARES::Address.new(1, 'Kunzova', '10010', 'Brno', 'Královo pole', 1, 1, nil) + @address = RubyARES::Address.new(1, 'Kunzova', '10010', 'Brno', 'Královo pole', 1, 1, nil, nil) end def test_address_to_string diff --git a/test/test_state.rb b/test/test_state.rb new file mode 100644 index 0000000..7fe5950 --- /dev/null +++ b/test/test_state.rb @@ -0,0 +1,20 @@ +# encoding: UTF-8 + +require 'minitest/autorun' +require 'ruby-ares/state' + +class RubyARESStateTest < Minitest::Test + + def setup + @state = RubyARES::State.new("Aktivní", 0, 0, 0, 0) + end + + def test_state + assert_equal :active, @state.state + end + + def test_mappings + assert_equal 'není a nebyl', RubyARES::State.kvz_to_str(@state.liquidation) + end + +end From ffa03fb734318783b0131dba8c588b284a3710cc Mon Sep 17 00:00:00 2001 From: Jindrich Skupa Date: Thu, 16 Jul 2020 09:55:44 +0200 Subject: [PATCH 2/3] Added subject status detail --- lib/ruby-ares/state.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/ruby-ares/state.rb b/lib/ruby-ares/state.rb index 8e98c47..85580c0 100644 --- a/lib/ruby-ares/state.rb +++ b/lib/ruby-ares/state.rb @@ -2,6 +2,9 @@ module RubyARES class State + + # mappings source: http://wwwinfo.mfcr.cz/ares/xml_doc/schemas/ares/ares_datatypes/v_1.0.3/ares_datatypes_v_1.0.3.xsd + MAPPINGS_STATE = { "Aktivní" => :active, "Zaniklý" => :closed From 96ab8d786904f94f5aed0a642ddb96ead3bea5eb Mon Sep 17 00:00:00 2001 From: Jindrich Skupa Date: Tue, 4 Aug 2020 16:38:54 +0200 Subject: [PATCH 3/3] Added subject status detail --- lib/ruby-ares/address.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/ruby-ares/address.rb b/lib/ruby-ares/address.rb index cd96141..77d67f9 100644 --- a/lib/ruby-ares/address.rb +++ b/lib/ruby-ares/address.rb @@ -9,7 +9,7 @@ class Address :house_number, # Cislo_domovni :house_number_type, # Typ_cislo_domovni :orientational_number, # Cislo_orientacni - :postcode # PSC + :postcode, # PSC :county # Okres def initialize(id, street, postcode, city, city_part,