printavo-ruby 0.13.0 → 0.14.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 +12 -0
- data/docs/TODO.md +15 -15
- data/lib/printavo/resources/contacts.rb +13 -0
- data/lib/printavo/resources/customers.rb +15 -2
- data/lib/printavo/resources/inquiries.rb +13 -0
- data/lib/printavo/resources/invoices.rb +30 -3
- data/lib/printavo/resources/orders.rb +27 -0
- data/lib/printavo/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b0c6bbdd1f2e7dec2d40c9c5386385083049aa9f7fdd71d97ff2d8c91e0256b0
|
|
4
|
+
data.tar.gz: fca9352dae13007b7a319ec7414cf0699b2169040cd0ad94fe5683adc9506676
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 81dc61d793eb316a7e98ef4d89338229504c3f7be1c104fb24685ff108d7dc495270635a5413795b981c5e2377c3f74eb0bfe5cf86db1ca19a11afd1a09d4460
|
|
7
|
+
data.tar.gz: 1ab1cb1bf5d4950c615e407ff4008db7e07e200869a2aac5859cbbb3f8380a8d19f7dab8ea83a0eafb6f8225901cf6ca62e661816c3fe185269eb1141fb5a8dd
|
data/docs/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,18 @@ 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.14.0] - 2026-04-01
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
- `Contacts#delete(id)` — `contactDelete` mutation
|
|
13
|
+
- `Customers#delete(id)` — `customerDelete` mutation
|
|
14
|
+
- `Inquiries#delete(id)` — `inquiryDelete` mutation
|
|
15
|
+
- `Invoices#delete(id)` — `invoiceDelete` mutation
|
|
16
|
+
- `Invoices#duplicate(id)` — `invoiceDuplicate` mutation; returns a new `Printavo::Invoice`
|
|
17
|
+
- `Orders#delete(id)` — `quoteDelete` mutation
|
|
18
|
+
- `Orders#duplicate(id)` — `quoteDuplicate` mutation; returns a new `Printavo::Order`
|
|
19
|
+
- 7 new `.graphql` files under `lib/printavo/graphql/`
|
|
20
|
+
|
|
9
21
|
## [0.13.0] - 2026-03-31
|
|
10
22
|
|
|
11
23
|
### Added
|
data/docs/TODO.md
CHANGED
|
@@ -52,13 +52,13 @@ Full task list for `printavo-ruby` across all versions. Checked items are shippe
|
|
|
52
52
|
- [x] `Inquiries#update(id, **input)` — `inquiryUpdate`
|
|
53
53
|
- [x] `camelize_keys` — snake_case → camelCase input conversion
|
|
54
54
|
- [x] `build_customer` / `build_order` — mutation response normalization helpers
|
|
55
|
-
- [
|
|
56
|
-
- [
|
|
57
|
-
- [
|
|
58
|
-
- [
|
|
59
|
-
- [
|
|
60
|
-
- [
|
|
61
|
-
- [
|
|
55
|
+
- [x] `Contacts#delete(id)` — `contactDelete`
|
|
56
|
+
- [x] `Customers#delete(id)` — `customerDelete`
|
|
57
|
+
- [x] `Inquiries#delete(id)` — `inquiryDelete`
|
|
58
|
+
- [x] `Invoices#delete(id)` — `invoiceDelete`
|
|
59
|
+
- [x] `Invoices#duplicate(id)` — `invoiceDuplicate`
|
|
60
|
+
- [x] `Orders#delete(id)` — `quoteDelete`
|
|
61
|
+
- [x] `Orders#duplicate(id)` — `quoteDuplicate`
|
|
62
62
|
|
|
63
63
|
---
|
|
64
64
|
|
|
@@ -364,15 +364,15 @@ return values — they are exposed via model field accessors, not separate resou
|
|
|
364
364
|
- [x] `DeliveryMethods` resource (`all`, `find`, `create`, `update`, `archive`)
|
|
365
365
|
- [x] `TypesOfWork` resource (`all`)
|
|
366
366
|
|
|
367
|
-
### v0.14.0 — Delete & Duplicate Mutations for Shipped Resources
|
|
367
|
+
### v0.14.0 — Delete & Duplicate Mutations for Shipped Resources ✅
|
|
368
368
|
|
|
369
|
-
- [
|
|
370
|
-
- [
|
|
371
|
-
- [
|
|
372
|
-
- [
|
|
373
|
-
- [
|
|
374
|
-
- [
|
|
375
|
-
- [
|
|
369
|
+
- [x] `Contacts#delete` — `contactDelete`
|
|
370
|
+
- [x] `Customers#delete` — `customerDelete`
|
|
371
|
+
- [x] `Inquiries#delete` — `inquiryDelete`
|
|
372
|
+
- [x] `Invoices#delete` — `invoiceDelete`
|
|
373
|
+
- [x] `Invoices#duplicate` — `invoiceDuplicate`
|
|
374
|
+
- [x] `Orders#delete` — `quoteDelete`
|
|
375
|
+
- [x] `Orders#duplicate` — `quoteDuplicate`
|
|
376
376
|
|
|
377
377
|
### v0.15.0 — Retry / Backoff & CLI
|
|
378
378
|
|
|
@@ -6,6 +6,7 @@ module Printavo
|
|
|
6
6
|
class Contacts < Base
|
|
7
7
|
FIND_QUERY = File.read(File.join(__dir__, '../graphql/contacts/find.graphql')).freeze
|
|
8
8
|
CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/contacts/create.graphql')).freeze
|
|
9
|
+
DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/contacts/delete.graphql')).freeze
|
|
9
10
|
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/contacts/update.graphql')).freeze
|
|
10
11
|
|
|
11
12
|
# Finds a contact by ID.
|
|
@@ -44,6 +45,18 @@ module Printavo
|
|
|
44
45
|
variables: { id: id.to_s, input: camelize_keys(input) })
|
|
45
46
|
Printavo::Contact.new(data['contactUpdate'])
|
|
46
47
|
end
|
|
48
|
+
|
|
49
|
+
# Permanently deletes a contact by ID.
|
|
50
|
+
#
|
|
51
|
+
# @param id [String, Integer]
|
|
52
|
+
# @return [nil]
|
|
53
|
+
#
|
|
54
|
+
# @example
|
|
55
|
+
# client.contacts.delete("123")
|
|
56
|
+
def delete(id)
|
|
57
|
+
@graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
|
|
58
|
+
nil
|
|
59
|
+
end
|
|
47
60
|
end
|
|
48
61
|
end
|
|
49
62
|
end
|
|
@@ -4,9 +4,10 @@
|
|
|
4
4
|
module Printavo
|
|
5
5
|
module Resources
|
|
6
6
|
class Customers < Base
|
|
7
|
-
ALL_QUERY
|
|
8
|
-
FIND_QUERY
|
|
7
|
+
ALL_QUERY = File.read(File.join(__dir__, '../graphql/customers/all.graphql')).freeze
|
|
8
|
+
FIND_QUERY = File.read(File.join(__dir__, '../graphql/customers/find.graphql')).freeze
|
|
9
9
|
CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/customers/create.graphql')).freeze
|
|
10
|
+
DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/customers/delete.graphql')).freeze
|
|
10
11
|
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/customers/update.graphql')).freeze
|
|
11
12
|
|
|
12
13
|
def all(first: 25, after: nil)
|
|
@@ -48,6 +49,18 @@ module Printavo
|
|
|
48
49
|
build_customer(data['customerUpdate'])
|
|
49
50
|
end
|
|
50
51
|
|
|
52
|
+
# Permanently deletes a customer by ID.
|
|
53
|
+
#
|
|
54
|
+
# @param id [String, Integer]
|
|
55
|
+
# @return [nil]
|
|
56
|
+
#
|
|
57
|
+
# @example
|
|
58
|
+
# client.customers.delete("42")
|
|
59
|
+
def delete(id)
|
|
60
|
+
@graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
|
|
61
|
+
nil
|
|
62
|
+
end
|
|
63
|
+
|
|
51
64
|
private
|
|
52
65
|
|
|
53
66
|
def fetch_page(first: 25, after: nil, **)
|
|
@@ -7,6 +7,7 @@ module Printavo
|
|
|
7
7
|
ALL_QUERY = File.read(File.join(__dir__, '../graphql/inquiries/all.graphql')).freeze
|
|
8
8
|
FIND_QUERY = File.read(File.join(__dir__, '../graphql/inquiries/find.graphql')).freeze
|
|
9
9
|
CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/inquiries/create.graphql')).freeze
|
|
10
|
+
DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/inquiries/delete.graphql')).freeze
|
|
10
11
|
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/inquiries/update.graphql')).freeze
|
|
11
12
|
|
|
12
13
|
def all(first: 25, after: nil)
|
|
@@ -43,6 +44,18 @@ module Printavo
|
|
|
43
44
|
Printavo::Inquiry.new(data['inquiryUpdate'])
|
|
44
45
|
end
|
|
45
46
|
|
|
47
|
+
# Permanently deletes an inquiry by ID.
|
|
48
|
+
#
|
|
49
|
+
# @param id [String, Integer]
|
|
50
|
+
# @return [nil]
|
|
51
|
+
#
|
|
52
|
+
# @example
|
|
53
|
+
# client.inquiries.delete("55")
|
|
54
|
+
def delete(id)
|
|
55
|
+
@graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
|
|
56
|
+
nil
|
|
57
|
+
end
|
|
58
|
+
|
|
46
59
|
private
|
|
47
60
|
|
|
48
61
|
def fetch_page(first: 25, after: nil, **)
|
|
@@ -4,9 +4,11 @@
|
|
|
4
4
|
module Printavo
|
|
5
5
|
module Resources
|
|
6
6
|
class Invoices < Base
|
|
7
|
-
ALL_QUERY
|
|
8
|
-
FIND_QUERY
|
|
9
|
-
|
|
7
|
+
ALL_QUERY = File.read(File.join(__dir__, '../graphql/invoices/all.graphql')).freeze
|
|
8
|
+
FIND_QUERY = File.read(File.join(__dir__, '../graphql/invoices/find.graphql')).freeze
|
|
9
|
+
DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/invoices/delete.graphql')).freeze
|
|
10
|
+
DUPLICATE_MUTATION = File.read(File.join(__dir__, '../graphql/invoices/duplicate.graphql')).freeze
|
|
11
|
+
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/invoices/update.graphql')).freeze
|
|
10
12
|
|
|
11
13
|
def all(first: 25, after: nil)
|
|
12
14
|
fetch_page(first: first, after: after).records
|
|
@@ -38,6 +40,31 @@ module Printavo
|
|
|
38
40
|
Printavo::Invoice.new(data['invoiceUpdate'])
|
|
39
41
|
end
|
|
40
42
|
|
|
43
|
+
# Permanently deletes an invoice by ID.
|
|
44
|
+
#
|
|
45
|
+
# @param id [String, Integer]
|
|
46
|
+
# @return [nil]
|
|
47
|
+
#
|
|
48
|
+
# @example
|
|
49
|
+
# client.invoices.delete("456")
|
|
50
|
+
def delete(id)
|
|
51
|
+
@graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
|
|
52
|
+
nil
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Duplicates an invoice, returning a new invoice pre-populated with the
|
|
56
|
+
# same line items, customer, and settings as the original.
|
|
57
|
+
#
|
|
58
|
+
# @param id [String, Integer]
|
|
59
|
+
# @return [Printavo::Invoice]
|
|
60
|
+
#
|
|
61
|
+
# @example
|
|
62
|
+
# client.invoices.duplicate("456")
|
|
63
|
+
def duplicate(id)
|
|
64
|
+
data = @graphql.mutate(DUPLICATE_MUTATION, variables: { id: id.to_s })
|
|
65
|
+
Printavo::Invoice.new(data['invoiceDuplicate'])
|
|
66
|
+
end
|
|
67
|
+
|
|
41
68
|
private
|
|
42
69
|
|
|
43
70
|
def fetch_page(first: 25, after: nil, **)
|
|
@@ -8,6 +8,8 @@ module Printavo
|
|
|
8
8
|
FIND_QUERY = File.read(File.join(__dir__, '../graphql/orders/find.graphql')).freeze
|
|
9
9
|
# Printavo creates orders as quotes first; the mutation is quoteCreate.
|
|
10
10
|
CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/orders/create.graphql')).freeze
|
|
11
|
+
DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/orders/delete.graphql')).freeze
|
|
12
|
+
DUPLICATE_MUTATION = File.read(File.join(__dir__, '../graphql/orders/duplicate.graphql')).freeze
|
|
11
13
|
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/orders/update.graphql')).freeze
|
|
12
14
|
# statusUpdate returns an OrderUnion (Quote | Invoice) — requires fragments.
|
|
13
15
|
UPDATE_STATUS_MUTATION = File.read(File.join(__dir__, '../graphql/orders/update_status.graphql')).freeze
|
|
@@ -65,6 +67,31 @@ module Printavo
|
|
|
65
67
|
build_order(data['statusUpdate'])
|
|
66
68
|
end
|
|
67
69
|
|
|
70
|
+
# Permanently deletes an order (quote) by ID.
|
|
71
|
+
#
|
|
72
|
+
# @param id [String, Integer]
|
|
73
|
+
# @return [nil]
|
|
74
|
+
#
|
|
75
|
+
# @example
|
|
76
|
+
# client.orders.delete("99")
|
|
77
|
+
def delete(id)
|
|
78
|
+
@graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
|
|
79
|
+
nil
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
# Duplicates an order (quote), returning a new quote pre-populated with
|
|
83
|
+
# the same line items, customer, and settings as the original.
|
|
84
|
+
#
|
|
85
|
+
# @param id [String, Integer]
|
|
86
|
+
# @return [Printavo::Order]
|
|
87
|
+
#
|
|
88
|
+
# @example
|
|
89
|
+
# client.orders.duplicate("99")
|
|
90
|
+
def duplicate(id)
|
|
91
|
+
data = @graphql.mutate(DUPLICATE_MUTATION, variables: { id: id.to_s })
|
|
92
|
+
build_order(data['quoteDuplicate'])
|
|
93
|
+
end
|
|
94
|
+
|
|
68
95
|
private
|
|
69
96
|
|
|
70
97
|
def fetch_page(first: 25, after: nil, **)
|
data/lib/printavo/version.rb
CHANGED