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 +4 -4
- data/docs/CHANGELOG.md +16 -0
- data/docs/TODO.md +13 -13
- data/lib/printavo/client.rb +12 -0
- data/lib/printavo/models/payment.rb +11 -0
- data/lib/printavo/models/payment_request.rb +12 -0
- data/lib/printavo/models/payment_term.rb +10 -0
- data/lib/printavo/resources/payment_requests.rb +48 -0
- data/lib/printavo/resources/payment_terms.rb +51 -0
- data/lib/printavo/resources/payments.rb +36 -0
- data/lib/printavo/version.rb +1 -1
- data/lib/printavo.rb +6 -0
- metadata +7 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5c7c947ef3f0582fd5c30b1aa44f69cfdc2ba135ac4b5b616db3fc5c63615322
|
|
4
|
+
data.tar.gz: 664d2cafd355a83630af29c9902cf89dc2af838694cb91cc6ba182603d115a92
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
- [
|
|
249
|
-
- [
|
|
250
|
-
- [
|
|
251
|
-
- [
|
|
252
|
-
- [
|
|
253
|
-
- [
|
|
254
|
-
- [
|
|
255
|
-
- [
|
|
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
|
-
- [
|
|
343
|
-
- [
|
|
344
|
-
- [
|
|
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
|
|
data/lib/printavo/client.rb
CHANGED
|
@@ -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,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,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
|
data/lib/printavo/version.rb
CHANGED
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.
|
|
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
|