moneybird 0.9.4 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +5 -5
  2. data/.github/dependabot.yml +13 -0
  3. data/.github/workflows/ruby.yml +23 -0
  4. data/.travis.yml +3 -1
  5. data/README.md +1 -1
  6. data/lib/moneybird.rb +6 -3
  7. data/lib/moneybird/client.rb +1 -3
  8. data/lib/moneybird/http_error/authorization_required.rb +1 -1
  9. data/lib/moneybird/http_error/bad_request.rb +1 -1
  10. data/lib/moneybird/http_error/forbidden.rb +1 -1
  11. data/lib/moneybird/http_error/internal_server_error.rb +1 -1
  12. data/lib/moneybird/http_error/method_not_allowed.rb +1 -1
  13. data/lib/moneybird/http_error/not_accepted.rb +1 -1
  14. data/lib/moneybird/http_error/not_found.rb +1 -1
  15. data/lib/moneybird/http_error/payment_required.rb +1 -1
  16. data/lib/moneybird/http_error/too_many_requests.rb +1 -1
  17. data/lib/moneybird/http_error/unprocessable_entity.rb +1 -1
  18. data/lib/moneybird/middleware/error_handling.rb +5 -1
  19. data/lib/moneybird/resource.rb +1 -0
  20. data/lib/moneybird/resource/administration.rb +4 -0
  21. data/lib/moneybird/resource/contact.rb +2 -0
  22. data/lib/moneybird/resource/documents/purchase_invoice.rb +32 -24
  23. data/lib/moneybird/resource/documents/receipt.rb +38 -16
  24. data/lib/moneybird/resource/{purchase_invoice.rb → external_sales_invoice.rb} +24 -20
  25. data/lib/moneybird/resource/financial_mutation.rb +5 -0
  26. data/lib/moneybird/resource/invoice/details.rb +1 -0
  27. data/lib/moneybird/resource/invoice/payment.rb +1 -0
  28. data/lib/moneybird/resource/sales_invoice.rb +18 -1
  29. data/lib/moneybird/service/administration.rb +3 -2
  30. data/lib/moneybird/service/{purchase_invoice.rb → external_sales_invoice.rb} +3 -3
  31. data/lib/moneybird/service/financial_mutation.rb +4 -0
  32. data/lib/moneybird/service/payment.rb +19 -0
  33. data/lib/moneybird/service/sales_invoice.rb +3 -1
  34. data/lib/moneybird/traits/administration_service.rb +4 -2
  35. data/lib/moneybird/traits/find_all.rb +9 -3
  36. data/lib/moneybird/traits/mark_as_uncollectible.rb +15 -0
  37. data/lib/moneybird/traits/save.rb +0 -4
  38. data/lib/moneybird/traits/send_invoice.rb +15 -0
  39. data/lib/moneybird/traits/service.rb +4 -0
  40. data/lib/moneybird/version.rb +1 -1
  41. data/moneybird.gemspec +2 -2
  42. metadata +20 -10
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 022aaf9bda03e293e8e1f3bb397c5ca91339d0b4
4
- data.tar.gz: 8fa7d82307b61fd24e6b171887672e1c3c88e1f0
2
+ SHA256:
3
+ metadata.gz: bb2e7783bb5c1bd07ba829b99c43d6ca6ea6eb5649d6249078d0280f0d259dab
4
+ data.tar.gz: c8ef2679c43ee7188a36576afa9ccc83104814901913a96ba1d99c29428fe25b
5
5
  SHA512:
6
- metadata.gz: b166796a3810580a7095f145468fc6125ff0e40962818044b1a7696f4e382d3c6e87b9649fd35a199f8e722c985f93e091602e4bbe8d3f3df463317a807d3c9a
7
- data.tar.gz: 660e220f2551877c5b5bf119d166c0beb7966a0c50e1614d53b8829dc8d7e72080b0b84fa663e1ad3f9a2c0878257bc63dac91da3ccab2a9cf3d5bab576134c7
6
+ metadata.gz: 225222a355ac19b5f2c0f389093530d9d56dfca297e696b9c94a299b01ac9cf847a917e955e052a1c58895cfcfd3237e9b131a7f5db86d0d7f9b8926145525c9
7
+ data.tar.gz: 551b6160c997ad504335eb3aa383cee559d3b09fde1ea3434e382348d5452f08a09a610ae4af20b8c86c466a1645546c75b6f45dd5a7bcb6bc14a264658b14bc
@@ -0,0 +1,13 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: "/"
5
+ schedule:
6
+ interval: daily
7
+ time: "04:00"
8
+ open-pull-requests-limit: 10
9
+
10
+ - package-ecosystem: "github-actions"
11
+ directory: "/"
12
+ schedule:
13
+ interval: "daily"
@@ -0,0 +1,23 @@
1
+ name: Ruby
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ test:
7
+
8
+ runs-on: ubuntu-latest
9
+
10
+ strategy:
11
+ matrix:
12
+ ruby_version: [2.4, 2.5, 2.6]
13
+ steps:
14
+ - uses: actions/checkout@v2.3.4
15
+ - name: Set up Ruby
16
+ uses: actions/setup-ruby@v1
17
+ with:
18
+ ruby-version: ${{ matrix.ruby_version }}
19
+ - name: Build and test with Rake
20
+ run: |
21
+ gem install bundler
22
+ bundle install --jobs 4 --retry 3
23
+ bundle exec rake
@@ -1,6 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.2
3
+ - 2.4
4
+ - 2.5
5
+ - 2.6
4
6
  before_install: gem install bundler -v 1.11.2
5
7
 
6
8
  addons:
data/README.md CHANGED
@@ -46,7 +46,7 @@ administration.contacts.find(moneybird_id)
46
46
  administration.contacts.find_by_customer_id(customer_id)
47
47
 
48
48
  # Create contact
49
- administrations.contacts.create(company_name: 'ACME', firstname: 'Foo', lastname: 'Bar')
49
+ administration.contacts.create(company_name: 'ACME', firstname: 'Foo', lastname: 'Bar')
50
50
 
51
51
  # Update contact
52
52
  contact = administration.contacts.all.first
@@ -56,9 +56,9 @@ require 'moneybird/resource/financial_mutation'
56
56
  require 'moneybird/resource/identity'
57
57
  require 'moneybird/resource/ledger_account'
58
58
  require 'moneybird/resource/product'
59
- require 'moneybird/resource/purchase_invoice' # Depends on generic and invoice resources
60
59
  require 'moneybird/resource/recurring_sales_invoice' # Depends on generic and invoice resources
61
60
  require 'moneybird/resource/sales_invoice' # Depends on generic and invoice resources
61
+ require 'moneybird/resource/external_sales_invoice'
62
62
  require 'moneybird/resource/synchronization'
63
63
  require 'moneybird/resource/tax_rate'
64
64
  require 'moneybird/resource/webhook'
@@ -70,9 +70,11 @@ require 'moneybird/traits/administration_service'
70
70
  require 'moneybird/traits/delete'
71
71
  require 'moneybird/traits/find'
72
72
  require 'moneybird/traits/find_all'
73
+ require 'moneybird/traits/mark_as_uncollectible'
73
74
  require 'moneybird/traits/save'
74
75
  require 'moneybird/traits/service'
75
76
  require 'moneybird/traits/synchronization' # Depends on synchronization resource
77
+ require 'moneybird/traits/send_invoice'
76
78
 
77
79
  ##
78
80
  # Services (all depend on traits and it's associated resource)
@@ -89,12 +91,13 @@ require 'moneybird/service/financial_mutation'
89
91
  require 'moneybird/service/identity'
90
92
  require 'moneybird/service/ledger_account'
91
93
  require 'moneybird/service/product'
92
- require 'moneybird/service/purchase_invoice'
93
94
  require 'moneybird/service/recurring_sales_invoice'
94
95
  require 'moneybird/service/sales_invoice'
96
+ require 'moneybird/service/external_sales_invoice'
95
97
  require 'moneybird/service/tax_rate'
96
98
  require 'moneybird/service/webhook'
97
99
  require 'moneybird/service/workflow'
100
+ require 'moneybird/service/payment'
98
101
 
99
102
  ##
100
103
  # Special cases
@@ -102,4 +105,4 @@ require 'moneybird/resource/administration' # Depends on services
102
105
  require 'moneybird/service/administration' # Depends on administration resource
103
106
  require 'moneybird/client'
104
107
  require 'moneybird/version'
105
- require 'moneybird/webhook'
108
+ require 'moneybird/webhook'
@@ -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
- # faraday.response :logger do |logger|
33
- # logger.filter(/(Bearer)\s(\S+)/, '\1[REMOVED]')
34
- # end
32
+
35
33
  faraday.adapter faraday_adapter
36
34
  end
37
35
  end
@@ -1,6 +1,6 @@
1
1
  module Moneybird
2
2
  module HttpError
3
- class AuthorizationRequired < StandardError
3
+ class AuthorizationRequired < Faraday::Error
4
4
  end
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Moneybird
2
2
  module HttpError
3
- class BadRequest < StandardError
3
+ class BadRequest < Faraday::Error
4
4
  end
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Moneybird
2
2
  module HttpError
3
- class Forbidden < StandardError
3
+ class Forbidden < Faraday::Error
4
4
  end
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Moneybird
2
2
  module HttpError
3
- class InternalServerError < StandardError
3
+ class InternalServerError < Faraday::Error
4
4
  end
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Moneybird
2
2
  module HttpError
3
- class MethodNotAllowed < StandardError
3
+ class MethodNotAllowed < Faraday::Error
4
4
  end
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Moneybird
2
2
  module HttpError
3
- class NotAccepted < StandardError
3
+ class NotAccepted < Faraday::Error
4
4
  end
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Moneybird
2
2
  module HttpError
3
- class NotFound < StandardError
3
+ class NotFound < Faraday::Error
4
4
  end
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Moneybird
2
2
  module HttpError
3
- class PaymentRequired < StandardError
3
+ class PaymentRequired < Faraday::Error
4
4
  end
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Moneybird
2
2
  module HttpError
3
- class TooManyRequests < StandardError
3
+ class TooManyRequests < Faraday::Error
4
4
  end
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  module Moneybird
2
2
  module HttpError
3
- class UnprocessableEntity < StandardError
3
+ class UnprocessableEntity < Faraday::Error
4
4
  end
5
5
  end
6
6
  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
@@ -16,6 +16,7 @@ module Moneybird
16
16
 
17
17
  def attributes=(attributes)
18
18
  @attributes = attributes
19
+ self.client ||= attributes[:client]
19
20
  attributes.each do |attribute, value|
20
21
  if respond_to?(writer = attribute.to_s + '=')
21
22
  send(writer, value)
@@ -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
@@ -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
@@ -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
- reference
11
+ created_at
12
+ currency
12
13
  date
14
+ details
13
15
  due_date
14
16
  entry_number
15
- state
17
+ events
16
18
  exchange_rate
17
- created_at
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
- origin
39
- paid_at
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
- details
46
- payments
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
- revenue_invoice
11
- prices_are_incl_tax
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
- origin
25
- paid_at
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
- details
32
- payments
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
@@ -1,37 +1,40 @@
1
1
  module Moneybird::Resource
2
- class PurchaseInvoice
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
- created_at
12
- currency
10
+ contact
13
11
  date
14
- details
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)
@@ -42,6 +45,11 @@ module Moneybird::Resource
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
@@ -49,9 +57,5 @@ module Moneybird::Resource
49
57
  def events=(events)
50
58
  @events ||= events.map{ |event| Moneybird::Resource::Generic::Event.build(event) }
51
59
  end
52
-
53
- def payments=(payments)
54
- @payments ||= payments.map{ |payment| Moneybird::Resource::Invoice::Payment.build(payment) }
55
- end
56
60
  end
57
61
  end
@@ -29,4 +29,9 @@ module Moneybird::Resource
29
29
  version
30
30
  )
31
31
  end
32
+
33
+ def link_booking(booking)
34
+ financial_mutation_service = Moneybird::Service::FinancialMutation.new(client, administration_id)
35
+ financial_mutation_service.link_booking(self, booking)
36
+ end
32
37
  end
@@ -14,6 +14,7 @@ module Moneybird::Resource::Invoice
14
14
  period
15
15
  price
16
16
  product_id
17
+ project_id
17
18
  row_order
18
19
  tax_rate_id
19
20
  tax_report_reference
@@ -16,6 +16,7 @@ module Moneybird::Resource::Invoice
16
16
  payment_transaction_id
17
17
  price
18
18
  price_base
19
+ transaction_identifier
19
20
  updated_at
20
21
  user_id
21
22
  )
@@ -25,9 +25,12 @@ module Moneybird::Resource
25
25
  notes
26
26
  original_sales_invoice_id
27
27
  paid_at
28
+ paused
28
29
  payment_conditions
30
+ payment_reference
29
31
  payments
30
32
  prices_are_incl_tax
33
+ public_view_code
31
34
  recurring_sales_invoice_id
32
35
  reference
33
36
  sent_at
@@ -56,6 +59,21 @@ module Moneybird::Resource
56
59
  @contact = Moneybird::Resource::Contact.build(attributes)
57
60
  end
58
61
 
62
+ def send_invoice(options = {})
63
+ invoice_service = Moneybird::Service::SalesInvoice.new(client, administration_id)
64
+ invoice_service.send_invoice(self, options)
65
+ end
66
+
67
+ def mark_as_uncollectible(options = {})
68
+ invoice_service = Moneybird::Service::SalesInvoice.new(client, administration_id)
69
+ invoice_service.mark_as_uncollectible(self, options)
70
+ end
71
+
72
+ def payments=(payments)
73
+ payment_data = payments.map{ |payment| Moneybird::Resource::Invoice::Payment.build(payment) }
74
+ @payments = Moneybird::Service::Payment.new(client, administration_id, preloaded_data: payment_data, invoice_id: id)
75
+ end
76
+
59
77
  def details=(line_items)
60
78
  @details = line_items.map{ |line_item| Moneybird::Resource::Invoice::Details.build(line_item) }
61
79
  end
@@ -65,4 +83,3 @@ module Moneybird::Resource
65
83
  end
66
84
  end
67
85
  end
68
-
@@ -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
- '/administrations'
24
+ 'administrations'
24
25
  end
25
26
  end
26
27
  end
@@ -1,5 +1,5 @@
1
1
  module Moneybird::Service
2
- class PurchaseInvoice
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::PurchaseInvoice
13
+ Moneybird::Resource::ExternalSalesInvoice
14
14
  end
15
15
 
16
16
  def path
17
- "#{administration_id}/documents/purchase_invoices"
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,6 +7,8 @@ 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::SendInvoice
11
+ include Moneybird::Traits::MarkAsUncollectible
10
12
 
11
13
  private
12
14
 
@@ -18,4 +20,4 @@ module Moneybird::Service
18
20
  "#{administration_id}/sales_invoices"
19
21
  end
20
22
  end
21
- end
23
+ 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
- each_page(params).each do |resources|
18
- resources.each do |resource|
19
- yield resource
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
@@ -1,10 +1,6 @@
1
1
  module Moneybird
2
2
  module Traits
3
3
  module Save
4
- def resource_path(resource)
5
- [path, resource.path].join('')
6
- end
7
-
8
4
  def save(resource)
9
5
  response =
10
6
  if resource.persisted?
@@ -0,0 +1,15 @@
1
+ module Moneybird
2
+ module Traits
3
+ module SendInvoice
4
+ def send_invoice_path(resource)
5
+ [path, resource.path, '/send_invoice'].join('')
6
+ end
7
+
8
+ def send_invoice(resource, options = {})
9
+ response = client.patch(send_invoice_path(resource), options.to_json)
10
+ resource.attributes = response
11
+ resource
12
+ end
13
+ end
14
+ end
15
+ end
@@ -4,6 +4,10 @@ module Moneybird
4
4
  def build(attributes)
5
5
  resource_class.build attributes.merge(client: client)
6
6
  end
7
+
8
+ def resource_path(resource)
9
+ [path, resource.path].join('')
10
+ end
7
11
  end
8
12
  end
9
13
  end
@@ -1,3 +1,3 @@
1
1
  module Moneybird
2
- VERSION = "0.9.4"
2
+ VERSION = "0.9.9"
3
3
  end
@@ -24,8 +24,8 @@ 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", "~> 1.11"
28
- spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "bundler", [">= 1.11", "< 3.0"]
28
+ spec.add_development_dependency "rake", "~> 13.0"
29
29
  spec.add_development_dependency "codeclimate-test-reporter"
30
30
  spec.add_development_dependency "minitest"
31
31
  spec.add_development_dependency "webmock", "~> 3.1"
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.9.4
4
+ version: 0.9.9
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: 2018-01-25 00:00:00.000000000 Z
11
+ date: 2020-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -70,30 +70,36 @@ 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: '10.0'
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: '10.0'
102
+ version: '13.0'
97
103
  - !ruby/object:Gem::Dependency
98
104
  name: codeclimate-test-reporter
99
105
  requirement: !ruby/object:Gem::Requirement
@@ -144,6 +150,8 @@ 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"
@@ -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
@@ -206,12 +214,13 @@ files:
206
214
  - lib/moneybird/service/documents/receipt.rb
207
215
  - lib/moneybird/service/documents/typeless_document.rb
208
216
  - lib/moneybird/service/estimate.rb
217
+ - lib/moneybird/service/external_sales_invoice.rb
209
218
  - lib/moneybird/service/financial_account.rb
210
219
  - lib/moneybird/service/financial_mutation.rb
211
220
  - lib/moneybird/service/identity.rb
212
221
  - lib/moneybird/service/ledger_account.rb
222
+ - lib/moneybird/service/payment.rb
213
223
  - lib/moneybird/service/product.rb
214
- - lib/moneybird/service/purchase_invoice.rb
215
224
  - lib/moneybird/service/recurring_sales_invoice.rb
216
225
  - lib/moneybird/service/sales_invoice.rb
217
226
  - lib/moneybird/service/tax_rate.rb
@@ -221,7 +230,9 @@ files:
221
230
  - lib/moneybird/traits/delete.rb
222
231
  - lib/moneybird/traits/find.rb
223
232
  - lib/moneybird/traits/find_all.rb
233
+ - lib/moneybird/traits/mark_as_uncollectible.rb
224
234
  - lib/moneybird/traits/save.rb
235
+ - lib/moneybird/traits/send_invoice.rb
225
236
  - lib/moneybird/traits/service.rb
226
237
  - lib/moneybird/traits/synchronization.rb
227
238
  - lib/moneybird/version.rb
@@ -246,8 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
246
257
  - !ruby/object:Gem::Version
247
258
  version: '0'
248
259
  requirements: []
249
- rubyforge_project:
250
- rubygems_version: 2.6.14
260
+ rubygems_version: 3.0.3
251
261
  signing_key:
252
262
  specification_version: 4
253
263
  summary: Library to interface with Moneybird API