elmas 2.4.2 → 2.5.0

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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +9 -0
  3. data/Gemfile +3 -1
  4. data/Guardfile +6 -4
  5. data/README.md +15 -4
  6. data/Rakefile +3 -1
  7. data/elmas.gemspec +17 -15
  8. data/lib/elmas.rb +11 -2
  9. data/lib/elmas/api.rb +2 -0
  10. data/lib/elmas/client.rb +2 -0
  11. data/lib/elmas/config.rb +28 -21
  12. data/lib/elmas/exception.rb +2 -0
  13. data/lib/elmas/oauth.rb +40 -4
  14. data/lib/elmas/parser.rb +2 -0
  15. data/lib/elmas/request.rb +2 -0
  16. data/lib/elmas/resource.rb +7 -5
  17. data/lib/elmas/resources/account.rb +27 -24
  18. data/lib/elmas/resources/aging_receivables_list.rb +8 -6
  19. data/lib/elmas/resources/bank_account.rb +13 -19
  20. data/lib/elmas/resources/bank_entry.rb +6 -4
  21. data/lib/elmas/resources/bank_entry_line.rb +6 -4
  22. data/lib/elmas/resources/base_entry_line.rb +10 -6
  23. data/lib/elmas/resources/cash_entry.rb +22 -0
  24. data/lib/elmas/resources/cash_entry_line.rb +20 -0
  25. data/lib/elmas/resources/contact.rb +10 -8
  26. data/lib/elmas/resources/costcenter.rb +4 -2
  27. data/lib/elmas/resources/costunit.rb +4 -2
  28. data/lib/elmas/resources/division.rb +26 -0
  29. data/lib/elmas/resources/document.rb +7 -5
  30. data/lib/elmas/resources/document_attachment.rb +3 -1
  31. data/lib/elmas/resources/general_journal_entry.rb +4 -2
  32. data/lib/elmas/resources/general_journal_entry_line.rb +2 -0
  33. data/lib/elmas/resources/gl_account.rb +11 -9
  34. data/lib/elmas/resources/item.rb +21 -18
  35. data/lib/elmas/resources/item_group.rb +4 -2
  36. data/lib/elmas/resources/journal.rb +6 -4
  37. data/lib/elmas/resources/layout.rb +6 -4
  38. data/lib/elmas/resources/mailbox.rb +6 -4
  39. data/lib/elmas/resources/payment_condition.rb +9 -7
  40. data/lib/elmas/resources/printed_sales_invoice.rb +12 -10
  41. data/lib/elmas/resources/project.rb +11 -19
  42. data/lib/elmas/resources/purchase_entry.rb +5 -6
  43. data/lib/elmas/resources/purchase_entry_line.rb +2 -0
  44. data/lib/elmas/resources/receivables_list.rb +4 -5
  45. data/lib/elmas/resources/sales_entry.rb +5 -7
  46. data/lib/elmas/resources/sales_entry_line.rb +2 -0
  47. data/lib/elmas/resources/sales_invoice.rb +4 -5
  48. data/lib/elmas/resources/sales_invoice_line.rb +4 -5
  49. data/lib/elmas/resources/sales_item_prices.rb +4 -5
  50. data/lib/elmas/resources/sales_order.rb +4 -5
  51. data/lib/elmas/resources/sales_order_line.rb +4 -5
  52. data/lib/elmas/resources/shared_sales_attributes.rb +6 -11
  53. data/lib/elmas/resources/time_transaction.rb +8 -12
  54. data/lib/elmas/resources/transaction.rb +4 -2
  55. data/lib/elmas/resources/transaction_line.rb +4 -2
  56. data/lib/elmas/resources/vat_code.rb +5 -8
  57. data/lib/elmas/response.rb +5 -2
  58. data/lib/elmas/result_set.rb +4 -2
  59. data/lib/elmas/sanitizer.rb +7 -5
  60. data/lib/elmas/uri.rb +2 -0
  61. data/lib/elmas/utils.rb +2 -0
  62. data/lib/elmas/version.rb +4 -2
  63. metadata +29 -27
  64. data/lib/elmas/log.rb +0 -19
@@ -1,16 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  module SharedSalesAttributes
3
- SHARED_SALES_ATTRIBUTES = [
4
- :currency, :invoice_to, :invoice_to_contact_person, :invoice_date,
5
- :description, :document, :order_date, :ordered_by_contact_person,
6
- :tax_schedule, :order_number, :payment_condition, :payment_reference,
7
- :remarks, :your_ref, :amount_DC
8
- ].freeze
5
+ SHARED_SALES_ATTRIBUTES = %i[currency invoice_to invoice_to_contact_person invoice_date description document order_date ordered_by_contact_person
6
+ tax_schedule order_number payment_condition payment_reference remarks your_ref amount_DC].freeze
9
7
 
10
- SHARED_LINE_ATTRIBUTES = [
11
- :discount, :quantity, :amount_FC, :description, :VAT_code, :cost_center,
12
- :cost_unit, :VAT_percentage, :unit_code, :tax_schedule, :net_price, :notes,
13
- :pricelist, :project, :amount_DC
14
- ].freeze
8
+ SHARED_LINE_ATTRIBUTES = %i[discount quantity amount_FC description VAT_code cost_center cost_unit VAT_percentage unit_code tax_schedule
9
+ net_price notes pricelist project amount_DC].freeze
15
10
  end
16
11
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class TimeTransaction
3
5
  include Elmas::Resource
@@ -7,22 +9,16 @@ module Elmas
7
9
  end
8
10
 
9
11
  def mandatory_attributes
10
- [:account, :item, :quantity]
12
+ %i[account item quantity]
11
13
  end
12
14
 
13
15
  # https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=ProjectTimeTransactions
14
16
  def other_attributes
15
- [
16
- :account, :account_name, :activity, :activity_description, :amount, :amount_fc,
17
- :attachment, :created, :creator, :creator_full_name, :currency, :date,
18
- :division, :division_description, :employee, :end_time, :entry_number,
19
- :error_text, :hour_status, :item, :item_description, :item_divisable,
20
- :modified, :modifier, :modifier_full_name, :notes, :price, :price_fc, :project,
21
- :project_account, :project_account_code, :project_account_name,
22
- :project_description, :quantity, :start_time, :subscription,
23
- :subscription_account, :subscription_account_code, :subscription_account_name,
24
- :subscription_description, :subscription_number, :type
25
- ]
17
+ %i[account account_name activity activity_description amount amount_fc attachment created creator creator_full_name currency date division
18
+ division_description employee end_time entry_number error_text hour_status item item_description item_divisable modified modifier
19
+ modifier_full_name notes price price_fc project project_account project_account_code project_account_name project_description quantity
20
+ start_time subscription subscription_account subscription_account_code subscription_account_name subscription_description
21
+ subscription_number type]
26
22
  end
27
23
  end
28
24
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class Transaction
3
5
  include Elmas::Resource
4
6
 
5
7
  def valid_actions
6
- [:get]
8
+ %i[get]
7
9
  end
8
10
 
9
11
  def base_path
@@ -15,7 +17,7 @@ module Elmas
15
17
  end
16
18
 
17
19
  def other_attributes
18
- [:description]
20
+ %i[description]
19
21
  end
20
22
  end
21
23
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class TransactionLine
3
5
  include Elmas::Resource
4
6
 
5
7
  def valid_actions
6
- [:get]
8
+ %i[get]
7
9
  end
8
10
 
9
11
  def base_path
@@ -15,7 +17,7 @@ module Elmas
15
17
  end
16
18
 
17
19
  def other_attributes
18
- [:asset_code]
20
+ %i[asset_code]
19
21
  end
20
22
  end
21
23
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class VatCode
3
5
  include Elmas::Resource
@@ -7,17 +9,12 @@ module Elmas
7
9
  end
8
10
 
9
11
  def other_attributes
10
- [
11
- :account, :calculation_basis, :charged, :EU_sales_listing,
12
- :GL_discount_purchase, :GL_discount_sales, :GL_to_claim, :GL_to_pay,
13
- :intra_stat, :is_blocked, :legal_text, :tax_return_type, :type,
14
- :vat_doc_type, :vat_margin, :VAT_partial_ratio, :VAT_percentages,
15
- :VAT_transaction_type
16
- ]
12
+ %i[account calculation_basis charged EU_sales_listing GL_discount_purchase GL_discount_sales GL_to_claim GL_to_pay intra_stat is_blocked
13
+ legal_text tax_return_type type vat_doc_type vat_margin VAT_partial_ratio VAT_percentages VAT_transaction_type]
17
14
  end
18
15
 
19
16
  def mandatory_attributes
20
- [:code, :description]
17
+ %i[code description]
21
18
  end
22
19
  end
23
20
  end
@@ -1,9 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require File.expand_path("../parser", __FILE__)
2
4
  require File.expand_path("../utils", __FILE__)
3
5
 
4
6
  module Elmas
5
7
  class Response
6
- attr_accessor :status_code, :body, :response
8
+ attr_accessor :status_code, :response
9
+ attr_writer :body
7
10
 
8
11
  def initialize(response)
9
12
  @response = response
@@ -63,7 +66,7 @@ module Elmas
63
66
 
64
67
  def raise_and_log_error
65
68
  log_error
66
- fail BadRequestException.new(@response, parsed)
69
+ raise BadRequestException.new(@response, parsed)
67
70
  end
68
71
  end
69
72
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class ResultSet
3
5
  attr_reader :records
@@ -45,10 +47,10 @@ module Elmas
45
47
  def resource_class
46
48
  @resource_class ||= begin
47
49
  constant_name = type.classify
48
- fail NameError unless constant_name =~ /\A[a-zA-Z0-9]+\z/
50
+ raise NameError unless constant_name =~ /\A[a-zA-Z0-9]+\z/
49
51
 
50
52
  klass = Elmas.const_get(constant_name, false)
51
- fail NameError unless klass.included_modules.include?(Elmas::Resource)
53
+ raise NameError unless klass.included_modules.include?(Elmas::Resource)
52
54
 
53
55
  klass
54
56
  rescue NameError
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "active_support"
2
4
  require "active_support/time"
3
5
  require "active_support/core_ext/time/zones"
@@ -20,17 +22,17 @@ module Elmas
20
22
  # rubocop:disable Metrics/PerceivedComplexity
21
23
  def sanitize_relationship(value)
22
24
  if value.is_a?(Elmas::Resource)
23
- return value.id # Turn relation into ID
25
+ value.id # Turn relation into ID
24
26
  elsif value.is_a?(Array)
25
- return sanitize_has_many(value)
27
+ sanitize_has_many(value)
26
28
  elsif value.is_a?(Time) || value.is_a?(Date) || value.is_a?(DateTime)
27
- return sanitize_date_time(value)
29
+ sanitize_date_time(value)
28
30
  elsif value.is_a?(String) && value.match(/(Date\()/)
29
31
  number = value.scan(/\d+/).first.to_i / 1000.0
30
32
  Time.zone = ActiveSupport::TimeZone.new("Europe/Amsterdam")
31
- return sanitize_date_time(Time.zone.at(number))
33
+ sanitize_date_time(Time.zone.at(number))
32
34
  else
33
- return value
35
+ value
34
36
  end
35
37
  end
36
38
  # rubocop:enable Metrics/CyclomaticComplexity
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  module Resource
3
5
  module UriMethods
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  module Utils
3
5
  def self.demodulize(class_name_in_module)
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class Version
3
5
  MAJOR = 2
4
- MINOR = 4
5
- PATCH = 2
6
+ MINOR = 5
7
+ PATCH = 0
6
8
 
7
9
  class << self
8
10
  def to_s
metadata CHANGED
@@ -1,71 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elmas
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.2
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marthyn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-12 00:00:00.000000000 Z
11
+ date: 2017-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: faraday
14
+ name: activeresource
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.12.1
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.12.1
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: mechanize
28
+ name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 2.7.5
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 2.7.5
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: activesupport
42
+ name: faraday
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 0.12.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 0.12.1
55
55
  - !ruby/object:Gem::Dependency
56
- name: activeresource
56
+ name: mechanize
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0'
61
+ version: 2.7.5
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '0'
68
+ version: 2.7.5
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rake
84
+ name: dotenv
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: rspec
98
+ name: guard-rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: simplecov
112
+ name: guard-rubocop
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -123,7 +123,7 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: simplecov-rcov
126
+ name: listen
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: webmock
140
+ name: mutant-rspec
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -151,7 +151,7 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: rubycritic
154
+ name: rake
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -165,7 +165,7 @@ dependencies:
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  - !ruby/object:Gem::Dependency
168
- name: guard-rspec
168
+ name: rspec
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - ">="
@@ -179,7 +179,7 @@ dependencies:
179
179
  - !ruby/object:Gem::Version
180
180
  version: '0'
181
181
  - !ruby/object:Gem::Dependency
182
- name: guard-rubocop
182
+ name: ruby_dep
183
183
  requirement: !ruby/object:Gem::Requirement
184
184
  requirements:
185
185
  - - ">="
@@ -193,7 +193,7 @@ dependencies:
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  - !ruby/object:Gem::Dependency
196
- name: listen
196
+ name: rubycritic
197
197
  requirement: !ruby/object:Gem::Requirement
198
198
  requirements:
199
199
  - - ">="
@@ -207,7 +207,7 @@ dependencies:
207
207
  - !ruby/object:Gem::Version
208
208
  version: '0'
209
209
  - !ruby/object:Gem::Dependency
210
- name: ruby_dep
210
+ name: simplecov
211
211
  requirement: !ruby/object:Gem::Requirement
212
212
  requirements:
213
213
  - - ">="
@@ -221,7 +221,7 @@ dependencies:
221
221
  - !ruby/object:Gem::Version
222
222
  version: '0'
223
223
  - !ruby/object:Gem::Dependency
224
- name: mutant-rspec
224
+ name: simplecov-rcov
225
225
  requirement: !ruby/object:Gem::Requirement
226
226
  requirements:
227
227
  - - ">="
@@ -235,7 +235,7 @@ dependencies:
235
235
  - !ruby/object:Gem::Version
236
236
  version: '0'
237
237
  - !ruby/object:Gem::Dependency
238
- name: dotenv
238
+ name: webmock
239
239
  requirement: !ruby/object:Gem::Requirement
240
240
  requirements:
241
241
  - - ">="
@@ -276,7 +276,6 @@ files:
276
276
  - lib/elmas/client.rb
277
277
  - lib/elmas/config.rb
278
278
  - lib/elmas/exception.rb
279
- - lib/elmas/log.rb
280
279
  - lib/elmas/oauth.rb
281
280
  - lib/elmas/parser.rb
282
281
  - lib/elmas/request.rb
@@ -287,9 +286,12 @@ files:
287
286
  - lib/elmas/resources/bank_entry.rb
288
287
  - lib/elmas/resources/bank_entry_line.rb
289
288
  - lib/elmas/resources/base_entry_line.rb
289
+ - lib/elmas/resources/cash_entry.rb
290
+ - lib/elmas/resources/cash_entry_line.rb
290
291
  - lib/elmas/resources/contact.rb
291
292
  - lib/elmas/resources/costcenter.rb
292
293
  - lib/elmas/resources/costunit.rb
294
+ - lib/elmas/resources/division.rb
293
295
  - lib/elmas/resources/document.rb
294
296
  - lib/elmas/resources/document_attachment.rb
295
297
  - lib/elmas/resources/general_journal_entry.rb
@@ -1,19 +0,0 @@
1
- require "logger"
2
-
3
- module Elmas
4
- module Log
5
- def logger
6
- dir = File.dirname("./tmp/errors.log")
7
- FileUtils.mkdir_p(dir) unless File.directory?(dir)
8
- Logger.new("./tmp/errors.log", "daily")
9
- end
10
-
11
- def info(msg)
12
- logger.info(msg)
13
- end
14
-
15
- def error(msg)
16
- logger.error(msg)
17
- end
18
- end
19
- end