moneybird 0.9.6 → 0.10.1
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 +5 -5
- data/.codeclimate.yml +1 -75
- data/.github/dependabot.yml +13 -0
- data/.github/workflows/ruby.yml +38 -0
- data/README.md +5 -3
- data/lib/moneybird/client.rb +7 -4
- data/lib/moneybird/http_error/authorization_required.rb +1 -1
- data/lib/moneybird/http_error/bad_request.rb +1 -1
- data/lib/moneybird/http_error/forbidden.rb +1 -1
- data/lib/moneybird/http_error/internal_server_error.rb +1 -1
- data/lib/moneybird/http_error/method_not_allowed.rb +1 -1
- data/lib/moneybird/http_error/not_accepted.rb +1 -1
- data/lib/moneybird/http_error/not_found.rb +1 -1
- data/lib/moneybird/http_error/payment_required.rb +1 -1
- data/lib/moneybird/http_error/too_many_requests.rb +1 -1
- data/lib/moneybird/http_error/unprocessable_entity.rb +1 -1
- data/lib/moneybird/middleware/error_handling.rb +5 -1
- data/lib/moneybird/resource/administration.rb +12 -0
- data/lib/moneybird/resource/contact.rb +8 -2
- data/lib/moneybird/resource/custom_field.rb +16 -0
- data/lib/moneybird/resource/documents/purchase_invoice.rb +32 -24
- data/lib/moneybird/resource/documents/receipt.rb +38 -16
- data/lib/moneybird/resource/estimate.rb +4 -4
- data/lib/moneybird/resource/{purchase_invoice.rb → external_sales_invoice.rb} +26 -22
- data/lib/moneybird/resource/financial_mutation.rb +5 -0
- data/lib/moneybird/resource/identity.rb +5 -1
- data/lib/moneybird/resource/invoice/details.rb +1 -0
- data/lib/moneybird/resource/invoice/payment.rb +1 -0
- data/lib/moneybird/resource/recurring_sales_invoice.rb +2 -2
- data/lib/moneybird/resource/sales_invoice.rb +23 -4
- data/lib/moneybird/resource/webhook.rb +1 -0
- data/lib/moneybird/resource.rb +1 -0
- data/lib/moneybird/service/administration.rb +3 -2
- data/lib/moneybird/service/custom_field.rb +17 -0
- data/lib/moneybird/service/{purchase_invoice.rb → external_sales_invoice.rb} +3 -3
- data/lib/moneybird/service/financial_mutation.rb +4 -0
- data/lib/moneybird/service/payment.rb +19 -0
- data/lib/moneybird/service/sales_invoice.rb +3 -1
- data/lib/moneybird/traits/administration_service.rb +4 -2
- data/lib/moneybird/traits/download_pdf.rb +9 -0
- data/lib/moneybird/traits/find_all.rb +9 -3
- data/lib/moneybird/traits/mark_as_uncollectible.rb +15 -0
- data/lib/moneybird/traits/save.rb +0 -4
- data/lib/moneybird/traits/send_invoice.rb +3 -1
- data/lib/moneybird/traits/service.rb +4 -0
- data/lib/moneybird/version.rb +1 -1
- data/lib/moneybird/webhook.rb +3 -2
- data/lib/moneybird.rb +9 -4
- data/moneybird.gemspec +3 -3
- metadata +27 -16
- data/.travis.yml +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 4e51db36506d93746d8be9c4c38e3b7a1aff68caac9dbf23bfc246c32ec55a09
|
4
|
+
data.tar.gz: a69bcfe1969ee0a04188dd7818c5d4efcba26ab317823fdd44707e4d6e934582
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab851017c096b28964609330aaebc76a4607214585ff9440c06bc005ffed4db5ae9bdbcc075aa18905dc0d33da68b92bca1640531c0292a5eb339641617d2fd6
|
7
|
+
data.tar.gz: '048064af32f069dcc729cbddb3e8e867825a0fda4ad4964b0b2d9d6a3fec303f55d63d8a67bca39d9b437c45c261991da59bae64ee4f2245c36a8e0c3ccababe'
|
data/.codeclimate.yml
CHANGED
@@ -23,78 +23,4 @@ ratings:
|
|
23
23
|
- "**.rb"
|
24
24
|
exclude_paths:
|
25
25
|
- spec/
|
26
|
-
|
27
|
-
engines:
|
28
|
-
duplication:
|
29
|
-
enabled: true
|
30
|
-
config:
|
31
|
-
languages:
|
32
|
-
- ruby
|
33
|
-
- javascript
|
34
|
-
- python
|
35
|
-
- php
|
36
|
-
fixme:
|
37
|
-
enabled: true
|
38
|
-
rubocop:
|
39
|
-
enabled: true
|
40
|
-
ratings:
|
41
|
-
paths:
|
42
|
-
- "**.inc"
|
43
|
-
- "**.js"
|
44
|
-
- "**.jsx"
|
45
|
-
- "**.module"
|
46
|
-
- "**.php"
|
47
|
-
- "**.py"
|
48
|
-
- "**.rb"
|
49
|
-
exclude_paths:
|
50
|
-
- spec/
|
51
|
-
---
|
52
|
-
engines:
|
53
|
-
duplication:
|
54
|
-
enabled: true
|
55
|
-
config:
|
56
|
-
languages:
|
57
|
-
- ruby
|
58
|
-
- javascript
|
59
|
-
- python
|
60
|
-
- php
|
61
|
-
fixme:
|
62
|
-
enabled: true
|
63
|
-
rubocop:
|
64
|
-
enabled: true
|
65
|
-
ratings:
|
66
|
-
paths:
|
67
|
-
- "**.inc"
|
68
|
-
- "**.js"
|
69
|
-
- "**.jsx"
|
70
|
-
- "**.module"
|
71
|
-
- "**.php"
|
72
|
-
- "**.py"
|
73
|
-
- "**.rb"
|
74
|
-
exclude_paths:
|
75
|
-
- spec/
|
76
|
-
---
|
77
|
-
engines:
|
78
|
-
duplication:
|
79
|
-
enabled: true
|
80
|
-
config:
|
81
|
-
languages:
|
82
|
-
- ruby
|
83
|
-
- javascript
|
84
|
-
- python
|
85
|
-
- php
|
86
|
-
fixme:
|
87
|
-
enabled: true
|
88
|
-
rubocop:
|
89
|
-
enabled: true
|
90
|
-
ratings:
|
91
|
-
paths:
|
92
|
-
- "**.inc"
|
93
|
-
- "**.js"
|
94
|
-
- "**.jsx"
|
95
|
-
- "**.module"
|
96
|
-
- "**.php"
|
97
|
-
- "**.py"
|
98
|
-
- "**.rb"
|
99
|
-
exclude_paths:
|
100
|
-
- spec/
|
26
|
+
|
@@ -0,0 +1,38 @@
|
|
1
|
+
name: Ruby
|
2
|
+
|
3
|
+
on: [push, pull_request]
|
4
|
+
|
5
|
+
jobs:
|
6
|
+
test:
|
7
|
+
runs-on: ubuntu-latest
|
8
|
+
|
9
|
+
strategy:
|
10
|
+
matrix:
|
11
|
+
ruby_version: [2.5, 2.6, 2.7, 3.0]
|
12
|
+
|
13
|
+
steps:
|
14
|
+
- uses: actions/checkout@v2.3.5
|
15
|
+
|
16
|
+
- name: Set up Ruby
|
17
|
+
uses: ruby/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
ruby-version: ${{ matrix.ruby_version }}
|
20
|
+
|
21
|
+
- uses: amancevice/setup-code-climate@v0
|
22
|
+
name: CodeClimate Install
|
23
|
+
with:
|
24
|
+
cc_test_reporter_id: 0b8e41ecbc26637a7db4e6e9d4581c445441674f689016ab45fb5c51242b59bf
|
25
|
+
|
26
|
+
- name: CodeClimate Pre-build Notification
|
27
|
+
run: cc-test-reporter before-build
|
28
|
+
|
29
|
+
- name: Build and test with Rake
|
30
|
+
env:
|
31
|
+
CI: true
|
32
|
+
run: |
|
33
|
+
gem install bundler
|
34
|
+
bundle install --jobs 4 --retry 3
|
35
|
+
bundle exec rake
|
36
|
+
|
37
|
+
- name: CodeClimate Post-build Notification
|
38
|
+
run: cc-test-reporter after-build
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Moneybird [](https://github.com/maartenvanvliet/moneybird/actions?query=workflow%3ARuby) [](https://codeclimate.com/github/maartenvanvliet/moneybird) [](https://codeclimate.com/github/maartenvanvliet/moneybird/coverage)
|
2
2
|
|
3
3
|
Gem to talk to the Moneybird REST API. Right now you'll need to get a 'bearer' token for the client to work, oauth2 support may added later. This gem is still under construction and any methods may still change signature without notice until 1.0 is released.
|
4
4
|
|
@@ -36,6 +36,9 @@ administration = administrations.first
|
|
36
36
|
# List invoices
|
37
37
|
administration.sales_invoices.all
|
38
38
|
|
39
|
+
# List invoices with a specific state
|
40
|
+
administration.sales_invoices.all(filter: 'state:uncollectible')
|
41
|
+
|
39
42
|
# List contacts
|
40
43
|
administration.contacts.all
|
41
44
|
|
@@ -46,7 +49,7 @@ administration.contacts.find(moneybird_id)
|
|
46
49
|
administration.contacts.find_by_customer_id(customer_id)
|
47
50
|
|
48
51
|
# Create contact
|
49
|
-
|
52
|
+
administration.contacts.create(company_name: 'ACME', firstname: 'Foo', lastname: 'Bar')
|
50
53
|
|
51
54
|
# Update contact
|
52
55
|
contact = administration.contacts.all.first
|
@@ -82,4 +85,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/maarte
|
|
82
85
|
## License
|
83
86
|
|
84
87
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
85
|
-
|
data/lib/moneybird/client.rb
CHANGED
@@ -29,9 +29,7 @@ module Moneybird
|
|
29
29
|
faraday.response :json
|
30
30
|
faraday.use Moneybird::Middleware::ErrorHandling
|
31
31
|
faraday.use Moneybird::Middleware::Pagination
|
32
|
-
|
33
|
-
# logger.filter(/(Bearer)\s(\S+)/, '\1[REMOVED]')
|
34
|
-
# end
|
32
|
+
|
35
33
|
faraday.adapter faraday_adapter
|
36
34
|
end
|
37
35
|
end
|
@@ -39,6 +37,11 @@ module Moneybird
|
|
39
37
|
%i[get patch post delete].each do |call|
|
40
38
|
define_method call do |path, options = {}|
|
41
39
|
http.public_send(call, "/api/#{version}/#{path}", options).body
|
40
|
+
|
41
|
+
rescue Faraday::ParsingError => e
|
42
|
+
return e.response['Location'] if e.response.status == 302
|
43
|
+
|
44
|
+
raise e
|
42
45
|
end
|
43
46
|
end
|
44
47
|
|
@@ -72,4 +75,4 @@ module Moneybird
|
|
72
75
|
}
|
73
76
|
end
|
74
77
|
end
|
75
|
-
end
|
78
|
+
end
|
@@ -18,7 +18,11 @@ module Moneybird
|
|
18
18
|
|
19
19
|
def on_complete(response)
|
20
20
|
key = response[:status].to_i
|
21
|
-
raise ERROR_MAP[key], response if ERROR_MAP.key? key
|
21
|
+
raise ERROR_MAP[key], response_values(response) if ERROR_MAP.key? key
|
22
|
+
end
|
23
|
+
|
24
|
+
def response_values(response)
|
25
|
+
{ status: response.status, headers: response.response_headers, body: response.body }
|
22
26
|
end
|
23
27
|
end
|
24
28
|
end
|
@@ -24,6 +24,10 @@ module Moneybird::Resource
|
|
24
24
|
Moneybird::Service::SalesInvoice.new(@client, id)
|
25
25
|
end
|
26
26
|
|
27
|
+
def external_sales_invoices
|
28
|
+
Moneybird::Service::ExternalSalesInvoice.new(@client, id)
|
29
|
+
end
|
30
|
+
|
27
31
|
def recurring_sales_invoices
|
28
32
|
Moneybird::Service::RecurringSalesInvoice.new(@client, id)
|
29
33
|
end
|
@@ -52,6 +56,14 @@ module Moneybird::Resource
|
|
52
56
|
Moneybird::Service::Workflow.new(@client, id)
|
53
57
|
end
|
54
58
|
|
59
|
+
def custom_fields
|
60
|
+
Moneybird::Service::CustomField.new(@client, id)
|
61
|
+
end
|
62
|
+
|
63
|
+
def document_styles
|
64
|
+
Moneybird::Service::DocumentStyle.new(@client, id)
|
65
|
+
end
|
66
|
+
|
55
67
|
def tax_rates
|
56
68
|
Moneybird::Service::TaxRate.new(@client, id)
|
57
69
|
end
|
@@ -43,6 +43,8 @@ module Moneybird::Resource
|
|
43
43
|
sepa_mandate_date
|
44
44
|
sepa_mandate_id
|
45
45
|
sepa_sequence_type
|
46
|
+
si_identifier
|
47
|
+
si_identifier_type
|
46
48
|
tax_number
|
47
49
|
tax_number_valid
|
48
50
|
tax_number_validated_at
|
@@ -52,11 +54,15 @@ module Moneybird::Resource
|
|
52
54
|
)
|
53
55
|
|
54
56
|
def notes=(notes)
|
55
|
-
@notes
|
57
|
+
@notes = notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
|
56
58
|
end
|
57
59
|
|
58
60
|
def events=(events)
|
59
|
-
@events
|
61
|
+
@events = events.map{ |event| Moneybird::Resource::Generic::Event.build(event) }
|
62
|
+
end
|
63
|
+
|
64
|
+
def custom_fields=(custom_fields)
|
65
|
+
@custom_fields = custom_fields.map { |custom_field| Moneybird::Resource::CustomField.build(custom_field) }
|
60
66
|
end
|
61
67
|
end
|
62
68
|
end
|
@@ -4,46 +4,54 @@ module Moneybird::Resource::Documents
|
|
4
4
|
extend Moneybird::Resource::ClassMethods
|
5
5
|
|
6
6
|
has_attributes %i(
|
7
|
-
id
|
8
7
|
administration_id
|
8
|
+
attachments
|
9
9
|
contact
|
10
10
|
contact_id
|
11
|
-
|
11
|
+
created_at
|
12
|
+
currency
|
12
13
|
date
|
14
|
+
details
|
13
15
|
due_date
|
14
16
|
entry_number
|
15
|
-
|
17
|
+
events
|
16
18
|
exchange_rate
|
17
|
-
|
18
|
-
updated_at
|
19
|
-
version
|
19
|
+
id
|
20
20
|
notes
|
21
|
-
attachments
|
22
|
-
events
|
23
|
-
currency
|
24
|
-
revenue_invoice
|
25
|
-
prices_are_incl_tax
|
26
21
|
origin
|
27
22
|
paid_at
|
28
|
-
tax_number
|
29
|
-
total_price_excl_tax
|
30
|
-
total_price_excl_tax_base
|
31
|
-
total_price_incl_tax
|
32
|
-
total_price_incl_tax_base
|
33
|
-
details
|
34
23
|
payments
|
35
|
-
currency
|
36
|
-
revenue_invoice
|
37
24
|
prices_are_incl_tax
|
38
|
-
|
39
|
-
|
25
|
+
reference
|
26
|
+
revenue_invoice
|
27
|
+
state
|
40
28
|
tax_number
|
41
29
|
total_price_excl_tax
|
42
30
|
total_price_excl_tax_base
|
43
31
|
total_price_incl_tax
|
44
32
|
total_price_incl_tax_base
|
45
|
-
|
46
|
-
|
33
|
+
updated_at
|
34
|
+
version
|
47
35
|
)
|
36
|
+
|
37
|
+
def notes=(notes)
|
38
|
+
@notes = notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
|
39
|
+
end
|
40
|
+
|
41
|
+
def contact=(attributes)
|
42
|
+
@contact = Moneybird::Resource::Contact.build(attributes)
|
43
|
+
end
|
44
|
+
|
45
|
+
def details=(line_items)
|
46
|
+
@details = line_items.map{ |line_item| Moneybird::Resource::Invoice::Details.build(line_item) }
|
47
|
+
end
|
48
|
+
|
49
|
+
def events=(events)
|
50
|
+
@events = events.map{ |event| Moneybird::Resource::Generic::Event.build(event) }
|
51
|
+
end
|
52
|
+
|
53
|
+
def payments=(payments)
|
54
|
+
@payments = payments.map{ |payment| Moneybird::Resource::Invoice::Payment.build(payment) }
|
55
|
+
end
|
48
56
|
end
|
49
|
-
end
|
57
|
+
end
|
@@ -4,32 +4,54 @@ module Moneybird::Resource::Documents
|
|
4
4
|
extend Moneybird::Resource::ClassMethods
|
5
5
|
|
6
6
|
has_attributes %i(
|
7
|
-
id
|
8
7
|
administration_id
|
8
|
+
attachments
|
9
|
+
contact
|
10
|
+
contact_id
|
11
|
+
created_at
|
9
12
|
currency
|
10
|
-
|
11
|
-
|
13
|
+
date
|
14
|
+
details
|
15
|
+
due_date
|
16
|
+
entry_number
|
17
|
+
events
|
18
|
+
exchange_rate
|
19
|
+
id
|
20
|
+
notes
|
12
21
|
origin
|
13
22
|
paid_at
|
14
|
-
tax_number
|
15
|
-
total_price_excl_tax
|
16
|
-
total_price_excl_tax_base
|
17
|
-
total_price_incl_tax
|
18
|
-
total_price_incl_tax_base
|
19
|
-
details
|
20
23
|
payments
|
21
|
-
currency
|
22
|
-
revenue_invoice
|
23
24
|
prices_are_incl_tax
|
24
|
-
|
25
|
-
|
25
|
+
reference
|
26
|
+
revenue_invoice
|
27
|
+
state
|
26
28
|
tax_number
|
27
29
|
total_price_excl_tax
|
28
30
|
total_price_excl_tax_base
|
29
31
|
total_price_incl_tax
|
30
32
|
total_price_incl_tax_base
|
31
|
-
|
32
|
-
|
33
|
+
updated_at
|
34
|
+
version
|
33
35
|
)
|
36
|
+
|
37
|
+
def notes=(notes)
|
38
|
+
@notes = notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
|
39
|
+
end
|
40
|
+
|
41
|
+
def contact=(attributes)
|
42
|
+
@contact = Moneybird::Resource::Contact.build(attributes)
|
43
|
+
end
|
44
|
+
|
45
|
+
def details=(line_items)
|
46
|
+
@details = line_items.map{ |line_item| Moneybird::Resource::Invoice::Details.build(line_item) }
|
47
|
+
end
|
48
|
+
|
49
|
+
def events=(events)
|
50
|
+
@events = events.map{ |event| Moneybird::Resource::Generic::Event.build(event) }
|
51
|
+
end
|
52
|
+
|
53
|
+
def payments=(payments)
|
54
|
+
@payments = payments.map{ |payment| Moneybird::Resource::Invoice::Payment.build(payment) }
|
55
|
+
end
|
34
56
|
end
|
35
|
-
end
|
57
|
+
end
|
@@ -48,15 +48,15 @@ module Moneybird::Resource
|
|
48
48
|
)
|
49
49
|
|
50
50
|
def notes=(notes)
|
51
|
-
@notes
|
51
|
+
@notes = notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
|
52
52
|
end
|
53
53
|
|
54
54
|
def contact=(attributes)
|
55
|
-
@contact
|
55
|
+
@contact = Moneybird::Resource::Contact.build(attributes)
|
56
56
|
end
|
57
57
|
|
58
58
|
def details=(line_items)
|
59
|
-
@details
|
59
|
+
@details = line_items.map{ |line_item| Moneybird::Resource::Invoice::Details.build(line_item) }
|
60
60
|
end
|
61
61
|
end
|
62
|
-
end
|
62
|
+
end
|
@@ -1,57 +1,61 @@
|
|
1
1
|
module Moneybird::Resource
|
2
|
-
class
|
2
|
+
class ExternalSalesInvoice
|
3
3
|
include Moneybird::Resource
|
4
4
|
extend Moneybird::Resource::ClassMethods
|
5
5
|
|
6
6
|
has_attributes %i(
|
7
|
+
id
|
7
8
|
administration_id
|
8
|
-
attachments
|
9
|
-
contact
|
10
9
|
contact_id
|
11
|
-
|
12
|
-
currency
|
10
|
+
contact
|
13
11
|
date
|
14
|
-
|
12
|
+
state
|
15
13
|
due_date
|
14
|
+
reference
|
16
15
|
entry_number
|
17
|
-
events
|
18
|
-
exchange_rate
|
19
|
-
id
|
20
|
-
notes
|
21
16
|
origin
|
17
|
+
source
|
18
|
+
source_url
|
19
|
+
currency
|
22
20
|
paid_at
|
21
|
+
created_at
|
22
|
+
updated_at
|
23
|
+
version
|
24
|
+
details
|
23
25
|
payments
|
26
|
+
notes
|
27
|
+
attachments
|
28
|
+
events
|
29
|
+
tax_totals
|
30
|
+
total_paid
|
31
|
+
total_unpaid
|
32
|
+
total_unpaid_base
|
24
33
|
prices_are_incl_tax
|
25
|
-
reference
|
26
|
-
revenue_invoice
|
27
|
-
state
|
28
|
-
tax_number
|
29
34
|
total_price_excl_tax
|
30
35
|
total_price_excl_tax_base
|
31
36
|
total_price_incl_tax
|
32
37
|
total_price_incl_tax_base
|
33
|
-
updated_at
|
34
|
-
version
|
35
38
|
)
|
36
39
|
|
37
40
|
def notes=(notes)
|
38
|
-
@notes
|
41
|
+
@notes = notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
|
39
42
|
end
|
40
43
|
|
41
44
|
def contact=(attributes)
|
42
45
|
@contact = Moneybird::Resource::Contact.build(attributes)
|
43
46
|
end
|
44
47
|
|
48
|
+
def payments=(payments)
|
49
|
+
payment_data = payments.map{ |payment| Moneybird::Resource::Invoice::Payment.build(payment) }
|
50
|
+
@payments = Moneybird::Service::Payment.new(client, administration_id, preloaded_data: payment_data, invoice_id: id)
|
51
|
+
end
|
52
|
+
|
45
53
|
def details=(line_items)
|
46
54
|
@details = line_items.map{ |line_item| Moneybird::Resource::Invoice::Details.build(line_item) }
|
47
55
|
end
|
48
56
|
|
49
57
|
def events=(events)
|
50
|
-
@events
|
51
|
-
end
|
52
|
-
|
53
|
-
def payments=(payments)
|
54
|
-
@payments ||= payments.map{ |payment| Moneybird::Resource::Invoice::Payment.build(payment) }
|
58
|
+
@events = events.map{ |event| Moneybird::Resource::Generic::Event.build(event) }
|
55
59
|
end
|
56
60
|
end
|
57
61
|
end
|
@@ -40,7 +40,7 @@ module Moneybird::Resource
|
|
40
40
|
)
|
41
41
|
|
42
42
|
def notes=(notes)
|
43
|
-
@notes
|
43
|
+
@notes = notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
|
44
44
|
end
|
45
45
|
|
46
46
|
def contact=(attributes)
|
@@ -52,7 +52,7 @@ module Moneybird::Resource
|
|
52
52
|
end
|
53
53
|
|
54
54
|
def events=(events)
|
55
|
-
@events
|
55
|
+
@events = events.map{ |event| Moneybird::Resource::Generic::Event.build(event) }
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
@@ -22,12 +22,18 @@ module Moneybird::Resource
|
|
22
22
|
invoice_id
|
23
23
|
invoice_sequence_id
|
24
24
|
language
|
25
|
+
marked_dubious_on
|
26
|
+
marked_uncollectible_on
|
25
27
|
notes
|
26
28
|
original_sales_invoice_id
|
27
29
|
paid_at
|
30
|
+
paused
|
28
31
|
payment_conditions
|
32
|
+
payment_reference
|
33
|
+
payment_url
|
29
34
|
payments
|
30
35
|
prices_are_incl_tax
|
36
|
+
public_view_code
|
31
37
|
recurring_sales_invoice_id
|
32
38
|
reference
|
33
39
|
sent_at
|
@@ -49,7 +55,7 @@ module Moneybird::Resource
|
|
49
55
|
)
|
50
56
|
|
51
57
|
def notes=(notes)
|
52
|
-
@notes
|
58
|
+
@notes = notes.map{ |note| Moneybird::Resource::Generic::Note.build(note) }
|
53
59
|
end
|
54
60
|
|
55
61
|
def contact=(attributes)
|
@@ -57,17 +63,30 @@ module Moneybird::Resource
|
|
57
63
|
end
|
58
64
|
|
59
65
|
def send_invoice(options = {})
|
60
|
-
invoice_service = Moneybird::Service::SalesInvoice.new(
|
66
|
+
invoice_service = Moneybird::Service::SalesInvoice.new(client, administration_id)
|
61
67
|
invoice_service.send_invoice(self, options)
|
62
68
|
end
|
63
69
|
|
70
|
+
def mark_as_uncollectible(options = {})
|
71
|
+
invoice_service = Moneybird::Service::SalesInvoice.new(client, administration_id)
|
72
|
+
invoice_service.mark_as_uncollectible(self, options)
|
73
|
+
end
|
74
|
+
|
75
|
+
def payments=(payments)
|
76
|
+
payment_data = payments.map{ |payment| Moneybird::Resource::Invoice::Payment.build(payment) }
|
77
|
+
@payments = Moneybird::Service::Payment.new(client, administration_id, preloaded_data: payment_data, invoice_id: id)
|
78
|
+
end
|
79
|
+
|
64
80
|
def details=(line_items)
|
65
81
|
@details = line_items.map{ |line_item| Moneybird::Resource::Invoice::Details.build(line_item) }
|
66
82
|
end
|
67
83
|
|
68
84
|
def events=(events)
|
69
|
-
@events
|
85
|
+
@events = events.map{ |event| Moneybird::Resource::Generic::Event.build(event) }
|
86
|
+
end
|
87
|
+
|
88
|
+
def custom_fields=(custom_fields)
|
89
|
+
@custom_fields = custom_fields.map { |custom_field| Moneybird::Resource::CustomField.build(custom_field) }
|
70
90
|
end
|
71
91
|
end
|
72
92
|
end
|
73
|
-
|
data/lib/moneybird/resource.rb
CHANGED
@@ -3,10 +3,11 @@ module Moneybird::Service
|
|
3
3
|
include Moneybird::Traits::FindAll
|
4
4
|
include Moneybird::Traits::Service
|
5
5
|
|
6
|
-
attr_reader :client
|
6
|
+
attr_reader :client, :preloaded_data
|
7
7
|
|
8
8
|
def initialize(client)
|
9
9
|
@client = client
|
10
|
+
@preloaded_data = nil
|
10
11
|
end
|
11
12
|
|
12
13
|
def find(id)
|
@@ -20,7 +21,7 @@ module Moneybird::Service
|
|
20
21
|
end
|
21
22
|
|
22
23
|
def path
|
23
|
-
'
|
24
|
+
'administrations'
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Moneybird::Service
|
2
|
+
class CustomField
|
3
|
+
include Moneybird::Traits::AdministrationService
|
4
|
+
include Moneybird::Traits::Service
|
5
|
+
include Moneybird::Traits::FindAll
|
6
|
+
|
7
|
+
private
|
8
|
+
|
9
|
+
def resource_class
|
10
|
+
Moneybird::Resource::CustomField
|
11
|
+
end
|
12
|
+
|
13
|
+
def path
|
14
|
+
"#{administration_id}/custom_fields"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Moneybird::Service
|
2
|
-
class
|
2
|
+
class ExternalSalesInvoice
|
3
3
|
include Moneybird::Traits::AdministrationService
|
4
4
|
include Moneybird::Traits::Service
|
5
5
|
include Moneybird::Traits::Find
|
@@ -10,11 +10,11 @@ module Moneybird::Service
|
|
10
10
|
private
|
11
11
|
|
12
12
|
def resource_class
|
13
|
-
Moneybird::Resource::
|
13
|
+
Moneybird::Resource::ExternalSalesInvoice
|
14
14
|
end
|
15
15
|
|
16
16
|
def path
|
17
|
-
"#{administration_id}/
|
17
|
+
"#{administration_id}/external_sales_invoices"
|
18
18
|
end
|
19
19
|
end
|
20
20
|
end
|
@@ -5,6 +5,10 @@ module Moneybird::Service
|
|
5
5
|
include Moneybird::Traits::FindAll
|
6
6
|
include Moneybird::Traits::Synchronization
|
7
7
|
|
8
|
+
def link_booking(resource, booking)
|
9
|
+
client.patch("#{resource_path(resource)}/link_booking", booking.to_json)
|
10
|
+
end
|
11
|
+
|
8
12
|
private
|
9
13
|
|
10
14
|
def resource_class
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Moneybird::Service
|
2
|
+
class Payment
|
3
|
+
include Moneybird::Traits::AdministrationService
|
4
|
+
include Moneybird::Traits::Service
|
5
|
+
include Moneybird::Traits::FindAll
|
6
|
+
include Moneybird::Traits::Save
|
7
|
+
include Moneybird::Traits::Delete
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def resource_class
|
12
|
+
Moneybird::Resource::Invoice::Payment
|
13
|
+
end
|
14
|
+
|
15
|
+
def path
|
16
|
+
"#{administration_id}/sales_invoices/#{options[:invoice_id]}/payments"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -7,7 +7,9 @@ module Moneybird::Service
|
|
7
7
|
include Moneybird::Traits::Save
|
8
8
|
include Moneybird::Traits::Delete
|
9
9
|
include Moneybird::Traits::Synchronization
|
10
|
+
include Moneybird::Traits::DownloadPdf
|
10
11
|
include Moneybird::Traits::SendInvoice
|
12
|
+
include Moneybird::Traits::MarkAsUncollectible
|
11
13
|
|
12
14
|
private
|
13
15
|
|
@@ -19,4 +21,4 @@ module Moneybird::Service
|
|
19
21
|
"#{administration_id}/sales_invoices"
|
20
22
|
end
|
21
23
|
end
|
22
|
-
end
|
24
|
+
end
|
@@ -1,11 +1,13 @@
|
|
1
1
|
module Moneybird
|
2
2
|
module Traits
|
3
3
|
module AdministrationService
|
4
|
-
attr_reader :client, :administration_id
|
4
|
+
attr_reader :client, :administration_id, :preloaded_data, :options
|
5
5
|
|
6
|
-
def initialize(client, administration_id)
|
6
|
+
def initialize(client, administration_id, options = {})
|
7
7
|
@client = client
|
8
8
|
@administration_id = administration_id
|
9
|
+
@preloaded_data = options.delete(:preloaded_data)
|
10
|
+
@options = options
|
9
11
|
end
|
10
12
|
end
|
11
13
|
end
|
@@ -14,9 +14,15 @@ module Moneybird
|
|
14
14
|
|
15
15
|
def each(params = {})
|
16
16
|
return enum_for(:each, params) unless block_given?
|
17
|
-
|
18
|
-
|
19
|
-
yield
|
17
|
+
if preloaded_data
|
18
|
+
preloaded_data.each do |data|
|
19
|
+
yield data
|
20
|
+
end
|
21
|
+
else
|
22
|
+
each_page(params).each do |resources|
|
23
|
+
resources.each do |resource|
|
24
|
+
yield resource
|
25
|
+
end
|
20
26
|
end
|
21
27
|
end
|
22
28
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Moneybird
|
2
|
+
module Traits
|
3
|
+
module MarkAsUncollectible
|
4
|
+
def mark_as_uncollectible_path(resource)
|
5
|
+
[path, resource.path, '/mark_as_uncollectible'].join('')
|
6
|
+
end
|
7
|
+
|
8
|
+
def mark_as_uncollectible(resource, options = {})
|
9
|
+
response = client.patch(mark_as_uncollectible_path(resource), options.to_json)
|
10
|
+
resource.attributes = response
|
11
|
+
resource
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -6,7 +6,9 @@ module Moneybird
|
|
6
6
|
end
|
7
7
|
|
8
8
|
def send_invoice(resource, options = {})
|
9
|
-
client.patch(send_invoice_path(resource), options.to_json)
|
9
|
+
response = client.patch(send_invoice_path(resource), options.to_json)
|
10
|
+
resource.attributes = response
|
11
|
+
resource
|
10
12
|
end
|
11
13
|
end
|
12
14
|
end
|
data/lib/moneybird/version.rb
CHANGED
data/lib/moneybird/webhook.rb
CHANGED
@@ -6,6 +6,7 @@ module Moneybird
|
|
6
6
|
has_attributes %i(
|
7
7
|
administration_id
|
8
8
|
webhook_id
|
9
|
+
webhook_token
|
9
10
|
entity_type
|
10
11
|
entity_id
|
11
12
|
state
|
@@ -14,7 +15,7 @@ module Moneybird
|
|
14
15
|
)
|
15
16
|
|
16
17
|
def build_entity
|
17
|
-
entity_resource_class.new(entity)
|
18
|
+
entity_resource_class.new(entity) if entity
|
18
19
|
end
|
19
20
|
|
20
21
|
def entity_resource_class
|
@@ -25,4 +26,4 @@ module Moneybird
|
|
25
26
|
build(JSON.parse(payload))
|
26
27
|
end
|
27
28
|
end
|
28
|
-
end
|
29
|
+
end
|
data/lib/moneybird.rb
CHANGED
@@ -50,15 +50,16 @@ require 'moneybird/resource/invoice/details'
|
|
50
50
|
require 'moneybird/resource/invoice/payment'
|
51
51
|
require 'moneybird/resource/contact' # Depends on generic resources
|
52
52
|
require 'moneybird/resource/document_style'
|
53
|
+
require 'moneybird/resource/custom_field'
|
53
54
|
require 'moneybird/resource/estimate'
|
54
55
|
require 'moneybird/resource/financial_account'
|
55
56
|
require 'moneybird/resource/financial_mutation'
|
56
57
|
require 'moneybird/resource/identity'
|
57
58
|
require 'moneybird/resource/ledger_account'
|
58
59
|
require 'moneybird/resource/product'
|
59
|
-
require 'moneybird/resource/purchase_invoice' # Depends on generic and invoice resources
|
60
60
|
require 'moneybird/resource/recurring_sales_invoice' # Depends on generic and invoice resources
|
61
61
|
require 'moneybird/resource/sales_invoice' # Depends on generic and invoice resources
|
62
|
+
require 'moneybird/resource/external_sales_invoice'
|
62
63
|
require 'moneybird/resource/synchronization'
|
63
64
|
require 'moneybird/resource/tax_rate'
|
64
65
|
require 'moneybird/resource/webhook'
|
@@ -68,12 +69,14 @@ require 'moneybird/resource/workflow'
|
|
68
69
|
# Traits
|
69
70
|
require 'moneybird/traits/administration_service'
|
70
71
|
require 'moneybird/traits/delete'
|
72
|
+
require 'moneybird/traits/download_pdf'
|
71
73
|
require 'moneybird/traits/find'
|
72
74
|
require 'moneybird/traits/find_all'
|
75
|
+
require 'moneybird/traits/mark_as_uncollectible'
|
73
76
|
require 'moneybird/traits/save'
|
77
|
+
require 'moneybird/traits/send_invoice'
|
74
78
|
require 'moneybird/traits/service'
|
75
79
|
require 'moneybird/traits/synchronization' # Depends on synchronization resource
|
76
|
-
require 'moneybird/traits/send_invoice'
|
77
80
|
|
78
81
|
##
|
79
82
|
# Services (all depend on traits and it's associated resource)
|
@@ -84,18 +87,20 @@ require 'moneybird/service/documents/receipt'
|
|
84
87
|
require 'moneybird/service/documents/typeless_document'
|
85
88
|
require 'moneybird/service/contact'
|
86
89
|
require 'moneybird/service/document_style'
|
90
|
+
require 'moneybird/service/custom_field'
|
87
91
|
require 'moneybird/service/estimate'
|
88
92
|
require 'moneybird/service/financial_account'
|
89
93
|
require 'moneybird/service/financial_mutation'
|
90
94
|
require 'moneybird/service/identity'
|
91
95
|
require 'moneybird/service/ledger_account'
|
92
96
|
require 'moneybird/service/product'
|
93
|
-
require 'moneybird/service/purchase_invoice'
|
94
97
|
require 'moneybird/service/recurring_sales_invoice'
|
95
98
|
require 'moneybird/service/sales_invoice'
|
99
|
+
require 'moneybird/service/external_sales_invoice'
|
96
100
|
require 'moneybird/service/tax_rate'
|
97
101
|
require 'moneybird/service/webhook'
|
98
102
|
require 'moneybird/service/workflow'
|
103
|
+
require 'moneybird/service/payment'
|
99
104
|
|
100
105
|
##
|
101
106
|
# Special cases
|
@@ -103,4 +108,4 @@ require 'moneybird/resource/administration' # Depends on services
|
|
103
108
|
require 'moneybird/service/administration' # Depends on administration resource
|
104
109
|
require 'moneybird/client'
|
105
110
|
require 'moneybird/version'
|
106
|
-
require 'moneybird/webhook'
|
111
|
+
require 'moneybird/webhook'
|
data/moneybird.gemspec
CHANGED
@@ -24,9 +24,9 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_dependency "faraday_middleware"
|
25
25
|
spec.add_dependency "link_header", "~> 0.0.8"
|
26
26
|
|
27
|
-
spec.add_development_dependency "bundler", "
|
28
|
-
spec.add_development_dependency "rake", "~>
|
29
|
-
spec.add_development_dependency "
|
27
|
+
spec.add_development_dependency "bundler", [">= 1.11", "< 3.0"]
|
28
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
29
|
+
spec.add_development_dependency "simplecov", "= 0.21.2"
|
30
30
|
spec.add_development_dependency "minitest"
|
31
31
|
spec.add_development_dependency "webmock", "~> 3.1"
|
32
32
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moneybird
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maarten van Vliet
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-11-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -70,44 +70,50 @@ dependencies:
|
|
70
70
|
name: bundler
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '1.11'
|
76
|
+
- - "<"
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '3.0'
|
76
79
|
type: :development
|
77
80
|
prerelease: false
|
78
81
|
version_requirements: !ruby/object:Gem::Requirement
|
79
82
|
requirements:
|
80
|
-
- - "
|
83
|
+
- - ">="
|
81
84
|
- !ruby/object:Gem::Version
|
82
85
|
version: '1.11'
|
86
|
+
- - "<"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '3.0'
|
83
89
|
- !ruby/object:Gem::Dependency
|
84
90
|
name: rake
|
85
91
|
requirement: !ruby/object:Gem::Requirement
|
86
92
|
requirements:
|
87
93
|
- - "~>"
|
88
94
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
95
|
+
version: '13.0'
|
90
96
|
type: :development
|
91
97
|
prerelease: false
|
92
98
|
version_requirements: !ruby/object:Gem::Requirement
|
93
99
|
requirements:
|
94
100
|
- - "~>"
|
95
101
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
102
|
+
version: '13.0'
|
97
103
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
104
|
+
name: simplecov
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
100
106
|
requirements:
|
101
|
-
- -
|
107
|
+
- - '='
|
102
108
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
109
|
+
version: 0.21.2
|
104
110
|
type: :development
|
105
111
|
prerelease: false
|
106
112
|
version_requirements: !ruby/object:Gem::Requirement
|
107
113
|
requirements:
|
108
|
-
- -
|
114
|
+
- - '='
|
109
115
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
116
|
+
version: 0.21.2
|
111
117
|
- !ruby/object:Gem::Dependency
|
112
118
|
name: minitest
|
113
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -144,11 +150,12 @@ extensions: []
|
|
144
150
|
extra_rdoc_files: []
|
145
151
|
files:
|
146
152
|
- ".codeclimate.yml"
|
153
|
+
- ".github/dependabot.yml"
|
154
|
+
- ".github/workflows/ruby.yml"
|
147
155
|
- ".gitignore"
|
148
156
|
- ".kick"
|
149
157
|
- ".rspec"
|
150
158
|
- ".rubocop.yml"
|
151
|
-
- ".travis.yml"
|
152
159
|
- CODE_OF_CONDUCT.md
|
153
160
|
- Gemfile
|
154
161
|
- LICENSE.txt
|
@@ -174,6 +181,7 @@ files:
|
|
174
181
|
- lib/moneybird/resource.rb
|
175
182
|
- lib/moneybird/resource/administration.rb
|
176
183
|
- lib/moneybird/resource/contact.rb
|
184
|
+
- lib/moneybird/resource/custom_field.rb
|
177
185
|
- lib/moneybird/resource/document_style.rb
|
178
186
|
- lib/moneybird/resource/documents/general_document.rb
|
179
187
|
- lib/moneybird/resource/documents/general_journal_document.rb
|
@@ -181,6 +189,7 @@ files:
|
|
181
189
|
- lib/moneybird/resource/documents/receipt.rb
|
182
190
|
- lib/moneybird/resource/documents/typeless_document.rb
|
183
191
|
- lib/moneybird/resource/estimate.rb
|
192
|
+
- lib/moneybird/resource/external_sales_invoice.rb
|
184
193
|
- lib/moneybird/resource/financial_account.rb
|
185
194
|
- lib/moneybird/resource/financial_mutation.rb
|
186
195
|
- lib/moneybird/resource/generic/event.rb
|
@@ -190,7 +199,6 @@ files:
|
|
190
199
|
- lib/moneybird/resource/invoice/payment.rb
|
191
200
|
- lib/moneybird/resource/ledger_account.rb
|
192
201
|
- lib/moneybird/resource/product.rb
|
193
|
-
- lib/moneybird/resource/purchase_invoice.rb
|
194
202
|
- lib/moneybird/resource/recurring_sales_invoice.rb
|
195
203
|
- lib/moneybird/resource/sales_invoice.rb
|
196
204
|
- lib/moneybird/resource/synchronization.rb
|
@@ -199,6 +207,7 @@ files:
|
|
199
207
|
- lib/moneybird/resource/workflow.rb
|
200
208
|
- lib/moneybird/service/administration.rb
|
201
209
|
- lib/moneybird/service/contact.rb
|
210
|
+
- lib/moneybird/service/custom_field.rb
|
202
211
|
- lib/moneybird/service/document_style.rb
|
203
212
|
- lib/moneybird/service/documents/general_document.rb
|
204
213
|
- lib/moneybird/service/documents/general_journal_document.rb
|
@@ -206,12 +215,13 @@ files:
|
|
206
215
|
- lib/moneybird/service/documents/receipt.rb
|
207
216
|
- lib/moneybird/service/documents/typeless_document.rb
|
208
217
|
- lib/moneybird/service/estimate.rb
|
218
|
+
- lib/moneybird/service/external_sales_invoice.rb
|
209
219
|
- lib/moneybird/service/financial_account.rb
|
210
220
|
- lib/moneybird/service/financial_mutation.rb
|
211
221
|
- lib/moneybird/service/identity.rb
|
212
222
|
- lib/moneybird/service/ledger_account.rb
|
223
|
+
- lib/moneybird/service/payment.rb
|
213
224
|
- lib/moneybird/service/product.rb
|
214
|
-
- lib/moneybird/service/purchase_invoice.rb
|
215
225
|
- lib/moneybird/service/recurring_sales_invoice.rb
|
216
226
|
- lib/moneybird/service/sales_invoice.rb
|
217
227
|
- lib/moneybird/service/tax_rate.rb
|
@@ -219,8 +229,10 @@ files:
|
|
219
229
|
- lib/moneybird/service/workflow.rb
|
220
230
|
- lib/moneybird/traits/administration_service.rb
|
221
231
|
- lib/moneybird/traits/delete.rb
|
232
|
+
- lib/moneybird/traits/download_pdf.rb
|
222
233
|
- lib/moneybird/traits/find.rb
|
223
234
|
- lib/moneybird/traits/find_all.rb
|
235
|
+
- lib/moneybird/traits/mark_as_uncollectible.rb
|
224
236
|
- lib/moneybird/traits/save.rb
|
225
237
|
- lib/moneybird/traits/send_invoice.rb
|
226
238
|
- lib/moneybird/traits/service.rb
|
@@ -247,8 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
247
259
|
- !ruby/object:Gem::Version
|
248
260
|
version: '0'
|
249
261
|
requirements: []
|
250
|
-
|
251
|
-
rubygems_version: 2.6.14
|
262
|
+
rubygems_version: 3.0.3
|
252
263
|
signing_key:
|
253
264
|
specification_version: 4
|
254
265
|
summary: Library to interface with Moneybird API
|
data/.travis.yml
DELETED