moneybird-client 0.12.0
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 +7 -0
- data/.codeclimate.yml +26 -0
- data/.forgejo/workflows/release.yml +56 -0
- data/.forgejo/workflows/ruby.yml +37 -0
- data/.gitignore +10 -0
- data/.kick +17 -0
- data/.rspec +2 -0
- data/.rubocop.yml +1156 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +11 -0
- data/LICENSE.txt +21 -0
- data/README.md +110 -0
- data/Rakefile +11 -0
- data/bin/console +13 -0
- data/bin/setup +8 -0
- data/lib/moneybird/client.rb +80 -0
- data/lib/moneybird/http_error/authorization_required.rb +8 -0
- data/lib/moneybird/http_error/bad_request.rb +8 -0
- data/lib/moneybird/http_error/forbidden.rb +8 -0
- data/lib/moneybird/http_error/internal_server_error.rb +8 -0
- data/lib/moneybird/http_error/method_not_allowed.rb +8 -0
- data/lib/moneybird/http_error/not_accepted.rb +8 -0
- data/lib/moneybird/http_error/not_found.rb +8 -0
- data/lib/moneybird/http_error/payment_required.rb +8 -0
- data/lib/moneybird/http_error/too_many_requests.rb +8 -0
- data/lib/moneybird/http_error/unprocessable_entity.rb +8 -0
- data/lib/moneybird/middleware/error_handling.rb +29 -0
- data/lib/moneybird/middleware/pagination/links.rb +19 -0
- data/lib/moneybird/middleware/pagination.rb +31 -0
- data/lib/moneybird/oauth.rb +91 -0
- data/lib/moneybird/resource/administration.rb +101 -0
- data/lib/moneybird/resource/contact.rb +75 -0
- data/lib/moneybird/resource/custom_field.rb +18 -0
- data/lib/moneybird/resource/document_style.rb +35 -0
- data/lib/moneybird/resource/documents/general_document.rb +27 -0
- data/lib/moneybird/resource/documents/general_journal_document.rb +28 -0
- data/lib/moneybird/resource/documents/purchase_invoice.rb +57 -0
- data/lib/moneybird/resource/documents/receipt.rb +57 -0
- data/lib/moneybird/resource/documents/typeless_document.rb +28 -0
- data/lib/moneybird/resource/estimate.rb +64 -0
- data/lib/moneybird/resource/external_sales_invoice.rb +61 -0
- data/lib/moneybird/resource/financial_account.rb +23 -0
- data/lib/moneybird/resource/financial_mutation.rb +39 -0
- data/lib/moneybird/resource/generic/event.rb +19 -0
- data/lib/moneybird/resource/generic/note.rb +25 -0
- data/lib/moneybird/resource/identity.rb +31 -0
- data/lib/moneybird/resource/invoice/details.rb +29 -0
- data/lib/moneybird/resource/invoice/payment.rb +26 -0
- data/lib/moneybird/resource/ledger_account.rb +19 -0
- data/lib/moneybird/resource/product.rb +21 -0
- data/lib/moneybird/resource/recurring_sales_invoice.rb +62 -0
- data/lib/moneybird/resource/sales_invoice.rb +98 -0
- data/lib/moneybird/resource/synchronization.rb +15 -0
- data/lib/moneybird/resource/tax_rate.rb +21 -0
- data/lib/moneybird/resource/webhook.rb +24 -0
- data/lib/moneybird/resource/workflow.rb +24 -0
- data/lib/moneybird/resource.rb +126 -0
- data/lib/moneybird/service/administration.rb +29 -0
- data/lib/moneybird/service/contact.rb +27 -0
- data/lib/moneybird/service/custom_field.rb +19 -0
- data/lib/moneybird/service/document_style.rb +19 -0
- data/lib/moneybird/service/documents/general_document.rb +23 -0
- data/lib/moneybird/service/documents/general_journal_document.rb +23 -0
- data/lib/moneybird/service/documents/purchase_invoice.rb +23 -0
- data/lib/moneybird/service/documents/receipt.rb +23 -0
- data/lib/moneybird/service/documents/typeless_document.rb +23 -0
- data/lib/moneybird/service/estimate.rb +23 -0
- data/lib/moneybird/service/external_sales_invoice.rb +22 -0
- data/lib/moneybird/service/financial_account.rb +19 -0
- data/lib/moneybird/service/financial_mutation.rb +24 -0
- data/lib/moneybird/service/identity.rb +22 -0
- data/lib/moneybird/service/ledger_account.rb +22 -0
- data/lib/moneybird/service/payment.rb +21 -0
- data/lib/moneybird/service/product.rb +22 -0
- data/lib/moneybird/service/recurring_sales_invoice.rb +23 -0
- data/lib/moneybird/service/sales_invoice.rb +26 -0
- data/lib/moneybird/service/tax_rate.rb +19 -0
- data/lib/moneybird/service/webhook.rb +21 -0
- data/lib/moneybird/service/workflow.rb +19 -0
- data/lib/moneybird/token.rb +20 -0
- data/lib/moneybird/traits/administration_service.rb +16 -0
- data/lib/moneybird/traits/delete.rb +12 -0
- data/lib/moneybird/traits/download_pdf.rb +11 -0
- data/lib/moneybird/traits/find.rb +11 -0
- data/lib/moneybird/traits/find_all.rb +51 -0
- data/lib/moneybird/traits/mark_as_uncollectible.rb +17 -0
- data/lib/moneybird/traits/save.rb +26 -0
- data/lib/moneybird/traits/send_invoice.rb +17 -0
- data/lib/moneybird/traits/service.rb +15 -0
- data/lib/moneybird/traits/synchronization.rb +13 -0
- data/lib/moneybird/version.rb +5 -0
- data/lib/moneybird/webhook.rb +31 -0
- data/lib/moneybird.rb +115 -0
- data/moneybird.gemspec +37 -0
- metadata +235 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Resource
|
|
4
|
+
class RecurringSalesInvoice
|
|
5
|
+
include Moneybird::Resource
|
|
6
|
+
|
|
7
|
+
extend Moneybird::Resource::ClassMethods
|
|
8
|
+
|
|
9
|
+
has_attributes %i(
|
|
10
|
+
id
|
|
11
|
+
administration_id
|
|
12
|
+
contact_id
|
|
13
|
+
custom_fields
|
|
14
|
+
workflow_id
|
|
15
|
+
start_date
|
|
16
|
+
invoice_date
|
|
17
|
+
last_date
|
|
18
|
+
active
|
|
19
|
+
payment_conditions
|
|
20
|
+
reference
|
|
21
|
+
language
|
|
22
|
+
currency
|
|
23
|
+
discount
|
|
24
|
+
first_due_interval
|
|
25
|
+
auto_send
|
|
26
|
+
sending_scheduled_at
|
|
27
|
+
sending_scheduled_user_id
|
|
28
|
+
frequency_type
|
|
29
|
+
frequency
|
|
30
|
+
created_at
|
|
31
|
+
updated_at
|
|
32
|
+
prices_are_incl_tax
|
|
33
|
+
total_price_excl_tax
|
|
34
|
+
total_price_excl_tax_base
|
|
35
|
+
total_price_incl_tax
|
|
36
|
+
total_price_incl_tax_base
|
|
37
|
+
attachments
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
@attributes += %i(contact details events notes)
|
|
41
|
+
attr_reader :contact, :details, :events, :notes
|
|
42
|
+
|
|
43
|
+
def notes=(notes)
|
|
44
|
+
@notes = notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def contact=(attributes)
|
|
48
|
+
@contact = Moneybird::Resource::Contact.build(attributes)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def details=(line_items)
|
|
52
|
+
@details = line_items.map{ |line_item| Moneybird::Resource::Invoice::Details.build(line_item) }
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def events=(events)
|
|
56
|
+
@events = events.map{ |event| Moneybird::Resource::Generic::Event.build(event) }
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Resource
|
|
4
|
+
class SalesInvoice
|
|
5
|
+
include Moneybird::Resource
|
|
6
|
+
extend Moneybird::Resource::ClassMethods
|
|
7
|
+
|
|
8
|
+
has_attributes %i(
|
|
9
|
+
administration_id
|
|
10
|
+
attachments
|
|
11
|
+
contact_id
|
|
12
|
+
contact_person
|
|
13
|
+
contact_person_id
|
|
14
|
+
created_at
|
|
15
|
+
currency
|
|
16
|
+
discount
|
|
17
|
+
document_style_id
|
|
18
|
+
draft_id
|
|
19
|
+
due_date
|
|
20
|
+
id
|
|
21
|
+
identity_id
|
|
22
|
+
invoice_date
|
|
23
|
+
invoice_id
|
|
24
|
+
invoice_sequence_id
|
|
25
|
+
language
|
|
26
|
+
marked_dubious_on
|
|
27
|
+
marked_uncollectible_on
|
|
28
|
+
next_reminder
|
|
29
|
+
original_estimate_id
|
|
30
|
+
original_sales_invoice_id
|
|
31
|
+
paid_at
|
|
32
|
+
paused
|
|
33
|
+
payment_conditions
|
|
34
|
+
payment_reference
|
|
35
|
+
payment_url
|
|
36
|
+
prices_are_incl_tax
|
|
37
|
+
public_view_code
|
|
38
|
+
public_view_code_expires_at
|
|
39
|
+
recurring_sales_invoice_id
|
|
40
|
+
reference
|
|
41
|
+
reminder_count
|
|
42
|
+
sent_at
|
|
43
|
+
short_payment_reference
|
|
44
|
+
state
|
|
45
|
+
tax_totals
|
|
46
|
+
total_discount
|
|
47
|
+
total_paid
|
|
48
|
+
total_price_excl_tax
|
|
49
|
+
total_price_excl_tax_base
|
|
50
|
+
total_price_incl_tax
|
|
51
|
+
total_price_incl_tax_base
|
|
52
|
+
total_unpaid
|
|
53
|
+
total_unpaid_base
|
|
54
|
+
updated_at
|
|
55
|
+
url
|
|
56
|
+
version
|
|
57
|
+
workflow_id
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
@attributes += %i(contact custom_fields details events notes payments)
|
|
61
|
+
attr_reader :contact, :custom_fields, :details, :events, :notes, :payments
|
|
62
|
+
|
|
63
|
+
def notes=(notes)
|
|
64
|
+
@notes = notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def contact=(attributes)
|
|
68
|
+
@contact = Moneybird::Resource::Contact.build(attributes)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def send_invoice(options = {})
|
|
72
|
+
invoice_service = Moneybird::Service::SalesInvoice.new(client, administration_id)
|
|
73
|
+
invoice_service.send_invoice(self, options)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def mark_as_uncollectible(options = {})
|
|
77
|
+
invoice_service = Moneybird::Service::SalesInvoice.new(client, administration_id)
|
|
78
|
+
invoice_service.mark_as_uncollectible(self, options)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def payments=(payments)
|
|
82
|
+
payment_data = payments.map{ |payment| Moneybird::Resource::Invoice::Payment.build(payment) }
|
|
83
|
+
@payments = Moneybird::Service::Payment.new(client, administration_id, preloaded_data: payment_data, invoice_id: id)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def details=(line_items)
|
|
87
|
+
@details = line_items.map{ |line_item| Moneybird::Resource::Invoice::Details.build(line_item) }
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def events=(events)
|
|
91
|
+
@events = events.map{ |event| Moneybird::Resource::Generic::Event.build(event) }
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def custom_fields=(custom_fields)
|
|
95
|
+
@custom_fields = custom_fields.map { |custom_field| Moneybird::Resource::CustomField.build(custom_field) }
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Resource
|
|
4
|
+
class TaxRate
|
|
5
|
+
include Moneybird::Resource
|
|
6
|
+
extend Moneybird::Resource::ClassMethods
|
|
7
|
+
|
|
8
|
+
has_attributes %i(
|
|
9
|
+
id
|
|
10
|
+
administration_id
|
|
11
|
+
name
|
|
12
|
+
percentage
|
|
13
|
+
tax_rate_type
|
|
14
|
+
show_tax
|
|
15
|
+
active
|
|
16
|
+
country
|
|
17
|
+
created_at
|
|
18
|
+
updated_at
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Resource
|
|
4
|
+
class Webhook
|
|
5
|
+
include Moneybird::Resource
|
|
6
|
+
extend Moneybird::Resource::ClassMethods
|
|
7
|
+
|
|
8
|
+
has_attributes %i(
|
|
9
|
+
id
|
|
10
|
+
administration_id
|
|
11
|
+
url
|
|
12
|
+
last_http_status
|
|
13
|
+
last_http_body
|
|
14
|
+
enabled_events
|
|
15
|
+
token
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
def to_json
|
|
19
|
+
JSON.generate(attributes.as_json)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Resource
|
|
4
|
+
class Workflow
|
|
5
|
+
include Moneybird::Resource
|
|
6
|
+
extend Moneybird::Resource::ClassMethods
|
|
7
|
+
|
|
8
|
+
has_attributes %i(
|
|
9
|
+
id
|
|
10
|
+
administration_id
|
|
11
|
+
type
|
|
12
|
+
name
|
|
13
|
+
default
|
|
14
|
+
currency
|
|
15
|
+
language
|
|
16
|
+
active
|
|
17
|
+
prices_are_incl_tax
|
|
18
|
+
created_at
|
|
19
|
+
updated_at
|
|
20
|
+
)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird
|
|
4
|
+
module Resource
|
|
5
|
+
attr_accessor :errors, :client
|
|
6
|
+
|
|
7
|
+
def initialize(attributes)
|
|
8
|
+
self.attributes = attributes
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def persisted?
|
|
12
|
+
!!id
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def path
|
|
16
|
+
persisted? ? "/#{id}" : ""
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def attributes=(attributes)
|
|
20
|
+
@attributes = attributes
|
|
21
|
+
self.client ||= attributes[:client]
|
|
22
|
+
attributes.each do |attribute, value|
|
|
23
|
+
if respond_to?(writer = attribute.to_s + '=')
|
|
24
|
+
send(writer, value)
|
|
25
|
+
else
|
|
26
|
+
self.class.logger.warn "#{self.class} does not have an `#{attribute}' attribute"
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def attributes
|
|
32
|
+
self.class.attributes.inject({}) do |attributes, attribute|
|
|
33
|
+
value = send(attribute)
|
|
34
|
+
if !value.nil?
|
|
35
|
+
if value.is_a?(Array) && value.first.respond_to?(:attributes)
|
|
36
|
+
attributes["#{attribute}_attributes"] = value.map { |item| item.attributes }
|
|
37
|
+
elsif value.respond_to?(:attributes)
|
|
38
|
+
attributes["#{attribute}_attributes"] = value.attributes
|
|
39
|
+
else
|
|
40
|
+
unless self.class.nillable_attributes && self.class.nillable_attributes.include?(attribute)
|
|
41
|
+
attributes[attribute] = value
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end; attributes
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def to_json
|
|
49
|
+
JSON.generate({self.class.resource => attributes.as_json})
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
module ClassMethods
|
|
53
|
+
attr_reader :attributes, :nillable_attributes
|
|
54
|
+
attr_writer :logger
|
|
55
|
+
|
|
56
|
+
def build(attributes)
|
|
57
|
+
new(attributes)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def logger
|
|
61
|
+
@logger ||= begin
|
|
62
|
+
Logger.new(STDOUT)
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def resource
|
|
67
|
+
self.name.split('::').last.underscore
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def has_attributes(attributes)
|
|
71
|
+
attr_accessor(*@attributes = attributes)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def has_nillable_attributes(attributes)
|
|
75
|
+
@nillable_attributes = attributes
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def has_boolean_attributes(attributes)
|
|
79
|
+
attributes.each do |attribute|
|
|
80
|
+
define_method(attribute) do
|
|
81
|
+
input = instance_variable_get('@' + attribute)
|
|
82
|
+
if input.kind_of?(String)
|
|
83
|
+
if input == 'true'
|
|
84
|
+
true
|
|
85
|
+
elsif input == 'false'
|
|
86
|
+
false
|
|
87
|
+
else
|
|
88
|
+
nil
|
|
89
|
+
end
|
|
90
|
+
else
|
|
91
|
+
input
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def has_integer_attributes(attributes)
|
|
98
|
+
attributes.each do |attribute|
|
|
99
|
+
define_method(attribute) do
|
|
100
|
+
input = instance_variable_get('@' + attribute)
|
|
101
|
+
if input.kind_of?(String)
|
|
102
|
+
input.to_i
|
|
103
|
+
else
|
|
104
|
+
input
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def has_datetime_attributes(attributes)
|
|
111
|
+
attributes.each do |attribute|
|
|
112
|
+
define_method(attribute) do
|
|
113
|
+
input = instance_variable_get('@' + attribute)
|
|
114
|
+
if input.kind_of?(Time)
|
|
115
|
+
input
|
|
116
|
+
elsif input.kind_of?(Date)
|
|
117
|
+
input.to_time
|
|
118
|
+
elsif input.kind_of?(String)
|
|
119
|
+
input.strip == '' ? nil : Time.parse(input)
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service
|
|
4
|
+
class Administration
|
|
5
|
+
include Moneybird::Traits::FindAll
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
|
|
8
|
+
attr_reader :client, :preloaded_data
|
|
9
|
+
|
|
10
|
+
def initialize(client)
|
|
11
|
+
@client = client
|
|
12
|
+
@preloaded_data = nil
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def find(id)
|
|
16
|
+
all.find{ |administration| administration.id.to_i == id }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def resource_class
|
|
22
|
+
Moneybird::Resource::Administration
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def path
|
|
26
|
+
'administrations'
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service
|
|
4
|
+
class Contact
|
|
5
|
+
include Moneybird::Traits::AdministrationService
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
include Moneybird::Traits::Find
|
|
8
|
+
include Moneybird::Traits::FindAll
|
|
9
|
+
include Moneybird::Traits::Save
|
|
10
|
+
include Moneybird::Traits::Delete
|
|
11
|
+
include Moneybird::Traits::Synchronization
|
|
12
|
+
|
|
13
|
+
def find_by_customer_id(customer_id)
|
|
14
|
+
build client.get("#{path}/customer_id/#{customer_id}")
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
|
|
19
|
+
def resource_class
|
|
20
|
+
Moneybird::Resource::Contact
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def path
|
|
24
|
+
"#{administration_id}/contacts"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service
|
|
4
|
+
class CustomField
|
|
5
|
+
include Moneybird::Traits::AdministrationService
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
include Moneybird::Traits::FindAll
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def resource_class
|
|
12
|
+
Moneybird::Resource::CustomField
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def path
|
|
16
|
+
"#{administration_id}/custom_fields"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service
|
|
4
|
+
class DocumentStyle
|
|
5
|
+
include Moneybird::Traits::AdministrationService
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
include Moneybird::Traits::FindAll
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def resource_class
|
|
12
|
+
Moneybird::Resource::DocumentStyle
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def path
|
|
16
|
+
"#{administration_id}/document_styles"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service::Document
|
|
4
|
+
class GeneralDocument
|
|
5
|
+
include Moneybird::Traits::AdministrationService
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
include Moneybird::Traits::Find
|
|
8
|
+
include Moneybird::Traits::FindAll
|
|
9
|
+
include Moneybird::Traits::Save
|
|
10
|
+
include Moneybird::Traits::Delete
|
|
11
|
+
include Moneybird::Traits::Synchronization
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def resource_class
|
|
16
|
+
Moneybird::Resource::Documents::GeneralDocument
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def path
|
|
20
|
+
"#{administration_id}/documents/general_documents"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service::Document
|
|
4
|
+
class GeneralJournalDocument
|
|
5
|
+
include Moneybird::Traits::AdministrationService
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
include Moneybird::Traits::Find
|
|
8
|
+
include Moneybird::Traits::FindAll
|
|
9
|
+
include Moneybird::Traits::Save
|
|
10
|
+
include Moneybird::Traits::Delete
|
|
11
|
+
include Moneybird::Traits::Synchronization
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def resource_class
|
|
16
|
+
Moneybird::Resource::Documents::GeneralJournalDocument
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def path
|
|
20
|
+
"#{administration_id}/documents/general_journal_documents"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service::Document
|
|
4
|
+
class PurchaseInvoice
|
|
5
|
+
include Moneybird::Traits::AdministrationService
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
include Moneybird::Traits::Find
|
|
8
|
+
include Moneybird::Traits::FindAll
|
|
9
|
+
include Moneybird::Traits::Save
|
|
10
|
+
include Moneybird::Traits::Delete
|
|
11
|
+
include Moneybird::Traits::Synchronization
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def resource_class
|
|
16
|
+
Moneybird::Resource::Documents::Receipt
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def path
|
|
20
|
+
"#{administration_id}/documents/purchase_invoices"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service::Document
|
|
4
|
+
class Receipt
|
|
5
|
+
include Moneybird::Traits::AdministrationService
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
include Moneybird::Traits::Find
|
|
8
|
+
include Moneybird::Traits::FindAll
|
|
9
|
+
include Moneybird::Traits::Save
|
|
10
|
+
include Moneybird::Traits::Delete
|
|
11
|
+
include Moneybird::Traits::Synchronization
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def resource_class
|
|
16
|
+
Moneybird::Resource::Documents::Receipt
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def path
|
|
20
|
+
"#{administration_id}/documents/receipts"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service::Document
|
|
4
|
+
class TypelessDocument
|
|
5
|
+
include Moneybird::Traits::AdministrationService
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
include Moneybird::Traits::Find
|
|
8
|
+
include Moneybird::Traits::FindAll
|
|
9
|
+
include Moneybird::Traits::Save
|
|
10
|
+
include Moneybird::Traits::Delete
|
|
11
|
+
include Moneybird::Traits::Synchronization
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def resource_class
|
|
16
|
+
Moneybird::Resource::Documents::TypelessDocument
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def path
|
|
20
|
+
"#{administration_id}/documents/typeless_documents"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service
|
|
4
|
+
class Estimate
|
|
5
|
+
include Moneybird::Traits::AdministrationService
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
include Moneybird::Traits::Find
|
|
8
|
+
include Moneybird::Traits::FindAll
|
|
9
|
+
include Moneybird::Traits::Save
|
|
10
|
+
include Moneybird::Traits::Delete
|
|
11
|
+
include Moneybird::Traits::Synchronization
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
def resource_class
|
|
16
|
+
Moneybird::Resource::Estimate
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def path
|
|
20
|
+
"#{administration_id}/estimates"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service
|
|
4
|
+
class ExternalSalesInvoice
|
|
5
|
+
include Moneybird::Traits::AdministrationService
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
include Moneybird::Traits::Find
|
|
8
|
+
include Moneybird::Traits::FindAll
|
|
9
|
+
include Moneybird::Traits::Save
|
|
10
|
+
include Moneybird::Traits::Delete
|
|
11
|
+
|
|
12
|
+
private
|
|
13
|
+
|
|
14
|
+
def resource_class
|
|
15
|
+
Moneybird::Resource::ExternalSalesInvoice
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def path
|
|
19
|
+
"#{administration_id}/external_sales_invoices"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service
|
|
4
|
+
class FinancialAccount
|
|
5
|
+
include Moneybird::Traits::AdministrationService
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
include Moneybird::Traits::FindAll
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
def resource_class
|
|
12
|
+
Moneybird::Resource::FinancialAccount
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def path
|
|
16
|
+
"#{administration_id}/financial_accounts"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Moneybird::Service
|
|
4
|
+
class FinancialMutation
|
|
5
|
+
include Moneybird::Traits::AdministrationService
|
|
6
|
+
include Moneybird::Traits::Service
|
|
7
|
+
include Moneybird::Traits::FindAll
|
|
8
|
+
include Moneybird::Traits::Synchronization
|
|
9
|
+
|
|
10
|
+
def link_booking(resource, booking)
|
|
11
|
+
client.patch("#{resource_path(resource)}/link_booking", booking.to_json)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def resource_class
|
|
17
|
+
Moneybird::Resource::FinancialMutation
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def path
|
|
21
|
+
"#{administration_id}/financial_mutations"
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|