printavo-ruby 0.9.0 → 0.11.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
  SHA256:
3
- metadata.gz: 3f841fd166476152c647d7851297e8b07a8291446d5ccbe657b3a5c9bb5faef6
4
- data.tar.gz: dc74bf793d7c684b4a5aa5f649f3454397a88d684cd8b6f6c7ed3faea0a768a3
3
+ metadata.gz: 61a636be4f585024b3fab02968db29676052b9228c952c936ebcf67249349258
4
+ data.tar.gz: d12592575eaf1d5b9a88babc9dfc4bc86474222c54a9cc5c394e6e8c8b91143e
5
5
  SHA512:
6
- metadata.gz: 536197cc16cb7faa1ebb1a557563df9954488afc795658bcc6f6cf38d2fa0a0a319f8f04c2842e27921ecc8d627bd4ee15643517bac8e31c39c46607a1d07744
7
- data.tar.gz: d7f1654d4294bfab5cb9341a55860cb2ea763f91ba553a7a8982fe1a1199de61e0618e6d9ad2ce6938ead8887be3efc4d5264075bb3ebc0d29eca979c5187315
6
+ metadata.gz: 6aa7d1e5b343728409ca0b3082c9ec9480865b69ecb5db3713cade7c9db897bf2d3bc02571eca4e1a31e4e7f98763955482726c426923f1692d380d972f0e511
7
+ data.tar.gz: 5a14a8ec04f1e8bff553540135077564d9c0e21c58c5e39a93454d70ef36a14512b2b2e75eacd0b068876ad5ca4491c70653b82c45ed205c9e59cd5c94ee49f8
data/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,39 @@ All notable changes to this project will be documented in this file.
6
6
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
7
7
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
8
8
 
9
+ ## [0.11.0] - 2026-03-31
10
+
11
+ ### Added
12
+ - `Printavo::ApprovalRequest` model (`id`, `status`, `sent_at`, `expires_at`, `contact` — returns `Printavo::Contact`)
13
+ - `ApprovalRequests` resource: `all(order_id:)`, `find(id)`, `create(**input)`,
14
+ `approve(id)`, `revoke(id)`, `unapprove(id)` — action mutations return updated `ApprovalRequest`
15
+ - `Printavo::PresetTask` model (`id`, `body`, `due_offset_days`, `assignee`)
16
+ - `PresetTasks` resource: `find(id)`, `create(**input)`, `update(id, **input)`, `delete(id)` —
17
+ no standalone listing; preset tasks are accessed via `PresetTaskGroup#tasks`
18
+ - `Printavo::PresetTaskGroup` model (`id`, `name`, `tasks` — returns `[PresetTask]`)
19
+ - `PresetTaskGroups` resource: `all`, `find(id)`, `create(**input)`, `update(id, **input)`,
20
+ `delete(id)`, `apply(id, order_id:)` — `apply` returns `[Printavo::Task]` (live tasks created on the order)
21
+ - `client.approval_requests`, `client.preset_task_groups`, `client.preset_tasks`
22
+ entry points on `Printavo::Client`
23
+ - 16 new `.graphql` files under `lib/printavo/graphql/`
24
+ - 2 new factory files: `spec/support/factories/approval_request.rb`, `spec/support/factories/preset_task.rb`
25
+
26
+ ## [0.10.0] - 2026-03-31
27
+
28
+ ### Added
29
+ - `Printavo::Payment` model (`id`, `amount`, `payment_method`, `paid_at`)
30
+ - `Payments` resource: `all(order_id:)`, `find(id)` — read-only, scoped to an order
31
+ - `Printavo::PaymentRequest` model (`id`, `amount`, `sent_at`, `paid_at`, `details`)
32
+ - `PaymentRequests` resource: `all(order_id:)`, `find(id)`, `create(**input)`, `delete(id)` —
33
+ `paymentRequestCreate` / `paymentRequestDelete` mutations
34
+ - `Printavo::PaymentTerm` model (`id`, `name`, `net_days`)
35
+ - `PaymentTerms` resource: `all`, `find(id)`, `create(**input)`, `update(id, **input)`,
36
+ `archive(id)` — `paymentTermCreate` / `paymentTermUpdate` / `paymentTermArchive` mutations;
37
+ `archive` returns `nil` (same convention as `delete`)
38
+ - `client.payments`, `client.payment_requests`, `client.payment_terms` entry points
39
+ on `Printavo::Client`
40
+ - 11 new `.graphql` files under `lib/printavo/graphql/`
41
+
9
42
  ## [0.9.0] - 2026-03-31
10
43
 
11
44
  ### Added
data/docs/TODO.md CHANGED
@@ -147,14 +147,14 @@ return values — they are exposed via model field accessors, not separate resou
147
147
 
148
148
  ---
149
149
 
150
- ### Approvals
150
+ ### Approvals
151
151
 
152
- - [ ] `Printavo::ApprovalRequest` model (`id`, `status`, `sentAt`, `expiresAt`, `contact`)
153
- - [ ] `ApprovalRequests` resource: `all(order_id:)`, `find(id)`
154
- - [ ] `approvalRequestCreate` mutation
155
- - [ ] `approvalRequestApprove(id:)` mutation
156
- - [ ] `approvalRequestRevoke(id:)` mutation
157
- - [ ] `approvalRequestUnapprove(id:)` mutation
152
+ - [x] `Printavo::ApprovalRequest` model (`id`, `status`, `sent_at`, `expires_at`, `contact`)
153
+ - [x] `ApprovalRequests` resource: `all(order_id:)`, `find(id)`
154
+ - [x] `approvalRequestCreate` mutation
155
+ - [x] `approvalRequestApprove(id:)` mutation
156
+ - [x] `approvalRequestRevoke(id:)` mutation
157
+ - [x] `approvalRequestUnapprove(id:)` mutation
158
158
 
159
159
  ### Categories ✅
160
160
 
@@ -243,26 +243,26 @@ return values — they are exposed via model field accessors, not separate resou
243
243
  - [ ] `productionFileCreate` / `productionFileCreates` (bulk) mutations
244
244
  - [ ] `productionFileDelete` / `productionFileDeletes` (bulk) mutations
245
245
 
246
- ### Payments
246
+ ### Payments
247
247
 
248
- - [ ] `Printavo::Payment` model (`id`, `amount`, `method`, `paidAt`)
249
- - [ ] `Printavo::PaymentRequest` model (`id`, `amount`, `sentAt`, `paidAt`, `details`)
250
- - [ ] `Printavo::PaymentTerm` model (`id`, `name`, `netDays`)
251
- - [ ] `Payments` resource: `all(order_id:)`, `find(id)`
252
- - [ ] `PaymentRequests` resource: `all(order_id:)`, `find(id)`, `create`, `delete`
253
- - [ ] `paymentRequestCreate`, `paymentRequestDelete` mutations
254
- - [ ] `PaymentTerms` resource: `all`, `find(id)`, `create`, `update`, `archive`
255
- - [ ] `paymentTermCreate`, `paymentTermUpdate`, `paymentTermArchive` mutations
248
+ - [x] `Printavo::Payment` model (`id`, `amount`, `payment_method`, `paid_at`)
249
+ - [x] `Printavo::PaymentRequest` model (`id`, `amount`, `sent_at`, `paid_at`, `details`)
250
+ - [x] `Printavo::PaymentTerm` model (`id`, `name`, `net_days`)
251
+ - [x] `Payments` resource: `all(order_id:)`, `find(id)`
252
+ - [x] `PaymentRequests` resource: `all(order_id:)`, `find(id)`, `create`, `delete`
253
+ - [x] `paymentRequestCreate`, `paymentRequestDelete` mutations
254
+ - [x] `PaymentTerms` resource: `all`, `find(id)`, `create`, `update`, `archive`
255
+ - [x] `paymentTermCreate`, `paymentTermUpdate`, `paymentTermArchive` mutations
256
256
 
257
- ### Preset Tasks
257
+ ### Preset Tasks
258
258
 
259
- - [ ] `Printavo::PresetTask` model (`id`, `body`, `dueOffsetDays`, `assignee`)
260
- - [ ] `Printavo::PresetTaskGroup` model (`id`, `name`, `tasks`)
261
- - [ ] `PresetTasks` resource: `find(id)`, `create`, `update`, `delete`
262
- - [ ] `presetTaskCreate`, `presetTaskUpdate`, `presetTaskDelete` mutations
263
- - [ ] `PresetTaskGroups` resource: `all`, `find(id)`, `create`, `update`, `delete`, `apply`
264
- - [ ] `presetTaskGroupCreate`, `presetTaskGroupUpdate`, `presetTaskGroupDelete` mutations
265
- - [ ] `presetTaskGroupApply(id:, order_id:)` mutation — applies a group to an order
259
+ - [x] `Printavo::PresetTask` model (`id`, `body`, `due_offset_days`, `assignee`)
260
+ - [x] `Printavo::PresetTaskGroup` model (`id`, `name`, `tasks`)
261
+ - [x] `PresetTasks` resource: `find(id)`, `create`, `update`, `delete`
262
+ - [x] `presetTaskCreate`, `presetTaskUpdate`, `presetTaskDelete` mutations
263
+ - [x] `PresetTaskGroups` resource: `all`, `find(id)`, `create`, `update`, `delete`, `apply`
264
+ - [x] `presetTaskGroupCreate`, `presetTaskGroupUpdate`, `presetTaskGroupDelete` mutations
265
+ - [x] `presetTaskGroupApply(id:, order_id:)` mutation — applies a group to an order
266
266
 
267
267
  ### Product Catalog & Pricing ✅
268
268
 
@@ -337,17 +337,17 @@ return values — they are exposed via model field accessors, not separate resou
337
337
  - [x] `Products` resource + `PricingMatrices` resource
338
338
  - [x] `Categories` resource (reference data)
339
339
 
340
- ### v0.10.0 — Financial: Payments, Payment Terms & Requests
340
+ ### v0.10.0 — Financial: Payments, Payment Terms & Requests
341
341
 
342
- - [ ] `Payments` resource (`all`, `find`)
343
- - [ ] `PaymentRequests` resource (`all`, `find`, `create`, `delete`)
344
- - [ ] `PaymentTerms` resource (`all`, `find`, `create`, `update`, `archive`)
342
+ - [x] `Payments` resource (`all`, `find`)
343
+ - [x] `PaymentRequests` resource (`all`, `find`, `create`, `delete`)
344
+ - [x] `PaymentTerms` resource (`all`, `find`, `create`, `update`, `archive`)
345
345
 
346
- ### v0.11.0 — Workflow: Approvals & Preset Tasks
346
+ ### v0.11.0 — Workflow: Approvals & Preset Tasks
347
347
 
348
- - [ ] `ApprovalRequests` resource (`all`, `find`, `create`, `approve`, `revoke`, `unapprove`)
349
- - [ ] `PresetTasks` resource (`find`, `create`, `update`, `delete`)
350
- - [ ] `PresetTaskGroups` resource (`all`, `find`, `create`, `update`, `delete`, `apply`)
348
+ - [x] `ApprovalRequests` resource (`all`, `find`, `create`, `approve`, `revoke`, `unapprove`)
349
+ - [x] `PresetTasks` resource (`find`, `create`, `update`, `delete`)
350
+ - [x] `PresetTaskGroups` resource (`all`, `find`, `create`, `update`, `delete`, `apply`)
351
351
 
352
352
  ### v0.12.0 — Files, Media & Communication
353
353
 
@@ -29,6 +29,10 @@ module Printavo
29
29
  Resources::Account.new(@graphql)
30
30
  end
31
31
 
32
+ def approval_requests
33
+ Resources::ApprovalRequests.new(@graphql)
34
+ end
35
+
32
36
  def categories
33
37
  Resources::Categories.new(@graphql)
34
38
  end
@@ -97,6 +101,26 @@ module Printavo
97
101
  Resources::Orders.new(@graphql)
98
102
  end
99
103
 
104
+ def payment_requests
105
+ Resources::PaymentRequests.new(@graphql)
106
+ end
107
+
108
+ def payment_terms
109
+ Resources::PaymentTerms.new(@graphql)
110
+ end
111
+
112
+ def payments
113
+ Resources::Payments.new(@graphql)
114
+ end
115
+
116
+ def preset_task_groups
117
+ Resources::PresetTaskGroups.new(@graphql)
118
+ end
119
+
120
+ def preset_tasks
121
+ Resources::PresetTasks.new(@graphql)
122
+ end
123
+
100
124
  def pricing_matrices
101
125
  Resources::PricingMatrices.new(@graphql)
102
126
  end
@@ -0,0 +1,12 @@
1
+ # lib/printavo/models/approval_request.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ class ApprovalRequest < Models::Base
6
+ def id = self['id']
7
+ def status = self['status']
8
+ def sent_at = self['sentAt']
9
+ def expires_at = self['expiresAt']
10
+ def contact = self['contact'] && Contact.new(self['contact'])
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ # lib/printavo/models/payment.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ class Payment < Models::Base
6
+ def id = self['id']
7
+ def amount = self['amount']
8
+ def payment_method = self['paymentMethod']
9
+ def paid_at = self['paidAt']
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ # lib/printavo/models/payment_request.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ class PaymentRequest < Models::Base
6
+ def id = self['id']
7
+ def amount = self['amount']
8
+ def sent_at = self['sentAt']
9
+ def paid_at = self['paidAt']
10
+ def details = self['details']
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ # lib/printavo/models/payment_term.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ class PaymentTerm < Models::Base
6
+ def id = self['id']
7
+ def name = self['name']
8
+ def net_days = self['netDays']
9
+ end
10
+ end
@@ -0,0 +1,11 @@
1
+ # lib/printavo/models/preset_task.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ class PresetTask < Models::Base
6
+ def id = self['id']
7
+ def body = self['body']
8
+ def due_offset_days = self['dueOffsetDays']
9
+ def assignee = self['assignee']
10
+ end
11
+ end
@@ -0,0 +1,10 @@
1
+ # lib/printavo/models/preset_task_group.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ class PresetTaskGroup < Models::Base
6
+ def id = self['id']
7
+ def name = self['name']
8
+ def tasks = Array(self['tasks']).map { |attrs| PresetTask.new(attrs) }
9
+ end
10
+ end
@@ -0,0 +1,60 @@
1
+ # lib/printavo/resources/approval_requests.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class ApprovalRequests < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/approval_requests/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/approval_requests/find.graphql')).freeze
9
+ CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/approval_requests/create.graphql')).freeze
10
+ APPROVE_MUTATION = File.read(File.join(__dir__, '../graphql/approval_requests/approve.graphql')).freeze
11
+ REVOKE_MUTATION = File.read(File.join(__dir__, '../graphql/approval_requests/revoke.graphql')).freeze
12
+ UNAPPROVE_MUTATION = File.read(File.join(__dir__, '../graphql/approval_requests/unapprove.graphql')).freeze
13
+
14
+ def all(order_id:, first: 25, after: nil)
15
+ fetch_page(order_id: order_id, first: first, after: after).records
16
+ end
17
+
18
+ def find(id)
19
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
20
+ Printavo::ApprovalRequest.new(data['approvalRequest'])
21
+ end
22
+
23
+ def create(**input)
24
+ data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
25
+ Printavo::ApprovalRequest.new(data['approvalRequestCreate'])
26
+ end
27
+
28
+ def approve(id)
29
+ data = @graphql.mutate(APPROVE_MUTATION, variables: { id: id.to_s })
30
+ Printavo::ApprovalRequest.new(data['approvalRequestApprove'])
31
+ end
32
+
33
+ def revoke(id)
34
+ data = @graphql.mutate(REVOKE_MUTATION, variables: { id: id.to_s })
35
+ Printavo::ApprovalRequest.new(data['approvalRequestRevoke'])
36
+ end
37
+
38
+ def unapprove(id)
39
+ data = @graphql.mutate(UNAPPROVE_MUTATION, variables: { id: id.to_s })
40
+ Printavo::ApprovalRequest.new(data['approvalRequestUnapprove'])
41
+ end
42
+
43
+ private
44
+
45
+ def fetch_page(order_id:, first: 25, after: nil, **)
46
+ data = @graphql.query(
47
+ ALL_QUERY,
48
+ variables: { orderId: order_id.to_s, first: first, after: after }
49
+ )
50
+ nodes = data['order']['approvalRequests']['nodes'].map { |attrs| Printavo::ApprovalRequest.new(attrs) }
51
+ page_info = data['order']['approvalRequests']['pageInfo']
52
+ Printavo::Page.new(
53
+ records: nodes,
54
+ has_next_page: page_info['hasNextPage'],
55
+ end_cursor: page_info['endCursor']
56
+ )
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,48 @@
1
+ # lib/printavo/resources/payment_requests.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class PaymentRequests < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/payment_requests/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/payment_requests/find.graphql')).freeze
9
+ CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/payment_requests/create.graphql')).freeze
10
+ DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/payment_requests/delete.graphql')).freeze
11
+
12
+ def all(order_id:, first: 25, after: nil)
13
+ fetch_page(order_id: order_id, first: first, after: after).records
14
+ end
15
+
16
+ def find(id)
17
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
18
+ Printavo::PaymentRequest.new(data['paymentRequest'])
19
+ end
20
+
21
+ def create(**input)
22
+ data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
23
+ Printavo::PaymentRequest.new(data['paymentRequestCreate'])
24
+ end
25
+
26
+ def delete(id)
27
+ @graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
28
+ nil
29
+ end
30
+
31
+ private
32
+
33
+ def fetch_page(order_id:, first: 25, after: nil, **)
34
+ data = @graphql.query(
35
+ ALL_QUERY,
36
+ variables: { orderId: order_id.to_s, first: first, after: after }
37
+ )
38
+ nodes = data['order']['paymentRequests']['nodes'].map { |attrs| Printavo::PaymentRequest.new(attrs) }
39
+ page_info = data['order']['paymentRequests']['pageInfo']
40
+ Printavo::Page.new(
41
+ records: nodes,
42
+ has_next_page: page_info['hasNextPage'],
43
+ end_cursor: page_info['endCursor']
44
+ )
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,51 @@
1
+ # lib/printavo/resources/payment_terms.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class PaymentTerms < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/payment_terms/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/payment_terms/find.graphql')).freeze
9
+ CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/payment_terms/create.graphql')).freeze
10
+ UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/payment_terms/update.graphql')).freeze
11
+ ARCHIVE_MUTATION = File.read(File.join(__dir__, '../graphql/payment_terms/archive.graphql')).freeze
12
+
13
+ def all(first: 25, after: nil)
14
+ fetch_page(first: first, after: after).records
15
+ end
16
+
17
+ def find(id)
18
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
19
+ Printavo::PaymentTerm.new(data['paymentTerm'])
20
+ end
21
+
22
+ def create(**input)
23
+ data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
24
+ Printavo::PaymentTerm.new(data['paymentTermCreate'])
25
+ end
26
+
27
+ def update(id, **input)
28
+ data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
29
+ Printavo::PaymentTerm.new(data['paymentTermUpdate'])
30
+ end
31
+
32
+ def archive(id)
33
+ @graphql.mutate(ARCHIVE_MUTATION, variables: { id: id.to_s })
34
+ nil
35
+ end
36
+
37
+ private
38
+
39
+ def fetch_page(first: 25, after: nil, **)
40
+ data = @graphql.query(ALL_QUERY, variables: { first: first, after: after })
41
+ nodes = data['paymentTerms']['nodes'].map { |attrs| Printavo::PaymentTerm.new(attrs) }
42
+ page_info = data['paymentTerms']['pageInfo']
43
+ Printavo::Page.new(
44
+ records: nodes,
45
+ has_next_page: page_info['hasNextPage'],
46
+ end_cursor: page_info['endCursor']
47
+ )
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,36 @@
1
+ # lib/printavo/resources/payments.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class Payments < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/payments/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/payments/find.graphql')).freeze
9
+
10
+ def all(order_id:, first: 25, after: nil)
11
+ fetch_page(order_id: order_id, first: first, after: after).records
12
+ end
13
+
14
+ def find(id)
15
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
16
+ Printavo::Payment.new(data['payment'])
17
+ end
18
+
19
+ private
20
+
21
+ def fetch_page(order_id:, first: 25, after: nil, **)
22
+ data = @graphql.query(
23
+ ALL_QUERY,
24
+ variables: { orderId: order_id.to_s, first: first, after: after }
25
+ )
26
+ nodes = data['order']['payments']['nodes'].map { |attrs| Printavo::Payment.new(attrs) }
27
+ page_info = data['order']['payments']['pageInfo']
28
+ Printavo::Page.new(
29
+ records: nodes,
30
+ has_next_page: page_info['hasNextPage'],
31
+ end_cursor: page_info['endCursor']
32
+ )
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,57 @@
1
+ # lib/printavo/resources/preset_task_groups.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class PresetTaskGroups < Base
7
+ ALL_QUERY = File.read(File.join(__dir__, '../graphql/preset_task_groups/all.graphql')).freeze
8
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/preset_task_groups/find.graphql')).freeze
9
+ CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/preset_task_groups/create.graphql')).freeze
10
+ UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/preset_task_groups/update.graphql')).freeze
11
+ DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/preset_task_groups/delete.graphql')).freeze
12
+ APPLY_MUTATION = File.read(File.join(__dir__, '../graphql/preset_task_groups/apply.graphql')).freeze
13
+
14
+ def all(first: 25, after: nil)
15
+ fetch_page(first: first, after: after).records
16
+ end
17
+
18
+ def find(id)
19
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
20
+ Printavo::PresetTaskGroup.new(data['presetTaskGroup'])
21
+ end
22
+
23
+ def create(**input)
24
+ data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
25
+ Printavo::PresetTaskGroup.new(data['presetTaskGroupCreate'])
26
+ end
27
+
28
+ def update(id, **input)
29
+ data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
30
+ Printavo::PresetTaskGroup.new(data['presetTaskGroupUpdate'])
31
+ end
32
+
33
+ def delete(id)
34
+ @graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
35
+ nil
36
+ end
37
+
38
+ def apply(id, order_id:)
39
+ data = @graphql.mutate(APPLY_MUTATION, variables: { id: id.to_s, orderId: order_id.to_s })
40
+ data['presetTaskGroupApply'].map { |attrs| Printavo::Task.new(attrs) }
41
+ end
42
+
43
+ private
44
+
45
+ def fetch_page(first: 25, after: nil, **)
46
+ data = @graphql.query(ALL_QUERY, variables: { first: first, after: after })
47
+ nodes = data['presetTaskGroups']['nodes'].map { |attrs| Printavo::PresetTaskGroup.new(attrs) }
48
+ page_info = data['presetTaskGroups']['pageInfo']
49
+ Printavo::Page.new(
50
+ records: nodes,
51
+ has_next_page: page_info['hasNextPage'],
52
+ end_cursor: page_info['endCursor']
53
+ )
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,33 @@
1
+ # lib/printavo/resources/preset_tasks.rb
2
+ # frozen_string_literal: true
3
+
4
+ module Printavo
5
+ module Resources
6
+ class PresetTasks < Base
7
+ FIND_QUERY = File.read(File.join(__dir__, '../graphql/preset_tasks/find.graphql')).freeze
8
+ CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/preset_tasks/create.graphql')).freeze
9
+ UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/preset_tasks/update.graphql')).freeze
10
+ DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/preset_tasks/delete.graphql')).freeze
11
+
12
+ def find(id)
13
+ data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
14
+ Printavo::PresetTask.new(data['presetTask'])
15
+ end
16
+
17
+ def create(**input)
18
+ data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
19
+ Printavo::PresetTask.new(data['presetTaskCreate'])
20
+ end
21
+
22
+ def update(id, **input)
23
+ data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
24
+ Printavo::PresetTask.new(data['presetTaskUpdate'])
25
+ end
26
+
27
+ def delete(id)
28
+ @graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
29
+ nil
30
+ end
31
+ end
32
+ end
33
+ end
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Printavo
5
- VERSION = '0.9.0'
5
+ VERSION = '0.11.0'
6
6
  end
data/lib/printavo.rb CHANGED
@@ -13,6 +13,7 @@ require_relative 'printavo/graphql_client'
13
13
  require_relative 'printavo/page'
14
14
  require_relative 'printavo/models/base'
15
15
  require_relative 'printavo/models/account'
16
+ require_relative 'printavo/models/approval_request'
16
17
  require_relative 'printavo/models/category'
17
18
  require_relative 'printavo/models/contact'
18
19
  require_relative 'printavo/models/customer'
@@ -27,6 +28,11 @@ require_relative 'printavo/models/line_item_group'
27
28
  require_relative 'printavo/models/merch_order'
28
29
  require_relative 'printavo/models/merch_store'
29
30
  require_relative 'printavo/models/order'
31
+ require_relative 'printavo/models/payment'
32
+ require_relative 'printavo/models/payment_request'
33
+ require_relative 'printavo/models/payment_term'
34
+ require_relative 'printavo/models/preset_task'
35
+ require_relative 'printavo/models/preset_task_group'
30
36
  require_relative 'printavo/models/pricing_matrix'
31
37
  require_relative 'printavo/models/product'
32
38
  require_relative 'printavo/models/status'
@@ -36,6 +42,7 @@ require_relative 'printavo/models/transaction'
36
42
  require_relative 'printavo/models/transaction_payment'
37
43
  require_relative 'printavo/resources/base'
38
44
  require_relative 'printavo/resources/account'
45
+ require_relative 'printavo/resources/approval_requests'
39
46
  require_relative 'printavo/resources/categories'
40
47
  require_relative 'printavo/resources/contacts'
41
48
  require_relative 'printavo/resources/customers'
@@ -50,6 +57,11 @@ require_relative 'printavo/resources/line_items'
50
57
  require_relative 'printavo/resources/merch_orders'
51
58
  require_relative 'printavo/resources/merch_stores'
52
59
  require_relative 'printavo/resources/orders'
60
+ require_relative 'printavo/resources/payment_requests'
61
+ require_relative 'printavo/resources/payment_terms'
62
+ require_relative 'printavo/resources/payments'
63
+ require_relative 'printavo/resources/preset_task_groups'
64
+ require_relative 'printavo/resources/preset_tasks'
53
65
  require_relative 'printavo/resources/pricing_matrices'
54
66
  require_relative 'printavo/resources/products'
55
67
  require_relative 'printavo/resources/statuses'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: printavo-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.11.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stan Carver II
@@ -273,6 +273,7 @@ files:
273
273
  - lib/printavo/errors.rb
274
274
  - lib/printavo/graphql_client.rb
275
275
  - lib/printavo/models/account.rb
276
+ - lib/printavo/models/approval_request.rb
276
277
  - lib/printavo/models/base.rb
277
278
  - lib/printavo/models/category.rb
278
279
  - lib/printavo/models/contact.rb
@@ -288,6 +289,11 @@ files:
288
289
  - lib/printavo/models/merch_order.rb
289
290
  - lib/printavo/models/merch_store.rb
290
291
  - lib/printavo/models/order.rb
292
+ - lib/printavo/models/payment.rb
293
+ - lib/printavo/models/payment_request.rb
294
+ - lib/printavo/models/payment_term.rb
295
+ - lib/printavo/models/preset_task.rb
296
+ - lib/printavo/models/preset_task_group.rb
291
297
  - lib/printavo/models/pricing_matrix.rb
292
298
  - lib/printavo/models/product.rb
293
299
  - lib/printavo/models/status.rb
@@ -297,6 +303,7 @@ files:
297
303
  - lib/printavo/models/transaction_payment.rb
298
304
  - lib/printavo/page.rb
299
305
  - lib/printavo/resources/account.rb
306
+ - lib/printavo/resources/approval_requests.rb
300
307
  - lib/printavo/resources/base.rb
301
308
  - lib/printavo/resources/categories.rb
302
309
  - lib/printavo/resources/contacts.rb
@@ -312,6 +319,11 @@ files:
312
319
  - lib/printavo/resources/merch_orders.rb
313
320
  - lib/printavo/resources/merch_stores.rb
314
321
  - lib/printavo/resources/orders.rb
322
+ - lib/printavo/resources/payment_requests.rb
323
+ - lib/printavo/resources/payment_terms.rb
324
+ - lib/printavo/resources/payments.rb
325
+ - lib/printavo/resources/preset_task_groups.rb
326
+ - lib/printavo/resources/preset_tasks.rb
315
327
  - lib/printavo/resources/pricing_matrices.rb
316
328
  - lib/printavo/resources/products.rb
317
329
  - lib/printavo/resources/statuses.rb