elmas 2.4.2 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
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