rconomic 0.7.1 → 0.7.2
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +29 -1
- data/README.md +2 -0
- data/lib/economic/debtor.rb +7 -0
- data/lib/economic/proxies/cash_book_entry_proxy.rb +12 -1
- data/lib/economic/proxies/current_invoice_proxy.rb +13 -0
- data/lib/economic/proxies/debtor_proxy.rb +19 -1
- data/lib/rconomic/version.rb +1 -1
- data/spec/economic/debtor_spec.rb +14 -0
- data/spec/economic/proxies/cash_book_entry_proxy_spec.rb +9 -0
- data/spec/economic/proxies/current_invoice_proxy_spec.rb +11 -0
- data/spec/fixtures/cash_book_entry_create_manual_debtor_invoice/success.xml +11 -0
- data/spec/fixtures/debtor_get_current_invoices/success.xml +15 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c28c505ccc3c9a6c96ba5f71df0d1405e1fc20b177222e2b878aeb26919125de
|
4
|
+
data.tar.gz: 017da352051bacf17271337cbb9ef5aff57d6f9c19f50f7f97ca90cb8c0c8b21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb77c6883f471d4f77a7aa78fd50defed6290e334a3867f4a8c467e485790a75ef53031a3ed270ddf70b1ca5997d2e9b69cf5225608af63d3f1ae5280e17da7d
|
7
|
+
data.tar.gz: 5dafef1962b57e7c8395bd000a1a4fbf6a9f4c925e673a611d26578f333db9bf0d54a5bf9048a7e33600760b90d9b946636564e85fe45fbe2a941c7d1ff160a2
|
data/CHANGELOG.md
CHANGED
@@ -7,7 +7,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
7
7
|
|
8
8
|
### Added
|
9
9
|
|
10
|
-
*
|
10
|
+
*
|
11
11
|
|
12
12
|
### Changes
|
13
13
|
|
@@ -15,6 +15,34 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
15
15
|
|
16
16
|
### Removed
|
17
17
|
|
18
|
+
*
|
19
|
+
|
20
|
+
## 0.7.2 [June 24, 2019]
|
21
|
+
|
22
|
+
### Added
|
23
|
+
|
24
|
+
* Ability to create ManualDebtorInvoice cash book entries (@prognostikos).
|
25
|
+
|
26
|
+
### Changes
|
27
|
+
|
28
|
+
* `Debtor#current_invoices` now only returns invoices for the debtor (@olepalm).
|
29
|
+
|
30
|
+
## 0.7.1 [February 21st, 2018]
|
31
|
+
|
32
|
+
### Added
|
33
|
+
|
34
|
+
* Operation to fetch only current orders from the backend.
|
35
|
+
* Support for OrderLine objects (@olepalm)
|
36
|
+
* Ability to get order lines for a specific order (@olepalm).
|
37
|
+
* Orders can now be found by their other_reference field (@olepalm).
|
38
|
+
* Ability to toggle Sent-status of orders (@olepalm).
|
39
|
+
|
40
|
+
### Changes
|
41
|
+
|
42
|
+
* The cached E-conomic WSDL has been updated with the most recent version.
|
43
|
+
|
44
|
+
### Removed
|
45
|
+
|
18
46
|
## 0.7.0 [July 1st, 2018]
|
19
47
|
|
20
48
|
This release contains breaking changes as E-conomic has deprecated one of their connection methods. See https://www.e-conomic.com/developer#_ga=2.79896535.1117342868.1530474675-2146547048.1526554784 for details.
|
data/README.md
CHANGED
@@ -118,6 +118,8 @@ Not even remotely... For now, limited to a small subset of all the [available op
|
|
118
118
|
DebtorEntry | X | X | X | X
|
119
119
|
Entry | X | X | X | X
|
120
120
|
Invoice | X | X | |
|
121
|
+
Order | | X | |
|
122
|
+
OrderLine | | X | X |
|
121
123
|
Product | X | X | X | X
|
122
124
|
|
123
125
|
Credits
|
data/lib/economic/debtor.rb
CHANGED
@@ -63,6 +63,13 @@ module Economic
|
|
63
63
|
@current_invoices ||= CurrentInvoiceProxy.new(self)
|
64
64
|
end
|
65
65
|
|
66
|
+
# Provides access to the current invoices for Debtor - ie invoices that
|
67
|
+
# haven't yet been booked
|
68
|
+
def get_current_invoices
|
69
|
+
return [] if handle.empty?
|
70
|
+
@current_invoices ||= DebtorProxy.new(self).get_current_invoices(handle)
|
71
|
+
end
|
72
|
+
|
66
73
|
# Returns the Debtors contacts
|
67
74
|
def contacts
|
68
75
|
return [] if handle.empty?
|
@@ -58,6 +58,16 @@ module Economic
|
|
58
58
|
create_cash_book_entry_for_handles(handles, "CreateCreditorInvoice")
|
59
59
|
end
|
60
60
|
|
61
|
+
# Creates a manual debtor invoice and returns the cash book entry.
|
62
|
+
# Example:
|
63
|
+
# cash_book.entries.create_manual_debtor_invoice(
|
64
|
+
# :debtor_handle => { :number => 1 },
|
65
|
+
# :contra_account_handle => { :number => 1510 }
|
66
|
+
# )
|
67
|
+
def create_manual_debtor_invoice(handles)
|
68
|
+
create_cash_book_entry_for_handles(handles, "CreateManualDebtorInvoice")
|
69
|
+
end
|
70
|
+
|
61
71
|
def set_due_date(id, date)
|
62
72
|
request("SetDueDate", "cashBookEntryHandle" => {
|
63
73
|
"Id1" => owner.handle[:number], "Id2" => id
|
@@ -86,7 +96,8 @@ module Economic
|
|
86
96
|
"CreateFinanceVoucher" => "accountHandle",
|
87
97
|
"CreateDebtorPayment" => "debtorHandle",
|
88
98
|
"CreateCreditorInvoice" => "creditorHandle",
|
89
|
-
"CreateCreditorPayment" => "creditorHandle"
|
99
|
+
"CreateCreditorPayment" => "creditorHandle",
|
100
|
+
"CreateManualDebtorInvoice" => "debtorHandle",
|
90
101
|
}[action_name]
|
91
102
|
end
|
92
103
|
end
|
@@ -7,6 +7,19 @@ module Economic
|
|
7
7
|
class CurrentInvoiceProxy < EntityProxy
|
8
8
|
include FindByDateInterval
|
9
9
|
|
10
|
+
# Fetches all entities from the API.
|
11
|
+
def all
|
12
|
+
if owner.is_a?(Economic::Debtor)
|
13
|
+
owner.get_current_invoices
|
14
|
+
else
|
15
|
+
response = request(:get_all)
|
16
|
+
handles = response.values.flatten.collect { |handle| Entity::Handle.build(handle) }
|
17
|
+
get_data_for_handles(handles)
|
18
|
+
|
19
|
+
self
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
10
23
|
private
|
11
24
|
|
12
25
|
# Initialize properties in invoice with values from owner
|
@@ -18,6 +18,14 @@ module Economic
|
|
18
18
|
request :get_next_available_number
|
19
19
|
end
|
20
20
|
|
21
|
+
def get_current_invoices(debtor_handle)
|
22
|
+
response = fetch_response(:get_current_invoices, debtor_handle)
|
23
|
+
build_entities_from_response(
|
24
|
+
Economic::CurrentInvoice,
|
25
|
+
response[:current_invoice_handle]
|
26
|
+
)
|
27
|
+
end
|
28
|
+
|
21
29
|
def get_debtor_contacts(debtor_handle)
|
22
30
|
response = fetch_response(:get_debtor_contacts, debtor_handle)
|
23
31
|
build_entities_from_response(
|
@@ -52,11 +60,21 @@ module Economic
|
|
52
60
|
entity.partial = true
|
53
61
|
entity.persisted = true
|
54
62
|
entity.handle = handle
|
55
|
-
entity
|
63
|
+
entity = add_id_to_entity(entity, handle[:id].to_i)
|
56
64
|
entity
|
57
65
|
end
|
58
66
|
end
|
59
67
|
|
68
|
+
def add_id_to_entity(entity, id)
|
69
|
+
if entity.respond_to?(:number=)
|
70
|
+
entity.number = id
|
71
|
+
else
|
72
|
+
entity.id = id
|
73
|
+
end
|
74
|
+
|
75
|
+
entity
|
76
|
+
end
|
77
|
+
|
60
78
|
def fetch_response(operation, debtor_handle)
|
61
79
|
request(
|
62
80
|
operation,
|
data/lib/rconomic/version.rb
CHANGED
@@ -58,6 +58,20 @@ describe Economic::Debtor do
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
+
describe ".get_current_invoices" do
|
62
|
+
it "return nothing if no handle" do
|
63
|
+
expect(subject.get_current_invoices).to be_empty
|
64
|
+
end
|
65
|
+
|
66
|
+
it "returns current invoices if there is a handle" do
|
67
|
+
mock_request("Debtor_GetCurrentInvoices", {"debtorHandle" => {"Number" => "1"}}, :success)
|
68
|
+
subject.handle = Economic::Entity::Handle.new(:number => "1")
|
69
|
+
subject.get_current_invoices.each do |i|
|
70
|
+
expect(i).to be_instance_of(Economic::CurrentInvoice)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
61
75
|
describe ".invoices" do
|
62
76
|
it "return nothing if no handle" do
|
63
77
|
expect(subject.invoices).to be_empty
|
@@ -46,6 +46,15 @@ describe Economic::CashBookEntryProxy do
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
+
describe "#create_manual_debtor_invoice" do
|
50
|
+
it "should create a debtor invoice and then return the created cash book entry" do
|
51
|
+
stub_request("CashBookEntry_CreateManualDebtorInvoice", nil, :success)
|
52
|
+
stub_request("CashBookEntry_GetData", {"entityHandle" => {"Id1" => 13, "Id2" => 14}}, :success)
|
53
|
+
cash_book_entry = subject.create_manual_debtor_invoice(:debtor_handle => {:number => 2}, :contra_account_handle => {:number => 3})
|
54
|
+
expect(cash_book_entry).to be_instance_of(Economic::CashBookEntry)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
49
58
|
describe "#create_creditor_invoice" do
|
50
59
|
it "should create a creditor invoice and then return the created cash book entry" do
|
51
60
|
stub_request("CashBookEntry_CreateCreditorInvoice", nil, :success)
|
@@ -136,5 +136,16 @@ describe Economic::CurrentInvoiceProxy do
|
|
136
136
|
expect(current_invoices.first).to be_instance_of(Economic::CurrentInvoice)
|
137
137
|
expect(current_invoices.last).to be_instance_of(Economic::CurrentInvoice)
|
138
138
|
end
|
139
|
+
|
140
|
+
context "owner is a debtor" do
|
141
|
+
let(:debtor) { make_debtor }
|
142
|
+
subject { Economic::CurrentInvoiceProxy.new(debtor) }
|
143
|
+
|
144
|
+
it "asks for the owners current invoices" do
|
145
|
+
expect(debtor).to receive(:get_current_invoices) { [] }
|
146
|
+
|
147
|
+
subject.all
|
148
|
+
end
|
149
|
+
end
|
139
150
|
end
|
140
151
|
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
3
|
+
<soap:Body>
|
4
|
+
<CashBookEntry_CreateManualDebtorInvoiceResponse xmlns="http://e-conomic.com">
|
5
|
+
<CashBookEntry_CreateManualDebtorInvoiceResult>
|
6
|
+
<Id1>13</Id1>
|
7
|
+
<Id2>14</Id2>
|
8
|
+
</CashBookEntry_CreateManualDebtorInvoiceResult>
|
9
|
+
</CashBookEntry_CreateManualDebtorInvoiceResponse>
|
10
|
+
</soap:Body>
|
11
|
+
</soap:Envelope>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
|
3
|
+
<soap:Body>
|
4
|
+
<Debtor_GetCurrentInvoicesResponse xmlns="http://e-conomic.com">
|
5
|
+
<Debtor_GetCurrentInvoicesResult>
|
6
|
+
<CurrentInvoiceHandle>
|
7
|
+
<Id>1</Id>
|
8
|
+
</CurrentInvoiceHandle>
|
9
|
+
<CurrentInvoiceHandle>
|
10
|
+
<Id>2</Id>
|
11
|
+
</CurrentInvoiceHandle>
|
12
|
+
</Debtor_GetCurrentInvoicesResult>
|
13
|
+
</Debtor_GetCurrentInvoicesResponse>
|
14
|
+
</soap:Body>
|
15
|
+
</soap:Envelope>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rconomic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jakob Skjerning
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-06-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: savon
|
@@ -164,6 +164,7 @@ files:
|
|
164
164
|
- spec/fixtures/cash_book_entry_create_debtor_payment/success.xml
|
165
165
|
- spec/fixtures/cash_book_entry_create_finance_voucher/success.xml
|
166
166
|
- spec/fixtures/cash_book_entry_create_from_data/success.xml
|
167
|
+
- spec/fixtures/cash_book_entry_create_manual_debtor_invoice/success.xml
|
167
168
|
- spec/fixtures/cash_book_entry_get_data/success.xml
|
168
169
|
- spec/fixtures/cash_book_entry_set_due_date/success.xml
|
169
170
|
- spec/fixtures/cash_book_get_all/multiple.xml
|
@@ -220,6 +221,7 @@ files:
|
|
220
221
|
- spec/fixtures/debtor_find_by_telephone_and_fax_number/not_found.xml
|
221
222
|
- spec/fixtures/debtor_get_all/multiple.xml
|
222
223
|
- spec/fixtures/debtor_get_all/single.xml
|
224
|
+
- spec/fixtures/debtor_get_current_invoices/success.xml
|
223
225
|
- spec/fixtures/debtor_get_data/success.xml
|
224
226
|
- spec/fixtures/debtor_get_data_array/multiple.xml
|
225
227
|
- spec/fixtures/debtor_get_debtor_contacts/multiple.xml
|
@@ -295,7 +297,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
295
297
|
version: '0'
|
296
298
|
requirements: []
|
297
299
|
rubyforge_project:
|
298
|
-
rubygems_version: 2.7.
|
300
|
+
rubygems_version: 2.7.9
|
299
301
|
signing_key:
|
300
302
|
specification_version: 4
|
301
303
|
summary: Wrapper for e-conomic.dk's SOAP API.
|