rconomic 0.5.2 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +40 -0
- data/.ruby-version +1 -0
- data/.travis.yml +14 -3
- data/CHANGELOG.md +28 -0
- data/Gemfile +5 -4
- data/Guardfile +9 -4
- data/README.md +23 -4
- data/Rakefile +5 -5
- data/gemfiles/Gemfile.ruby-2.0 +14 -0
- data/lib/economic/account.rb +3 -3
- data/lib/economic/cash_book.rb +4 -7
- data/lib/economic/cash_book_entry.rb +4 -24
- data/lib/economic/company.rb +61 -0
- data/lib/economic/creditor.rb +4 -5
- data/lib/economic/creditor_contact.rb +5 -6
- data/lib/economic/creditor_entry.rb +1 -3
- data/lib/economic/current_invoice.rb +14 -21
- data/lib/economic/current_invoice_line.rb +4 -13
- data/lib/economic/debtor.rb +10 -11
- data/lib/economic/debtor_contact.rb +7 -8
- data/lib/economic/debtor_entry.rb +1 -3
- data/lib/economic/endpoint.rb +36 -6
- data/lib/economic/entity/handle.rb +54 -29
- data/lib/economic/entity/mapper.rb +1 -1
- data/lib/economic/entity.rb +26 -29
- data/lib/economic/entry.rb +1 -2
- data/lib/economic/invoice.rb +15 -8
- data/lib/economic/order.rb +2 -4
- data/lib/economic/product.rb +73 -0
- data/lib/economic/proxies/account_proxy.rb +2 -4
- data/lib/economic/proxies/actions/debtor_contact/all.rb +63 -0
- data/lib/economic/proxies/actions/find_by_ci_number.rb +1 -3
- data/lib/economic/proxies/actions/find_by_date_interval.rb +3 -6
- data/lib/economic/proxies/actions/find_by_handle_with_number.rb +1 -1
- data/lib/economic/proxies/actions/find_by_name.rb +1 -1
- data/lib/economic/proxies/actions/find_by_number.rb +2 -4
- data/lib/economic/proxies/actions/find_by_telephone_and_fax_number.rb +1 -3
- data/lib/economic/proxies/cash_book_entry_proxy.rb +19 -22
- data/lib/economic/proxies/cash_book_proxy.rb +5 -10
- data/lib/economic/proxies/company_proxy.rb +9 -0
- data/lib/economic/proxies/creditor_contact_proxy.rb +2 -2
- data/lib/economic/proxies/creditor_entry_proxy.rb +8 -14
- data/lib/economic/proxies/creditor_proxy.rb +8 -11
- data/lib/economic/proxies/current_invoice_line_proxy.rb +2 -2
- data/lib/economic/proxies/current_invoice_proxy.rb +3 -3
- data/lib/economic/proxies/debtor_contact_proxy.rb +6 -2
- data/lib/economic/proxies/debtor_entry_proxy.rb +6 -10
- data/lib/economic/proxies/debtor_proxy.rb +40 -55
- data/lib/economic/proxies/entity_proxy.rb +15 -15
- data/lib/economic/proxies/entry_proxy.rb +10 -16
- data/lib/economic/proxies/invoice_proxy.rb +3 -3
- data/lib/economic/proxies/order_proxy.rb +3 -3
- data/lib/economic/proxies/product_proxy.rb +11 -0
- data/lib/economic/session.rb +48 -21
- data/lib/economic/support/string.rb +5 -5
- data/lib/rconomic/version.rb +1 -1
- data/lib/rconomic.rb +39 -34
- data/lib/savon_ext/request.rb +17 -0
- data/rconomic.gemspec +8 -7
- data/spec/economic/account_spec.rb +3 -3
- data/spec/economic/cash_book_entry_spec.rb +26 -3
- data/spec/economic/cash_book_spec.rb +7 -7
- data/spec/economic/company_spec.rb +20 -0
- data/spec/economic/creditor_contact_spec.rb +4 -5
- data/spec/economic/creditor_entry_spec.rb +20 -0
- data/spec/economic/creditor_spec.rb +3 -3
- data/spec/economic/current_invoice_line_spec.rb +3 -3
- data/spec/economic/current_invoice_spec.rb +19 -19
- data/spec/economic/debtor_contact_spec.rb +4 -5
- data/spec/economic/debtor_entry_spec.rb +1 -1
- data/spec/economic/debtor_spec.rb +13 -13
- data/spec/economic/endpoint_spec.rb +27 -11
- data/spec/economic/entity/handle_spec.rb +10 -23
- data/spec/economic/entity/mapper_spec.rb +26 -30
- data/spec/economic/entity_spec.rb +36 -31
- data/spec/economic/entry_spec.rb +1 -1
- data/spec/economic/invoice_spec.rb +49 -7
- data/spec/economic/order_spec.rb +4 -4
- data/spec/economic/product_spec.rb +72 -0
- data/spec/economic/proxies/account_proxy_spec.rb +74 -0
- data/spec/economic/proxies/actions/debtor_contact/all_spec.rb +26 -0
- data/spec/economic/proxies/actions/find_by_name_spec.rb +6 -7
- data/spec/economic/proxies/cash_book_entry_proxy_spec.rb +27 -29
- data/spec/economic/proxies/cash_book_proxy_spec.rb +14 -22
- data/spec/economic/proxies/company_proxy_spec.rb +47 -0
- data/spec/economic/proxies/creditor_contact_proxy_spec.rb +11 -5
- data/spec/economic/proxies/creditor_entry_proxy_spec.rb +12 -12
- data/spec/economic/proxies/creditor_proxy_spec.rb +15 -15
- data/spec/economic/proxies/current_invoice_line_proxy_spec.rb +10 -4
- data/spec/economic/proxies/current_invoice_proxy_spec.rb +37 -19
- data/spec/economic/proxies/debtor_contact_proxy_spec.rb +8 -4
- data/spec/economic/proxies/debtor_entry_proxy_spec.rb +21 -11
- data/spec/economic/proxies/debtor_proxy_spec.rb +81 -40
- data/spec/economic/proxies/entry_proxy_spec.rb +17 -14
- data/spec/economic/proxies/invoice_proxy_spec.rb +24 -10
- data/spec/economic/proxies/order_proxy_spec.rb +20 -10
- data/spec/economic/proxies/product_proxy_spec.rb +86 -0
- data/spec/economic/session_spec.rb +74 -35
- data/spec/fixtures/account_get_all/multiple.xml +15 -0
- data/spec/fixtures/account_get_all/none.xml +8 -0
- data/spec/fixtures/account_get_all/single.xml +12 -0
- data/spec/fixtures/account_get_data_array/multiple.xml +69 -0
- data/spec/fixtures/company_get/success.xml +10 -0
- data/spec/fixtures/company_get_data/success.xml +32 -0
- data/spec/fixtures/current_invoice_line_create_from_data/success.xml +6 -37
- data/spec/fixtures/debtor_create_from_data/success.xml +5 -52
- data/spec/fixtures/debtor_get_orders/none.xml +9 -0
- data/spec/fixtures/product_create_from_data/success.xml +37 -0
- data/spec/fixtures/product_find_by_number/found.xml +10 -0
- data/spec/fixtures/product_find_by_number/not_found.xml +6 -0
- data/spec/fixtures/product_get_all/multiple.xml +15 -0
- data/spec/fixtures/product_get_all/single.xml +12 -0
- data/spec/fixtures/product_get_data/success.xml +37 -0
- data/spec/fixtures/product_get_data_array/multiple.xml +69 -0
- data/spec/spec_helper.rb +6 -9
- data/spec/support/factories.rb +14 -14
- 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
|
-
|
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 = [
|
9
|
+
handles = [response[handle_key]].flatten.reject(&:blank?).collect do |handle|
|
13
10
|
Entity::Handle.build(handle)
|
14
11
|
end
|
15
12
|
|
@@ -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(
|
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]
|
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(
|
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
|
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
|
-
|
8
|
+
"cashBookHandle" => owner.handle.to_hash
|
9
9
|
)
|
10
10
|
|
11
11
|
if entity_hash != {}
|
12
|
-
[
|
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,
|
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,
|
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,
|
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,
|
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
|
-
|
62
|
-
|
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,
|
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"] = {
|
76
|
-
data[handle_name] = {
|
77
|
-
data["contraAccountHandle"] = {
|
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
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
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
|
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(
|
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
|
-
|
21
|
-
|
22
|
-
}
|
23
|
-
})
|
16
|
+
response = request("GetName", "cashBookHandle" => {
|
17
|
+
"Number" => id
|
18
|
+
})
|
24
19
|
|
25
20
|
cash_book = build
|
26
21
|
cash_book.number = id
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
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
|
-
|
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
|
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(
|
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(
|
18
|
-
|
19
|
-
|
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
|
-
|
28
|
-
|
29
|
-
"
|
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
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
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(
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
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
|
-
|
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
|
2
|
-
require
|
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
|
-
|
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
|
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
|
-
|
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
|
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(
|
7
|
-
|
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
|
-
|
19
|
-
|
20
|
-
"
|
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
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
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 =
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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 =
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
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 =
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
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
|
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(
|
8
|
+
Economic.const_get(entity_class_name)
|
9
9
|
end
|
10
10
|
|
11
11
|
def entity_class_name
|
12
|
-
proxy_class_name = name.split(
|
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
|
-
|
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 =
|
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
|
103
|
+
alias << append
|
102
104
|
|
103
105
|
protected
|
104
106
|
|
105
|
-
|
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(
|
115
|
-
response = request(:get_data_array,
|
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
|
|