pina 0.14.4 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b5e0ebb95c6fdb101e7471bd548d73f65213ebf63be475d733c9b0308e2cf8cc
4
- data.tar.gz: 7a68501cc01a30114798226138ed770af8c0f6ae9cd748148030689ed0cf019a
3
+ metadata.gz: da8840d1f9f28b6953ed69d47a55c381e965e1b802e26d19efd54471d135897c
4
+ data.tar.gz: e862eb284901244fd5434ea8c5690029c6f3ca4ef71fdbeaef617d33632c4cac
5
5
  SHA512:
6
- metadata.gz: 0c32261bfcb3c5f1e6b059c27264335412e0b14957b023d106feacc9cc037df3f9c76ff6d0924c95180bdaa2b6288d703b2bb8507f76a960b1e63e9dbece9486
7
- data.tar.gz: 860221f8ba713fcc4f7d37f89ccba3701f1de10a2bf05dad1c102de62694c1bee4e525c07acf0fd71925dce822f0ad9c077cf568c3943cff0e8a6b0ca2f57fc5
6
+ metadata.gz: b6ee26957a842abb416e7939e694b516b02d42aed5d6556029a81945331abe5e0759fa935ae89caca832f1d1ec51b20da9d1e22e631bbd26799bb39217e90177
7
+ data.tar.gz: dd29354cc030a68320c591abb062e196b58543fe3b3d26c6f2019b2fb1801aac2413e9528e9f44828db1ffcc1e4879523f12ba4db0bc0322512e88922314bee8
@@ -9,6 +9,7 @@ require 'pina/utils/pagination'
9
9
  require 'pina/models/errors'
10
10
  require 'pina/models/error'
11
11
  require 'pina/collections/base'
12
+ require 'pina/resource'
12
13
 
13
14
  require 'pina/contact'
14
15
  require 'pina/sales_invoice'
@@ -47,7 +48,7 @@ module Pina
47
48
  end
48
49
 
49
50
  class Configuration
50
- attr_accessor :api_token, :email, :api_host, :use_ssl, :tenant
51
+ attr_accessor :api_token, :email, :api_host, :use_ssl, :tenant, :default_per_page
51
52
  attr_reader :api_version
52
53
  attr_writer :base_url
53
54
 
@@ -60,6 +61,7 @@ module Pina
60
61
  @email = DEFAULT_EMAIL
61
62
  @tenant = DEFAULT_TENANT
62
63
  @api_host = API_HOST
64
+ @default_per_page = nil
63
65
  @use_ssl = true
64
66
  @base_url = nil
65
67
  end
@@ -5,6 +5,10 @@ require 'pina/collections/contact'
5
5
 
6
6
  module Pina
7
7
  class Contact
8
+ extend Pina::Resource
9
+
10
+ resource_methods :all, :where, :find, :create, :update
11
+
8
12
  class << self
9
13
  def new(params = nil)
10
14
  Pina::Models::Contact.new(params)
@@ -17,54 +21,6 @@ module Pina
17
21
 
18
22
  response
19
23
  end
20
-
21
- def where(hash, _page = nil)
22
- response = Pina::RestAdapter.get(:contacts, hash)
23
-
24
- return Pina::Collections::Contact.new(attributes(response)) if
25
- response.ok?
26
-
27
- response
28
- end
29
-
30
- def find(id)
31
- response = Pina::RestAdapter.get(:contacts, id)
32
-
33
- return Pina::Models::Contact.new(attributes(response)) if response.ok?
34
-
35
- response
36
- end
37
-
38
- def all(page = nil)
39
- response = Pina::RestAdapter.get(:contacts, page)
40
-
41
- return Pina::Collections::Contact.new(attributes(response)) if
42
- response.ok?
43
-
44
- response
45
- end
46
-
47
- def create(contact)
48
- response = Pina::RestAdapter.post(:contacts, contact)
49
-
50
- return Pina::Models::Contact.new(attributes(response)) if response.ok?
51
-
52
- response
53
- end
54
-
55
- def update(id, contact)
56
- response = Pina::RestAdapter.patch(:contacts, id, contact)
57
-
58
- return Pina::Models::Contact.new(attributes(response)) if response.ok?
59
-
60
- response
61
- end
62
-
63
- private
64
-
65
- def attributes(response)
66
- response.to_hash.merge(response: response)
67
- end
68
24
  end
69
25
  end
70
26
  end
@@ -3,21 +3,8 @@ require 'pina/collections/document_pairing'
3
3
 
4
4
  module Pina
5
5
  class DocumentPairing
6
- class << self
7
- def all(page = nil)
8
- response = Pina::RestAdapter.get(:document_pairings, page)
6
+ extend Pina::Resource
9
7
 
10
- return Pina::Collections::DocumentPairing.new(attributes(response)) if
11
- response.ok?
12
-
13
- response
14
- end
15
-
16
- private
17
-
18
- def attributes(response)
19
- response.to_hash.merge(response: response)
20
- end
21
- end
8
+ resource_methods :all
22
9
  end
23
10
  end
@@ -3,61 +3,14 @@ require 'pina/collections/my_bank_account'
3
3
 
4
4
  module Pina
5
5
  class MyBankAccount
6
+ extend Pina::Resource
7
+
8
+ resource_methods :all, :where, :find, :create, :update
9
+
6
10
  class << self
7
11
  def new(params = nil)
8
12
  Pina::Models::MyBankAccount.new(params)
9
13
  end
10
-
11
- def find(id)
12
- response = Pina::RestAdapter.get(:my_bank_accounts, id)
13
-
14
- return Pina::Models::MyBankAccount.new(attributes(response)) if
15
- response.ok?
16
-
17
- response
18
- end
19
-
20
- def all(page = nil)
21
- response = Pina::RestAdapter.get(:my_bank_accounts, page)
22
-
23
- return Pina::Collections::MyBankAccount.new(attributes(response)) if
24
- response.ok?
25
-
26
- response
27
- end
28
-
29
- def where(hash, _page = nil)
30
- response = Pina::RestAdapter.get(:my_bank_accounts, hash)
31
-
32
- return Pina::Collections::MyBankAccount.new(attributes(response)) if
33
- response.ok?
34
-
35
- response
36
- end
37
-
38
- def create(my_bank_account)
39
- response = Pina::RestAdapter.post(:my_bank_accounts, my_bank_account)
40
-
41
- return Pina::Models::MyBankAccount.new(attributes(response)) if
42
- response.ok?
43
-
44
- response
45
- end
46
-
47
- def update(id, my_bank_account)
48
- response = Pina::RestAdapter.patch(:my_bank_accounts, id, my_bank_account)
49
-
50
- return Pina::Models::MyBankAccount.new(attributes(response)) if
51
- response.ok?
52
-
53
- response
54
- end
55
-
56
- private
57
-
58
- def attributes(response)
59
- response.to_hash.merge(response: response)
60
- end
61
14
  end
62
15
  end
63
16
  end
@@ -3,30 +3,8 @@ require 'pina/collections/petty_cash_disburstment'
3
3
 
4
4
  module Pina
5
5
  class PettyCashDisburstment
6
- class << self
7
- def find(gid)
8
- response = Pina::RestAdapter.get(:petty_cash_disburstments, gid)
6
+ extend Pina::Resource
9
7
 
10
- return Pina::Models::PettyCashDisburstment.new(attributes(response)) if
11
- response.ok?
12
-
13
- response
14
- end
15
-
16
- def all
17
- response = Pina::RestAdapter.get(:petty_cash_disburstments)
18
-
19
- return Pina::Collections::PettyCashDisburstment.new(attributes(response)) if
20
- response.ok?
21
-
22
- response
23
- end
24
-
25
- private
26
-
27
- def attributes(response)
28
- response.to_hash.merge(response: response)
29
- end
30
- end
8
+ resource_methods :all, :find
31
9
  end
32
10
  end
@@ -3,30 +3,8 @@ require 'pina/collections/petty_cash_income'
3
3
 
4
4
  module Pina
5
5
  class PettyCashIncome
6
- class << self
7
- def find(gid)
8
- response = Pina::RestAdapter.get(:petty_cash_incomes, gid)
6
+ extend Pina::Resource
9
7
 
10
- return Pina::Models::PettyCashIncome.new(attributes(response)) if
11
- response.ok?
12
-
13
- response
14
- end
15
-
16
- def all
17
- response = Pina::RestAdapter.get(:petty_cash_incomes)
18
-
19
- return Pina::Collections::PettyCashIncome.new(attributes(response)) if
20
- response.ok?
21
-
22
- response
23
- end
24
-
25
- private
26
-
27
- def attributes(response)
28
- response.to_hash.merge(response: response)
29
- end
30
- end
8
+ resource_methods :all, :find
31
9
  end
32
10
  end
@@ -3,52 +3,14 @@ require 'pina/collections/processed_document'
3
3
 
4
4
  module Pina
5
5
  class ProcessedDocument
6
+ extend Pina::Resource
7
+
8
+ resource_methods :all, :where, :find, :delete
9
+
6
10
  class << self
7
11
  def new(params = nil)
8
12
  Pina::Models::ProcessedDocument.new(params)
9
13
  end
10
-
11
- def find(id)
12
- response = Pina::RestAdapter.get(:processed_documents, id)
13
-
14
- return Pina::Models::ProcessedDocument.new(attributes(response)) if
15
- response.ok?
16
-
17
- response
18
- end
19
-
20
- def where(hash, _page = nil)
21
- response = Pina::RestAdapter.get(:processed_documents, hash)
22
-
23
- return Pina::Collections::ProcessedDocument.new(attributes(response)) if
24
- response.ok?
25
-
26
- response
27
- end
28
-
29
- def all(page = nil)
30
- response = Pina::RestAdapter.get(:processed_documents, page)
31
-
32
- return Pina::Collections::ProcessedDocument.new(attributes(response)) if
33
- response.ok?
34
-
35
- response
36
- end
37
-
38
- def delete(id)
39
- response = Pina::RestAdapter.delete(:processed_documents, id)
40
-
41
- return Pina::Models::ProcessedDocument.new(attributes(response)) if
42
- response.ok?
43
-
44
- response
45
- end
46
-
47
- private
48
-
49
- def attributes(response)
50
- response.to_hash.merge(response: response)
51
- end
52
14
  end
53
15
  end
54
16
  end
@@ -4,61 +4,14 @@ require 'pina/collections/purchase_invoice'
4
4
 
5
5
  module Pina
6
6
  class PurchaseInvoice
7
+ extend Pina::Resource
8
+
9
+ resource_methods :all, :where, :find, :create, :update
10
+
7
11
  class << self
8
12
  def new(params = nil)
9
13
  Pina::Models::PurchaseInvoice.new(params)
10
14
  end
11
-
12
- def find(id)
13
- response = Pina::RestAdapter.get(:purchase_invoices, id)
14
-
15
- return Pina::Models::PurchaseInvoice.new(attributes(response)) if
16
- response.ok?
17
-
18
- response
19
- end
20
-
21
- def all(page = nil)
22
- response = Pina::RestAdapter.get(:purchase_invoices, page)
23
-
24
- return Pina::Collections::PurchaseInvoice.new(attributes(response)) if
25
- response.ok?
26
-
27
- response
28
- end
29
-
30
- def where(hash, _page = nil)
31
- response = Pina::RestAdapter.get(:purchase_invoices, hash)
32
-
33
- return Pina::Collections::PurchaseInvoice.new(attributes(response)) if
34
- response.ok?
35
-
36
- response
37
- end
38
-
39
- def create(purchase_invoice)
40
- response = Pina::RestAdapter.post(:purchase_invoices, purchase_invoice)
41
-
42
- return Pina::Models::PurchaseInvoice.new(attributes(response)) if
43
- response.ok?
44
-
45
- response
46
- end
47
-
48
- def update(id, purchase_invoice)
49
- response = Pina::RestAdapter.patch(:purchase_invoices, id, purchase_invoice)
50
-
51
- return Pina::Models::PurchaseInvoice.new(attributes(response)) if
52
- response.ok?
53
-
54
- response
55
- end
56
-
57
- private
58
-
59
- def attributes(response)
60
- response.to_hash.merge(response: response)
61
- end
62
15
  end
63
16
  end
64
17
  end
@@ -3,43 +3,14 @@ require 'pina/collections/receivable'
3
3
 
4
4
  module Pina
5
5
  class Receivable
6
+ extend Pina::Resource
7
+
8
+ resource_methods :all, :where, :find
9
+
6
10
  class << self
7
11
  def new(params = nil)
8
12
  Pina::Models::Receivable.new(params)
9
13
  end
10
-
11
- def find(id)
12
- response = Pina::RestAdapter.get(:receivables, id)
13
-
14
- return Pina::Models::Receivable.new(attributes(response)) if
15
- response.ok?
16
-
17
- response
18
- end
19
-
20
- def where(hash, _page = nil)
21
- response = Pina::RestAdapter.get(:receivables, hash)
22
-
23
- return Pina::Collections::Receivable.new(attributes(response)) if
24
- response.ok?
25
-
26
- response
27
- end
28
-
29
- def all(page = nil)
30
- response = Pina::RestAdapter.get(:receivables, page)
31
-
32
- return Pina::Collections::Receivable.new(attributes(response)) if
33
- response.ok?
34
-
35
- response
36
- end
37
-
38
- private
39
-
40
- def attributes(response)
41
- response.to_hash.merge(response: response)
42
- end
43
14
  end
44
15
  end
45
16
  end
@@ -0,0 +1,104 @@
1
+ module Pina
2
+ module Resource
3
+ def paginate(options = {})
4
+ @per_page = options.fetch(:per_page)
5
+ end
6
+
7
+ def resource_methods(*methods)
8
+ methods.each do |method|
9
+ next unless method
10
+
11
+ method_name = "define_#{method}".to_sym
12
+ next unless respond_to?(method_name, true)
13
+
14
+ send(method_name)
15
+ end
16
+ end
17
+
18
+ def per_page
19
+ @per_page || ::Pina.configuration.default_per_page
20
+ end
21
+
22
+ private
23
+
24
+ def define_where
25
+ define_all unless respond_to?(:all)
26
+
27
+ singleton_class.class_eval do
28
+ alias_method :where, :all
29
+ end
30
+ end
31
+
32
+ def define_all
33
+ define_singleton_method(:all) do |params = {}|
34
+ params[:per_page] = per_page if per_page
35
+
36
+ response = Pina::RestAdapter.get(resource_path, params)
37
+
38
+ return collection.new(attributes(response)) if response.ok?
39
+
40
+ response
41
+ end
42
+ end
43
+
44
+ def define_find
45
+ define_singleton_method(:find) do |id|
46
+ response = Pina::RestAdapter.get(resource_path, id)
47
+
48
+ return model.new(attributes(response)) if response.ok?
49
+
50
+ response
51
+ end
52
+ end
53
+
54
+ def define_create
55
+ define_singleton_method(:create) do |entity|
56
+ response = Pina::RestAdapter.post(resource_path, entity)
57
+
58
+ return model.new(attributes(response)) if response.ok?
59
+
60
+ response
61
+ end
62
+ end
63
+
64
+ def define_update
65
+ define_singleton_method(:update) do |id, entity|
66
+ response = Pina::RestAdapter.patch(resource_path, id, entity)
67
+
68
+ return model.new(attributes(response)) if response.ok?
69
+
70
+ response
71
+ end
72
+ end
73
+
74
+ def define_delete
75
+ define_singleton_method(:delete) do |id|
76
+ response = Pina::RestAdapter.delete(resource_path, id)
77
+
78
+ return model.new(attributes(response)) if response.ok?
79
+
80
+ response
81
+ end
82
+ end
83
+
84
+ def resource_name
85
+ name.demodulize
86
+ end
87
+
88
+ def resource_path
89
+ resource_name.underscore.pluralize
90
+ end
91
+
92
+ def collection
93
+ Object.const_get("Pina::Collections::#{resource_name}")
94
+ end
95
+
96
+ def model
97
+ Object.const_get("Pina::Models::#{resource_name}")
98
+ end
99
+
100
+ def attributes(response)
101
+ response.to_hash.merge(response: response)
102
+ end
103
+ end
104
+ end
@@ -4,61 +4,14 @@ require 'pina/collections/sales_invoice'
4
4
 
5
5
  module Pina
6
6
  class SalesInvoice
7
+ extend Pina::Resource
8
+
9
+ resource_methods :all, :where, :find, :create, :update
10
+
7
11
  class << self
8
12
  def new(params = nil)
9
13
  Pina::Models::SalesInvoice.new(params)
10
14
  end
11
-
12
- def find(id)
13
- response = Pina::RestAdapter.get(:sales_invoices, id)
14
-
15
- return Pina::Models::SalesInvoice.new(attributes(response)) if
16
- response.ok?
17
-
18
- response
19
- end
20
-
21
- def all(page = nil)
22
- response = Pina::RestAdapter.get(:sales_invoices, page)
23
-
24
- return Pina::Collections::SalesInvoice.new(attributes(response)) if
25
- response.ok?
26
-
27
- response
28
- end
29
-
30
- def where(hash, _page = nil)
31
- response = Pina::RestAdapter.get(:sales_invoices, hash)
32
-
33
- return Pina::Collections::SalesInvoice.new(attributes(response)) if
34
- response.ok?
35
-
36
- response
37
- end
38
-
39
- def create(sales_invoice)
40
- response = Pina::RestAdapter.post(:sales_invoices, sales_invoice)
41
-
42
- return Pina::Models::SalesInvoice.new(attributes(response)) if
43
- response.ok?
44
-
45
- response
46
- end
47
-
48
- def update(id, sales_invoice)
49
- response = Pina::RestAdapter.patch(:sales_invoices, id, sales_invoice)
50
-
51
- return Pina::Models::SalesInvoice.new(attributes(response)) if
52
- response.ok?
53
-
54
- response
55
- end
56
-
57
- private
58
-
59
- def attributes(response)
60
- response.to_hash.merge(response: response)
61
- end
62
15
  end
63
16
  end
64
17
  end
@@ -4,43 +4,14 @@ require 'pina/collections/sales_order'
4
4
 
5
5
  module Pina
6
6
  class SalesOrder
7
+ extend Pina::Resource
8
+
9
+ resource_methods :all, :where, :find
10
+
7
11
  class << self
8
12
  def new(params = nil)
9
13
  Pina::Models::SalesOrder.new(params)
10
14
  end
11
-
12
- def find(id)
13
- response = Pina::RestAdapter.get(:sales_orders, id)
14
-
15
- return Pina::Models::SalesOrder.new(attributes(response)) if
16
- response.ok?
17
-
18
- response
19
- end
20
-
21
- def where(hash, _page = nil)
22
- response = Pina::RestAdapter.get(:sales_orders, hash)
23
-
24
- return Pina::Collections::SalesOrder.new(attributes(response)) if
25
- response.ok?
26
-
27
- response
28
- end
29
-
30
- def all(page = nil)
31
- response = Pina::RestAdapter.get(:sales_orders, page)
32
-
33
- return Pina::Collections::SalesOrder.new(attributes(response)) if
34
- response.ok?
35
-
36
- response
37
- end
38
-
39
- private
40
-
41
- def attributes(response)
42
- response.to_hash.merge(response: response)
43
- end
44
15
  end
45
16
  end
46
17
  end
@@ -3,43 +3,14 @@ require 'pina/collections/stat_processed_document'
3
3
 
4
4
  module Pina
5
5
  class StatProcessedDocument
6
+ extend Pina::Resource
7
+
8
+ resource_methods :all, :where, :find
9
+
6
10
  class << self
7
11
  def new(params = nil)
8
12
  Pina::Models::StatProcessedDocument.new(params)
9
13
  end
10
-
11
- def find(id)
12
- response = Pina::RestAdapter.get(:stat_processed_documents, id)
13
-
14
- return Pina::Models::StatProcessedDocument.new(attributes(response)) if
15
- response.ok?
16
-
17
- response
18
- end
19
-
20
- def where(hash, _page = nil)
21
- response = Pina::RestAdapter.get(:stat_processed_documents, hash)
22
-
23
- return Pina::Collections::StatProcessedDocument.new(attributes(response)) if
24
- response.ok?
25
-
26
- response
27
- end
28
-
29
- def all(page = nil)
30
- response = Pina::RestAdapter.get(:stat_processed_documents, page)
31
-
32
- return Pina::Collections::StatProcessedDocument.new(attributes(response)) if
33
- response.ok?
34
-
35
- response
36
- end
37
-
38
- private
39
-
40
- def attributes(response)
41
- response.to_hash.merge(response: response)
42
- end
43
14
  end
44
15
  end
45
16
  end
@@ -3,6 +3,10 @@ require 'pina/collections/uploaded_document'
3
3
 
4
4
  module Pina
5
5
  class UploadedDocument
6
+ extend Pina::Resource
7
+
8
+ resource_methods :all, :where
9
+
6
10
  class << self
7
11
  def create(uploaded_document)
8
12
  response = Pina::RestAdapter.post(:uploaded_documents, uploaded_document, multipart: true)
@@ -24,24 +28,6 @@ module Pina
24
28
  end
25
29
  end
26
30
 
27
- def where(hash, _page = nil)
28
- response = Pina::RestAdapter.get(:uploaded_documents, hash)
29
-
30
- return Pina::Collections::UploadedDocument.new(attributes(response)) if
31
- response.ok?
32
-
33
- response
34
- end
35
-
36
- def all(page = nil)
37
- response = Pina::RestAdapter.get(:uploaded_documents, page)
38
-
39
- return Pina::Collections::UploadedDocument.new(attributes(response)) if
40
- response.ok?
41
-
42
- response
43
- end
44
-
45
31
  def update(id, uploaded_document)
46
32
  response = Pina::RestAdapter.patch(:uploaded_documents, id, uploaded_document)
47
33
 
@@ -54,10 +40,6 @@ module Pina
54
40
 
55
41
  private
56
42
 
57
- def attributes(response)
58
- response.to_hash.merge(response: response)
59
- end
60
-
61
43
  def attributes_for_error(response)
62
44
  response.to_hash.merge(status_code: response.status_code)
63
45
  end
@@ -2,6 +2,8 @@ require 'pina/models/uploaded_document_pairing'
2
2
 
3
3
  module Pina
4
4
  class UploadedDocumentPairing
5
+ extend Pina::Resource
6
+
5
7
  class << self
6
8
  def find(id)
7
9
  response = Pina::RestAdapter.get([:uploaded_documents, id, :pairings])
@@ -26,10 +28,6 @@ module Pina
26
28
 
27
29
  private
28
30
 
29
- def attributes(response)
30
- response.to_hash.merge(response: response)
31
- end
32
-
33
31
  def attributes_for_error(response)
34
32
  response.to_hash.merge(status_code: response.status_code)
35
33
  end
@@ -2,7 +2,7 @@ module Pina
2
2
  module Utils
3
3
  module Pagination
4
4
  def next_page
5
- resource.all(extract_next_page)
5
+ paginate(_meta['pagination']['next'])
6
6
  end
7
7
 
8
8
  def first_page
@@ -10,7 +10,31 @@ module Pina
10
10
  end
11
11
 
12
12
  def previous_page
13
- resource.all(extract_prev_page)
13
+ paginate(_meta['pagination']['previous'])
14
+ end
15
+
16
+ def last_page
17
+ paginate(_meta['pagination']['last'])
18
+ end
19
+
20
+ def paginate(page_url)
21
+ params = extract_params(page_url)
22
+ return unless params&.fetch('page')
23
+
24
+ resource.all(params)
25
+ end
26
+
27
+ def collect_items
28
+ resource = self
29
+
30
+ [].tap do |collection|
31
+ loop do
32
+ collection.push(*resource.items)
33
+ resource = resource.next_page
34
+
35
+ break unless resource
36
+ end
37
+ end
14
38
  end
15
39
 
16
40
  private
@@ -19,20 +43,22 @@ module Pina
19
43
  Object.const_get("Pina::#{self.class.to_s.split('::').last}")
20
44
  end
21
45
 
22
- def extract_next_page
23
- string = _meta['pagination']['next']
24
- return unless string
46
+ def extract_params(url)
47
+ return unless url
25
48
 
26
- index = string.index('?')
27
- string[index..-1]
28
- end
49
+ index = url.index('?')
50
+ return unless index
29
51
 
30
- def extract_prev_page
31
- string = _meta['pagination']['prev']
32
- return unless string
52
+ params_to_hash(url[index + 1..-1])
53
+ end
33
54
 
34
- index = string.index('?')
35
- string[index..-1]
55
+ def params_to_hash(params)
56
+ {}.tap do |params_hash|
57
+ params.split('&').each do |element|
58
+ param = element.split('=')
59
+ params_hash[param.first] = param.last
60
+ end
61
+ end
36
62
  end
37
63
  end
38
64
  end
@@ -1,3 +1,3 @@
1
1
  module Pina
2
- VERSION = '0.14.4'.freeze
2
+ VERSION = '0.15.0'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pina
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.4
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pavel Hronek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-07-22 00:00:00.000000000 Z
11
+ date: 2019-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -273,6 +273,7 @@ files:
273
273
  - lib/pina/processed_document.rb
274
274
  - lib/pina/purchase_invoice.rb
275
275
  - lib/pina/receivable.rb
276
+ - lib/pina/resource.rb
276
277
  - lib/pina/rest_adapter.rb
277
278
  - lib/pina/sales_invoice.rb
278
279
  - lib/pina/sales_order.rb