rconomic 0.3 → 0.4

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 (78) hide show
  1. data/README.md +2 -1
  2. data/lib/economic/cash_book_entry.rb +42 -36
  3. data/lib/economic/creditor.rb +67 -0
  4. data/lib/economic/creditor_contact.rb +62 -0
  5. data/lib/economic/creditor_entry.rb +26 -0
  6. data/lib/economic/current_invoice.rb +30 -10
  7. data/lib/economic/current_invoice_line.rb +2 -0
  8. data/lib/economic/debtor_entry.rb +27 -0
  9. data/lib/economic/economic.wsdl +23134 -17255
  10. data/lib/economic/entity/handle.rb +1 -1
  11. data/lib/economic/entity.rb +8 -4
  12. data/lib/economic/entry.rb +26 -0
  13. data/lib/economic/proxies/cash_book_entry_proxy.rb +53 -15
  14. data/lib/economic/proxies/creditor_contact_proxy.rb +64 -0
  15. data/lib/economic/proxies/creditor_entry_proxy.rb +42 -0
  16. data/lib/economic/proxies/creditor_proxy.rb +73 -0
  17. data/lib/economic/proxies/current_invoice_proxy.rb +2 -1
  18. data/lib/economic/proxies/debtor_entry_proxy.rb +32 -0
  19. data/lib/economic/proxies/entity_proxy.rb +2 -2
  20. data/lib/economic/proxies/entry_proxy.rb +63 -0
  21. data/lib/economic/proxies/invoice_proxy.rb +2 -1
  22. data/lib/economic/session.rb +21 -4
  23. data/lib/economic/support/string.rb +5 -0
  24. data/lib/rconomic/version.rb +1 -1
  25. data/lib/rconomic.rb +10 -0
  26. data/rconomic.gemspec +6 -1
  27. data/spec/economic/creditor_contact_spec.rb +106 -0
  28. data/spec/economic/creditor_spec.rb +52 -0
  29. data/spec/economic/current_invoice_spec.rb +14 -0
  30. data/spec/economic/debtor_entry_spec.rb +20 -0
  31. data/spec/economic/debtor_spec.rb +12 -0
  32. data/spec/economic/entity/handle_spec.rb +21 -0
  33. data/spec/economic/entity_spec.rb +31 -0
  34. data/spec/economic/entry_spec.rb +20 -0
  35. data/spec/economic/proxies/cash_book_entry_proxy_spec.rb +35 -2
  36. data/spec/economic/proxies/creditor_contact_proxy_spec.rb +55 -0
  37. data/spec/economic/proxies/creditor_entry_proxy_spec.rb +49 -0
  38. data/spec/economic/proxies/creditor_proxy_spec.rb +81 -0
  39. data/spec/economic/proxies/current_invoice_line_proxy_spec.rb +1 -1
  40. data/spec/economic/proxies/current_invoice_proxy_spec.rb +3 -3
  41. data/spec/economic/proxies/debtor_entry_proxy_spec.rb +47 -0
  42. data/spec/economic/proxies/entry_proxy_spec.rb +73 -0
  43. data/spec/economic/proxies/invoice_proxy_spec.rb +3 -3
  44. data/spec/fixtures/cash_book_entry_create_creditor_invoice/success.xml +11 -0
  45. data/spec/fixtures/cash_book_entry_create_creditor_payment/success.xml +11 -0
  46. data/spec/fixtures/cash_book_entry_get_data/success.xml +4 -4
  47. data/spec/fixtures/cash_book_entry_set_due_date/success.xml +6 -0
  48. data/spec/fixtures/cash_book_get_all/multiple.xml +2 -2
  49. data/spec/fixtures/cash_book_get_entries/success.xml +4 -4
  50. data/spec/fixtures/creditor_contact_get_data/success.xml +22 -0
  51. data/spec/fixtures/creditor_entry_find_by_invoice_number/many.xml +15 -0
  52. data/spec/fixtures/creditor_entry_find_by_invoice_number/single.xml +12 -0
  53. data/spec/fixtures/creditor_entry_get_data/success.xml +32 -0
  54. data/spec/fixtures/creditor_entry_match_entries/success.xml +5 -0
  55. data/spec/fixtures/creditor_find_by_number/found.xml +10 -0
  56. data/spec/fixtures/creditor_find_by_number/not_found.xml +7 -0
  57. data/spec/fixtures/creditor_get_all/multiple.xml +15 -0
  58. data/spec/fixtures/creditor_get_all/single.xml +12 -0
  59. data/spec/fixtures/creditor_get_data/success.xml +49 -0
  60. data/spec/fixtures/creditor_get_data_array/multiple.xml +93 -0
  61. data/spec/fixtures/current_invoice_book_with_number/success.xml +10 -0
  62. data/spec/fixtures/current_invoice_get_data_array/multiple.xml +4 -4
  63. data/spec/fixtures/debtor_entry_find_by_invoice_number/many.xml +15 -0
  64. data/spec/fixtures/debtor_entry_find_by_invoice_number/single.xml +12 -0
  65. data/spec/fixtures/debtor_entry_match_entries/success.xml +6 -0
  66. data/spec/fixtures/debtor_get_data_array/multiple.xml +4 -4
  67. data/spec/fixtures/entry_find_by_date_interval/many.xml +15 -0
  68. data/spec/fixtures/entry_find_by_date_interval/none.xml +9 -0
  69. data/spec/fixtures/entry_find_by_date_interval/single.xml +12 -0
  70. data/spec/fixtures/entry_find_by_serial_number_interval/many.xml +15 -0
  71. data/spec/fixtures/entry_find_by_serial_number_interval/none.xml +9 -0
  72. data/spec/fixtures/entry_find_by_serial_number_interval/single.xml +12 -0
  73. data/spec/fixtures/entry_get_data/success.xml +40 -0
  74. data/spec/fixtures/entry_get_last_used_serial_number/success.xml +8 -0
  75. data/spec/spec_helper.rb +22 -2
  76. metadata +68 -11
  77. data/Gemfile.lock +0 -61
  78. data/spec/fixtures/wsdl.xml +0 -56596
@@ -28,7 +28,7 @@ class Economic::Entity
28
28
  def ==(other)
29
29
  return false if other.nil?
30
30
  return false unless other.respond_to?(:id) && other.respond_to?(:number)
31
- self.id == other.id && self.number == other.number
31
+ self.id == other.id && self.number == other.number && self.id1 == other.id1 && self.id2 == other.id2
32
32
  end
33
33
 
34
34
  private
@@ -71,10 +71,6 @@ module Economic
71
71
  @partial = true
72
72
  end
73
73
 
74
- def initialize_defaults
75
- nil
76
- end
77
-
78
74
  # Updates Entity with its data from the API
79
75
  def get_data
80
76
  response = proxy.get_data(handle)
@@ -144,6 +140,11 @@ module Economic
144
140
  end
145
141
  end
146
142
 
143
+ def ==(other)
144
+ return false if other.nil?
145
+ self.handle == other.handle && other.is_a?(self.class)
146
+ end
147
+
147
148
  protected
148
149
 
149
150
  def create_or_update
@@ -199,6 +200,9 @@ module Economic
199
200
  name[0,1].downcase + name[1..-1]
200
201
  end
201
202
 
203
+ def initialize_defaults
204
+ nil
205
+ end
202
206
  end
203
207
 
204
208
  end
@@ -0,0 +1,26 @@
1
+ require 'economic/entity'
2
+
3
+ module Economic
4
+
5
+ # Represents an entry in E-conomic.
6
+ #
7
+ # API documentation: http://www.e-conomic.com/apidocs/Documentation/T_Economic_Api_IEntry.html
8
+
9
+ class Entry < Entity
10
+ has_properties :handle,
11
+ :serial_number,
12
+ :account_handle,
13
+ :amount,
14
+ :amount_default_currency,
15
+ :currency_handle,
16
+ :date,
17
+ :text,
18
+ :type,
19
+ :department_handle,
20
+ :distribution_key_handle,
21
+ :vat_account_handle,
22
+ :voucher_number,
23
+ :project_handle,
24
+ :document_handle
25
+ end
26
+ end
@@ -6,6 +6,7 @@ module Economic
6
6
  entity_hash = session.request(CashBookProxy.entity_class.soap_action(:get_entries)) do
7
7
  soap.body = { "cashBookHandle" => owner.handle.to_hash }
8
8
  end
9
+
9
10
  if entity_hash != {}
10
11
  [ entity_hash.values.first ].flatten.each do |id_hash|
11
12
  find(id_hash)
@@ -21,15 +22,7 @@ module Economic
21
22
  # :contra_account_handle => { :number => 1011 }
22
23
  # )
23
24
  def create_finance_voucher(handles)
24
- response = session.request(entity_class.soap_action('CreateFinanceVoucher')) do
25
- soap.body = {
26
- 'cashBookHandle' => { 'Number' => owner.handle[:number] },
27
- 'accountHandle' => { 'Number' => handles[:account_handle][:number] },
28
- 'contraAccountHandle' => { 'Number' => handles[:contra_account_handle][:number] }
29
- }
30
- end
31
-
32
- find(response)
25
+ create_cash_book_entry_for_handles(handles, 'CreateFinanceVoucher')
33
26
  end
34
27
 
35
28
  # Creates a debtor payment and returns the cash book entry.
@@ -39,15 +32,60 @@ module Economic
39
32
  # :contra_account_handle => { :number => 1510 }
40
33
  # )
41
34
  def create_debtor_payment(handles)
42
- response = session.request(entity_class.soap_action('CreateDebtorPayment')) do
43
- soap.body = {
44
- "cashBookHandle" => { 'Number' => owner.handle[:number] },
45
- "debtorHandle" => { 'Number' => handles[:debtor_handle][:number] },
46
- "contraAccountHandle" => { 'Number' => handles[:contra_account_handle][:number] }
47
- }
35
+ create_cash_book_entry_for_handles(handles, 'CreateDebtorPayment')
36
+ end
37
+
38
+ # Creates a creditor payment and returns the cash book entry.
39
+ # Example:
40
+ # cash_book.entries.create_creditor_payment(
41
+ # :creditor_handle => { :number => 1 },
42
+ # :contra_account_handle => { :number => 1510 }
43
+ # )
44
+ def create_creditor_payment(handles)
45
+ create_cash_book_entry_for_handles(handles, 'CreateCreditorPayment')
46
+ end
47
+
48
+ # Creates a creditor invoice and returns the cash book entry.
49
+ # Example:
50
+ # cash_book.entries.create_creditor_invoice(
51
+ # :creditor_handle => { :number => 1 },
52
+ # :contra_account_handle => { :number => 1510 }
53
+ # )
54
+ def create_creditor_invoice(handles)
55
+ create_cash_book_entry_for_handles(handles, 'CreateCreditorInvoice')
56
+ end
57
+
58
+ def set_due_date(id, date)
59
+ session.request(entity_class.soap_action("SetDueDate")) do
60
+ soap.body = { 'cashBookEntryHandle' => { 'Id1' => owner.handle[:number], 'Id2' => id }, :value => date }
61
+ end
62
+ end
63
+
64
+ protected
65
+
66
+ def create_cash_book_entry_for_handles(handles, action, foobar = nil)
67
+ handle_name = handle_name_for_action(action)
68
+ handle_key = Economic::Support::String.underscore(handle_name).intern
69
+
70
+ response = session.request(entity_class.soap_action(action)) do
71
+ data = ActiveSupport::OrderedHash.new
72
+ data["cashBookHandle"] = { 'Number' => owner.handle[:number] }
73
+ data[handle_name] = { 'Number' => handles[handle_key][:number] } if handles[handle_key]
74
+ data["contraAccountHandle"] = { 'Number' => handles[:contra_account_handle][:number] } if handles[:contra_account_handle]
75
+ soap.body = data
48
76
  end
49
77
 
50
78
  find(response)
51
79
  end
80
+
81
+ def handle_name_for_action(action_name)
82
+ {
83
+ 'CreateFinanceVoucher' => 'accountHandle',
84
+ 'CreateDebtorPayment' => 'debtorHandle',
85
+ 'CreateCreditorInvoice' => 'creditorHandle',
86
+ 'CreateCreditorPayment' => 'creditorHandle'
87
+ }[action_name]
88
+ end
89
+
52
90
  end
53
91
  end
@@ -0,0 +1,64 @@
1
+ require 'economic/proxies/entity_proxy'
2
+
3
+ module Economic
4
+ class CreditorContactProxy < EntityProxy
5
+
6
+ # Returns a new, unpersisted Economic::CreditorContact
7
+ def build(properties = {})
8
+ contact = super
9
+ initialize_properties_with_values_from_owner(contact) if owner.is_a?(Creditor)
10
+ contact
11
+ end
12
+
13
+ # Gets data for CreditorContact from the API
14
+ def find(handle)
15
+ handle = Entity::Handle.new(:id => handle) unless handle.is_a?(Entity::Handle)
16
+ super(handle)
17
+ end
18
+
19
+ # Returns CreditorContact that have the given name. The objects will only be partially loaded
20
+ def find_by_name(name)
21
+ # Get a list of CreditorContactHandles from e-conomic
22
+ response = session.request entity_class.soap_action('FindByName') do
23
+ soap.body = {
24
+ 'name' => name
25
+ }
26
+ end
27
+
28
+ # Make sure we always have an array of handles even if the result only contains one
29
+ handles = [response[:creditor_contact_handle]].flatten.reject(&:blank?)
30
+
31
+ # Create partial CreditorContact entities
32
+ contacts = handles.collect do |handle|
33
+ creditor_contact = build
34
+ creditor_contact.partial = true
35
+ creditor_contact.persisted = true
36
+ creditor_contact.handle = handle
37
+ creditor_contact.id = handle[:id]
38
+ creditor_contact.number = handle[:number]
39
+ creditor_contact
40
+ end
41
+
42
+ if owner.is_a?(Creditor)
43
+ # Scope to the owner
44
+ contacts.select do |creditor_contact|
45
+ creditor_contact.get_data
46
+ creditor_contact.creditor.handle == owner.handle
47
+ end
48
+ else
49
+ contacts
50
+ end
51
+
52
+ end
53
+
54
+
55
+ private
56
+
57
+ # Initialize properties in contact with values from owner. Returns contact.
58
+ def initialize_properties_with_values_from_owner(contact)
59
+ contact.creditor = owner
60
+ contact
61
+ end
62
+
63
+ end
64
+ end
@@ -0,0 +1,42 @@
1
+ require 'economic/proxies/entity_proxy'
2
+
3
+ module Economic
4
+ class CreditorEntryProxy < EntityProxy
5
+ def find_by_invoice_number(invoice_number)
6
+ response = session.request(entity_class.soap_action('FindByInvoiceNumber')) do
7
+ soap.body = {
8
+ 'invoiceNumber' => invoice_number
9
+ }
10
+ end
11
+
12
+ response[:creditor_entry_handle].map do |creditor_entry_handle|
13
+ # Kinda ugly, but we get an array instead of a hash when there's only one result. :)
14
+ Hash[*creditor_entry_handle.to_a.flatten][:serial_number].to_i
15
+ end
16
+ end
17
+
18
+ def find(serial_number)
19
+ response = session.request(entity_class.soap_action('GetData')) do
20
+ soap.body = {
21
+ 'entityHandle' => {
22
+ 'SerialNumber' => serial_number
23
+ }
24
+ }
25
+ end
26
+
27
+ build(response)
28
+ end
29
+
30
+ def match(*serial_numbers)
31
+ response = session.request(entity_class.soap_action('MatchEntries')) do
32
+ soap.body = {
33
+ :entries => {
34
+ "CreditorEntryHandle" => serial_numbers.map { |serial_number|
35
+ { "SerialNumber" => serial_number }
36
+ }
37
+ }
38
+ }
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,73 @@
1
+ require 'economic/proxies/entity_proxy'
2
+
3
+ module Economic
4
+ class CreditorProxy < EntityProxy
5
+
6
+ # Fetches Creditor from API
7
+ def find(handle)
8
+ handle = if handle.respond_to?(:to_i)
9
+ Entity::Handle.new(:number => handle.to_i)
10
+ else
11
+ Entity::Handle.new(handle)
12
+ end
13
+ super(handle)
14
+ end
15
+
16
+ # Returns Creditors that have the given ci_number. The Creditor objects will only be partially loaded
17
+ def find_by_ci_number(ci_number)
18
+ # Get a list of CreditorHandles from e-conomic
19
+ response = session.request(entity_class.soap_action('FindByCINumber')) do
20
+ soap.body = {
21
+ 'ciNumber' => ci_number
22
+ }
23
+ end
24
+
25
+ # Make sure we always have an array of handles even if the result only contains one
26
+ handles = [response[:creditor_handle]].flatten.reject(&:blank?)
27
+
28
+ # Create partial Creditor entities
29
+ handles.collect do |handle|
30
+ creditor = build
31
+ creditor.partial = true
32
+ creditor.persisted = true
33
+ creditor.handle = handle
34
+ creditor.number = handle[:number]
35
+ creditor
36
+ end
37
+ end
38
+
39
+ # Returns handle with a given number.
40
+ def find_by_number(number)
41
+ response = session.request(entity_class.soap_action('FindByNumber')) do
42
+ soap.body = {
43
+ 'number' => number
44
+ }
45
+ end
46
+
47
+ if response == {}
48
+ nil
49
+ else
50
+ creditor = build
51
+ creditor.partial = true
52
+ creditor.persisted = true
53
+ creditor.handle = response
54
+ creditor.number = response[:number].to_i
55
+ creditor
56
+ end
57
+ end
58
+
59
+ def create_simple(opts)
60
+ response = session.request(entity_class.soap_action('Create')) do
61
+ soap.body = {
62
+ 'number' => opts[:number],
63
+ 'creditorGroupHandle' => { 'Number' => opts[:creditor_group_handle][:number] },
64
+ :name => opts[:name],
65
+ :vatZone => opts[:vat_zone]
66
+ }
67
+ end
68
+
69
+ find(response)
70
+ end
71
+
72
+ end
73
+ end
@@ -15,7 +15,8 @@ module Economic
15
15
  response = session.request entity_class.soap_action("FindByDateInterval") do
16
16
  soap.body = {
17
17
  'first' => from.iso8601,
18
- 'last' => unto.iso8601
18
+ 'last' => unto.iso8601,
19
+ :order! => ['first', 'last']
19
20
  }
20
21
  end
21
22
 
@@ -0,0 +1,32 @@
1
+ require 'economic/proxies/entity_proxy'
2
+
3
+ module Economic
4
+ class DebtorEntryProxy < EntityProxy
5
+ def find_by_invoice_number(from, to = from)
6
+ response = session.request(entity_class.soap_action('FindByInvoiceNumber')) do
7
+ soap.body = {
8
+ 'from' => from,
9
+ 'to' => to,
10
+ :order! => [ 'from', 'to' ]
11
+ }
12
+ end
13
+
14
+ response[:debtor_entry_handle].map do |debtor_entry_handle|
15
+ # Kinda ugly, but we get an array instead of a hash when there's only one result. :)
16
+ Hash[*debtor_entry_handle.to_a.flatten][:serial_number].to_i
17
+ end
18
+ end
19
+
20
+ def match(*serial_numbers)
21
+ response = session.request(entity_class.soap_action('MatchEntries')) do
22
+ soap.body = {
23
+ :entries => {
24
+ "DebtorEntryHandle" => serial_numbers.map { |serial_number|
25
+ { "SerialNumber" => serial_number }
26
+ }
27
+ }
28
+ }
29
+ end
30
+ end
31
+ end
32
+ end
@@ -48,7 +48,7 @@ module Economic
48
48
  self
49
49
  end
50
50
 
51
- # Returns a new, unpersisted Economic::Entity
51
+ # Returns a new, unpersisted Economic::Entity that has been added to Proxy
52
52
  def build(properties = {})
53
53
  entity = self.class.entity_class.new(:session => session)
54
54
 
@@ -65,7 +65,7 @@ module Economic
65
65
  self.class.entity_class
66
66
  end
67
67
 
68
- # Fetches Entity data from API and returns an Entity initialized with that data
68
+ # Fetches Entity data from API and returns an Entity initialized with that data added to Proxy
69
69
  def find(handle)
70
70
  handle = Entity::Handle.new(handle) unless handle.is_a?(Entity::Handle)
71
71
  entity_hash = get_data(handle)
@@ -0,0 +1,63 @@
1
+ require 'economic/proxies/entity_proxy'
2
+
3
+ module Economic
4
+ class EntryProxy < EntityProxy
5
+ def find_by_date_interval(from_date, to_date)
6
+ response = session.request(entity_class.soap_action('FindByDateInterval')) do
7
+ soap.body = {
8
+ 'fromDate' => from_date,
9
+ 'toDate' => to_date
10
+ }
11
+ end
12
+
13
+ build_array(response)
14
+ end
15
+
16
+ # Undocumented tip: if you only care about the min_number, pass in the maximum
17
+ # possible value as max_number so you don't have to call `get_last_used_serial_number`:
18
+ #
19
+ # max_number = 2**31 - 1 # Maximum int32.
20
+ #
21
+ def find_by_serial_number_interval(min_number, max_number)
22
+ response = session.request(entity_class.soap_action('FindBySerialNumberInterval')) do
23
+ soap.body = {
24
+ 'minNumber' => min_number,
25
+ 'maxNumber' => max_number
26
+ }
27
+ end
28
+
29
+ build_array(response)
30
+ end
31
+
32
+ def get_last_used_serial_number
33
+ response = session.request(entity_class.soap_action('GetLastUsedSerialNumber'))
34
+ response.to_i
35
+ end
36
+
37
+ def find(serial_number)
38
+ response = session.request(entity_class.soap_action('GetData')) do
39
+ soap.body = {
40
+ 'entityHandle' => {
41
+ 'SerialNumber' => serial_number
42
+ }
43
+ }
44
+ end
45
+
46
+ build(response)
47
+ end
48
+
49
+ private
50
+
51
+ def build_array(response)
52
+ # The response[:entry_handle] format may be any of
53
+ # [{:serial_number=>"1"}, {:serial_number=>"2"}] # Many results.
54
+ # {:serial_number=>"1"} # One result.
55
+ # nil # No results.
56
+ entry_handles = [ response[:entry_handle] ].flatten.compact
57
+
58
+ entry_handles.map do |entry_handle|
59
+ entry_handle[:serial_number].to_i
60
+ end
61
+ end
62
+ end
63
+ end
@@ -17,7 +17,8 @@ module Economic
17
17
  response = session.request entity_class.soap_action("FindByDateInterval") do
18
18
  soap.body = {
19
19
  'first' => from.iso8601,
20
- 'last' => unto.iso8601
20
+ 'last' => unto.iso8601,
21
+ :order! => ['first', 'last']
21
22
  }
22
23
  end
23
24
 
@@ -37,7 +37,7 @@ module Economic
37
37
  def current_invoices
38
38
  @current_invoices ||= CurrentInvoiceProxy.new(self)
39
39
  end
40
-
40
+
41
41
  # Provides access to the invoices
42
42
  def invoices
43
43
  @invoices ||= InvoiceProxy.new(self)
@@ -47,19 +47,36 @@ module Economic
47
47
  def debtors
48
48
  @debtors ||= DebtorProxy.new(self)
49
49
  end
50
-
50
+
51
+ # Provides access to creditors
52
+ def creditors
53
+ @creditors ||= CreditorProxy.new(self)
54
+ end
55
+
51
56
  def cash_books
52
57
  @cash_books ||= CashBookProxy.new(self)
53
58
  end
54
-
59
+
55
60
  def cash_book_entries
56
61
  @cash_book_entries ||= CashBookEntryProxy.new(self)
57
62
  end
58
-
63
+
59
64
  def accounts
60
65
  @accounts ||= AccountProxy.new(self)
61
66
  end
62
67
 
68
+ def debtor_entries
69
+ @debtor_entries ||= DebtorEntryProxy.new(self)
70
+ end
71
+
72
+ def creditor_entries
73
+ @creditor_entries ||= CreditorEntryProxy.new(self)
74
+ end
75
+
76
+ def entries
77
+ @entries ||= EntryProxy.new(self)
78
+ end
79
+
63
80
  def request(action, &block)
64
81
  response = client.request :economic, action, &block
65
82
  response_hash = response.to_hash
@@ -14,6 +14,11 @@ module Economic
14
14
  word.downcase!
15
15
  word
16
16
  end
17
+
18
+ def self.snakecase(word)
19
+ # Use the method from Savon::CoreExt::String.snakecase
20
+ word.snakecase
21
+ end
17
22
  end
18
23
  end
19
24
  end
@@ -1,3 +1,3 @@
1
1
  module Rconomic
2
- VERSION = "0.3"
2
+ VERSION = "0.4"
3
3
  end
data/lib/rconomic.rb CHANGED
@@ -8,21 +8,31 @@ require 'economic/session'
8
8
 
9
9
  require 'economic/debtor'
10
10
  require 'economic/debtor_contact'
11
+ require 'economic/creditor'
12
+ require 'economic/creditor_contact'
11
13
  require 'economic/current_invoice'
12
14
  require 'economic/current_invoice_line'
13
15
  require 'economic/invoice'
14
16
  require 'economic/cash_book'
15
17
  require 'economic/cash_book_entry'
16
18
  require 'economic/account'
19
+ require 'economic/debtor_entry'
20
+ require 'economic/creditor_entry'
21
+ require 'economic/entry'
17
22
 
18
23
  require 'economic/proxies/current_invoice_proxy'
19
24
  require 'economic/proxies/current_invoice_line_proxy'
20
25
  require 'economic/proxies/debtor_proxy'
21
26
  require 'economic/proxies/debtor_contact_proxy'
27
+ require 'economic/proxies/creditor_proxy'
28
+ require 'economic/proxies/creditor_contact_proxy'
22
29
  require 'economic/proxies/invoice_proxy'
23
30
  require 'economic/proxies/cash_book_proxy'
24
31
  require 'economic/proxies/cash_book_entry_proxy'
25
32
  require 'economic/proxies/account_proxy'
33
+ require 'economic/proxies/debtor_entry_proxy'
34
+ require 'economic/proxies/creditor_entry_proxy'
35
+ require 'economic/proxies/entry_proxy'
26
36
 
27
37
  # http://www.e-conomic.com/apidocs/Documentation/index.html
28
38
  # https://www.e-conomic.com/secure/api1/EconomicWebService.asmx
data/rconomic.gemspec CHANGED
@@ -17,10 +17,15 @@ Gem::Specification.new do |s|
17
17
  s.version = Rconomic::VERSION
18
18
  s.platform = Gem::Platform::RUBY
19
19
 
20
+ # As long as we use Savon 0.9.5, we need to tie down the max version
21
+ # of gyoku as 0.4.5 is not backwards compatible. If we update Savon,
22
+ # we should remove the gyoku constraint.
20
23
  s.add_runtime_dependency "savon", "0.9.5"
24
+ s.add_runtime_dependency "gyoku", "0.4.4"
25
+
21
26
  s.add_runtime_dependency "activesupport", "~> 3.0"
22
27
 
23
28
  s.files = `git ls-files`.split("\n").reject { |filename| ['.gitignore'].include?(filename) }
24
29
  s.test_files = `git ls-files -- {spec}/*`.split("\n")
25
30
  s.require_paths = ["lib"]
26
- end
31
+ end