printavo-ruby 0.13.0 → 0.16.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.
Files changed (191) hide show
  1. checksums.yaml +4 -4
  2. data/bin/console +13 -0
  3. data/bin/lint +113 -0
  4. data/bin/printavo +8 -0
  5. data/bin/spec +113 -0
  6. data/docs/CHANGELOG.md +60 -0
  7. data/docs/TODO.md +44 -23
  8. data/lib/printavo/cli.rb +82 -0
  9. data/lib/printavo/client.rb +14 -6
  10. data/lib/printavo/connection.rb +37 -9
  11. data/lib/printavo/enums/approval_request_status.rb +17 -0
  12. data/lib/printavo/enums/contact_sort_field.rb +16 -0
  13. data/lib/printavo/enums/line_item_size.rb +48 -0
  14. data/lib/printavo/enums/line_item_status.rb +19 -0
  15. data/lib/printavo/enums/merch_order_delivery_method.rb +14 -0
  16. data/lib/printavo/enums/merch_order_status.rb +14 -0
  17. data/lib/printavo/enums/merch_store_status.rb +14 -0
  18. data/lib/printavo/enums/message_delivery_status.rb +23 -0
  19. data/lib/printavo/enums/order_payment_status.rb +15 -0
  20. data/lib/printavo/enums/order_sort_field.rb +18 -0
  21. data/lib/printavo/enums/payment_dispute_status_field.rb +17 -0
  22. data/lib/printavo/enums/payment_request_status.rb +15 -0
  23. data/lib/printavo/enums/po_goods_status.rb +17 -0
  24. data/lib/printavo/enums/status_type.rb +14 -0
  25. data/lib/printavo/enums/task_sort_field.rb +14 -0
  26. data/lib/printavo/enums/taskable_type.rb +15 -0
  27. data/lib/printavo/enums/transaction_category.rb +18 -0
  28. data/lib/printavo/enums/transaction_source.rb +14 -0
  29. data/lib/printavo/enums.rb +21 -0
  30. data/lib/printavo/graphql/account/find.graphql +11 -0
  31. data/lib/printavo/graphql/approval_requests/all.graphql +23 -0
  32. data/lib/printavo/graphql/approval_requests/approve.graphql +8 -0
  33. data/lib/printavo/graphql/approval_requests/create.graphql +15 -0
  34. data/lib/printavo/graphql/approval_requests/find.graphql +15 -0
  35. data/lib/printavo/graphql/approval_requests/revoke.graphql +8 -0
  36. data/lib/printavo/graphql/approval_requests/unapprove.graphql +8 -0
  37. data/lib/printavo/graphql/categories/all.graphql +12 -0
  38. data/lib/printavo/graphql/categories/find.graphql +6 -0
  39. data/lib/printavo/graphql/contacts/create.graphql +11 -0
  40. data/lib/printavo/graphql/contacts/delete.graphql +5 -0
  41. data/lib/printavo/graphql/contacts/find.graphql +11 -0
  42. data/lib/printavo/graphql/contacts/update.graphql +11 -0
  43. data/lib/printavo/graphql/contractor_profiles/all.graphql +13 -0
  44. data/lib/printavo/graphql/contractor_profiles/find.graphql +7 -0
  45. data/lib/printavo/graphql/custom_addresses/all.graphql +18 -0
  46. data/lib/printavo/graphql/custom_addresses/create.graphql +10 -0
  47. data/lib/printavo/graphql/custom_addresses/creates.graphql +10 -0
  48. data/lib/printavo/graphql/custom_addresses/delete.graphql +5 -0
  49. data/lib/printavo/graphql/custom_addresses/deletes.graphql +5 -0
  50. data/lib/printavo/graphql/custom_addresses/find.graphql +10 -0
  51. data/lib/printavo/graphql/custom_addresses/update.graphql +10 -0
  52. data/lib/printavo/graphql/custom_addresses/updates.graphql +10 -0
  53. data/lib/printavo/graphql/customers/all.graphql +16 -0
  54. data/lib/printavo/graphql/customers/create.graphql +13 -0
  55. data/lib/printavo/graphql/customers/delete.graphql +5 -0
  56. data/lib/printavo/graphql/customers/find.graphql +10 -0
  57. data/lib/printavo/graphql/customers/update.graphql +13 -0
  58. data/lib/printavo/graphql/delivery_methods/all.graphql +12 -0
  59. data/lib/printavo/graphql/delivery_methods/archive.graphql +5 -0
  60. data/lib/printavo/graphql/delivery_methods/create.graphql +6 -0
  61. data/lib/printavo/graphql/delivery_methods/find.graphql +6 -0
  62. data/lib/printavo/graphql/delivery_methods/update.graphql +6 -0
  63. data/lib/printavo/graphql/email_templates/all.graphql +14 -0
  64. data/lib/printavo/graphql/email_templates/find.graphql +8 -0
  65. data/lib/printavo/graphql/expenses/all.graphql +16 -0
  66. data/lib/printavo/graphql/expenses/create.graphql +8 -0
  67. data/lib/printavo/graphql/expenses/find.graphql +8 -0
  68. data/lib/printavo/graphql/expenses/update.graphql +8 -0
  69. data/lib/printavo/graphql/fees/all.graphql +16 -0
  70. data/lib/printavo/graphql/fees/create.graphql +8 -0
  71. data/lib/printavo/graphql/fees/creates.graphql +8 -0
  72. data/lib/printavo/graphql/fees/delete.graphql +5 -0
  73. data/lib/printavo/graphql/fees/deletes.graphql +5 -0
  74. data/lib/printavo/graphql/fees/find.graphql +8 -0
  75. data/lib/printavo/graphql/fees/update.graphql +8 -0
  76. data/lib/printavo/graphql/fees/updates.graphql +8 -0
  77. data/lib/printavo/graphql/imprints/all.graphql +16 -0
  78. data/lib/printavo/graphql/imprints/create.graphql +8 -0
  79. data/lib/printavo/graphql/imprints/creates.graphql +8 -0
  80. data/lib/printavo/graphql/imprints/delete.graphql +5 -0
  81. data/lib/printavo/graphql/imprints/deletes.graphql +5 -0
  82. data/lib/printavo/graphql/imprints/find.graphql +8 -0
  83. data/lib/printavo/graphql/imprints/mockup_create.graphql +7 -0
  84. data/lib/printavo/graphql/imprints/mockup_creates.graphql +7 -0
  85. data/lib/printavo/graphql/imprints/update.graphql +8 -0
  86. data/lib/printavo/graphql/imprints/updates.graphql +8 -0
  87. data/lib/printavo/graphql/inquiries/all.graphql +25 -0
  88. data/lib/printavo/graphql/inquiries/create.graphql +19 -0
  89. data/lib/printavo/graphql/inquiries/delete.graphql +5 -0
  90. data/lib/printavo/graphql/inquiries/find.graphql +19 -0
  91. data/lib/printavo/graphql/inquiries/update.graphql +19 -0
  92. data/lib/printavo/graphql/invoices/all.graphql +30 -0
  93. data/lib/printavo/graphql/invoices/delete.graphql +5 -0
  94. data/lib/printavo/graphql/invoices/duplicate.graphql +27 -0
  95. data/lib/printavo/graphql/invoices/find.graphql +24 -0
  96. data/lib/printavo/graphql/invoices/update.graphql +24 -0
  97. data/lib/printavo/graphql/jobs/all.graphql +17 -0
  98. data/lib/printavo/graphql/jobs/find.graphql +9 -0
  99. data/lib/printavo/graphql/line_item_groups/all.graphql +15 -0
  100. data/lib/printavo/graphql/line_item_groups/create.graphql +7 -0
  101. data/lib/printavo/graphql/line_item_groups/creates.graphql +7 -0
  102. data/lib/printavo/graphql/line_item_groups/delete.graphql +5 -0
  103. data/lib/printavo/graphql/line_item_groups/deletes.graphql +5 -0
  104. data/lib/printavo/graphql/line_item_groups/find.graphql +7 -0
  105. data/lib/printavo/graphql/line_item_groups/update.graphql +7 -0
  106. data/lib/printavo/graphql/line_item_groups/updates.graphql +7 -0
  107. data/lib/printavo/graphql/line_items/all.graphql +17 -0
  108. data/lib/printavo/graphql/line_items/create.graphql +9 -0
  109. data/lib/printavo/graphql/line_items/creates.graphql +9 -0
  110. data/lib/printavo/graphql/line_items/delete.graphql +5 -0
  111. data/lib/printavo/graphql/line_items/deletes.graphql +5 -0
  112. data/lib/printavo/graphql/line_items/find.graphql +9 -0
  113. data/lib/printavo/graphql/line_items/mockup_create.graphql +7 -0
  114. data/lib/printavo/graphql/line_items/mockup_creates.graphql +7 -0
  115. data/lib/printavo/graphql/line_items/update.graphql +9 -0
  116. data/lib/printavo/graphql/line_items/updates.graphql +9 -0
  117. data/lib/printavo/graphql/merch_orders/all.graphql +25 -0
  118. data/lib/printavo/graphql/merch_orders/find.graphql +19 -0
  119. data/lib/printavo/graphql/merch_stores/all.graphql +17 -0
  120. data/lib/printavo/graphql/merch_stores/find.graphql +11 -0
  121. data/lib/printavo/graphql/mockups/all.graphql +16 -0
  122. data/lib/printavo/graphql/mockups/delete.graphql +5 -0
  123. data/lib/printavo/graphql/mockups/deletes.graphql +5 -0
  124. data/lib/printavo/graphql/mockups/find.graphql +8 -0
  125. data/lib/printavo/graphql/orders/all.graphql +25 -0
  126. data/lib/printavo/graphql/orders/create.graphql +19 -0
  127. data/lib/printavo/graphql/orders/delete.graphql +5 -0
  128. data/lib/printavo/graphql/orders/duplicate.graphql +24 -0
  129. data/lib/printavo/graphql/orders/find.graphql +19 -0
  130. data/lib/printavo/graphql/orders/update.graphql +19 -0
  131. data/lib/printavo/graphql/orders/update_status.graphql +18 -0
  132. data/lib/printavo/graphql/payment_requests/all.graphql +21 -0
  133. data/lib/printavo/graphql/payment_requests/create.graphql +13 -0
  134. data/lib/printavo/graphql/payment_requests/delete.graphql +5 -0
  135. data/lib/printavo/graphql/payment_requests/find.graphql +13 -0
  136. data/lib/printavo/graphql/payment_terms/all.graphql +13 -0
  137. data/lib/printavo/graphql/payment_terms/archive.graphql +5 -0
  138. data/lib/printavo/graphql/payment_terms/create.graphql +7 -0
  139. data/lib/printavo/graphql/payment_terms/find.graphql +7 -0
  140. data/lib/printavo/graphql/payment_terms/update.graphql +7 -0
  141. data/lib/printavo/graphql/payments/all.graphql +16 -0
  142. data/lib/printavo/graphql/payments/find.graphql +8 -0
  143. data/lib/printavo/graphql/preset_task_groups/all.graphql +17 -0
  144. data/lib/printavo/graphql/preset_task_groups/apply.graphql +13 -0
  145. data/lib/printavo/graphql/preset_task_groups/create.graphql +11 -0
  146. data/lib/printavo/graphql/preset_task_groups/delete.graphql +5 -0
  147. data/lib/printavo/graphql/preset_task_groups/find.graphql +11 -0
  148. data/lib/printavo/graphql/preset_task_groups/update.graphql +11 -0
  149. data/lib/printavo/graphql/preset_tasks/create.graphql +12 -0
  150. data/lib/printavo/graphql/preset_tasks/delete.graphql +5 -0
  151. data/lib/printavo/graphql/preset_tasks/find.graphql +12 -0
  152. data/lib/printavo/graphql/preset_tasks/update.graphql +12 -0
  153. data/lib/printavo/graphql/pricing_matrices/all.graphql +12 -0
  154. data/lib/printavo/graphql/pricing_matrices/find.graphql +6 -0
  155. data/lib/printavo/graphql/production_files/all.graphql +16 -0
  156. data/lib/printavo/graphql/production_files/create.graphql +8 -0
  157. data/lib/printavo/graphql/production_files/creates.graphql +8 -0
  158. data/lib/printavo/graphql/production_files/delete.graphql +5 -0
  159. data/lib/printavo/graphql/production_files/deletes.graphql +5 -0
  160. data/lib/printavo/graphql/production_files/find.graphql +8 -0
  161. data/lib/printavo/graphql/products/all.graphql +14 -0
  162. data/lib/printavo/graphql/products/find.graphql +8 -0
  163. data/lib/printavo/graphql/statuses/all.graphql +13 -0
  164. data/lib/printavo/graphql/statuses/find.graphql +7 -0
  165. data/lib/printavo/graphql/tasks/all.graphql +19 -0
  166. data/lib/printavo/graphql/tasks/create.graphql +13 -0
  167. data/lib/printavo/graphql/tasks/delete.graphql +5 -0
  168. data/lib/printavo/graphql/tasks/find.graphql +13 -0
  169. data/lib/printavo/graphql/tasks/update.graphql +13 -0
  170. data/lib/printavo/graphql/threads/all.graphql +16 -0
  171. data/lib/printavo/graphql/threads/email_message_create.graphql +7 -0
  172. data/lib/printavo/graphql/threads/find.graphql +8 -0
  173. data/lib/printavo/graphql/threads/update.graphql +8 -0
  174. data/lib/printavo/graphql/transaction_payments/create.graphql +9 -0
  175. data/lib/printavo/graphql/transaction_payments/delete.graphql +5 -0
  176. data/lib/printavo/graphql/transaction_payments/update.graphql +9 -0
  177. data/lib/printavo/graphql/transactions/all.graphql +16 -0
  178. data/lib/printavo/graphql/transactions/find.graphql +8 -0
  179. data/lib/printavo/graphql/types_of_work/all.graphql +12 -0
  180. data/lib/printavo/graphql/users/all.graphql +14 -0
  181. data/lib/printavo/graphql/users/find.graphql +8 -0
  182. data/lib/printavo/graphql/vendors/all.graphql +14 -0
  183. data/lib/printavo/graphql/vendors/find.graphql +8 -0
  184. data/lib/printavo/resources/contacts.rb +13 -0
  185. data/lib/printavo/resources/customers.rb +15 -2
  186. data/lib/printavo/resources/inquiries.rb +13 -0
  187. data/lib/printavo/resources/invoices.rb +30 -3
  188. data/lib/printavo/resources/orders.rb +27 -0
  189. data/lib/printavo/version.rb +1 -1
  190. data/lib/printavo.rb +1 -0
  191. metadata +195 -2
@@ -0,0 +1,8 @@
1
+ query Product($id: ID!) {
2
+ product(id: $id) {
3
+ id
4
+ name
5
+ sku
6
+ description
7
+ }
8
+ }
@@ -0,0 +1,13 @@
1
+ query Statuses($first: Int, $after: String) {
2
+ statuses(first: $first, after: $after) {
3
+ nodes {
4
+ id
5
+ name
6
+ color
7
+ }
8
+ pageInfo {
9
+ hasNextPage
10
+ endCursor
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,7 @@
1
+ query Status($id: ID!) {
2
+ status(id: $id) {
3
+ id
4
+ name
5
+ color
6
+ }
7
+ }
@@ -0,0 +1,19 @@
1
+ query Tasks($first: Int, $after: String) {
2
+ tasks(first: $first, after: $after) {
3
+ nodes {
4
+ id
5
+ body
6
+ dueAt
7
+ completedAt
8
+ assignee {
9
+ id
10
+ firstName
11
+ lastName
12
+ }
13
+ }
14
+ pageInfo {
15
+ hasNextPage
16
+ endCursor
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,13 @@
1
+ mutation TaskCreate($input: TaskInput!) {
2
+ taskCreate(input: $input) {
3
+ id
4
+ body
5
+ dueAt
6
+ completedAt
7
+ assignee {
8
+ id
9
+ firstName
10
+ lastName
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,5 @@
1
+ mutation TaskDelete($id: ID!) {
2
+ taskDelete(id: $id) {
3
+ id
4
+ }
5
+ }
@@ -0,0 +1,13 @@
1
+ query Task($id: ID!) {
2
+ task(id: $id) {
3
+ id
4
+ body
5
+ dueAt
6
+ completedAt
7
+ assignee {
8
+ id
9
+ firstName
10
+ lastName
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,13 @@
1
+ mutation TaskUpdate($id: ID!, $input: TaskInput!) {
2
+ taskUpdate(id: $id, input: $input) {
3
+ id
4
+ body
5
+ dueAt
6
+ completedAt
7
+ assignee {
8
+ id
9
+ firstName
10
+ lastName
11
+ }
12
+ }
13
+ }
@@ -0,0 +1,16 @@
1
+ query Threads($orderId: ID!, $first: Int, $after: String) {
2
+ order(id: $orderId) {
3
+ threads(first: $first, after: $after) {
4
+ nodes {
5
+ id
6
+ subject
7
+ createdAt
8
+ updatedAt
9
+ }
10
+ pageInfo {
11
+ hasNextPage
12
+ endCursor
13
+ }
14
+ }
15
+ }
16
+ }
@@ -0,0 +1,7 @@
1
+ mutation EmailMessageCreate($input: EmailMessageInput!) {
2
+ emailMessageCreate(input: $input) {
3
+ id
4
+ body
5
+ createdAt
6
+ }
7
+ }
@@ -0,0 +1,8 @@
1
+ query Thread($id: ID!) {
2
+ thread(id: $id) {
3
+ id
4
+ subject
5
+ createdAt
6
+ updatedAt
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ mutation ThreadUpdate($id: ID!, $input: ThreadInput!) {
2
+ threadUpdate(id: $id, input: $input) {
3
+ id
4
+ subject
5
+ createdAt
6
+ updatedAt
7
+ }
8
+ }
@@ -0,0 +1,9 @@
1
+ mutation TransactionPaymentCreate($input: TransactionPaymentInput!) {
2
+ transactionPaymentCreate(input: $input) {
3
+ id
4
+ amount
5
+ paymentMethod
6
+ paidAt
7
+ note
8
+ }
9
+ }
@@ -0,0 +1,5 @@
1
+ mutation TransactionPaymentDelete($id: ID!) {
2
+ transactionPaymentDelete(id: $id) {
3
+ id
4
+ }
5
+ }
@@ -0,0 +1,9 @@
1
+ mutation TransactionPaymentUpdate($id: ID!, $input: TransactionPaymentInput!) {
2
+ transactionPaymentUpdate(id: $id, input: $input) {
3
+ id
4
+ amount
5
+ paymentMethod
6
+ paidAt
7
+ note
8
+ }
9
+ }
@@ -0,0 +1,16 @@
1
+ query Transactions($orderId: ID!, $first: Int, $after: String) {
2
+ order(id: $orderId) {
3
+ transactions(first: $first, after: $after) {
4
+ nodes {
5
+ id
6
+ amount
7
+ kind
8
+ createdAt
9
+ }
10
+ pageInfo {
11
+ hasNextPage
12
+ endCursor
13
+ }
14
+ }
15
+ }
16
+ }
@@ -0,0 +1,8 @@
1
+ query Transaction($id: ID!) {
2
+ transaction(id: $id) {
3
+ id
4
+ amount
5
+ kind
6
+ createdAt
7
+ }
8
+ }
@@ -0,0 +1,12 @@
1
+ query TypesOfWork($first: Int, $after: String) {
2
+ typesOfWork(first: $first, after: $after) {
3
+ nodes {
4
+ id
5
+ name
6
+ }
7
+ pageInfo {
8
+ hasNextPage
9
+ endCursor
10
+ }
11
+ }
12
+ }
@@ -0,0 +1,14 @@
1
+ query Users($first: Int, $after: String) {
2
+ users(first: $first, after: $after) {
3
+ nodes {
4
+ id
5
+ firstName
6
+ lastName
7
+ email
8
+ }
9
+ pageInfo {
10
+ hasNextPage
11
+ endCursor
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,8 @@
1
+ query User($id: ID!) {
2
+ user(id: $id) {
3
+ id
4
+ firstName
5
+ lastName
6
+ email
7
+ }
8
+ }
@@ -0,0 +1,14 @@
1
+ query Vendors($first: Int, $after: String) {
2
+ vendors(first: $first, after: $after) {
3
+ nodes {
4
+ id
5
+ name
6
+ email
7
+ phone
8
+ }
9
+ pageInfo {
10
+ hasNextPage
11
+ endCursor
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,8 @@
1
+ query Vendor($id: ID!) {
2
+ vendor(id: $id) {
3
+ id
4
+ name
5
+ email
6
+ phone
7
+ }
8
+ }
@@ -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 = File.read(File.join(__dir__, '../graphql/customers/all.graphql')).freeze
8
- FIND_QUERY = File.read(File.join(__dir__, '../graphql/customers/find.graphql')).freeze
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 = File.read(File.join(__dir__, '../graphql/invoices/all.graphql')).freeze
8
- FIND_QUERY = File.read(File.join(__dir__, '../graphql/invoices/find.graphql')).freeze
9
- UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/invoices/update.graphql')).freeze
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, **)
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Printavo
5
- VERSION = '0.13.0'
5
+ VERSION = '0.16.0'
6
6
  end
data/lib/printavo.rb CHANGED
@@ -8,6 +8,7 @@ require 'json'
8
8
  require_relative 'printavo/version'
9
9
  require_relative 'printavo/config'
10
10
  require_relative 'printavo/connection'
11
+ require_relative 'printavo/enums'
11
12
  require_relative 'printavo/errors'
12
13
  require_relative 'printavo/graphql_client'
13
14
  require_relative 'printavo/page'