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,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class Item
3
5
  include Elmas::Resource
@@ -7,26 +9,27 @@ module Elmas
7
9
  end
8
10
 
9
11
  def mandatory_attributes
10
- [:code, :description]
12
+ %i[code description]
11
13
  end
12
14
 
13
- def other_attributes # rubocop:disable Metrics/MethodLength
14
- [
15
- :class_01, :class_02, :class_03, :class_04, :class_05, :copy_remarks,
16
- :cost_price_currency, :cost_price_new, :cost_price_standard, :end_date,
17
- :extra_description, :free_bool_field_01, :free_bool_field_02, :free_bool_field_03,
18
- :free_bool_field_04, :free_bool_field_05, :free_date_field_01, :free_date_field_02,
19
- :free_date_field_03, :free_date_field_04, :free_date_field_05, :free_number_field_01,
20
- :free_number_field_02, :free_number_field_03, :free_number_field_04, :free_number_field_05,
21
- :free_number_field_06, :free_number_field_07, :free_number_field_08, :free_text_field_01,
22
- :free_text_field_02, :free_text_field_03, :free_text_field_04, :free_text_field_05,
23
- :free_text_field_06, :free_text_field_07, :free_text_field_08, :free_text_field_09,
24
- :free_text_field_10, :GL_costs, :GL_revenue, :GL_stock, :is_batch_item,
25
- :is_batch_number_item, :is_fraction_allowed_item, :is_make_item, :is_new_contract,
26
- :is_on_demand_item, :is_package_item, :is_registration_code_item, :is_purchase_item,
27
- :is_sales_item, :is_serial_item, :is_serial_number_item, :is_stock_item,
28
- :is_subcontracted_item, :is_time, :is_webshop_item, :item_group, :notes,
29
- :sales_vat_code, :search_code, :security_level, :start_date, :unit
15
+ # rubocop:disable Metrics/MethodLength
16
+ def other_attributes
17
+ %i[
18
+ class_01 class_02 class_03 class_04 class_05 copy_remarks
19
+ cost_price_currency cost_price_new cost_price_standard end_date
20
+ extra_description free_bool_field_01 free_bool_field_02 free_bool_field_03
21
+ free_bool_field_04 free_bool_field_05 free_date_field_01 free_date_field_02
22
+ free_date_field_03 free_date_field_04 free_date_field_05 free_number_field_01
23
+ free_number_field_02 free_number_field_03 free_number_field_04 free_number_field_05
24
+ free_number_field_06 free_number_field_07 free_number_field_08 free_text_field_01
25
+ free_text_field_02 free_text_field_03 free_text_field_04 free_text_field_05
26
+ free_text_field_06 free_text_field_07 free_text_field_08 free_text_field_09
27
+ free_text_field_10 GL_costs GL_revenue GL_stock is_batch_item
28
+ is_batch_number_item is_fraction_allowed_item is_make_item is_new_contract
29
+ is_on_demand_item is_package_item is_registration_code_item is_purchase_item
30
+ is_sales_item is_serial_item is_serial_number_item is_stock_item
31
+ is_subcontracted_item is_time is_webshop_item item_group notes
32
+ sales_vat_code search_code security_level start_date unit
30
33
  ]
31
34
  end
32
35
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class ItemGroup
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
@@ -11,7 +13,7 @@ module Elmas
11
13
  end
12
14
 
13
15
  def other_attributes
14
- [:code]
16
+ %i[code]
15
17
  end
16
18
 
17
19
  def mandatory_attributes
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class Journal
3
5
  include Elmas::Resource
@@ -11,10 +13,10 @@ module Elmas
11
13
  end
12
14
 
13
15
  def other_attributes
14
- [
15
- :code, :description, :allow_variable_currency, :allow_variable_exchange_rate,
16
- :allow_VAT, :auto_save, :bank, :bank_account_ID, :bank_account_including_mask,
17
- :currency, :GL_account, :payment_in_transit_account, :type
16
+ %i[
17
+ code description allow_variable_currency allow_variable_exchange_rate
18
+ allow_VAT auto_save bank bank_account_ID bank_account_including_mask
19
+ currency GL_account payment_in_transit_account type
18
20
  ]
19
21
  end
20
22
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class Layout
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,9 +17,9 @@ module Elmas
15
17
  end
16
18
 
17
19
  def other_attributes
18
- [
19
- :id, :created, :creator, :creator_full_name, :division,
20
- :modified, :modifier, :modifier_full_name, :subject, :type
20
+ %i[
21
+ id created creator creator_full_name division
22
+ modified modifier modifier_full_name subject type
21
23
  ]
22
24
  end
23
25
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class Mailbox
3
5
  include Elmas::Resource
@@ -7,14 +9,14 @@ module Elmas
7
9
  end
8
10
 
9
11
  def other_attributes
10
- [
11
- :account, :description, :for_division, :publish,
12
- :type, :valid_from, :valid_to
12
+ %i[
13
+ account description for_division publish
14
+ type valid_from valid_to
13
15
  ]
14
16
  end
15
17
 
16
18
  def mandatory_attributes
17
- [:mailbox]
19
+ %i[mailbox]
18
20
  end
19
21
  end
20
22
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class PaymentCondition
3
5
  include Elmas::Resource
@@ -7,16 +9,16 @@ module Elmas
7
9
  end
8
10
 
9
11
  def mandatory_attributes
10
- [:code]
12
+ %i[code]
11
13
  end
12
14
 
13
- # https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=CashflowPaymentConditions
15
+ # https//start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=CashflowPaymentConditions
14
16
  def other_attributes
15
- [
16
- :created, :description, :discount_payment_days,
17
- :discount_percentage, :payment_days, :payment_discount_type,
18
- :payment_end_of_months, :payment_method, :percentage,
19
- :VAT_calculation
17
+ %i[
18
+ created description discount_payment_days
19
+ discount_percentage payment_days payment_discount_type
20
+ payment_end_of_months payment_method percentage
21
+ VAT_calculation
20
22
  ]
21
23
  end
22
24
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  # We can use the PrintedSalesInvoice to change the status of SalesInvoices from
3
5
  # Open to 'Verwerkt' while at the same time sending a PDF of the invoice to the
@@ -9,7 +11,7 @@ module Elmas
9
11
  include Elmas::Resource
10
12
 
11
13
  def valid_actions
12
- [:post]
14
+ %i[post]
13
15
  end
14
16
 
15
17
  def base_path
@@ -17,18 +19,18 @@ module Elmas
17
19
  end
18
20
 
19
21
  def mandatory_attributes
20
- [:invoice_ID]
22
+ %i[invoice_ID]
21
23
  end
22
24
 
23
- # https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=SalesInvoicePrintedSalesInvoices
25
+ # https//start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=SalesInvoicePrintedSalesInvoices
24
26
  def other_attributes
25
- [
26
- :division, :document, :document_creation_error, :document_creation_success,
27
- :document_layout, :email_creation_error, :email_creation_success, :email_layout,
28
- :extra_text, :invoice_date, :postbox_message_creation_error,
29
- :postbox_message_creation_success, :postbox_sender, :reporting_period,
30
- :reporting_year, :send_email_to_customer, :send_invoice_to_customer_postbox,
31
- :send_output_based_on_account
27
+ %i[
28
+ division document document_creation_error document_creation_success
29
+ document_layout email_creation_error email_creation_success email_layout
30
+ extra_text invoice_date postbox_message_creation_error
31
+ postbox_message_creation_success postbox_sender reporting_period
32
+ reporting_year send_email_to_customer send_invoice_to_customer_postbox
33
+ send_output_based_on_account
32
34
  ]
33
35
  end
34
36
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class Project
3
5
  include Elmas::Resource
@@ -7,28 +9,18 @@ module Elmas
7
9
  end
8
10
 
9
11
  def mandatory_attributes
10
- [:account, :description, :code, :type]
12
+ %i[account description code type]
11
13
  end
12
14
 
13
15
  # https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=ProjectProjects
14
- def other_attributes # rubocop:disable Metrics/MethodLength
15
- [
16
- :account, :account_code, :AccountContact, :account_name,
17
- :allow_additional_invoicing, :block_entry, :block_rebilling,
18
- :budgeted_amount, :budgeted_costs, :budgeted_hours_per_hour_type,
19
- :BudgetedRevenue, :BudgetType, :BudgetTypeDescription, :clasification,
20
- :classification_description, :code, :costs_amount_fc, :created,
21
- :creator, :creator_full_name, :customer_p_onumber, :description,
22
- :division, :division_name, :end_date, :fixed_price_item,
23
- :fixed_price_item_description, :invoice_as_quoted, :invoice_terms,
24
- :manager, :manager_fullname, :markup_percentage, :modified, :modifier,
25
- :modifier_full_name, :notes, :prepaid_item, :prepaid_item_description,
26
- :prepaid_type, :prepaid_type_description,
27
- :project_restriction_employees, :project_restriction_items,
28
- :project_restriction_rebillings, :sales_time_quantity,
29
- :source_quotation, :start_date, :time_quantity_to_alert, :type,
30
- :type_description, :use_billing_milestones
31
- ]
16
+ def other_attributes
17
+ %i[account account_code AccountContact account_name allow_additional_invoicing block_entry block_rebilling budgeted_amount budgeted_costs
18
+ budgeted_hours_per_hour_type BudgetedRevenue BudgetType BudgetTypeDescription clasification classification_description code costs_amount_fc
19
+ created creator creator_full_name customer_p_onumber description division division_name end_date fixed_price_item
20
+ fixed_price_item_description invoice_as_quoted invoice_terms manager manager_fullname markup_percentage modified modifier modifier_full_name
21
+ notes prepaid_item prepaid_item_description prepaid_type prepaid_type_description project_restriction_employees project_restriction_items
22
+ project_restriction_rebillings sales_time_quantity source_quotation start_date time_quantity_to_alert type type_description
23
+ use_billing_milestones]
32
24
  end
33
25
  end
34
26
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class PurchaseEntry
3
5
  include Elmas::Resource
@@ -7,15 +9,12 @@ module Elmas
7
9
  end
8
10
 
9
11
  def mandatory_attributes
10
- [:journal, :purchase_entry_lines, :supplier]
12
+ %i[journal purchase_entry_lines supplier]
11
13
  end
12
14
 
13
15
  def other_attributes
14
- [
15
- :currency, :batch_number, :description, :document, :due_date, :entry_date,
16
- :entry_number, :external_link_reference, :invoice_number, :rate, :reporting_period,
17
- :reporting_year, :reversal, :VAT_amount_FC, :your_ref
18
- ]
16
+ %i[currency batch_number description document due_date entry_date entry_number external_link_reference invoice_number rate reporting_period
17
+ reporting_year reversal VAT_amount_FC your_ref]
19
18
  end
20
19
  end
21
20
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class PurchaseEntryLine < Elmas::BaseEntryLine
3
5
  include Elmas::Resource
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  # We can use the AgingReceivablesList to change the status of SalesInvoices from
3
5
  # Open to 'Verwerkt' while at the same time sending a PDF of the invoice to the
@@ -22,11 +24,8 @@ module Elmas
22
24
 
23
25
  # https://start.exactonline.nl/docs/HlpRestAPIResourcesDetails.aspx?name=ReadFinancialReceivablesList
24
26
  def other_attributes
25
- [
26
- :description, :hid, :account_code, :account_id, :account_name, :amount, :amount_in_transit,
27
- :currency_code, :description, :due_date, :entry_number, :id, :invoice_date, :invoice_number,
28
- :journal_code, :journal_description, :your_ref
29
- ]
27
+ %i[description hid account_code account_id account_name amount amount_in_transit currency_code description due_date entry_number id
28
+ invoice_date invoice_number journal_code journal_description your_ref]
30
29
  end
31
30
  end
32
31
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class SalesEntry
3
5
  # A sales entry needs multiple sales entry lines
@@ -9,16 +11,12 @@ module Elmas
9
11
  end
10
12
 
11
13
  def mandatory_attributes
12
- [:journal, :customer, :sales_entry_lines]
14
+ %i[journal customer sales_entry_lines]
13
15
  end
14
16
 
15
17
  def other_attributes
16
- [
17
- :batch_number, :currency, :document, :due_date, :entry_date,
18
- :entry_number, :invoice_number, :order_number, :payment_condition,
19
- :payment_reference, :process_number, :rate, :reporting_period,
20
- :reporting_year, :reversal, :VAT_amount_FC, :your_ref, :description
21
- ]
18
+ %i[batch_number currency document due_date entry_date entry_number invoice_number order_number payment_condition payment_reference
19
+ process_number rate reporting_period reporting_year reversal VAT_amount_FC your_ref description]
22
20
  end
23
21
  end
24
22
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class SalesEntryLine < Elmas::BaseEntryLine
3
5
  # A sales entry line belongs to a sales entry
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class SalesInvoice
3
5
  # An sales_invoice usually has multiple sales_invoice lines
@@ -10,15 +12,12 @@ module Elmas
10
12
  end
11
13
 
12
14
  def mandatory_attributes
13
- [:journal, :ordered_by]
15
+ [:ordered_by]
14
16
  end
15
17
 
16
18
  def other_attributes
17
19
  SHARED_SALES_ATTRIBUTES.inject(
18
- [
19
- :sales_invoice_lines, :due_date, :sales_person,
20
- :starter_sales_invoice_status, :type
21
- ],
20
+ %i[sales_invoice_lines due_date sales_person starter_sales_invoice_status type],
22
21
  :<<
23
22
  )
24
23
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class SalesInvoiceLine
3
5
  # An sales_invoice_line should always have a reference to an item and to an sales_invoice.
@@ -9,15 +11,12 @@ module Elmas
9
11
  end
10
12
 
11
13
  def mandatory_attributes
12
- [:item, :invoice_ID]
14
+ %i[item invoice_ID]
13
15
  end
14
16
 
15
17
  def other_attributes
16
18
  SHARED_LINE_ATTRIBUTES.inject(
17
- [
18
- :employee, :end_time, :line_number, :start_time, :subscription,
19
- :VAT_amount_DC, :VAT_amount_FC, :GL_account, :discount, :unit_price
20
- ],
19
+ %i[employee end_time line_number start_time subscription VAT_amount_DC VAT_amount_FC GL_account discount unit_price],
21
20
  :<<
22
21
  )
23
22
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class SalesItemPrices
3
5
  include Elmas::Resource
@@ -9,11 +11,8 @@ module Elmas
9
11
  def mandatory_attributes; end
10
12
 
11
13
  def other_attributes
12
- [
13
- :account, :account_name, :created, :creator, :creator_full_name, :currency, :default_item_unit, :default_item_unit_description,
14
- :division, :end_date, :item, :item_code, :item_description, :modified, :modifier, :modifier_full_name, :number_of_items_per_unit,
15
- :price, :quantity, :start_date, :unit, :unit_description
16
- ]
14
+ %i[account account_name created creator creator_full_name currency default_item_unit default_item_unit_description division end_date item
15
+ item_code item_description modified modifier modifier_full_name number_of_items_per_unit price quantity start_date unit unit_description]
17
16
  end
18
17
  end
19
18
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class SalesOrder
3
5
  include Elmas::Resource
@@ -8,15 +10,12 @@ module Elmas
8
10
  end
9
11
 
10
12
  def mandatory_attributes
11
- [:sales_order_lines, :ordered_by]
13
+ %i[sales_order_lines ordered_by]
12
14
  end
13
15
 
14
16
  def other_attributes
15
17
  SHARED_SALES_ATTRIBUTES.inject(
16
- [
17
- :deliver_to_contact_person, :delivery_date, :delivery_status,
18
- :sales_person, :shipping_method, :status, :tax_schedule, :warehouse_ID
19
- ],
18
+ %i[deliver_to_contact_person delivery_date delivery_status sales_person shipping_method status tax_schedule warehouse_ID],
20
19
  :<<
21
20
  )
22
21
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Elmas
2
4
  class SalesOrderLine
3
5
  include Elmas::Resource
@@ -8,15 +10,12 @@ module Elmas
8
10
  end
9
11
 
10
12
  def mandatory_attributes
11
- [:item, :order_ID]
13
+ %i[item order_ID]
12
14
  end
13
15
 
14
16
  def other_attributes
15
17
  SHARED_LINE_ATTRIBUTES.inject(
16
- [
17
- :amount_FC, :delivery_date, :item_version, :order_number, :unit_price,
18
- :use_drop_shipment, :VAT_amount
19
- ],
18
+ %i[amount_FC delivery_date item_version order_number unit_price use_drop_shipment VAT_amount],
20
19
  :<<
21
20
  )
22
21
  end