economic-rest 0.2.0 → 0.2.1
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 +5 -5
- data/.gitignore +3 -0
- data/Gemfile +0 -2
- data/Gemfile.lock +9 -1
- data/economic-rest.gemspec +3 -0
- data/lib/economic/base.rb +2 -7
- data/lib/economic/base_repo.rb +20 -38
- data/lib/economic/customer.rb +11 -11
- data/lib/economic/customer_group.rb +9 -0
- data/lib/economic/journal.rb +1 -1
- data/lib/economic/journal_voucher_repo.rb +19 -0
- data/lib/economic/orders/drafts_repo.rb +0 -10
- data/lib/economic/orders/sent_repo.rb +0 -10
- data/lib/economic/product.rb +6 -6
- data/lib/economic/product_group.rb +5 -0
- data/lib/economic/rest/version.rb +1 -1
- data/lib/economic/rest.rb +4 -1
- data/lib/economic/voucher.rb +1 -1
- metadata +35 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 70dd914f6e7821a8c727eeb8d6f1bb3ccd5cb1ad
|
4
|
+
data.tar.gz: 263b1e229629e472e794f4722942ae976e9dcbe5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f528aeceed253f32041d2e5acf86a88e7889f00634ff3798793621bba6a60e5f705cc51061062c411a343866f8a1acc24607343c1b8543484079ad4d541b9f1
|
7
|
+
data.tar.gz: d91757bca5942f4c9f7b9613e85198d3cfee707633cc2bff1551707adffcd5a54211d2da67d462c4542c67462802a5cabef5afc47fa4c503e3701f669512bb1c
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
economic-rest (0.
|
4
|
+
economic-rest (0.2.0)
|
5
5
|
rest-client
|
6
6
|
|
7
7
|
GEM
|
@@ -11,11 +11,13 @@ GEM
|
|
11
11
|
public_suffix (>= 2.0.2, < 4.0)
|
12
12
|
crack (0.4.3)
|
13
13
|
safe_yaml (~> 1.0.0)
|
14
|
+
docile (1.3.1)
|
14
15
|
domain_name (0.5.20180417)
|
15
16
|
unf (>= 0.0.5, < 1.0.0)
|
16
17
|
hashdiff (0.3.8)
|
17
18
|
http-cookie (1.0.3)
|
18
19
|
domain_name (~> 0.5)
|
20
|
+
json (2.1.0)
|
19
21
|
m (1.5.1)
|
20
22
|
method_source (>= 0.6.7)
|
21
23
|
rake (>= 0.9.2.2)
|
@@ -32,6 +34,11 @@ GEM
|
|
32
34
|
mime-types (>= 1.16, < 4.0)
|
33
35
|
netrc (~> 0.8)
|
34
36
|
safe_yaml (1.0.4)
|
37
|
+
simplecov (0.16.1)
|
38
|
+
docile (~> 1.1)
|
39
|
+
json (>= 1.8, < 3)
|
40
|
+
simplecov-html (~> 0.10.0)
|
41
|
+
simplecov-html (0.10.2)
|
35
42
|
unf (0.1.4)
|
36
43
|
unf_ext
|
37
44
|
unf_ext (0.0.7.5)
|
@@ -49,6 +56,7 @@ DEPENDENCIES
|
|
49
56
|
m
|
50
57
|
minitest (~> 5.0)
|
51
58
|
rake (~> 10.0)
|
59
|
+
simplecov
|
52
60
|
webmock (~> 3.5)
|
53
61
|
|
54
62
|
BUNDLED WITH
|
data/economic-rest.gemspec
CHANGED
@@ -27,5 +27,8 @@ The documentation can be found at https://restdocs.e-conomic.com'
|
|
27
27
|
spec.add_development_dependency 'm'
|
28
28
|
spec.add_development_dependency 'minitest', '~> 5.0'
|
29
29
|
spec.add_development_dependency 'rake', '~> 10.0'
|
30
|
+
spec.add_development_dependency 'simplecov'
|
31
|
+
spec.add_development_dependency 'webmock', '~> 3.5'
|
32
|
+
|
30
33
|
spec.add_dependency 'rest-client'
|
31
34
|
end
|
data/lib/economic/base.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
module Economic
|
2
2
|
class Base
|
3
|
-
def initialize(hash)
|
3
|
+
def initialize(hash = {})
|
4
4
|
values_based_on_hash(hash)
|
5
5
|
end
|
6
6
|
|
@@ -16,18 +16,13 @@ module Economic
|
|
16
16
|
(@relations ||= []).push(name: name, fields: fields)
|
17
17
|
end
|
18
18
|
|
19
|
-
def self.field(name, id: false
|
19
|
+
def self.field(name, id: false)
|
20
20
|
economic_cased_attibute_name = name.to_s
|
21
21
|
attr_accessor economic_cased_attibute_name
|
22
22
|
alias_method snake_case(economic_cased_attibute_name), economic_cased_attibute_name
|
23
23
|
alias_method "#{snake_case(economic_cased_attibute_name)}=", "#{economic_cased_attibute_name}="
|
24
24
|
alias_method 'id_key', economic_cased_attibute_name if id
|
25
25
|
add_attribute economic_cased_attibute_name
|
26
|
-
if model
|
27
|
-
define_method("create_#{economic_cased_attibute_name[0...-1]}") do |class_instance|
|
28
|
-
repo.save(self, submodel: class_instance)
|
29
|
-
end
|
30
|
-
end
|
31
26
|
end
|
32
27
|
|
33
28
|
def self.relation(name, fields:)
|
data/lib/economic/base_repo.rb
CHANGED
@@ -5,47 +5,31 @@ require 'economic/session'
|
|
5
5
|
module Economic
|
6
6
|
class BaseRepo
|
7
7
|
URL = 'https://restapi.e-conomic.com/'.freeze
|
8
|
+
|
8
9
|
class << self
|
9
10
|
def headers
|
10
11
|
{ 'X-AppSecretToken': Session.app_secret_token, 'X-AgreementGrantToken': Session.agreement_grant_token, 'Content-Type': 'application/json' }
|
11
12
|
end
|
12
13
|
|
13
|
-
def fetch(
|
14
|
-
url =
|
15
|
-
url <<
|
16
|
-
url << endpoint.to_s if endpoint
|
17
|
-
url << if page_or_id.nil? || page_or_id.to_s.empty?
|
18
|
-
"?skippages=#{pageindex}&pagesize=1000"
|
19
|
-
else
|
20
|
-
"/#{page_or_id}"
|
21
|
-
end
|
14
|
+
def fetch(pageindex: 0, filter_text: '')
|
15
|
+
url = endpoint_url
|
16
|
+
url << "?skippages=#{pageindex}&pagesize=1000"
|
22
17
|
url << "&filter=#{filter_text}" unless filter_text == ''
|
23
|
-
|
24
|
-
|
25
|
-
end
|
18
|
+
|
19
|
+
response = RestClient.get(url, headers)
|
26
20
|
test_response(response)
|
27
21
|
end
|
28
22
|
|
29
|
-
def save(model
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
response = if relevant_model.id_key.nil?
|
41
|
-
RestClient.post(url, relevant_model.to_h.to_json, headers) do |response, _request, _result|
|
42
|
-
response
|
43
|
-
end
|
44
|
-
else
|
45
|
-
RestClient.put(url, relevant_model.to_h.to_json, headers) do |response, _request, _result|
|
46
|
-
response
|
47
|
-
end
|
48
|
-
end
|
23
|
+
def save(model)
|
24
|
+
post_or_put = model.id_key.nil? ? :post : :put
|
25
|
+
|
26
|
+
response = RestClient.public_send(post_or_put, endpoint_url + '/' + model.id_key.to_s, model.to_h.to_json, headers)
|
27
|
+
|
28
|
+
test_response(response)
|
29
|
+
end
|
30
|
+
|
31
|
+
def send(model)
|
32
|
+
response = RestClient.post(endpoint_url, model.to_h.to_json, headers)
|
49
33
|
test_response(response)
|
50
34
|
end
|
51
35
|
|
@@ -56,7 +40,7 @@ module Economic
|
|
56
40
|
|
57
41
|
# Loop until last page, last page does not have a 'nextPage'
|
58
42
|
while pagination['nextPage'] || pageindex.zero?
|
59
|
-
response = fetch(
|
43
|
+
response = fetch(pageindex: pageindex, filter_text: filter_text)
|
60
44
|
|
61
45
|
hash = JSON.parse(response.body)
|
62
46
|
hash['collection'].each do |entry_hash|
|
@@ -84,7 +68,7 @@ module Economic
|
|
84
68
|
end
|
85
69
|
|
86
70
|
def find(entry_number)
|
87
|
-
response =
|
71
|
+
response = test_response(RestClient.get(endpoint_url + '/' + entry_number.to_s, headers))
|
88
72
|
entry_hash = JSON.parse(response.body)
|
89
73
|
model.new(entry_hash)
|
90
74
|
end
|
@@ -107,10 +91,8 @@ module Economic
|
|
107
91
|
end_p.downcase
|
108
92
|
end
|
109
93
|
|
110
|
-
def
|
111
|
-
|
112
|
-
end_p = "/#{end_p}s"
|
113
|
-
end_p.downcase
|
94
|
+
def endpoint_url
|
95
|
+
URL + endpoint_name
|
114
96
|
end
|
115
97
|
|
116
98
|
def test_response(response)
|
data/lib/economic/customer.rb
CHANGED
@@ -24,16 +24,16 @@ module Economic
|
|
24
24
|
field :website
|
25
25
|
field :zip
|
26
26
|
|
27
|
-
field :attention
|
28
|
-
field :customerContact
|
29
|
-
|
30
|
-
field :defaultDeliveryLocation
|
31
|
-
field :invoices
|
32
|
-
field :layout
|
33
|
-
|
34
|
-
field :salesPerson
|
35
|
-
field :templates
|
36
|
-
field :totals
|
37
|
-
|
27
|
+
# field :attention
|
28
|
+
# field :customerContact
|
29
|
+
relation :customerGroup, fields: [:customerGroupNumber]
|
30
|
+
# field :defaultDeliveryLocation
|
31
|
+
# field :invoices
|
32
|
+
# field :layout
|
33
|
+
relation :paymentTerms, fields: [:paymentTermsNumber]
|
34
|
+
# field :salesPerson
|
35
|
+
# field :templates
|
36
|
+
# field :totals
|
37
|
+
relation :vatZone, fields: [:vatZoneNumber]
|
38
38
|
end
|
39
39
|
end
|
data/lib/economic/journal.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
module Economic
|
2
|
+
class JournalVoucherRepo < Economic::BaseRepo
|
3
|
+
def self.save(voucher)
|
4
|
+
response = RestClient.post(
|
5
|
+
Economic::JournalRepo.endpoint_url + '/' + voucher.journal.journalNumber.to_s + '/vouchers',
|
6
|
+
voucher.to_h.to_json,
|
7
|
+
headers
|
8
|
+
)
|
9
|
+
|
10
|
+
test_response(response)
|
11
|
+
|
12
|
+
Voucher.new(JSON.parse(response.body).first)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.endpoint_name
|
16
|
+
raise StandardError, 'only save is available on this repository'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,16 +1,6 @@
|
|
1
1
|
module Economic
|
2
2
|
module Orders
|
3
3
|
class DraftsRepo < Economic::Orders::Repo
|
4
|
-
def self.send(model)
|
5
|
-
url = ''
|
6
|
-
url << URL
|
7
|
-
url << 'orders'
|
8
|
-
url << '/drafts'
|
9
|
-
response = RestClient.post(url, model.to_h.to_json, headers) do |response, _request, _result|
|
10
|
-
response
|
11
|
-
end
|
12
|
-
test_response(response)
|
13
|
-
end
|
14
4
|
end
|
15
5
|
end
|
16
6
|
end
|
@@ -1,16 +1,6 @@
|
|
1
1
|
module Economic
|
2
2
|
module Orders
|
3
3
|
class SentRepo < Economic::Orders::Repo
|
4
|
-
def self.send(model)
|
5
|
-
url = ''
|
6
|
-
url << URL
|
7
|
-
url << 'orders'
|
8
|
-
url << '/sent'
|
9
|
-
response = RestClient.post(url, model.to_h.to_json, headers) do |response, _request, _result|
|
10
|
-
response
|
11
|
-
end
|
12
|
-
test_response(response)
|
13
|
-
end
|
14
4
|
end
|
15
5
|
end
|
16
6
|
end
|
data/lib/economic/product.rb
CHANGED
@@ -10,11 +10,11 @@ module Economic
|
|
10
10
|
field :recommendedPrice
|
11
11
|
field :salesPrice
|
12
12
|
|
13
|
-
field :departmentalDistribution
|
14
|
-
field :inventory
|
15
|
-
field :invoices
|
16
|
-
field :pricing
|
17
|
-
|
18
|
-
field :unit
|
13
|
+
# field :departmentalDistribution
|
14
|
+
# field :inventory
|
15
|
+
# field :invoices
|
16
|
+
# field :pricing
|
17
|
+
relation :productGroup, fields: [:productGroupNumber]
|
18
|
+
# field :unit
|
19
19
|
end
|
20
20
|
end
|
data/lib/economic/rest.rb
CHANGED
@@ -5,6 +5,8 @@ require 'economic/base_repo'
|
|
5
5
|
require 'economic/base'
|
6
6
|
|
7
7
|
require 'economic/vat_zone'
|
8
|
+
require 'economic/customer_group'
|
9
|
+
require 'economic/product_group'
|
8
10
|
|
9
11
|
require 'economic/delivery'
|
10
12
|
require 'economic/layout'
|
@@ -28,9 +30,10 @@ require 'economic/orders/sent_repo'
|
|
28
30
|
|
29
31
|
require 'economic/journal_repo'
|
30
32
|
require 'economic/journal'
|
33
|
+
require 'economic/journal_voucher_repo'
|
34
|
+
require 'economic/voucher'
|
31
35
|
|
32
36
|
require 'economic/accounting_year'
|
33
|
-
require 'economic/voucher'
|
34
37
|
|
35
38
|
module Economic
|
36
39
|
class Demo
|
data/lib/economic/voucher.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: economic-rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Klogborg
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,34 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '10.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: webmock
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.5'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.5'
|
69
97
|
- !ruby/object:Gem::Dependency
|
70
98
|
name: rest-client
|
71
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -101,10 +129,12 @@ files:
|
|
101
129
|
- lib/economic/base.rb
|
102
130
|
- lib/economic/base_repo.rb
|
103
131
|
- lib/economic/customer.rb
|
132
|
+
- lib/economic/customer_group.rb
|
104
133
|
- lib/economic/customer_repo.rb
|
105
134
|
- lib/economic/delivery.rb
|
106
135
|
- lib/economic/journal.rb
|
107
136
|
- lib/economic/journal_repo.rb
|
137
|
+
- lib/economic/journal_voucher_repo.rb
|
108
138
|
- lib/economic/layout.rb
|
109
139
|
- lib/economic/notes.rb
|
110
140
|
- lib/economic/order.rb
|
@@ -115,6 +145,7 @@ files:
|
|
115
145
|
- lib/economic/payment_terms.rb
|
116
146
|
- lib/economic/pdf.rb
|
117
147
|
- lib/economic/product.rb
|
148
|
+
- lib/economic/product_group.rb
|
118
149
|
- lib/economic/product_repo.rb
|
119
150
|
- lib/economic/project.rb
|
120
151
|
- lib/economic/recipient.rb
|
@@ -143,7 +174,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
143
174
|
- !ruby/object:Gem::Version
|
144
175
|
version: '0'
|
145
176
|
requirements: []
|
146
|
-
|
177
|
+
rubyforge_project:
|
178
|
+
rubygems_version: 2.5.1
|
147
179
|
signing_key:
|
148
180
|
specification_version: 4
|
149
181
|
summary: Ruby wrapper for the e-conomic REST API, that aims at making working with
|