moneybird 0.4.0 → 0.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ec58b660402eefbeb290851cfff6c05e1c530450
4
- data.tar.gz: c3181e0c093d371ec5514c05b1dcb942a7491b5d
3
+ metadata.gz: 780e8a422f459674c1fc1cb8bf87321ead351b25
4
+ data.tar.gz: 9c221b4dd29c65fef045d3cf0bb2bbc9bec28d8f
5
5
  SHA512:
6
- metadata.gz: fa6dbfc0163ba772bde29b234a85b3b6d7a980dc2b2e633678900323edac711835cd49ed2897bb584a9819489e15ee406996d31390e28b23ab5605e56d91fa65
7
- data.tar.gz: 9078757aeaa5c8d6d405015e253ba5b4713568ed65b7c3fe7649ab6b4d5c820538988e1dc5120b256efdb3ebe431199b5d323ee15680625d4069a36153ed31b6
6
+ metadata.gz: 4241fa82ab6679c464c1ab06eb9146ad30b2776ec0d145aad7026d8d8a318700fc24b1e0e0525f87ceca3b1cc6d8b1576f2feee0cad631473f509c97b4d83e23
7
+ data.tar.gz: 1c6ac8b29bd8c2835d564d8ffde48b127efa23de615bbfcfdb886cedb0452b171d22b266cf3aff0ab23f0eea16e6ab4b6563614e556af56008dcba361fd2bc1b
data/README.md CHANGED
@@ -2,6 +2,8 @@
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
 
5
+ The library is modelled after http://developer.moneybird.com/ Any inconsistencies or errors in the documentation may also be present in the library.
6
+
5
7
  Feel free to file Pull Requests
6
8
 
7
9
  ## Installation
@@ -23,8 +25,29 @@ Or install it yourself as:
23
25
  ## Usage
24
26
 
25
27
  ```ruby
28
+ # Client uses bearer token (see: http://developer.moneybird.com/authentication/)
29
+ Moneybird::Client.new('fe3f7f9e239e7d925f9caf695028e60fd3e5c2085f7aebb983cea731dea6b44f')
30
+
31
+ # List administrations
32
+ administrations = client.administrations
33
+
34
+ administration = administrations.first
35
+
36
+ # List invoices
37
+ administration.sales_invoices.all
38
+
39
+ # List contacts
40
+ administration.contacts.all
41
+
42
+ # Create contact
43
+ administrations.contacts.create(company_name: 'ACME', firstname: 'Foo', lastname: 'Bar')
44
+
45
+ # Update contact
46
+ contact = administration.contacts.all.first
47
+ contact.company_name = 'Something new'
48
+ administrations.contacts.save(contact)
26
49
 
27
- Moneybird::Client.new('fe3f7f9e239e7d925f9caf695028e60fd3e5c2085f7aebb983cea731dea6b44f').administrations.first.sales_invoices.first
50
+ # Works similarly with other resources
28
51
 
29
52
  ```
30
53
 
data/lib/moneybird.rb CHANGED
@@ -8,39 +8,38 @@ module Moneybird
8
8
  end
9
9
 
10
10
  require "moneybird/traits/administration_service"
11
+ require "moneybird/traits/find"
11
12
  require "moneybird/traits/find_all"
12
13
  require "moneybird/traits/service"
13
14
  require "moneybird/traits/save"
15
+ require "moneybird/traits/delete"
16
+ require "moneybird/client"
17
+ require "moneybird/resource"
18
+ require "moneybird/resource/invoice/details"
19
+ require "moneybird/webhook"
14
20
 
15
- require "moneybird/service/administration"
16
- require "moneybird/service/contact"
17
- require "moneybird/service/document_style"
18
- require "moneybird/service/estimate"
19
- require "moneybird/service/financial_account"
20
- require "moneybird/service/financial_mutation"
21
- require "moneybird/service/identity"
22
- require "moneybird/service/product"
23
- require "moneybird/service/recurring_sales_invoice"
24
- require "moneybird/service/sales_invoice"
25
- require "moneybird/service/tax_rate"
26
- require "moneybird/service/webhook"
27
- require "moneybird/service/workflow"
21
+ resources = %w(
22
+ administration
23
+ contact
24
+ document_style
25
+ estimate
26
+ financial_account
27
+ financial_mutation
28
+ identity
29
+ ledger_account
30
+ product
31
+ recurring_sales_invoice
32
+ sales_invoice
33
+ tax_rate
34
+ webhook
35
+ workflow
36
+ )
37
+
38
+ resources.each do |resource|
39
+ require "moneybird/service/#{resource}"
40
+ require "moneybird/resource/#{resource}"
41
+ end
28
42
 
29
- require "moneybird/client"
30
43
 
31
- require "moneybird/resource"
32
- require "moneybird/resource/administration"
33
- require "moneybird/resource/contact"
34
- require "moneybird/resource/document_style"
35
- require "moneybird/resource/estimate"
36
- require "moneybird/resource/financial_account"
37
- require "moneybird/resource/financial_mutation"
38
- require "moneybird/resource/identity"
39
- require "moneybird/resource/product"
40
- require "moneybird/resource/recurring_sales_invoice"
41
- require "moneybird/resource/sales_invoice"
42
- require "moneybird/resource/tax_rate"
43
- require "moneybird/resource/webhook"
44
- require "moneybird/resource/workflow"
45
44
 
46
45
  require "moneybird/version"
@@ -16,6 +16,7 @@ module Moneybird::Resource
16
16
  country
17
17
  email
18
18
  phone
19
+ send_method
19
20
  delivery_method
20
21
  customer_id
21
22
  tax_number
@@ -40,5 +40,13 @@ module Moneybird::Resource
40
40
  notes
41
41
  attachments
42
42
  )
43
+
44
+ def contact=(attributes)
45
+ @contact ||= Moneybird::Resource::Contact.build(attributes)
46
+ end
47
+
48
+ def details=(line_items)
49
+ @details ||= line_items.map{ |line_item| Moneybird::Resource::Invoice::Details.build(line_item) }
50
+ end
43
51
  end
44
52
  end
@@ -0,0 +1,25 @@
1
+ module Moneybird::Resource::Invoice
2
+ class Details
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ tax_rate_id
8
+ ledger_account_id
9
+ amount
10
+ price
11
+ description
12
+ row_order
13
+ total_price_excl_tax_with_discount
14
+ total_price_excl_tax_with_discount_base
15
+ tax_report_reference
16
+ id
17
+ created_at
18
+ updated_at
19
+ )
20
+
21
+ def contact=(attributes)
22
+ @contact = Moneybird::Resource::Contact.build(attributes)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,16 @@
1
+ module Moneybird::Resource
2
+ class LedgerAccount
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ id
8
+ name
9
+ account_type
10
+ account_id
11
+ parent_id
12
+ created_at
13
+ updated_at
14
+ )
15
+ end
16
+ end
@@ -34,6 +34,14 @@ module Moneybird::Resource
34
34
  notes
35
35
  attachments
36
36
  )
37
+
38
+ def contact=(attributes)
39
+ @contact ||= Moneybird::Resource::Contact.build(attributes)
40
+ end
41
+
42
+ def details=(line_items)
43
+ @details ||= line_items.map{ |line_item| Moneybird::Resource::Invoice::Details.build(line_item) }
44
+ end
37
45
  end
38
46
  end
39
47
 
@@ -38,6 +38,14 @@ module Moneybird::Resource
38
38
  url
39
39
  workflow_id
40
40
  )
41
+
42
+ def contact=(attributes)
43
+ @contact ||= Moneybird::Resource::Contact.build(attributes)
44
+ end
45
+
46
+ def details=(line_items)
47
+ @details ||= line_items.map{ |line_item| Moneybird::Resource::Invoice::Details.build(line_item) }
48
+ end
41
49
  end
42
50
  end
43
51
 
@@ -13,6 +13,10 @@ module Moneybird::Service
13
13
  Moneybird::Resource::Administration
14
14
  end
15
15
 
16
+ def find(id)
17
+ all.find{ |administration| administration.id.to_i == id }
18
+ end
19
+
16
20
  def path
17
21
  '/administrations'
18
22
  end
@@ -2,8 +2,10 @@ module Moneybird::Service
2
2
  class Contact
3
3
  include Moneybird::Traits::AdministrationService
4
4
  include Moneybird::Traits::Service
5
+ include Moneybird::Traits::Find
5
6
  include Moneybird::Traits::FindAll
6
7
  include Moneybird::Traits::Save
8
+ include Moneybird::Traits::Delete
7
9
 
8
10
  def resource_class
9
11
  Moneybird::Resource::Contact
@@ -12,5 +14,11 @@ module Moneybird::Service
12
14
  def path
13
15
  "#{administration_id}/contacts"
14
16
  end
17
+
18
+ def find_by_customer_id(customer_id)
19
+ result = client.get("#{path}/customer_id/#{customer_id}")
20
+
21
+ build(JSON.parse(result.body))
22
+ end
15
23
  end
16
24
  end
@@ -2,8 +2,10 @@ module Moneybird::Service
2
2
  class Estimate
3
3
  include Moneybird::Traits::AdministrationService
4
4
  include Moneybird::Traits::Service
5
+ include Moneybird::Traits::Find
5
6
  include Moneybird::Traits::FindAll
6
7
  include Moneybird::Traits::Save
8
+ include Moneybird::Traits::Delete
7
9
 
8
10
  def resource_class
9
11
  Moneybird::Resource::Estimate
@@ -2,8 +2,10 @@ module Moneybird::Service
2
2
  class Identity
3
3
  include Moneybird::Traits::AdministrationService
4
4
  include Moneybird::Traits::Service
5
+ include Moneybird::Traits::Find
5
6
  include Moneybird::Traits::FindAll
6
7
  include Moneybird::Traits::Save
8
+ include Moneybird::Traits::Delete
7
9
 
8
10
  def resource_class
9
11
  Moneybird::Resource::Identity
@@ -0,0 +1,18 @@
1
+ module Moneybird::Service
2
+ class LedgerAccount
3
+ include Moneybird::Traits::AdministrationService
4
+ include Moneybird::Traits::Service
5
+ include Moneybird::Traits::Find
6
+ include Moneybird::Traits::FindAll
7
+ include Moneybird::Traits::Save
8
+ include Moneybird::Traits::Delete
9
+
10
+ def resource_class
11
+ Moneybird::Resource::LedgerAccount
12
+ end
13
+
14
+ def path
15
+ "#{administration_id}/ledger_accounts"
16
+ end
17
+ end
18
+ end
@@ -2,8 +2,10 @@ module Moneybird::Service
2
2
  class Product
3
3
  include Moneybird::Traits::AdministrationService
4
4
  include Moneybird::Traits::Service
5
+ include Moneybird::Traits::Find
5
6
  include Moneybird::Traits::FindAll
6
7
  include Moneybird::Traits::Save
8
+ include Moneybird::Traits::Delete
7
9
 
8
10
  def resource_class
9
11
  Moneybird::Resource::Product
@@ -2,8 +2,10 @@ module Moneybird::Service
2
2
  class RecurringSalesInvoice
3
3
  include Moneybird::Traits::AdministrationService
4
4
  include Moneybird::Traits::Service
5
+ include Moneybird::Traits::Find
5
6
  include Moneybird::Traits::FindAll
6
7
  include Moneybird::Traits::Save
8
+ include Moneybird::Traits::Delete
7
9
 
8
10
  def resource_class
9
11
  Moneybird::Resource::RecurringSalesInvoice
@@ -2,8 +2,10 @@ module Moneybird::Service
2
2
  class SalesInvoice
3
3
  include Moneybird::Traits::AdministrationService
4
4
  include Moneybird::Traits::Service
5
+ include Moneybird::Traits::Find
5
6
  include Moneybird::Traits::FindAll
6
7
  include Moneybird::Traits::Save
8
+ include Moneybird::Traits::Delete
7
9
 
8
10
  def resource_class
9
11
  Moneybird::Resource::SalesInvoice
@@ -3,6 +3,7 @@ module Moneybird::Service
3
3
  include Moneybird::Traits::AdministrationService
4
4
  include Moneybird::Traits::Service
5
5
  include Moneybird::Traits::FindAll
6
+ include Moneybird::Traits::Delete
6
7
 
7
8
  def resource_class
8
9
  Moneybird::Resource::Webhook
@@ -0,0 +1,16 @@
1
+ module Moneybird
2
+ module Traits
3
+ module Delete
4
+ DELETE_SUCCESS_CODE = 200
5
+
6
+ def delete(resource)
7
+ client.delete(resource_path(resource))
8
+ if client._last_response.code.to_i != DELETE_SUCCESS_CODE
9
+ resource.errors = client._last_response.body
10
+ return false
11
+ end
12
+ true
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,11 @@
1
+ module Moneybird
2
+ module Traits
3
+ module Find
4
+ def find(id)
5
+ result = client.get("#{path}/#{id}")
6
+
7
+ build(JSON.parse(result.body))
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Moneybird
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -0,0 +1,27 @@
1
+ module Moneybird
2
+ class Webhook
3
+ include Moneybird::Resource
4
+ extend Moneybird::Resource::ClassMethods
5
+
6
+ has_attributes %i(
7
+ administration_id
8
+ webhook_id
9
+ entity_type
10
+ entity_id
11
+ state
12
+ entity
13
+ )
14
+
15
+ def build_entity
16
+ entity_resource_class.new(entity)
17
+ end
18
+
19
+ def entity_resource_class
20
+ Object.const_get "Moneybird::Resource::#{entity_type}"
21
+ end
22
+
23
+ def self.from_json(payload)
24
+ build(JSON.parse(payload))
25
+ end
26
+ end
27
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moneybird
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maarten van Vliet
@@ -66,6 +66,8 @@ files:
66
66
  - lib/moneybird/resource/financial_account.rb
67
67
  - lib/moneybird/resource/financial_mutation.rb
68
68
  - lib/moneybird/resource/identity.rb
69
+ - lib/moneybird/resource/invoice/details.rb
70
+ - lib/moneybird/resource/ledger_account.rb
69
71
  - lib/moneybird/resource/product.rb
70
72
  - lib/moneybird/resource/recurring_sales_invoice.rb
71
73
  - lib/moneybird/resource/sales_invoice.rb
@@ -79,6 +81,7 @@ files:
79
81
  - lib/moneybird/service/financial_account.rb
80
82
  - lib/moneybird/service/financial_mutation.rb
81
83
  - lib/moneybird/service/identity.rb
84
+ - lib/moneybird/service/ledger_account.rb
82
85
  - lib/moneybird/service/product.rb
83
86
  - lib/moneybird/service/recurring_sales_invoice.rb
84
87
  - lib/moneybird/service/sales_invoice.rb
@@ -86,10 +89,13 @@ files:
86
89
  - lib/moneybird/service/webhook.rb
87
90
  - lib/moneybird/service/workflow.rb
88
91
  - lib/moneybird/traits/administration_service.rb
92
+ - lib/moneybird/traits/delete.rb
93
+ - lib/moneybird/traits/find.rb
89
94
  - lib/moneybird/traits/find_all.rb
90
95
  - lib/moneybird/traits/save.rb
91
96
  - lib/moneybird/traits/service.rb
92
97
  - lib/moneybird/version.rb
98
+ - lib/moneybird/webhook.rb
93
99
  - moneybird.gemspec
94
100
  homepage: https://github.com/maartenvanvliet/moneybird
95
101
  licenses: