printavo-ruby 0.9.0 → 0.10.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: 5c7c947ef3f0582fd5c30b1aa44f69cfdc2ba135ac4b5b616db3fc5c63615322
4
+ data.tar.gz: 664d2cafd355a83630af29c9902cf89dc2af838694cb91cc6ba182603d115a92
5
5
  SHA512:
6
- metadata.gz: 536197cc16cb7faa1ebb1a557563df9954488afc795658bcc6f6cf38d2fa0a0a319f8f04c2842e27921ecc8d627bd4ee15643517bac8e31c39c46607a1d07744
7
- data.tar.gz: d7f1654d4294bfab5cb9341a55860cb2ea763f91ba553a7a8982fe1a1199de61e0618e6d9ad2ce6938ead8887be3efc4d5264075bb3ebc0d29eca979c5187315
6
+ metadata.gz: 7e321c541a352c6ae3983682c03406ca80725499d2014bcfcc6cda1f8f2a8654f4aba9dc25452c7da7225a993ef205f0d698b23f5dfd68396b0f6add13070f27
7
+ data.tar.gz: 3182ba400910bc9de615ce19944bbac0b027b80874e35a364e2c64c476d383e86bbed46b501cd0d602dd06c49aa3a20b242f7d510261c734c56649301475e301
data/docs/CHANGELOG.md CHANGED
@@ -6,6 +6,22 @@ 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.10.0] - 2026-03-31
10
+
11
+ ### Added
12
+ - `Printavo::Payment` model (`id`, `amount`, `payment_method`, `paid_at`)
13
+ - `Payments` resource: `all(order_id:)`, `find(id)` — read-only, scoped to an order
14
+ - `Printavo::PaymentRequest` model (`id`, `amount`, `sent_at`, `paid_at`, `details`)
15
+ - `PaymentRequests` resource: `all(order_id:)`, `find(id)`, `create(**input)`, `delete(id)` —
16
+ `paymentRequestCreate` / `paymentRequestDelete` mutations
17
+ - `Printavo::PaymentTerm` model (`id`, `name`, `net_days`)
18
+ - `PaymentTerms` resource: `all`, `find(id)`, `create(**input)`, `update(id, **input)`,
19
+ `archive(id)` — `paymentTermCreate` / `paymentTermUpdate` / `paymentTermArchive` mutations;
20
+ `archive` returns `nil` (same convention as `delete`)
21
+ - `client.payments`, `client.payment_requests`, `client.payment_terms` entry points
22
+ on `Printavo::Client`
23
+ - 11 new `.graphql` files under `lib/printavo/graphql/`
24
+
9
25
  ## [0.9.0] - 2026-03-31
10
26
 
11
27
  ### Added
data/docs/TODO.md CHANGED
@@ -243,16 +243,16 @@ 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
257
  ### Preset Tasks
258
258
 
@@ -337,11 +337,11 @@ 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
346
  ### v0.11.0 — Workflow: Approvals & Preset Tasks
347
347
 
@@ -97,6 +97,18 @@ module Printavo
97
97
  Resources::Orders.new(@graphql)
98
98
  end
99
99
 
100
+ def payment_requests
101
+ Resources::PaymentRequests.new(@graphql)
102
+ end
103
+
104
+ def payment_terms
105
+ Resources::PaymentTerms.new(@graphql)
106
+ end
107
+
108
+ def payments
109
+ Resources::Payments.new(@graphql)
110
+ end
111
+
100
112
  def pricing_matrices
101
113
  Resources::PricingMatrices.new(@graphql)
102
114
  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,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
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Printavo
5
- VERSION = '0.9.0'
5
+ VERSION = '0.10.0'
6
6
  end
data/lib/printavo.rb CHANGED
@@ -27,6 +27,9 @@ require_relative 'printavo/models/line_item_group'
27
27
  require_relative 'printavo/models/merch_order'
28
28
  require_relative 'printavo/models/merch_store'
29
29
  require_relative 'printavo/models/order'
30
+ require_relative 'printavo/models/payment'
31
+ require_relative 'printavo/models/payment_request'
32
+ require_relative 'printavo/models/payment_term'
30
33
  require_relative 'printavo/models/pricing_matrix'
31
34
  require_relative 'printavo/models/product'
32
35
  require_relative 'printavo/models/status'
@@ -50,6 +53,9 @@ require_relative 'printavo/resources/line_items'
50
53
  require_relative 'printavo/resources/merch_orders'
51
54
  require_relative 'printavo/resources/merch_stores'
52
55
  require_relative 'printavo/resources/orders'
56
+ require_relative 'printavo/resources/payment_requests'
57
+ require_relative 'printavo/resources/payment_terms'
58
+ require_relative 'printavo/resources/payments'
53
59
  require_relative 'printavo/resources/pricing_matrices'
54
60
  require_relative 'printavo/resources/products'
55
61
  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.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stan Carver II
@@ -288,6 +288,9 @@ files:
288
288
  - lib/printavo/models/merch_order.rb
289
289
  - lib/printavo/models/merch_store.rb
290
290
  - lib/printavo/models/order.rb
291
+ - lib/printavo/models/payment.rb
292
+ - lib/printavo/models/payment_request.rb
293
+ - lib/printavo/models/payment_term.rb
291
294
  - lib/printavo/models/pricing_matrix.rb
292
295
  - lib/printavo/models/product.rb
293
296
  - lib/printavo/models/status.rb
@@ -312,6 +315,9 @@ files:
312
315
  - lib/printavo/resources/merch_orders.rb
313
316
  - lib/printavo/resources/merch_stores.rb
314
317
  - lib/printavo/resources/orders.rb
318
+ - lib/printavo/resources/payment_requests.rb
319
+ - lib/printavo/resources/payment_terms.rb
320
+ - lib/printavo/resources/payments.rb
315
321
  - lib/printavo/resources/pricing_matrices.rb
316
322
  - lib/printavo/resources/products.rb
317
323
  - lib/printavo/resources/statuses.rb