tripletex_ruby_client 1.0.3 → 1.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +5 -5
- data/README.md +29 -37
- data/lib/tripletex_ruby_client/api/invoice_api.rb +19 -13
- data/lib/tripletex_ruby_client/api/reminder_api.rb +55 -3
- data/lib/tripletex_ruby_client/api_client.rb +21 -4
- data/lib/tripletex_ruby_client/api_error.rb +12 -0
- data/lib/tripletex_ruby_client/models/invoice.rb +22 -3
- data/lib/tripletex_ruby_client/models/invoice_remark.rb +229 -0
- data/lib/tripletex_ruby_client/version.rb +1 -13
- data/lib/tripletex_ruby_client.rb +1 -0
- data/spec/api_client_spec.rb +53 -0
- data/tripletex_ruby_client.gemspec +4 -4
- metadata +783 -875
- data/tripletex_ruby_client-1.0.1.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5cc5ed9deb0b1961f486d3dcdda1dfc0947d05a279bbcbe4b50cb41d70e45e6b
|
4
|
+
data.tar.gz: c8aadc530518cded2246f000c85dd78eaee27fd0375b6f935ec06901d5c7e25b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d37586cee50ae446fbcf6669578d16274cbf9c8321bf0d1402560fab14dc1bcb89d41f66f7d290c50ef443574e9a553bbea50281ecab62637170251388ab3f8
|
7
|
+
data.tar.gz: 41001b1d23ab2334ed0b59b3d29b2dd1b095a6b1c4cf3eebe01cc21aeed6ce23da8db1a4d838052e9875f7c18f0fc8d60c58223f2a4a815c60156734522aa8e5
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
tripletex_ruby_client (1.0.
|
4
|
+
tripletex_ruby_client (1.0.6)
|
5
5
|
addressable (~> 2.3, >= 2.3.0)
|
6
6
|
json (~> 2.1, >= 2.1.0)
|
7
7
|
typhoeus (~> 1.0, >= 1.0.1)
|
@@ -14,18 +14,18 @@ GEM
|
|
14
14
|
public_suffix (>= 2.0.2, < 5.0)
|
15
15
|
autotest (4.4.6)
|
16
16
|
ZenTest (>= 4.4.1)
|
17
|
-
autotest-fsevent (0.2.
|
17
|
+
autotest-fsevent (0.2.20)
|
18
18
|
sys-uname
|
19
19
|
autotest-growl (0.2.16)
|
20
20
|
autotest-rails-pure (4.1.2)
|
21
21
|
crack (0.4.5)
|
22
22
|
rexml
|
23
23
|
diff-lcs (1.4.4)
|
24
|
-
ethon (0.
|
24
|
+
ethon (0.16.0)
|
25
25
|
ffi (>= 1.15.0)
|
26
|
-
ffi (1.15.
|
26
|
+
ffi (1.15.5)
|
27
27
|
hashdiff (1.0.1)
|
28
|
-
json (2.6.
|
28
|
+
json (2.6.3)
|
29
29
|
public_suffix (4.0.6)
|
30
30
|
rake (12.3.3)
|
31
31
|
rexml (3.2.5)
|
data/README.md
CHANGED
@@ -2,51 +2,22 @@
|
|
2
2
|
|
3
3
|
TripletexRubyClient - the Ruby gem for the Tripletex API, at the courtesy of Rubynor AS.
|
4
4
|
|
5
|
-
|
6
|
-
and it needed change in config and auth to work for us.
|
5
|
+
Used in production.
|
7
6
|
|
8
|
-
|
7
|
+
This was built using swagger-codegen first, from [https://tripletex.no/v2-docs/](https://tripletex.no/v2-docs/), then changed manually for it to work.
|
9
8
|
|
10
|
-
|
9
|
+
To help make it better, fork it and create Pull Request, thanks !
|
11
10
|
|
12
|
-
|
11
|
+
Team Rubynor
|
13
12
|
|
14
|
-
|
15
|
-
|
16
|
-
```shell
|
17
|
-
gem build tripletex_ruby_client.gemspec
|
18
|
-
```
|
19
|
-
|
20
|
-
Then either install the gem locally:
|
21
|
-
|
22
|
-
```shell
|
23
|
-
gem install ./tripletex_ruby_client-1.0.0.gem
|
24
|
-
```
|
25
|
-
(for development, run `gem install --dev ./tripletex_ruby_client-1.0.0.gem` to install the development dependencies)
|
26
|
-
|
27
|
-
or publish the gem to a gem hosting service, e.g. [RubyGems](https://rubygems.org/).
|
28
|
-
|
29
|
-
Finally add this to the Gemfile:
|
30
|
-
|
31
|
-
gem 'tripletex_ruby_client', '~> 1.0.0'
|
32
|
-
|
33
|
-
### Install from Git
|
34
|
-
|
35
|
-
If the Ruby gem is hosted at a git repository: https://github.com/GIT_USER_ID/GIT_REPO_ID, then add the following in the Gemfile:
|
13
|
+
## Getting Started
|
36
14
|
|
37
|
-
|
15
|
+
Gemfile
|
38
16
|
|
39
|
-
|
17
|
+
gem 'tripletex_ruby_client'
|
40
18
|
|
41
|
-
|
19
|
+
Usage
|
42
20
|
|
43
|
-
```shell
|
44
|
-
ruby -Ilib script.rb
|
45
|
-
```
|
46
|
-
|
47
|
-
## Getting Started
|
48
|
-
|
49
|
-
Please follow the [installation](#installation) procedure and then run the following code:
|
50
21
|
```ruby
|
51
22
|
# Load the gem
|
52
23
|
require 'tripletex_ruby_client'
|
@@ -81,6 +52,9 @@ begin
|
|
81
52
|
p result
|
82
53
|
rescue TripletexRubyClient::ApiError => e
|
83
54
|
puts "Exception when calling ActivityApi->get: #{e}"
|
55
|
+
|
56
|
+
validation_errors = JSON.parse(error.response_body)["validationMessages"]
|
57
|
+
# do your stuff
|
84
58
|
end
|
85
59
|
|
86
60
|
```
|
@@ -94,6 +68,24 @@ This SDK is automatically generated by the [Swagger Codegen](https://github.com/
|
|
94
68
|
- Build package: io.swagger.codegen.languages.RubyClientCodegen
|
95
69
|
For more information, please visit [https://github.com/Tripletex/tripletex-api2](https://github.com/Tripletex/tripletex-api2)
|
96
70
|
|
71
|
+
## Build a gem
|
72
|
+
|
73
|
+
To build the Ruby code into a gem:
|
74
|
+
|
75
|
+
```shell
|
76
|
+
gem build tripletex_ruby_client.gemspec
|
77
|
+
```
|
78
|
+
|
79
|
+
Then either install the gem locally:
|
80
|
+
|
81
|
+
```shell
|
82
|
+
gem install ./tripletex_ruby_client-1.0.0.gem
|
83
|
+
```
|
84
|
+
(for development, run `gem install --dev ./tripletex_ruby_client-1.0.0.gem` to install the development dependencies)
|
85
|
+
|
86
|
+
or publish the gem to a gem hosting service, e.g. [RubyGems](https://rubygems.org/).
|
87
|
+
|
88
|
+
|
97
89
|
## Documentation for API Endpoints
|
98
90
|
|
99
91
|
All URIs are relative to *https://tripletex.no/v2*
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
### Usage - **Download the spec** [swagger.json](/v2/swagger.json) file, it is a [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification). - **Generating a client** can easily be done using tools like [swagger-codegen](https://github.com/swagger-api/swagger-codegen) or other that accepts [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification) specs. - For swagger codegen it is recommended to use the flag: **--removeOperationIdPrefix**. Unique operation ids are about to be introduced to the spec, and this ensures forward compatibility - and results in less verbose generated code. ## Overview - Partial resource updating is done using the `PUT` method with optional fields instead of the `PATCH` method. - **Actions** or **commands** are represented in our RESTful path with a prefixed `:`. Example: `/v2/hours/123/:approve`. - **Summaries** or **aggregated** results are represented in our RESTful path with a prefixed `>`. Example: `/v2/hours/>thisWeeksBillables`. - **Request ID** is a key found in all responses in the header with the name `x-tlx-request-id`. For validation and error responses it is also in the response body. If additional log information is absolutely necessary, our support division can locate the key value. - **version** This is a revision number found on all persisted resources. If included, it will prevent your PUT/POST from overriding any updates to the resource since your GET. - **Date** follows the **[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)** standard, meaning the format `YYYY-MM-DD`. - **DateTime** follows the **[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)** standard, meaning the format `YYYY-MM-DDThh:mm:ss`. - **Searching** is done by entering values in the optional fields for each API call. The values fall into the following categories: range, in, exact and like. - **Missing fields** or even **no response data** can occur because result objects and fields are filtered on authorization. - **See [GitHub](https://github.com/Tripletex/tripletex-api2) for more documentation, examples, changelog and more.** - **See [FAQ](https://tripletex.no/execute/docViewer?articleId=906&language=0) for additional information.** ## Authentication - **Tokens:** The Tripletex API uses 3 different tokens - **consumerToken** is a token provided to the consumer by Tripletex after the API 2.0 registration is completed. - **employeeToken** is a token created by an administrator in your Tripletex account via the user settings and the tab \"API access\". Each employee token must be given a set of entitlements. [Read more here.](https://tripletex.no/execute/docViewer?articleId=1505&languageId=0) - **sessionToken** is the token from `/token/session/:create` which requires a consumerToken and an employeeToken created with the same consumer token, but not an authentication header. - **Authentication** is done via [Basic access authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) - **username** is used to specify what company to access. - `0` or blank means the company of the employee. - Any other value means accountant clients. Use `/company/>withLoginAccess` to get a list of those. - **password** is the **sessionToken**. - If you need to create the header yourself use `Authorization: Basic <encoded token>` where `encoded token` is the string `<target company id or 0>:<your session token>` Base64 encoded. ## Tags - `[BETA]` This is a beta endpoint and can be subject to change. - `[DEPRECATED]` Deprecated means that we intend to remove/change this feature or capability in a future \"major\" API release. We therefore discourage all use of this feature/capability. ## Fields Use the `fields` parameter to specify which fields should be returned. This also supports fields from sub elements, done via `<field>(<subResourceFields>)`. `*` means all fields for that resource. Example values: - `project,activity,hours` returns `{project:..., activity:...., hours:...}`. - just `project` returns `\"project\" : { \"id\": 12345, \"url\": \"tripletex.no/v2/projects/12345\" }`. - `project(*)` returns `\"project\" : { \"id\": 12345 \"name\":\"ProjectName\" \"number.....startDate\": \"2013-01-07\" }`. - `project(name)` returns `\"project\" : { \"name\":\"ProjectName\" }`. - All resources and some subResources : `*,activity(name),employee(*)`. ## Sorting Use the `sorting` parameter to specify sorting. It takes a comma separated list, where a `-` prefix denotes descending. You can sort by sub object with the following format: `<field>.<subObjectField>`. Example values: - `date` - `project.name` - `project.name, -date` ## Changes To get the changes for a resource, `changes` have to be explicitly specified as part of the `fields` parameter, e.g. `*,changes`. There are currently two types of change available: - `CREATE` for when the resource was created - `UPDATE` for when the resource was updated **NOTE** > For objects created prior to October 24th 2018 the list may be incomplete, but will always contain the CREATE and the last change (if the object has been changed after creation). ## Rate limiting Rate limiting is performed on the API calls for an employee for each API consumer. Status regarding the rate limit is returned as headers: - `X-Rate-Limit-Limit` - The number of allowed requests in the current period. - `X-Rate-Limit-Remaining` - The number of remaining requests. - `X-Rate-Limit-Reset` - The number of seconds left in the current period. Once the rate limit is hit, all requests will return HTTP status code `429` for the remainder of the current period. ## Response envelope #### Multiple values ```json { \"fullResultSize\": ###, // {number} [DEPRECATED] \"from\": ###, // {number} Paging starting from \"count\": ###, // {number} Paging count \"versionDigest\": \"###\", // {string} Hash of full result, null if no result \"values\": [...{...object...},{...object...},{...object...}...] } ``` #### Single value ```json { \"value\": {...single object...} } ``` ## WebHook envelope ```json { \"subscriptionId\": ###, // Subscription id \"event\": \"object.verb\", // As listed from /v2/event/ \"id\": ###, // Id of object this event is for \"value\": {... single object, null if object.deleted ...} } ``` ## Error/warning envelope ```json { \"status\": ###, // {number} HTTP status code \"code\": #####, // {number} internal status code of event \"message\": \"###\", // {string} Basic feedback message in your language \"link\": \"###\", // {string} Link to doc \"developerMessage\": \"###\", // {string} More technical message \"validationMessages\": [ // {array} List of validation messages, can be null { \"field\": \"###\", // {string} Name of field \"message\": \"###\" // {string} Validation message for field } ], \"requestId\": \"###\" // {string} Same as x-tlx-request-id } ``` ## Status codes / Error codes - **200 OK** - **201 Created** - From POSTs that create something new. - **204 No Content** - When there is no answer, ex: \"/:anAction\" or DELETE. - **400 Bad request** - - **4000** Bad Request Exception - **11000** Illegal Filter Exception - **12000** Path Param Exception - **24000** Cryptography Exception - **401 Unauthorized** - When authentication is required and has failed or has not yet been provided - **3000** Authentication Exception - **403 Forbidden** - When AuthorisationManager says no. - **9000** Security Exception - **404 Not Found** - For resources that does not exist. - **6000** Not Found Exception - **409 Conflict** - Such as an edit conflict between multiple simultaneous updates - **7000** Object Exists Exception - **8000** Revision Exception - **10000** Locked Exception - **14000** Duplicate entry - **422 Bad Request** - For Required fields or things like malformed payload. - **15000** Value Validation Exception - **16000** Mapping Exception - **17000** Sorting Exception - **18000** Validation Exception - **21000** Param Exception - **22000** Invalid JSON Exception - **23000** Result Set Too Large Exception - **429 Too Many Requests** - Request rate limit hit - **500 Internal Error** - Unexpected condition was encountered and no more specific message is suitable - **1000** Exception
|
5
5
|
|
6
|
-
OpenAPI spec version: 2.
|
6
|
+
OpenAPI spec version: 2.70.15
|
7
7
|
|
8
8
|
Generated by: https://github.com/swagger-api/swagger-codegen.git
|
9
9
|
Swagger Codegen version: 2.4.24
|
@@ -20,12 +20,13 @@ module TripletexRubyClient
|
|
20
20
|
@api_client = api_client
|
21
21
|
end
|
22
22
|
# Creates a new Invoice representing a credit memo that nullifies the given invoice. Updates this invoice and any pre-existing inverse invoice.
|
23
|
-
#
|
23
|
+
#
|
24
24
|
# @param id Invoice id
|
25
25
|
# @param date Credit note date
|
26
26
|
# @param [Hash] opts the optional parameters
|
27
27
|
# @option opts [String] :comment Comment
|
28
|
-
# @option opts [String] :credit_note_email The credit note will be sent
|
28
|
+
# @option opts [String] :credit_note_email The credit note will not be sent if the customer send type is email and this field is empty
|
29
|
+
# @option opts [BOOLEAN] :send_to_customer Equals (default to true)
|
29
30
|
# @return [ResponseWrapperInvoice]
|
30
31
|
def create_credit_note(id, date, opts = {})
|
31
32
|
data, _status_code, _headers = create_credit_note_with_http_info(id, date, opts)
|
@@ -33,12 +34,13 @@ module TripletexRubyClient
|
|
33
34
|
end
|
34
35
|
|
35
36
|
# Creates a new Invoice representing a credit memo that nullifies the given invoice. Updates this invoice and any pre-existing inverse invoice.
|
36
|
-
#
|
37
|
+
#
|
37
38
|
# @param id Invoice id
|
38
39
|
# @param date Credit note date
|
39
40
|
# @param [Hash] opts the optional parameters
|
40
41
|
# @option opts [String] :comment Comment
|
41
|
-
# @option opts [String] :credit_note_email The credit note will be sent
|
42
|
+
# @option opts [String] :credit_note_email The credit note will not be sent if the customer send type is email and this field is empty
|
43
|
+
# @option opts [BOOLEAN] :send_to_customer Equals
|
42
44
|
# @return [Array<(ResponseWrapperInvoice, Fixnum, Hash)>] ResponseWrapperInvoice data, response status code and response headers
|
43
45
|
def create_credit_note_with_http_info(id, date, opts = {})
|
44
46
|
if @api_client.config.debugging
|
@@ -60,6 +62,7 @@ module TripletexRubyClient
|
|
60
62
|
query_params[:'date'] = date
|
61
63
|
query_params[:'comment'] = opts[:'comment'] if !opts[:'comment'].nil?
|
62
64
|
query_params[:'creditNoteEmail'] = opts[:'credit_note_email'] if !opts[:'credit_note_email'].nil?
|
65
|
+
query_params[:'sendToCustomer'] = opts[:'send_to_customer'] if !opts[:'send_to_customer'].nil?
|
63
66
|
|
64
67
|
# header parameters
|
65
68
|
header_params = {}
|
@@ -83,7 +86,7 @@ module TripletexRubyClient
|
|
83
86
|
return data, status_code, headers
|
84
87
|
end
|
85
88
|
# Create invoice reminder and sends it by the given dispatch type. Supports the reminder types SOFT_REMINDER, REMINDER and NOTICE_OF_DEBT_COLLECTION. DispatchType NETS_PRINT must have type NOTICE_OF_DEBT_COLLECTION. SMS and NETS_PRINT must be activated prior to usage in the API.
|
86
|
-
#
|
89
|
+
#
|
87
90
|
# @param id Element ID
|
88
91
|
# @param type type
|
89
92
|
# @param date yyyy-MM-dd. Defaults to today.
|
@@ -99,7 +102,7 @@ module TripletexRubyClient
|
|
99
102
|
end
|
100
103
|
|
101
104
|
# Create invoice reminder and sends it by the given dispatch type. Supports the reminder types SOFT_REMINDER, REMINDER and NOTICE_OF_DEBT_COLLECTION. DispatchType NETS_PRINT must have type NOTICE_OF_DEBT_COLLECTION. SMS and NETS_PRINT must be activated prior to usage in the API.
|
102
|
-
#
|
105
|
+
#
|
103
106
|
# @param id Element ID
|
104
107
|
# @param type type
|
105
108
|
# @param date yyyy-MM-dd. Defaults to today.
|
@@ -173,6 +176,7 @@ module TripletexRubyClient
|
|
173
176
|
#
|
174
177
|
# @param invoice_id Invoice ID from which PDF is downloaded.
|
175
178
|
# @param [Hash] opts the optional parameters
|
179
|
+
# @option opts [BOOLEAN] :download Equals (default to true)
|
176
180
|
# @return [String]
|
177
181
|
def download_pdf(invoice_id, opts = {})
|
178
182
|
data, _status_code, _headers = download_pdf_with_http_info(invoice_id, opts)
|
@@ -180,9 +184,10 @@ module TripletexRubyClient
|
|
180
184
|
end
|
181
185
|
|
182
186
|
# Get invoice document by invoice ID.
|
183
|
-
#
|
187
|
+
#
|
184
188
|
# @param invoice_id Invoice ID from which PDF is downloaded.
|
185
189
|
# @param [Hash] opts the optional parameters
|
190
|
+
# @option opts [BOOLEAN] :download Equals
|
186
191
|
# @return [Array<(String, Fixnum, Hash)>] String data, response status code and response headers
|
187
192
|
def download_pdf_with_http_info(invoice_id, opts = {})
|
188
193
|
if @api_client.config.debugging
|
@@ -197,6 +202,7 @@ module TripletexRubyClient
|
|
197
202
|
|
198
203
|
# query parameters
|
199
204
|
query_params = {}
|
205
|
+
query_params[:'download'] = opts[:'download'] if !opts[:'download'].nil?
|
200
206
|
|
201
207
|
# header parameters
|
202
208
|
header_params = {}
|
@@ -408,7 +414,7 @@ module TripletexRubyClient
|
|
408
414
|
# [BETA] Create multiple invoices. Max 100 at a time.
|
409
415
|
#
|
410
416
|
# @param [Hash] opts the optional parameters
|
411
|
-
# @option opts [Array<Invoice>] :body JSON representing a list of new
|
417
|
+
# @option opts [Array<Invoice>] :body JSON representing a list of new objects to be created. Should not have ID and version set.
|
412
418
|
# @option opts [BOOLEAN] :send_to_customer Equals (default to true)
|
413
419
|
# @option opts [String] :fields Fields filter pattern (default to *)
|
414
420
|
# @return [ListResponseInvoice]
|
@@ -418,9 +424,9 @@ module TripletexRubyClient
|
|
418
424
|
end
|
419
425
|
|
420
426
|
# [BETA] Create multiple invoices. Max 100 at a time.
|
421
|
-
#
|
427
|
+
#
|
422
428
|
# @param [Hash] opts the optional parameters
|
423
|
-
# @option opts [Array<Invoice>] :body JSON representing a list of new
|
429
|
+
# @option opts [Array<Invoice>] :body JSON representing a list of new objects to be created. Should not have ID and version set.
|
424
430
|
# @option opts [BOOLEAN] :send_to_customer Equals
|
425
431
|
# @option opts [String] :fields Fields filter pattern
|
426
432
|
# @return [Array<(ListResponseInvoice, Fixnum, Hash)>] ListResponseInvoice data, response status code and response headers
|
@@ -576,8 +582,8 @@ module TripletexRubyClient
|
|
576
582
|
fail ArgumentError, "Missing the required parameter 'send_type' when calling InvoiceApi.send"
|
577
583
|
end
|
578
584
|
# verify enum value
|
579
|
-
if @api_client.config.client_side_validation && !['EMAIL', 'EHF', 'AVTALEGIRO', 'EFAKTURA', 'VIPPS', 'PAPER'].include?(send_type)
|
580
|
-
fail ArgumentError, "invalid value for 'send_type', must be one of EMAIL, EHF, AVTALEGIRO, EFAKTURA, VIPPS, PAPER"
|
585
|
+
if @api_client.config.client_side_validation && !['EMAIL', 'EHF', 'AVTALEGIRO', 'EFAKTURA', 'VIPPS', 'PAPER', 'MANUAL'].include?(send_type)
|
586
|
+
fail ArgumentError, "invalid value for 'send_type', must be one of EMAIL, EHF, AVTALEGIRO, EFAKTURA, VIPPS, PAPER, MANUAL"
|
581
587
|
end
|
582
588
|
# resource path
|
583
589
|
local_var_path = '/invoice/{id}/:send'.sub('{' + 'id' + '}', id.to_s)
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
### Usage - **Download the spec** [swagger.json](/v2/swagger.json) file, it is a [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification). - **Generating a client** can easily be done using tools like [swagger-codegen](https://github.com/swagger-api/swagger-codegen) or other that accepts [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification) specs. - For swagger codegen it is recommended to use the flag: **--removeOperationIdPrefix**. Unique operation ids are about to be introduced to the spec, and this ensures forward compatibility - and results in less verbose generated code. ## Overview - Partial resource updating is done using the `PUT` method with optional fields instead of the `PATCH` method. - **Actions** or **commands** are represented in our RESTful path with a prefixed `:`. Example: `/v2/hours/123/:approve`. - **Summaries** or **aggregated** results are represented in our RESTful path with a prefixed `>`. Example: `/v2/hours/>thisWeeksBillables`. - **Request ID** is a key found in all responses in the header with the name `x-tlx-request-id`. For validation and error responses it is also in the response body. If additional log information is absolutely necessary, our support division can locate the key value. - **version** This is a revision number found on all persisted resources. If included, it will prevent your PUT/POST from overriding any updates to the resource since your GET. - **Date** follows the **[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)** standard, meaning the format `YYYY-MM-DD`. - **DateTime** follows the **[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)** standard, meaning the format `YYYY-MM-DDThh:mm:ss`. - **Searching** is done by entering values in the optional fields for each API call. The values fall into the following categories: range, in, exact and like. - **Missing fields** or even **no response data** can occur because result objects and fields are filtered on authorization. - **See [GitHub](https://github.com/Tripletex/tripletex-api2) for more documentation, examples, changelog and more.** - **See [FAQ](https://tripletex.no/execute/docViewer?articleId=906&language=0) for additional information.** ## Authentication - **Tokens:** The Tripletex API uses 3 different tokens - **consumerToken** is a token provided to the consumer by Tripletex after the API 2.0 registration is completed. - **employeeToken** is a token created by an administrator in your Tripletex account via the user settings and the tab \"API access\". Each employee token must be given a set of entitlements. [Read more here.](https://tripletex.no/execute/docViewer?articleId=1505&languageId=0) - **sessionToken** is the token from `/token/session/:create` which requires a consumerToken and an employeeToken created with the same consumer token, but not an authentication header. - **Authentication** is done via [Basic access authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) - **username** is used to specify what company to access. - `0` or blank means the company of the employee. - Any other value means accountant clients. Use `/company/>withLoginAccess` to get a list of those. - **password** is the **sessionToken**. - If you need to create the header yourself use `Authorization: Basic <encoded token>` where `encoded token` is the string `<target company id or 0>:<your session token>` Base64 encoded. ## Tags - `[BETA]` This is a beta endpoint and can be subject to change. - `[DEPRECATED]` Deprecated means that we intend to remove/change this feature or capability in a future \"major\" API release. We therefore discourage all use of this feature/capability. ## Fields Use the `fields` parameter to specify which fields should be returned. This also supports fields from sub elements, done via `<field>(<subResourceFields>)`. `*` means all fields for that resource. Example values: - `project,activity,hours` returns `{project:..., activity:...., hours:...}`. - just `project` returns `\"project\" : { \"id\": 12345, \"url\": \"tripletex.no/v2/projects/12345\" }`. - `project(*)` returns `\"project\" : { \"id\": 12345 \"name\":\"ProjectName\" \"number.....startDate\": \"2013-01-07\" }`. - `project(name)` returns `\"project\" : { \"name\":\"ProjectName\" }`. - All resources and some subResources : `*,activity(name),employee(*)`. ## Sorting Use the `sorting` parameter to specify sorting. It takes a comma separated list, where a `-` prefix denotes descending. You can sort by sub object with the following format: `<field>.<subObjectField>`. Example values: - `date` - `project.name` - `project.name, -date` ## Changes To get the changes for a resource, `changes` have to be explicitly specified as part of the `fields` parameter, e.g. `*,changes`. There are currently two types of change available: - `CREATE` for when the resource was created - `UPDATE` for when the resource was updated **NOTE** > For objects created prior to October 24th 2018 the list may be incomplete, but will always contain the CREATE and the last change (if the object has been changed after creation). ## Rate limiting Rate limiting is performed on the API calls for an employee for each API consumer. Status regarding the rate limit is returned as headers: - `X-Rate-Limit-Limit` - The number of allowed requests in the current period. - `X-Rate-Limit-Remaining` - The number of remaining requests. - `X-Rate-Limit-Reset` - The number of seconds left in the current period. Once the rate limit is hit, all requests will return HTTP status code `429` for the remainder of the current period. ## Response envelope #### Multiple values ```json { \"fullResultSize\": ###, // {number} [DEPRECATED] \"from\": ###, // {number} Paging starting from \"count\": ###, // {number} Paging count \"versionDigest\": \"###\", // {string} Hash of full result, null if no result \"values\": [...{...object...},{...object...},{...object...}...] } ``` #### Single value ```json { \"value\": {...single object...} } ``` ## WebHook envelope ```json { \"subscriptionId\": ###, // Subscription id \"event\": \"object.verb\", // As listed from /v2/event/ \"id\": ###, // Id of object this event is for \"value\": {... single object, null if object.deleted ...} } ``` ## Error/warning envelope ```json { \"status\": ###, // {number} HTTP status code \"code\": #####, // {number} internal status code of event \"message\": \"###\", // {string} Basic feedback message in your language \"link\": \"###\", // {string} Link to doc \"developerMessage\": \"###\", // {string} More technical message \"validationMessages\": [ // {array} List of validation messages, can be null { \"field\": \"###\", // {string} Name of field \"message\": \"###\" // {string} Validation message for field } ], \"requestId\": \"###\" // {string} Same as x-tlx-request-id } ``` ## Status codes / Error codes - **200 OK** - **201 Created** - From POSTs that create something new. - **204 No Content** - When there is no answer, ex: \"/:anAction\" or DELETE. - **400 Bad request** - - **4000** Bad Request Exception - **11000** Illegal Filter Exception - **12000** Path Param Exception - **24000** Cryptography Exception - **401 Unauthorized** - When authentication is required and has failed or has not yet been provided - **3000** Authentication Exception - **403 Forbidden** - When AuthorisationManager says no. - **9000** Security Exception - **404 Not Found** - For resources that does not exist. - **6000** Not Found Exception - **409 Conflict** - Such as an edit conflict between multiple simultaneous updates - **7000** Object Exists Exception - **8000** Revision Exception - **10000** Locked Exception - **14000** Duplicate entry - **422 Bad Request** - For Required fields or things like malformed payload. - **15000** Value Validation Exception - **16000** Mapping Exception - **17000** Sorting Exception - **18000** Validation Exception - **21000** Param Exception - **22000** Invalid JSON Exception - **23000** Result Set Too Large Exception - **429 Too Many Requests** - Request rate limit hit - **500 Internal Error** - Unexpected condition was encountered and no more specific message is suitable - **1000** Exception
|
5
5
|
|
6
|
-
OpenAPI spec version: 2.
|
6
|
+
OpenAPI spec version: 2.70.15
|
7
7
|
|
8
8
|
Generated by: https://github.com/swagger-api/swagger-codegen.git
|
9
9
|
Swagger Codegen version: 2.4.24
|
@@ -20,7 +20,7 @@ module TripletexRubyClient
|
|
20
20
|
@api_client = api_client
|
21
21
|
end
|
22
22
|
# Get reminder by ID.
|
23
|
-
#
|
23
|
+
#
|
24
24
|
# @param id Element ID
|
25
25
|
# @param [Hash] opts the optional parameters
|
26
26
|
# @option opts [String] :fields Fields filter pattern
|
@@ -31,7 +31,7 @@ module TripletexRubyClient
|
|
31
31
|
end
|
32
32
|
|
33
33
|
# Get reminder by ID.
|
34
|
-
#
|
34
|
+
#
|
35
35
|
# @param id Element ID
|
36
36
|
# @param [Hash] opts the optional parameters
|
37
37
|
# @option opts [String] :fields Fields filter pattern
|
@@ -72,6 +72,58 @@ module TripletexRubyClient
|
|
72
72
|
end
|
73
73
|
return data, status_code, headers
|
74
74
|
end
|
75
|
+
# Get reminder document by reminder ID.
|
76
|
+
#
|
77
|
+
# @param reminder_id Reminder ID from which PDF is downloaded.
|
78
|
+
# @param [Hash] opts the optional parameters
|
79
|
+
# @return [String]
|
80
|
+
def download_pdf(reminder_id, opts = {})
|
81
|
+
data, _status_code, _headers = download_pdf_with_http_info(reminder_id, opts)
|
82
|
+
data
|
83
|
+
end
|
84
|
+
|
85
|
+
# Get reminder document by reminder ID.
|
86
|
+
#
|
87
|
+
# @param reminder_id Reminder ID from which PDF is downloaded.
|
88
|
+
# @param [Hash] opts the optional parameters
|
89
|
+
# @return [Array<(String, Fixnum, Hash)>] String data, response status code and response headers
|
90
|
+
def download_pdf_with_http_info(reminder_id, opts = {})
|
91
|
+
if @api_client.config.debugging
|
92
|
+
@api_client.config.logger.debug 'Calling API: ReminderApi.download_pdf ...'
|
93
|
+
end
|
94
|
+
# verify the required parameter 'reminder_id' is set
|
95
|
+
if @api_client.config.client_side_validation && reminder_id.nil?
|
96
|
+
fail ArgumentError, "Missing the required parameter 'reminder_id' when calling ReminderApi.download_pdf"
|
97
|
+
end
|
98
|
+
# resource path
|
99
|
+
local_var_path = '/reminder/{reminderId}/pdf'.sub('{' + 'reminderId' + '}', reminder_id.to_s)
|
100
|
+
|
101
|
+
# query parameters
|
102
|
+
query_params = {}
|
103
|
+
|
104
|
+
# header parameters
|
105
|
+
header_params = {}
|
106
|
+
# HTTP header 'Accept' (if needed)
|
107
|
+
header_params['Accept'] = @api_client.select_header_accept(['application/octet-stream'])
|
108
|
+
|
109
|
+
# form parameters
|
110
|
+
form_params = {}
|
111
|
+
|
112
|
+
# http body (model)
|
113
|
+
post_body = nil
|
114
|
+
auth_names = ['tokenAuthScheme']
|
115
|
+
data, status_code, headers = @api_client.call_api(:GET, local_var_path,
|
116
|
+
:header_params => header_params,
|
117
|
+
:query_params => query_params,
|
118
|
+
:form_params => form_params,
|
119
|
+
:body => post_body,
|
120
|
+
:auth_names => auth_names,
|
121
|
+
:return_type => 'String')
|
122
|
+
if @api_client.config.debugging
|
123
|
+
@api_client.config.logger.debug "API called: ReminderApi#download_pdf\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}"
|
124
|
+
end
|
125
|
+
return data, status_code, headers
|
126
|
+
end
|
75
127
|
# Find reminders corresponding with sent data.
|
76
128
|
#
|
77
129
|
# @param date_from From and including
|
@@ -62,10 +62,7 @@ module TripletexRubyClient
|
|
62
62
|
fail ApiError.new(:code => 0,
|
63
63
|
:message => response.return_message)
|
64
64
|
else
|
65
|
-
|
66
|
-
:response_headers => response.headers.to_h,
|
67
|
-
:response_body => response.body),
|
68
|
-
response.status_message
|
65
|
+
raise_error(response)
|
69
66
|
end
|
70
67
|
end
|
71
68
|
|
@@ -387,5 +384,25 @@ module TripletexRubyClient
|
|
387
384
|
fail "unknown collection format: #{collection_format.inspect}"
|
388
385
|
end
|
389
386
|
end
|
387
|
+
|
388
|
+
private
|
389
|
+
|
390
|
+
def raise_error(response)
|
391
|
+
error_klass = case response.code
|
392
|
+
when 401
|
393
|
+
UnauthorizedError
|
394
|
+
when 429
|
395
|
+
RateLimitExceededError
|
396
|
+
when (400..499)
|
397
|
+
ClientError
|
398
|
+
when (500..599)
|
399
|
+
ServerError
|
400
|
+
else
|
401
|
+
ApiError
|
402
|
+
end
|
403
|
+
fail error_klass.new(code: response.code,
|
404
|
+
response_headers: response.headers.to_h,
|
405
|
+
response_body: response.body), response.status_message
|
406
|
+
end
|
390
407
|
end
|
391
408
|
end
|
@@ -43,4 +43,16 @@ module TripletexRubyClient
|
|
43
43
|
end.to_s
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
class ClientError < ApiError
|
48
|
+
end
|
49
|
+
|
50
|
+
class ServerError < ApiError
|
51
|
+
end
|
52
|
+
|
53
|
+
class RateLimitExceededError < ClientError
|
54
|
+
end
|
55
|
+
|
56
|
+
class UnauthorizedError < ClientError
|
57
|
+
end
|
46
58
|
end
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
### Usage - **Download the spec** [swagger.json](/v2/swagger.json) file, it is a [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification). - **Generating a client** can easily be done using tools like [swagger-codegen](https://github.com/swagger-api/swagger-codegen) or other that accepts [OpenAPI Specification](https://github.com/OAI/OpenAPI-Specification) specs. - For swagger codegen it is recommended to use the flag: **--removeOperationIdPrefix**. Unique operation ids are about to be introduced to the spec, and this ensures forward compatibility - and results in less verbose generated code. ## Overview - Partial resource updating is done using the `PUT` method with optional fields instead of the `PATCH` method. - **Actions** or **commands** are represented in our RESTful path with a prefixed `:`. Example: `/v2/hours/123/:approve`. - **Summaries** or **aggregated** results are represented in our RESTful path with a prefixed `>`. Example: `/v2/hours/>thisWeeksBillables`. - **Request ID** is a key found in all responses in the header with the name `x-tlx-request-id`. For validation and error responses it is also in the response body. If additional log information is absolutely necessary, our support division can locate the key value. - **version** This is a revision number found on all persisted resources. If included, it will prevent your PUT/POST from overriding any updates to the resource since your GET. - **Date** follows the **[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)** standard, meaning the format `YYYY-MM-DD`. - **DateTime** follows the **[ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)** standard, meaning the format `YYYY-MM-DDThh:mm:ss`. - **Searching** is done by entering values in the optional fields for each API call. The values fall into the following categories: range, in, exact and like. - **Missing fields** or even **no response data** can occur because result objects and fields are filtered on authorization. - **See [GitHub](https://github.com/Tripletex/tripletex-api2) for more documentation, examples, changelog and more.** - **See [FAQ](https://tripletex.no/execute/docViewer?articleId=906&language=0) for additional information.** ## Authentication - **Tokens:** The Tripletex API uses 3 different tokens - **consumerToken** is a token provided to the consumer by Tripletex after the API 2.0 registration is completed. - **employeeToken** is a token created by an administrator in your Tripletex account via the user settings and the tab \"API access\". Each employee token must be given a set of entitlements. [Read more here.](https://tripletex.no/execute/docViewer?articleId=1505&languageId=0) - **sessionToken** is the token from `/token/session/:create` which requires a consumerToken and an employeeToken created with the same consumer token, but not an authentication header. - **Authentication** is done via [Basic access authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) - **username** is used to specify what company to access. - `0` or blank means the company of the employee. - Any other value means accountant clients. Use `/company/>withLoginAccess` to get a list of those. - **password** is the **sessionToken**. - If you need to create the header yourself use `Authorization: Basic <encoded token>` where `encoded token` is the string `<target company id or 0>:<your session token>` Base64 encoded. ## Tags - `[BETA]` This is a beta endpoint and can be subject to change. - `[DEPRECATED]` Deprecated means that we intend to remove/change this feature or capability in a future \"major\" API release. We therefore discourage all use of this feature/capability. ## Fields Use the `fields` parameter to specify which fields should be returned. This also supports fields from sub elements, done via `<field>(<subResourceFields>)`. `*` means all fields for that resource. Example values: - `project,activity,hours` returns `{project:..., activity:...., hours:...}`. - just `project` returns `\"project\" : { \"id\": 12345, \"url\": \"tripletex.no/v2/projects/12345\" }`. - `project(*)` returns `\"project\" : { \"id\": 12345 \"name\":\"ProjectName\" \"number.....startDate\": \"2013-01-07\" }`. - `project(name)` returns `\"project\" : { \"name\":\"ProjectName\" }`. - All resources and some subResources : `*,activity(name),employee(*)`. ## Sorting Use the `sorting` parameter to specify sorting. It takes a comma separated list, where a `-` prefix denotes descending. You can sort by sub object with the following format: `<field>.<subObjectField>`. Example values: - `date` - `project.name` - `project.name, -date` ## Changes To get the changes for a resource, `changes` have to be explicitly specified as part of the `fields` parameter, e.g. `*,changes`. There are currently two types of change available: - `CREATE` for when the resource was created - `UPDATE` for when the resource was updated **NOTE** > For objects created prior to October 24th 2018 the list may be incomplete, but will always contain the CREATE and the last change (if the object has been changed after creation). ## Rate limiting Rate limiting is performed on the API calls for an employee for each API consumer. Status regarding the rate limit is returned as headers: - `X-Rate-Limit-Limit` - The number of allowed requests in the current period. - `X-Rate-Limit-Remaining` - The number of remaining requests. - `X-Rate-Limit-Reset` - The number of seconds left in the current period. Once the rate limit is hit, all requests will return HTTP status code `429` for the remainder of the current period. ## Response envelope #### Multiple values ```json { \"fullResultSize\": ###, // {number} [DEPRECATED] \"from\": ###, // {number} Paging starting from \"count\": ###, // {number} Paging count \"versionDigest\": \"###\", // {string} Hash of full result, null if no result \"values\": [...{...object...},{...object...},{...object...}...] } ``` #### Single value ```json { \"value\": {...single object...} } ``` ## WebHook envelope ```json { \"subscriptionId\": ###, // Subscription id \"event\": \"object.verb\", // As listed from /v2/event/ \"id\": ###, // Id of object this event is for \"value\": {... single object, null if object.deleted ...} } ``` ## Error/warning envelope ```json { \"status\": ###, // {number} HTTP status code \"code\": #####, // {number} internal status code of event \"message\": \"###\", // {string} Basic feedback message in your language \"link\": \"###\", // {string} Link to doc \"developerMessage\": \"###\", // {string} More technical message \"validationMessages\": [ // {array} List of validation messages, can be null { \"field\": \"###\", // {string} Name of field \"message\": \"###\" // {string} Validation message for field } ], \"requestId\": \"###\" // {string} Same as x-tlx-request-id } ``` ## Status codes / Error codes - **200 OK** - **201 Created** - From POSTs that create something new. - **204 No Content** - When there is no answer, ex: \"/:anAction\" or DELETE. - **400 Bad request** - - **4000** Bad Request Exception - **11000** Illegal Filter Exception - **12000** Path Param Exception - **24000** Cryptography Exception - **401 Unauthorized** - When authentication is required and has failed or has not yet been provided - **3000** Authentication Exception - **403 Forbidden** - When AuthorisationManager says no. - **9000** Security Exception - **404 Not Found** - For resources that does not exist. - **6000** Not Found Exception - **409 Conflict** - Such as an edit conflict between multiple simultaneous updates - **7000** Object Exists Exception - **8000** Revision Exception - **10000** Locked Exception - **14000** Duplicate entry - **422 Bad Request** - For Required fields or things like malformed payload. - **15000** Value Validation Exception - **16000** Mapping Exception - **17000** Sorting Exception - **18000** Validation Exception - **21000** Param Exception - **22000** Invalid JSON Exception - **23000** Result Set Too Large Exception - **429 Too Many Requests** - Request rate limit hit - **500 Internal Error** - Unexpected condition was encountered and no more specific message is suitable - **1000** Exception
|
5
5
|
|
6
|
-
OpenAPI spec version: 2.
|
6
|
+
OpenAPI spec version: 2.70.15
|
7
7
|
|
8
8
|
Generated by: https://github.com/swagger-api/swagger-codegen.git
|
9
9
|
Swagger Codegen version: 2.4.24
|
@@ -111,15 +111,20 @@ module TripletexRubyClient
|
|
111
111
|
# Invoice debt collection and reminders.
|
112
112
|
attr_accessor :reminders
|
113
113
|
|
114
|
-
# Invoice remarks -
|
114
|
+
# Deprecated Invoice remarks - please use the 'invoiceRemark' instead.
|
115
115
|
attr_accessor :invoice_remarks
|
116
116
|
|
117
|
+
# Invoice remark - automatically stops reminder/notice of debt collection until specified date.
|
118
|
+
attr_accessor :invoice_remark
|
119
|
+
|
117
120
|
# [BETA] Optional. Used to specify payment type for prepaid invoices. Payment type can be specified here, or as a parameter to the /invoice API endpoint.
|
118
121
|
attr_accessor :payment_type_id
|
119
122
|
|
120
123
|
# [BETA] Optional. Used to specify the prepaid amount of the invoice. The paid amount can be specified here, or as a parameter to the /invoice API endpoint.
|
121
124
|
attr_accessor :paid_amount
|
122
125
|
|
126
|
+
attr_accessor :is_periodization_possible
|
127
|
+
|
123
128
|
# [Deprecated] EHF (Peppol) send status. This only shows status for historic EHFs.
|
124
129
|
attr_accessor :ehf_send_status
|
125
130
|
|
@@ -185,8 +190,10 @@ module TripletexRubyClient
|
|
185
190
|
:'postings' => :'postings',
|
186
191
|
:'reminders' => :'reminders',
|
187
192
|
:'invoice_remarks' => :'invoiceRemarks',
|
193
|
+
:'invoice_remark' => :'invoiceRemark',
|
188
194
|
:'payment_type_id' => :'paymentTypeId',
|
189
195
|
:'paid_amount' => :'paidAmount',
|
196
|
+
:'is_periodization_possible' => :'isPeriodizationPossible',
|
190
197
|
:'ehf_send_status' => :'ehfSendStatus'
|
191
198
|
}
|
192
199
|
end
|
@@ -231,8 +238,10 @@ module TripletexRubyClient
|
|
231
238
|
:'postings' => :'Array<Posting>',
|
232
239
|
:'reminders' => :'Array<Reminder>',
|
233
240
|
:'invoice_remarks' => :'String',
|
241
|
+
:'invoice_remark' => :'InvoiceRemark',
|
234
242
|
:'payment_type_id' => :'Integer',
|
235
243
|
:'paid_amount' => :'Float',
|
244
|
+
:'is_periodization_possible' => :'BOOLEAN',
|
236
245
|
:'ehf_send_status' => :'String'
|
237
246
|
}
|
238
247
|
end
|
@@ -407,6 +416,10 @@ module TripletexRubyClient
|
|
407
416
|
self.invoice_remarks = attributes[:'invoiceRemarks']
|
408
417
|
end
|
409
418
|
|
419
|
+
if attributes.has_key?(:'invoiceRemark')
|
420
|
+
self.invoice_remark = attributes[:'invoiceRemark']
|
421
|
+
end
|
422
|
+
|
410
423
|
if attributes.has_key?(:'paymentTypeId')
|
411
424
|
self.payment_type_id = attributes[:'paymentTypeId']
|
412
425
|
end
|
@@ -415,6 +428,10 @@ module TripletexRubyClient
|
|
415
428
|
self.paid_amount = attributes[:'paidAmount']
|
416
429
|
end
|
417
430
|
|
431
|
+
if attributes.has_key?(:'isPeriodizationPossible')
|
432
|
+
self.is_periodization_possible = attributes[:'isPeriodizationPossible']
|
433
|
+
end
|
434
|
+
|
418
435
|
if attributes.has_key?(:'ehfSendStatus')
|
419
436
|
self.ehf_send_status = attributes[:'ehfSendStatus']
|
420
437
|
end
|
@@ -547,8 +564,10 @@ module TripletexRubyClient
|
|
547
564
|
postings == o.postings &&
|
548
565
|
reminders == o.reminders &&
|
549
566
|
invoice_remarks == o.invoice_remarks &&
|
567
|
+
invoice_remark == o.invoice_remark &&
|
550
568
|
payment_type_id == o.payment_type_id &&
|
551
569
|
paid_amount == o.paid_amount &&
|
570
|
+
is_periodization_possible == o.is_periodization_possible &&
|
552
571
|
ehf_send_status == o.ehf_send_status
|
553
572
|
end
|
554
573
|
|
@@ -561,7 +580,7 @@ module TripletexRubyClient
|
|
561
580
|
# Calculates hash code according to all attributes.
|
562
581
|
# @return [Fixnum] Hash code
|
563
582
|
def hash
|
564
|
-
[id, version, changes, url, invoice_number, invoice_date, customer, credited_invoice, is_credited, invoice_due_date, kid, invoice_comment, comment, orders, order_lines, travel_reports, project_invoice_details, voucher, delivery_date, amount, amount_currency, amount_excluding_vat, amount_excluding_vat_currency, amount_roundoff, amount_roundoff_currency, amount_outstanding, amount_currency_outstanding, amount_outstanding_total, amount_currency_outstanding_total, sum_remits, currency, is_credit_note, is_charged, is_approved, postings, reminders, invoice_remarks, payment_type_id, paid_amount, ehf_send_status].hash
|
583
|
+
[id, version, changes, url, invoice_number, invoice_date, customer, credited_invoice, is_credited, invoice_due_date, kid, invoice_comment, comment, orders, order_lines, travel_reports, project_invoice_details, voucher, delivery_date, amount, amount_currency, amount_excluding_vat, amount_excluding_vat_currency, amount_roundoff, amount_roundoff_currency, amount_outstanding, amount_currency_outstanding, amount_outstanding_total, amount_currency_outstanding_total, sum_remits, currency, is_credit_note, is_charged, is_approved, postings, reminders, invoice_remarks, invoice_remark, payment_type_id, paid_amount, is_periodization_possible, ehf_send_status].hash
|
565
584
|
end
|
566
585
|
|
567
586
|
# Builds the object from hash
|