rconomic 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +40 -0
  3. data/.ruby-version +1 -0
  4. data/.travis.yml +14 -3
  5. data/CHANGELOG.md +28 -0
  6. data/Gemfile +5 -4
  7. data/Guardfile +9 -4
  8. data/README.md +23 -4
  9. data/Rakefile +5 -5
  10. data/gemfiles/Gemfile.ruby-2.0 +14 -0
  11. data/lib/economic/account.rb +3 -3
  12. data/lib/economic/cash_book.rb +4 -7
  13. data/lib/economic/cash_book_entry.rb +4 -24
  14. data/lib/economic/company.rb +61 -0
  15. data/lib/economic/creditor.rb +4 -5
  16. data/lib/economic/creditor_contact.rb +5 -6
  17. data/lib/economic/creditor_entry.rb +1 -3
  18. data/lib/economic/current_invoice.rb +14 -21
  19. data/lib/economic/current_invoice_line.rb +4 -13
  20. data/lib/economic/debtor.rb +10 -11
  21. data/lib/economic/debtor_contact.rb +7 -8
  22. data/lib/economic/debtor_entry.rb +1 -3
  23. data/lib/economic/endpoint.rb +36 -6
  24. data/lib/economic/entity/handle.rb +54 -29
  25. data/lib/economic/entity/mapper.rb +1 -1
  26. data/lib/economic/entity.rb +26 -29
  27. data/lib/economic/entry.rb +1 -2
  28. data/lib/economic/invoice.rb +15 -8
  29. data/lib/economic/order.rb +2 -4
  30. data/lib/economic/product.rb +73 -0
  31. data/lib/economic/proxies/account_proxy.rb +2 -4
  32. data/lib/economic/proxies/actions/debtor_contact/all.rb +63 -0
  33. data/lib/economic/proxies/actions/find_by_ci_number.rb +1 -3
  34. data/lib/economic/proxies/actions/find_by_date_interval.rb +3 -6
  35. data/lib/economic/proxies/actions/find_by_handle_with_number.rb +1 -1
  36. data/lib/economic/proxies/actions/find_by_name.rb +1 -1
  37. data/lib/economic/proxies/actions/find_by_number.rb +2 -4
  38. data/lib/economic/proxies/actions/find_by_telephone_and_fax_number.rb +1 -3
  39. data/lib/economic/proxies/cash_book_entry_proxy.rb +19 -22
  40. data/lib/economic/proxies/cash_book_proxy.rb +5 -10
  41. data/lib/economic/proxies/company_proxy.rb +9 -0
  42. data/lib/economic/proxies/creditor_contact_proxy.rb +2 -2
  43. data/lib/economic/proxies/creditor_entry_proxy.rb +8 -14
  44. data/lib/economic/proxies/creditor_proxy.rb +8 -11
  45. data/lib/economic/proxies/current_invoice_line_proxy.rb +2 -2
  46. data/lib/economic/proxies/current_invoice_proxy.rb +3 -3
  47. data/lib/economic/proxies/debtor_contact_proxy.rb +6 -2
  48. data/lib/economic/proxies/debtor_entry_proxy.rb +6 -10
  49. data/lib/economic/proxies/debtor_proxy.rb +40 -55
  50. data/lib/economic/proxies/entity_proxy.rb +15 -15
  51. data/lib/economic/proxies/entry_proxy.rb +10 -16
  52. data/lib/economic/proxies/invoice_proxy.rb +3 -3
  53. data/lib/economic/proxies/order_proxy.rb +3 -3
  54. data/lib/economic/proxies/product_proxy.rb +11 -0
  55. data/lib/economic/session.rb +48 -21
  56. data/lib/economic/support/string.rb +5 -5
  57. data/lib/rconomic/version.rb +1 -1
  58. data/lib/rconomic.rb +39 -34
  59. data/lib/savon_ext/request.rb +17 -0
  60. data/rconomic.gemspec +8 -7
  61. data/spec/economic/account_spec.rb +3 -3
  62. data/spec/economic/cash_book_entry_spec.rb +26 -3
  63. data/spec/economic/cash_book_spec.rb +7 -7
  64. data/spec/economic/company_spec.rb +20 -0
  65. data/spec/economic/creditor_contact_spec.rb +4 -5
  66. data/spec/economic/creditor_entry_spec.rb +20 -0
  67. data/spec/economic/creditor_spec.rb +3 -3
  68. data/spec/economic/current_invoice_line_spec.rb +3 -3
  69. data/spec/economic/current_invoice_spec.rb +19 -19
  70. data/spec/economic/debtor_contact_spec.rb +4 -5
  71. data/spec/economic/debtor_entry_spec.rb +1 -1
  72. data/spec/economic/debtor_spec.rb +13 -13
  73. data/spec/economic/endpoint_spec.rb +27 -11
  74. data/spec/economic/entity/handle_spec.rb +10 -23
  75. data/spec/economic/entity/mapper_spec.rb +26 -30
  76. data/spec/economic/entity_spec.rb +36 -31
  77. data/spec/economic/entry_spec.rb +1 -1
  78. data/spec/economic/invoice_spec.rb +49 -7
  79. data/spec/economic/order_spec.rb +4 -4
  80. data/spec/economic/product_spec.rb +72 -0
  81. data/spec/economic/proxies/account_proxy_spec.rb +74 -0
  82. data/spec/economic/proxies/actions/debtor_contact/all_spec.rb +26 -0
  83. data/spec/economic/proxies/actions/find_by_name_spec.rb +6 -7
  84. data/spec/economic/proxies/cash_book_entry_proxy_spec.rb +27 -29
  85. data/spec/economic/proxies/cash_book_proxy_spec.rb +14 -22
  86. data/spec/economic/proxies/company_proxy_spec.rb +47 -0
  87. data/spec/economic/proxies/creditor_contact_proxy_spec.rb +11 -5
  88. data/spec/economic/proxies/creditor_entry_proxy_spec.rb +12 -12
  89. data/spec/economic/proxies/creditor_proxy_spec.rb +15 -15
  90. data/spec/economic/proxies/current_invoice_line_proxy_spec.rb +10 -4
  91. data/spec/economic/proxies/current_invoice_proxy_spec.rb +37 -19
  92. data/spec/economic/proxies/debtor_contact_proxy_spec.rb +8 -4
  93. data/spec/economic/proxies/debtor_entry_proxy_spec.rb +21 -11
  94. data/spec/economic/proxies/debtor_proxy_spec.rb +81 -40
  95. data/spec/economic/proxies/entry_proxy_spec.rb +17 -14
  96. data/spec/economic/proxies/invoice_proxy_spec.rb +24 -10
  97. data/spec/economic/proxies/order_proxy_spec.rb +20 -10
  98. data/spec/economic/proxies/product_proxy_spec.rb +86 -0
  99. data/spec/economic/session_spec.rb +74 -35
  100. data/spec/fixtures/account_get_all/multiple.xml +15 -0
  101. data/spec/fixtures/account_get_all/none.xml +8 -0
  102. data/spec/fixtures/account_get_all/single.xml +12 -0
  103. data/spec/fixtures/account_get_data_array/multiple.xml +69 -0
  104. data/spec/fixtures/company_get/success.xml +10 -0
  105. data/spec/fixtures/company_get_data/success.xml +32 -0
  106. data/spec/fixtures/current_invoice_line_create_from_data/success.xml +6 -37
  107. data/spec/fixtures/debtor_create_from_data/success.xml +5 -52
  108. data/spec/fixtures/debtor_get_orders/none.xml +9 -0
  109. data/spec/fixtures/product_create_from_data/success.xml +37 -0
  110. data/spec/fixtures/product_find_by_number/found.xml +10 -0
  111. data/spec/fixtures/product_find_by_number/not_found.xml +6 -0
  112. data/spec/fixtures/product_get_all/multiple.xml +15 -0
  113. data/spec/fixtures/product_get_all/single.xml +12 -0
  114. data/spec/fixtures/product_get_data/success.xml +37 -0
  115. data/spec/fixtures/product_get_data_array/multiple.xml +69 -0
  116. data/spec/spec_helper.rb +6 -9
  117. data/spec/support/factories.rb +14 -14
  118. metadata +54 -9
@@ -0,0 +1,63 @@
1
+ module Economic
2
+ module Proxies
3
+ module Actions
4
+ module DebtorContact
5
+ class All
6
+ def initialize(caller)
7
+ @caller = caller
8
+ @session = caller.session
9
+ end
10
+
11
+ def call
12
+ build_partial_contact_entities(handles_from_endpoint)
13
+ end
14
+
15
+ private
16
+
17
+ def build(*options)
18
+ @caller.build(options)
19
+ end
20
+
21
+ def build_partial_contact_entities(handles)
22
+ handles.collect do |handle|
23
+ contact = build
24
+ contact.partial = true
25
+ contact.persisted = true
26
+ contact.handle = handle
27
+ contact.id = handle[:id]
28
+ contact.number = handle[:number]
29
+ contact
30
+ end
31
+ end
32
+
33
+ def handles_from_endpoint
34
+ [response[handle_key]].flatten.reject(&:blank?)
35
+ end
36
+
37
+ def handle_key
38
+ (Support::String.underscore(@caller.class.entity_class_name) + "_handle").to_sym
39
+ end
40
+
41
+ def owner
42
+ @caller.owner
43
+ end
44
+
45
+ def request(action, data)
46
+ @session.request(
47
+ soap_action_name("Debtor", action),
48
+ data
49
+ )
50
+ end
51
+
52
+ def response
53
+ request("get_debtor_contacts", {"debtorHandle" => {"Number" => owner.number}})
54
+ end
55
+
56
+ def soap_action_name(entity_class, action)
57
+ Endpoint.new.soap_action_name(entity_class, action)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -3,9 +3,7 @@ module FindByCiNumber
3
3
  # be partially loaded
4
4
  def find_by_ci_number(ci_number)
5
5
  # Get a list of handles from e-conomic
6
- response = request(:find_by_ci_number, {
7
- 'ciNumber' => ci_number
8
- })
6
+ response = request(:find_by_ci_number, "ciNumber" => ci_number)
9
7
 
10
8
  # Make sure we always have an array of handles even if the result only
11
9
  # contains one
@@ -1,15 +1,12 @@
1
1
  module Economic
2
2
  module FindByDateInterval
3
-
4
3
  # Returns entity objects for a given interval of days.
5
4
  def find_by_date_interval(from, unto)
6
- response = request(:find_by_date_interval, {
7
- 'first' => from.iso8601,
8
- 'last' => unto.iso8601
9
- })
5
+ response = request(:find_by_date_interval, "first" => from.iso8601,
6
+ "last" => unto.iso8601)
10
7
 
11
8
  handle_key = "#{Support::String.underscore(entity_class_name)}_handle".intern
12
- handles = [ response[handle_key] ].flatten.reject(&:blank?).collect do |handle|
9
+ handles = [response[handle_key]].flatten.reject(&:blank?).collect do |handle|
13
10
  Entity::Handle.build(handle)
14
11
  end
15
12
 
@@ -3,7 +3,7 @@
3
3
  module FindByHandleWithNumber
4
4
  def find(handle)
5
5
  handle = if handle.respond_to?(:to_i)
6
- Economic::Entity::Handle.build(:number => handle.to_i)
6
+ Economic::Entity::Handle.build(:number => handle)
7
7
  else
8
8
  Economic::Entity::Handle.build(handle)
9
9
  end
@@ -53,7 +53,7 @@ module Economic
53
53
  end
54
54
 
55
55
  def response
56
- request('FindByName', {'name' => name})
56
+ request("FindByName", {"name" => name})
57
57
  end
58
58
 
59
59
  def scope_to_owner(contacts)
@@ -1,9 +1,7 @@
1
1
  module FindByNumber
2
2
  # Returns handle with a given number.
3
3
  def find_by_number(number)
4
- response = request('FindByNumber', {
5
- 'number' => number
6
- })
4
+ response = request("FindByNumber", "number" => number)
7
5
 
8
6
  if response.empty?
9
7
  nil
@@ -12,7 +10,7 @@ module FindByNumber
12
10
  entity.partial = true
13
11
  entity.persisted = true
14
12
  entity.handle = response
15
- entity.number = response[:number].to_i
13
+ entity.number = response[:number]
16
14
  entity
17
15
  end
18
16
  end
@@ -1,9 +1,7 @@
1
1
  module FindByTelephoneAndFaxNumber
2
2
  # Returns handle for debtor with phone or fax number.
3
3
  def find_by_telephone_and_fax_number(number)
4
- response = request('FindByTelephoneAndFaxNumber', {
5
- 'telephoneAndFaxNumber' => number
6
- })
4
+ response = request("FindByTelephoneAndFaxNumber", "telephoneAndFaxNumber" => number)
7
5
  if response == {}
8
6
  nil
9
7
  else
@@ -1,15 +1,15 @@
1
- require 'economic/proxies/entity_proxy'
1
+ require "economic/proxies/entity_proxy"
2
2
 
3
3
  module Economic
4
4
  class CashBookEntryProxy < EntityProxy
5
5
  def all
6
6
  entity_hash = session.request(
7
7
  Endpoint.new.soap_action_name(CashBook, :get_entries),
8
- {"cashBookHandle" => owner.handle.to_hash}
8
+ "cashBookHandle" => owner.handle.to_hash
9
9
  )
10
10
 
11
11
  if entity_hash != {}
12
- [ entity_hash.values.first ].flatten.each do |id_hash|
12
+ [entity_hash.values.first].flatten.each do |id_hash|
13
13
  find(id_hash)
14
14
  end
15
15
  end
@@ -23,7 +23,7 @@ module Economic
23
23
  # :contra_account_handle => { :number => 1011 }
24
24
  # )
25
25
  def create_finance_voucher(handles)
26
- create_cash_book_entry_for_handles(handles, 'CreateFinanceVoucher')
26
+ create_cash_book_entry_for_handles(handles, "CreateFinanceVoucher")
27
27
  end
28
28
 
29
29
  # Creates a debtor payment and returns the cash book entry.
@@ -33,7 +33,7 @@ module Economic
33
33
  # :contra_account_handle => { :number => 1510 }
34
34
  # )
35
35
  def create_debtor_payment(handles)
36
- create_cash_book_entry_for_handles(handles, 'CreateDebtorPayment')
36
+ create_cash_book_entry_for_handles(handles, "CreateDebtorPayment")
37
37
  end
38
38
 
39
39
  # Creates a creditor payment and returns the cash book entry.
@@ -43,7 +43,7 @@ module Economic
43
43
  # :contra_account_handle => { :number => 1510 }
44
44
  # )
45
45
  def create_creditor_payment(handles)
46
- create_cash_book_entry_for_handles(handles, 'CreateCreditorPayment')
46
+ create_cash_book_entry_for_handles(handles, "CreateCreditorPayment")
47
47
  end
48
48
 
49
49
  # Creates a creditor invoice and returns the cash book entry.
@@ -53,28 +53,26 @@ module Economic
53
53
  # :contra_account_handle => { :number => 1510 }
54
54
  # )
55
55
  def create_creditor_invoice(handles)
56
- create_cash_book_entry_for_handles(handles, 'CreateCreditorInvoice')
56
+ create_cash_book_entry_for_handles(handles, "CreateCreditorInvoice")
57
57
  end
58
58
 
59
59
  def set_due_date(id, date)
60
- request("SetDueDate", {
61
- 'cashBookEntryHandle' => {
62
- 'Id1' => owner.handle[:number], 'Id2' => id
63
- },
64
- :value => date
65
- })
60
+ request("SetDueDate", "cashBookEntryHandle" => {
61
+ "Id1" => owner.handle[:number], "Id2" => id
62
+ },
63
+ :value => date)
66
64
  end
67
65
 
68
66
  protected
69
67
 
70
- def create_cash_book_entry_for_handles(handles, action, foobar = nil)
68
+ def create_cash_book_entry_for_handles(handles, action, _foobar = nil)
71
69
  handle_name = handle_name_for_action(action)
72
70
  handle_key = Economic::Support::String.underscore(handle_name).intern
73
71
 
74
72
  data = {}
75
- data["cashBookHandle"] = { 'Number' => owner.handle[:number] }
76
- data[handle_name] = { 'Number' => handles[handle_key][:number] } if handles[handle_key]
77
- data["contraAccountHandle"] = { 'Number' => handles[:contra_account_handle][:number] } if handles[:contra_account_handle]
73
+ data["cashBookHandle"] = {"Number" => owner.handle[:number]}
74
+ data[handle_name] = {"Number" => handles[handle_key][:number]} if handles[handle_key]
75
+ data["contraAccountHandle"] = {"Number" => handles[:contra_account_handle][:number]} if handles[:contra_account_handle]
78
76
 
79
77
  response = request(action, data)
80
78
 
@@ -83,12 +81,11 @@ module Economic
83
81
 
84
82
  def handle_name_for_action(action_name)
85
83
  {
86
- 'CreateFinanceVoucher' => 'accountHandle',
87
- 'CreateDebtorPayment' => 'debtorHandle',
88
- 'CreateCreditorInvoice' => 'creditorHandle',
89
- 'CreateCreditorPayment' => 'creditorHandle'
84
+ "CreateFinanceVoucher" => "accountHandle",
85
+ "CreateDebtorPayment" => "debtorHandle",
86
+ "CreateCreditorInvoice" => "creditorHandle",
87
+ "CreateCreditorPayment" => "creditorHandle"
90
88
  }[action_name]
91
89
  end
92
-
93
90
  end
94
91
  end
@@ -1,26 +1,21 @@
1
- require 'economic/proxies/entity_proxy'
1
+ require "economic/proxies/entity_proxy"
2
2
 
3
3
  module Economic
4
4
  class CashBookProxy < EntityProxy
5
5
  def find_by_name(name)
6
- response = request('FindByName', {
7
- 'name' => name
8
- })
6
+ response = request("FindByName", "name" => name)
9
7
 
10
8
  cash_book = build
11
9
  cash_book.partial = true
12
10
  cash_book.persisted = true
13
11
  cash_book.number = response[:number]
14
12
  cash_book
15
-
16
13
  end
17
14
 
18
15
  def get_name(id)
19
- response = request("GetName", {
20
- 'cashBookHandle' => {
21
- 'Number' => id
22
- }
23
- })
16
+ response = request("GetName", "cashBookHandle" => {
17
+ "Number" => id
18
+ })
24
19
 
25
20
  cash_book = build
26
21
  cash_book.number = id
@@ -0,0 +1,9 @@
1
+ require "economic/proxies/entity_proxy"
2
+
3
+ module Economic
4
+ class CompanyProxy < EntityProxy
5
+ def get
6
+ get_data(request(:get))
7
+ end
8
+ end
9
+ end
@@ -1,4 +1,4 @@
1
- require 'economic/proxies/entity_proxy'
1
+ require "economic/proxies/entity_proxy"
2
2
 
3
3
  module Economic
4
4
  class CreditorContactProxy < EntityProxy
@@ -8,7 +8,7 @@ module Economic
8
8
  Proxies::Actions::FindByName.new(self, name).call
9
9
  end
10
10
 
11
- private
11
+ private
12
12
 
13
13
  # Initialize properties in contact with values from owner. Returns contact.
14
14
  def initialize_properties_with_values_from_owner(contact)
@@ -1,11 +1,9 @@
1
- require 'economic/proxies/entity_proxy'
1
+ require "economic/proxies/entity_proxy"
2
2
 
3
3
  module Economic
4
4
  class CreditorEntryProxy < EntityProxy
5
5
  def find_by_invoice_number(invoice_number)
6
- response = request('FindByInvoiceNumber', {
7
- 'invoiceNumber' => invoice_number
8
- })
6
+ response = request("FindByInvoiceNumber", "invoiceNumber" => invoice_number)
9
7
 
10
8
  response[:creditor_entry_handle].map do |creditor_entry_handle|
11
9
  # Kinda ugly, but we get an array instead of a hash when there's only one result. :)
@@ -14,21 +12,17 @@ module Economic
14
12
  end
15
13
 
16
14
  def find(serial_number)
17
- response = request('GetData', {
18
- 'entityHandle' => {
19
- 'SerialNumber' => serial_number
20
- }
21
- })
15
+ response = request("GetData", "entityHandle" => {
16
+ "SerialNumber" => serial_number
17
+ })
22
18
 
23
19
  build(response)
24
20
  end
25
21
 
26
22
  def match(*serial_numbers)
27
- response = request('MatchEntries', {
28
- :entries => {
29
- "CreditorEntryHandle" => serial_numbers.map { |serial_number|
30
- { "SerialNumber" => serial_number }
31
- }
23
+ request("MatchEntries", :entries => {
24
+ "CreditorEntryHandle" => serial_numbers.map { |serial_number|
25
+ {"SerialNumber" => serial_number}
32
26
  }
33
27
  })
34
28
  end
@@ -1,7 +1,7 @@
1
- require 'economic/proxies/entity_proxy'
2
- require 'economic/proxies/actions/find_by_ci_number'
3
- require 'economic/proxies/actions/find_by_handle_with_number'
4
- require 'economic/proxies/actions/find_by_number'
1
+ require "economic/proxies/entity_proxy"
2
+ require "economic/proxies/actions/find_by_ci_number"
3
+ require "economic/proxies/actions/find_by_handle_with_number"
4
+ require "economic/proxies/actions/find_by_number"
5
5
 
6
6
  module Economic
7
7
  class CreditorProxy < EntityProxy
@@ -10,15 +10,12 @@ module Economic
10
10
  include FindByNumber
11
11
 
12
12
  def create_simple(opts)
13
- response = request('Create', {
14
- 'number' => opts[:number],
15
- 'creditorGroupHandle' => { 'Number' => opts[:creditor_group_handle][:number] },
16
- :name => opts[:name],
17
- :vatZone => opts[:vat_zone]
18
- })
13
+ response = request("Create", "number" => opts[:number],
14
+ "creditorGroupHandle" => {"Number" => opts[:creditor_group_handle][:number]},
15
+ :name => opts[:name],
16
+ :vatZone => opts[:vat_zone])
19
17
 
20
18
  find(response)
21
19
  end
22
-
23
20
  end
24
21
  end
@@ -1,4 +1,4 @@
1
- require 'economic/proxies/entity_proxy'
1
+ require "economic/proxies/entity_proxy"
2
2
 
3
3
  module Economic
4
4
  class CurrentInvoiceLineProxy < EntityProxy
@@ -8,7 +8,7 @@ module Economic
8
8
  super(handle)
9
9
  end
10
10
 
11
- private
11
+ private
12
12
 
13
13
  # Initialize properties in invoice_line with values from owner
14
14
  def initialize_properties_with_values_from_owner(invoice_line)
@@ -1,11 +1,11 @@
1
- require 'economic/proxies/entity_proxy'
2
- require 'economic/proxies/actions/find_by_date_interval'
1
+ require "economic/proxies/entity_proxy"
2
+ require "economic/proxies/actions/find_by_date_interval"
3
3
 
4
4
  module Economic
5
5
  class CurrentInvoiceProxy < EntityProxy
6
6
  include FindByDateInterval
7
7
 
8
- private
8
+ private
9
9
 
10
10
  # Initialize properties in invoice with values from owner
11
11
  def initialize_properties_with_values_from_owner(invoice)
@@ -1,4 +1,4 @@
1
- require 'economic/proxies/entity_proxy'
1
+ require "economic/proxies/entity_proxy"
2
2
 
3
3
  module Economic
4
4
  class DebtorContactProxy < EntityProxy
@@ -8,7 +8,11 @@ module Economic
8
8
  Proxies::Actions::FindByName.new(self, name).call
9
9
  end
10
10
 
11
- private
11
+ def all
12
+ Proxies::Actions::DebtorContact::All.new(self).call
13
+ end
14
+
15
+ private
12
16
 
13
17
  # Initialize properties in contact with values from owner. Returns contact.
14
18
  def initialize_properties_with_values_from_owner(contact)
@@ -1,12 +1,10 @@
1
- require 'economic/proxies/entity_proxy'
1
+ require "economic/proxies/entity_proxy"
2
2
 
3
3
  module Economic
4
4
  class DebtorEntryProxy < EntityProxy
5
5
  def find_by_invoice_number(from, to = from)
6
- response = request('FindByInvoiceNumber', {
7
- 'from' => from,
8
- 'to' => to
9
- })
6
+ response = request("FindByInvoiceNumber", "from" => from,
7
+ "to" => to)
10
8
 
11
9
  response[:debtor_entry_handle].map do |debtor_entry_handle|
12
10
  # Kinda ugly, but we get an array instead of a hash when there's only one result. :)
@@ -15,11 +13,9 @@ module Economic
15
13
  end
16
14
 
17
15
  def match(*serial_numbers)
18
- response = request('MatchEntries', {
19
- :entries => {
20
- "DebtorEntryHandle" => serial_numbers.map { |serial_number|
21
- { "SerialNumber" => serial_number }
22
- }
16
+ request("MatchEntries", :entries => {
17
+ "DebtorEntryHandle" => serial_numbers.map { |serial_number|
18
+ {"SerialNumber" => serial_number}
23
19
  }
24
20
  })
25
21
  end
@@ -1,8 +1,8 @@
1
- require 'economic/proxies/entity_proxy'
2
- require 'economic/proxies/actions/find_by_ci_number'
3
- require 'economic/proxies/actions/find_by_handle_with_number'
4
- require 'economic/proxies/actions/find_by_number'
5
- require 'economic/proxies/actions/find_by_telephone_and_fax_number'
1
+ require "economic/proxies/entity_proxy"
2
+ require "economic/proxies/actions/find_by_ci_number"
3
+ require "economic/proxies/actions/find_by_handle_with_number"
4
+ require "economic/proxies/actions/find_by_number"
5
+ require "economic/proxies/actions/find_by_telephone_and_fax_number"
6
6
 
7
7
  module Economic
8
8
  class DebtorProxy < EntityProxy
@@ -17,64 +17,49 @@ module Economic
17
17
  end
18
18
 
19
19
  def get_debtor_contacts(debtor_handle)
20
- response = request :get_debtor_contacts, {
21
- 'debtorHandle' => { 'Number' => debtor_handle.number }
22
- }
23
- if response.empty?
24
- nil
25
- else
26
- entities = []
27
- [response[:debtor_contact_handle]].flatten.each do |handle|
28
- entity = Economic::DebtorContact.new(:session => session)
29
- entity.partial = true
30
- entity.persisted = true
31
- entity.handle = handle
32
- entity.number = handle[:number].to_i
33
- entities << entity
34
- end
35
- entities
36
- end
20
+ response = fetch_response(:get_debtor_contacts, debtor_handle)
21
+ build_entities_from_response(
22
+ Economic::DebtorContact,
23
+ response[:debtor_contact_handle]
24
+ )
37
25
  end
38
26
 
39
27
  def get_invoices(debtor_handle)
40
- response = request :get_invoices, {
41
- 'debtorHandle' => { 'Number' => debtor_handle.number }
42
- }
43
- if response.empty?
44
- nil
45
- else
46
- entities = []
47
- [response[:invoice_handle]].flatten.each do |handle|
48
- entity = Economic::Invoice.new(:session => session)
49
- entity.partial = true
50
- entity.persisted = true
51
- entity.handle = handle
52
- entity.number = handle[:number].to_i
53
- entities << entity
54
- end
55
- entities
56
- end
28
+ response = fetch_response(:get_invoices, debtor_handle)
29
+ build_entities_from_response(
30
+ Economic::Invoice,
31
+ response[:invoice_handle]
32
+ )
57
33
  end
58
34
 
59
35
  # Returns handle for orders for debtor.
60
36
  def get_orders(debtor_handle)
61
- response = request :get_orders, {
62
- 'debtorHandle' => { 'Number' => debtor_handle.number }
63
- }
64
- if response.empty?
65
- nil
66
- else
67
- entities = []
68
- [response[:order_handle]].flatten.each do |handle|
69
- entity = Economic::Order.new(:session => session)
70
- entity.partial = true
71
- entity.persisted = true
72
- entity.handle = handle
73
- entity.number = handle[:id].to_i
74
- entities << entity
75
- end
76
- entities
37
+ response = fetch_response(:get_orders, debtor_handle)
38
+ build_entities_from_response(
39
+ Economic::Order,
40
+ response[:order_handle]
41
+ )
42
+ end
43
+
44
+ private
45
+
46
+ def build_entities_from_response(entity_class, handles)
47
+ return nil if handles.nil?
48
+ [handles].flatten.map do |handle|
49
+ entity = entity_class.new(:session => session)
50
+ entity.partial = true
51
+ entity.persisted = true
52
+ entity.handle = handle
53
+ entity.number = handle[:id].to_i
54
+ entity
77
55
  end
78
56
  end
57
+
58
+ def fetch_response(operation, debtor_handle)
59
+ request(
60
+ operation,
61
+ "debtorHandle" => {"Number" => debtor_handle.number}
62
+ )
63
+ end
79
64
  end
80
65
  end
@@ -1,16 +1,16 @@
1
- require 'forwardable'
1
+ require "forwardable"
2
2
 
3
3
  module Economic
4
4
  class EntityProxy
5
5
  class << self
6
6
  # Returns the class this Proxy is a proxy for
7
7
  def entity_class
8
- Economic.const_get(self.entity_class_name)
8
+ Economic.const_get(entity_class_name)
9
9
  end
10
10
 
11
11
  def entity_class_name
12
- proxy_class_name = name.split('::').last
13
- proxy_class_name.sub(/Proxy$/, '')
12
+ proxy_class_name = name.split("::").last
13
+ proxy_class_name.sub(/Proxy$/, "")
14
14
  end
15
15
  end
16
16
 
@@ -59,7 +59,7 @@ module Economic
59
59
  entity.update_properties(properties)
60
60
  entity.partial = false
61
61
 
62
- self.append(entity)
62
+ append(entity)
63
63
  initialize_properties_with_values_from_owner(entity)
64
64
 
65
65
  entity
@@ -78,7 +78,11 @@ module Economic
78
78
  # Fetches Entity data from API and returns an Entity initialized with that
79
79
  # data added to Proxy
80
80
  def find(handle)
81
- handle = Entity::Handle.new(handle)
81
+ handle = if handle.respond_to?(:to_i)
82
+ Entity::Handle.new(:id => handle)
83
+ else
84
+ Entity::Handle.new(handle)
85
+ end
82
86
  entity_hash = get_data(handle)
83
87
  entity = build(entity_hash)
84
88
  entity.persisted = true
@@ -88,9 +92,7 @@ module Economic
88
92
  # Gets data for Entity from the API. Returns Hash with the response data
89
93
  def get_data(handle)
90
94
  handle = Entity::Handle.new(handle)
91
- entity_hash = request(:get_data, {
92
- 'entityHandle' => handle.to_hash
93
- })
95
+ entity_hash = request(:get_data, "entityHandle" => handle.to_hash)
94
96
  entity_hash
95
97
  end
96
98
 
@@ -98,21 +100,19 @@ module Economic
98
100
  def append(item)
99
101
  items << item unless items.include?(item)
100
102
  end
101
- alias :<< :append
103
+ alias << append
102
104
 
103
105
  protected
104
106
 
105
- def items
106
- @items
107
- end
107
+ attr_reader :items
108
108
 
109
109
  # Fetches all data for the given handles. Returns Array with hashes of
110
110
  # entity data
111
111
  def get_data_array(handles)
112
112
  return [] unless handles && handles.any?
113
113
 
114
- entity_class_name_for_soap_request = entity_class.name.split('::').last
115
- response = request(:get_data_array, {'entityHandles' => {"#{entity_class_name_for_soap_request}Handle" => handles.collect(&:to_hash)}})
114
+ entity_class_name_for_soap_request = entity_class.name.split("::").last
115
+ response = request(:get_data_array, "entityHandles" => {"#{entity_class_name_for_soap_request}Handle" => handles.collect(&:to_hash)})
116
116
  [response["#{entity_class.key}_data".intern]].flatten
117
117
  end
118
118