printavo-ruby 0.6.0 → 0.8.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 +43 -0
- data/docs/TODO.md +125 -89
- data/lib/printavo/client.rb +54 -6
- data/lib/printavo/models/expense.rb +11 -0
- data/lib/printavo/models/fee.rb +12 -0
- data/lib/printavo/models/imprint.rb +11 -0
- data/lib/printavo/models/line_item.rb +13 -0
- data/lib/printavo/models/line_item_group.rb +10 -0
- data/lib/printavo/models/task.rb +13 -0
- data/lib/printavo/models/thread.rb +11 -0
- data/lib/printavo/models/transaction.rb +11 -0
- data/lib/printavo/models/transaction_payment.rb +12 -0
- data/lib/printavo/resources/base.rb +8 -0
- data/lib/printavo/resources/contacts.rb +0 -8
- data/lib/printavo/resources/customers.rb +0 -7
- data/lib/printavo/resources/expenses.rb +48 -0
- data/lib/printavo/resources/fees.rb +72 -0
- data/lib/printavo/resources/imprints.rb +84 -0
- data/lib/printavo/resources/invoices.rb +0 -6
- data/lib/printavo/resources/line_item_groups.rb +72 -0
- data/lib/printavo/resources/line_items.rb +84 -0
- data/lib/printavo/resources/orders.rb +0 -6
- data/lib/printavo/resources/tasks.rb +59 -0
- data/lib/printavo/resources/threads.rb +53 -0
- data/lib/printavo/resources/transaction_payments.rb +29 -0
- data/lib/printavo/resources/transactions.rb +36 -0
- data/lib/printavo/version.rb +1 -1
- data/lib/printavo.rb +18 -0
- metadata +19 -1
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# lib/printavo/resources/expenses.rb
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Printavo
|
|
5
|
+
module Resources
|
|
6
|
+
class Expenses < Base
|
|
7
|
+
ALL_QUERY = File.read(File.join(__dir__, '../graphql/expenses/all.graphql')).freeze
|
|
8
|
+
FIND_QUERY = File.read(File.join(__dir__, '../graphql/expenses/find.graphql')).freeze
|
|
9
|
+
CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/expenses/create.graphql')).freeze
|
|
10
|
+
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/expenses/update.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::Expense.new(data['expense'])
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def create(**input)
|
|
22
|
+
data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
|
|
23
|
+
Printavo::Expense.new(data['expenseCreate'])
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def update(id, **input)
|
|
27
|
+
data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
|
|
28
|
+
Printavo::Expense.new(data['expenseUpdate'])
|
|
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']['expenses']['nodes'].map { |attrs| Printavo::Expense.new(attrs) }
|
|
39
|
+
page_info = data['order']['expenses']['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,72 @@
|
|
|
1
|
+
# lib/printavo/resources/fees.rb
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Printavo
|
|
5
|
+
module Resources
|
|
6
|
+
class Fees < Base
|
|
7
|
+
ALL_QUERY = File.read(File.join(__dir__, '../graphql/fees/all.graphql')).freeze
|
|
8
|
+
FIND_QUERY = File.read(File.join(__dir__, '../graphql/fees/find.graphql')).freeze
|
|
9
|
+
CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/fees/create.graphql')).freeze
|
|
10
|
+
CREATES_MUTATION = File.read(File.join(__dir__, '../graphql/fees/creates.graphql')).freeze
|
|
11
|
+
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/fees/update.graphql')).freeze
|
|
12
|
+
UPDATES_MUTATION = File.read(File.join(__dir__, '../graphql/fees/updates.graphql')).freeze
|
|
13
|
+
DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/fees/delete.graphql')).freeze
|
|
14
|
+
DELETES_MUTATION = File.read(File.join(__dir__, '../graphql/fees/deletes.graphql')).freeze
|
|
15
|
+
|
|
16
|
+
def all(order_id:, first: 25, after: nil)
|
|
17
|
+
fetch_page(order_id: order_id, first: first, after: after).records
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def find(id)
|
|
21
|
+
data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
|
|
22
|
+
Printavo::Fee.new(data['fee'])
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def create(**input)
|
|
26
|
+
data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
|
|
27
|
+
Printavo::Fee.new(data['feeCreate'])
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def creates(inputs)
|
|
31
|
+
data = @graphql.mutate(CREATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
|
|
32
|
+
data['feeCreates'].map { |attrs| Printavo::Fee.new(attrs) }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def update(id, **input)
|
|
36
|
+
data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
|
|
37
|
+
Printavo::Fee.new(data['feeUpdate'])
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def updates(inputs)
|
|
41
|
+
data = @graphql.mutate(UPDATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
|
|
42
|
+
data['feeUpdates'].map { |attrs| Printavo::Fee.new(attrs) }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def delete(id)
|
|
46
|
+
@graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
|
|
47
|
+
nil
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def deletes(ids)
|
|
51
|
+
@graphql.mutate(DELETES_MUTATION, variables: { ids: ids.map(&:to_s) })
|
|
52
|
+
nil
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
private
|
|
56
|
+
|
|
57
|
+
def fetch_page(order_id:, first: 25, after: nil, **)
|
|
58
|
+
data = @graphql.query(
|
|
59
|
+
ALL_QUERY,
|
|
60
|
+
variables: { orderId: order_id.to_s, first: first, after: after }
|
|
61
|
+
)
|
|
62
|
+
nodes = data['order']['fees']['nodes'].map { |attrs| Printavo::Fee.new(attrs) }
|
|
63
|
+
page_info = data['order']['fees']['pageInfo']
|
|
64
|
+
Printavo::Page.new(
|
|
65
|
+
records: nodes,
|
|
66
|
+
has_next_page: page_info['hasNextPage'],
|
|
67
|
+
end_cursor: page_info['endCursor']
|
|
68
|
+
)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# lib/printavo/resources/imprints.rb
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Printavo
|
|
5
|
+
module Resources
|
|
6
|
+
class Imprints < Base
|
|
7
|
+
ALL_QUERY = File.read(File.join(__dir__, '../graphql/imprints/all.graphql')).freeze
|
|
8
|
+
FIND_QUERY = File.read(File.join(__dir__, '../graphql/imprints/find.graphql')).freeze
|
|
9
|
+
CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/create.graphql')).freeze
|
|
10
|
+
CREATES_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/creates.graphql')).freeze
|
|
11
|
+
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/update.graphql')).freeze
|
|
12
|
+
UPDATES_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/updates.graphql')).freeze
|
|
13
|
+
DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/delete.graphql')).freeze
|
|
14
|
+
DELETES_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/deletes.graphql')).freeze
|
|
15
|
+
MOCKUP_CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/mockup_create.graphql')).freeze
|
|
16
|
+
MOCKUP_CREATES_MUTATION = File.read(File.join(__dir__, '../graphql/imprints/mockup_creates.graphql')).freeze
|
|
17
|
+
|
|
18
|
+
def all(line_item_group_id:, first: 25, after: nil)
|
|
19
|
+
fetch_page(line_item_group_id: line_item_group_id, first: first, after: after).records
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def find(id)
|
|
23
|
+
data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
|
|
24
|
+
Printavo::Imprint.new(data['imprint'])
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def create(**input)
|
|
28
|
+
data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
|
|
29
|
+
Printavo::Imprint.new(data['imprintCreate'])
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def creates(inputs)
|
|
33
|
+
data = @graphql.mutate(CREATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
|
|
34
|
+
data['imprintCreates'].map { |attrs| Printavo::Imprint.new(attrs) }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def update(id, **input)
|
|
38
|
+
data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
|
|
39
|
+
Printavo::Imprint.new(data['imprintUpdate'])
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def updates(inputs)
|
|
43
|
+
data = @graphql.mutate(UPDATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
|
|
44
|
+
data['imprintUpdates'].map { |attrs| Printavo::Imprint.new(attrs) }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def delete(id)
|
|
48
|
+
@graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
|
|
49
|
+
nil
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def deletes(ids)
|
|
53
|
+
@graphql.mutate(DELETES_MUTATION, variables: { ids: ids.map(&:to_s) })
|
|
54
|
+
nil
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def mockup_create(**input)
|
|
58
|
+
data = @graphql.mutate(MOCKUP_CREATE_MUTATION, variables: { input: camelize_keys(input) })
|
|
59
|
+
data['imprintMockupCreate']
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def mockup_creates(inputs)
|
|
63
|
+
data = @graphql.mutate(MOCKUP_CREATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
|
|
64
|
+
data['imprintMockupCreates']
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
private
|
|
68
|
+
|
|
69
|
+
def fetch_page(line_item_group_id:, first: 25, after: nil, **)
|
|
70
|
+
data = @graphql.query(
|
|
71
|
+
ALL_QUERY,
|
|
72
|
+
variables: { lineItemGroupId: line_item_group_id.to_s, first: first, after: after }
|
|
73
|
+
)
|
|
74
|
+
nodes = data['lineItemGroup']['imprints']['nodes'].map { |attrs| Printavo::Imprint.new(attrs) }
|
|
75
|
+
page_info = data['lineItemGroup']['imprints']['pageInfo']
|
|
76
|
+
Printavo::Page.new(
|
|
77
|
+
records: nodes,
|
|
78
|
+
has_next_page: page_info['hasNextPage'],
|
|
79
|
+
end_cursor: page_info['endCursor']
|
|
80
|
+
)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# lib/printavo/resources/line_item_groups.rb
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Printavo
|
|
5
|
+
module Resources
|
|
6
|
+
class LineItemGroups < Base
|
|
7
|
+
ALL_QUERY = File.read(File.join(__dir__, '../graphql/line_item_groups/all.graphql')).freeze
|
|
8
|
+
FIND_QUERY = File.read(File.join(__dir__, '../graphql/line_item_groups/find.graphql')).freeze
|
|
9
|
+
CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/line_item_groups/create.graphql')).freeze
|
|
10
|
+
CREATES_MUTATION = File.read(File.join(__dir__, '../graphql/line_item_groups/creates.graphql')).freeze
|
|
11
|
+
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/line_item_groups/update.graphql')).freeze
|
|
12
|
+
UPDATES_MUTATION = File.read(File.join(__dir__, '../graphql/line_item_groups/updates.graphql')).freeze
|
|
13
|
+
DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/line_item_groups/delete.graphql')).freeze
|
|
14
|
+
DELETES_MUTATION = File.read(File.join(__dir__, '../graphql/line_item_groups/deletes.graphql')).freeze
|
|
15
|
+
|
|
16
|
+
def all(order_id:, first: 25, after: nil)
|
|
17
|
+
fetch_page(order_id: order_id, first: first, after: after).records
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def find(id)
|
|
21
|
+
data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
|
|
22
|
+
Printavo::LineItemGroup.new(data['lineItemGroup'])
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def create(**input)
|
|
26
|
+
data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
|
|
27
|
+
Printavo::LineItemGroup.new(data['lineItemGroupCreate'])
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def creates(inputs)
|
|
31
|
+
data = @graphql.mutate(CREATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
|
|
32
|
+
data['lineItemGroupCreates'].map { |attrs| Printavo::LineItemGroup.new(attrs) }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def update(id, **input)
|
|
36
|
+
data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
|
|
37
|
+
Printavo::LineItemGroup.new(data['lineItemGroupUpdate'])
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def updates(inputs)
|
|
41
|
+
data = @graphql.mutate(UPDATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
|
|
42
|
+
data['lineItemGroupUpdates'].map { |attrs| Printavo::LineItemGroup.new(attrs) }
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def delete(id)
|
|
46
|
+
@graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
|
|
47
|
+
nil
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def deletes(ids)
|
|
51
|
+
@graphql.mutate(DELETES_MUTATION, variables: { ids: ids.map(&:to_s) })
|
|
52
|
+
nil
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
private
|
|
56
|
+
|
|
57
|
+
def fetch_page(order_id:, first: 25, after: nil, **)
|
|
58
|
+
data = @graphql.query(
|
|
59
|
+
ALL_QUERY,
|
|
60
|
+
variables: { orderId: order_id.to_s, first: first, after: after }
|
|
61
|
+
)
|
|
62
|
+
nodes = data['order']['lineItemGroups']['nodes'].map { |attrs| Printavo::LineItemGroup.new(attrs) }
|
|
63
|
+
page_info = data['order']['lineItemGroups']['pageInfo']
|
|
64
|
+
Printavo::Page.new(
|
|
65
|
+
records: nodes,
|
|
66
|
+
has_next_page: page_info['hasNextPage'],
|
|
67
|
+
end_cursor: page_info['endCursor']
|
|
68
|
+
)
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# lib/printavo/resources/line_items.rb
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Printavo
|
|
5
|
+
module Resources
|
|
6
|
+
class LineItems < Base
|
|
7
|
+
ALL_QUERY = File.read(File.join(__dir__, '../graphql/line_items/all.graphql')).freeze
|
|
8
|
+
FIND_QUERY = File.read(File.join(__dir__, '../graphql/line_items/find.graphql')).freeze
|
|
9
|
+
CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/create.graphql')).freeze
|
|
10
|
+
CREATES_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/creates.graphql')).freeze
|
|
11
|
+
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/update.graphql')).freeze
|
|
12
|
+
UPDATES_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/updates.graphql')).freeze
|
|
13
|
+
DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/delete.graphql')).freeze
|
|
14
|
+
DELETES_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/deletes.graphql')).freeze
|
|
15
|
+
MOCKUP_CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/mockup_create.graphql')).freeze
|
|
16
|
+
MOCKUP_CREATES_MUTATION = File.read(File.join(__dir__, '../graphql/line_items/mockup_creates.graphql')).freeze
|
|
17
|
+
|
|
18
|
+
def all(line_item_group_id:, first: 25, after: nil)
|
|
19
|
+
fetch_page(line_item_group_id: line_item_group_id, first: first, after: after).records
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def find(id)
|
|
23
|
+
data = @graphql.query(FIND_QUERY, variables: { id: id.to_s })
|
|
24
|
+
Printavo::LineItem.new(data['lineItem'])
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def create(**input)
|
|
28
|
+
data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
|
|
29
|
+
Printavo::LineItem.new(data['lineItemCreate'])
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def creates(inputs)
|
|
33
|
+
data = @graphql.mutate(CREATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
|
|
34
|
+
data['lineItemCreates'].map { |attrs| Printavo::LineItem.new(attrs) }
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def update(id, **input)
|
|
38
|
+
data = @graphql.mutate(UPDATE_MUTATION, variables: { id: id.to_s, input: camelize_keys(input) })
|
|
39
|
+
Printavo::LineItem.new(data['lineItemUpdate'])
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def updates(inputs)
|
|
43
|
+
data = @graphql.mutate(UPDATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
|
|
44
|
+
data['lineItemUpdates'].map { |attrs| Printavo::LineItem.new(attrs) }
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def delete(id)
|
|
48
|
+
@graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
|
|
49
|
+
nil
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def deletes(ids)
|
|
53
|
+
@graphql.mutate(DELETES_MUTATION, variables: { ids: ids.map(&:to_s) })
|
|
54
|
+
nil
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def mockup_create(**input)
|
|
58
|
+
data = @graphql.mutate(MOCKUP_CREATE_MUTATION, variables: { input: camelize_keys(input) })
|
|
59
|
+
data['lineItemMockupCreate']
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def mockup_creates(inputs)
|
|
63
|
+
data = @graphql.mutate(MOCKUP_CREATES_MUTATION, variables: { inputs: inputs.map { |i| camelize_keys(i) } })
|
|
64
|
+
data['lineItemMockupCreates']
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
private
|
|
68
|
+
|
|
69
|
+
def fetch_page(line_item_group_id:, first: 25, after: nil, **)
|
|
70
|
+
data = @graphql.query(
|
|
71
|
+
ALL_QUERY,
|
|
72
|
+
variables: { lineItemGroupId: line_item_group_id.to_s, first: first, after: after }
|
|
73
|
+
)
|
|
74
|
+
nodes = data['lineItemGroup']['lineItems']['nodes'].map { |attrs| Printavo::LineItem.new(attrs) }
|
|
75
|
+
page_info = data['lineItemGroup']['lineItems']['pageInfo']
|
|
76
|
+
Printavo::Page.new(
|
|
77
|
+
records: nodes,
|
|
78
|
+
has_next_page: page_info['hasNextPage'],
|
|
79
|
+
end_cursor: page_info['endCursor']
|
|
80
|
+
)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -87,12 +87,6 @@ module Printavo
|
|
|
87
87
|
normalized['totalPrice'] ||= attrs['total']
|
|
88
88
|
Printavo::Order.new(normalized)
|
|
89
89
|
end
|
|
90
|
-
|
|
91
|
-
def camelize_keys(hash)
|
|
92
|
-
hash.transform_keys do |key|
|
|
93
|
-
key.to_s.gsub(/_([a-z])/) { ::Regexp.last_match(1).upcase }
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
90
|
end
|
|
97
91
|
end
|
|
98
92
|
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# lib/printavo/resources/tasks.rb
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Printavo
|
|
5
|
+
module Resources
|
|
6
|
+
class Tasks < Base
|
|
7
|
+
ALL_QUERY = File.read(File.join(__dir__, '../graphql/tasks/all.graphql')).freeze
|
|
8
|
+
FIND_QUERY = File.read(File.join(__dir__, '../graphql/tasks/find.graphql')).freeze
|
|
9
|
+
CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/tasks/create.graphql')).freeze
|
|
10
|
+
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/tasks/update.graphql')).freeze
|
|
11
|
+
DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/tasks/delete.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::Task.new(data['task'])
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def create(**input)
|
|
23
|
+
data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
|
|
24
|
+
Printavo::Task.new(data['taskCreate'])
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def update(id, **input)
|
|
28
|
+
data = @graphql.mutate(UPDATE_MUTATION,
|
|
29
|
+
variables: { id: id.to_s, input: camelize_keys(input) })
|
|
30
|
+
Printavo::Task.new(data['taskUpdate'])
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Marks a task complete by setting completedAt to the current time.
|
|
34
|
+
def complete(id)
|
|
35
|
+
require 'time'
|
|
36
|
+
update(id, completed_at: Time.now.utc.iso8601)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Deletes a task. Raises on failure; returns nil on success.
|
|
40
|
+
def delete(id)
|
|
41
|
+
@graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
|
|
42
|
+
nil
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
private
|
|
46
|
+
|
|
47
|
+
def fetch_page(first: 25, after: nil, **)
|
|
48
|
+
data = @graphql.query(ALL_QUERY, variables: { first: first, after: after })
|
|
49
|
+
nodes = data['tasks']['nodes'].map { |attrs| Printavo::Task.new(attrs) }
|
|
50
|
+
page_info = data['tasks']['pageInfo']
|
|
51
|
+
Printavo::Page.new(
|
|
52
|
+
records: nodes,
|
|
53
|
+
has_next_page: page_info['hasNextPage'],
|
|
54
|
+
end_cursor: page_info['endCursor']
|
|
55
|
+
)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# lib/printavo/resources/threads.rb
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Printavo
|
|
5
|
+
module Resources
|
|
6
|
+
class Threads < Base
|
|
7
|
+
ALL_QUERY = File.read(File.join(__dir__, '../graphql/threads/all.graphql')).freeze
|
|
8
|
+
FIND_QUERY = File.read(File.join(__dir__, '../graphql/threads/find.graphql')).freeze
|
|
9
|
+
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/threads/update.graphql')).freeze
|
|
10
|
+
EMAIL_MESSAGE_CREATE_MUTATION =
|
|
11
|
+
File.read(File.join(__dir__, '../graphql/threads/email_message_create.graphql')).freeze
|
|
12
|
+
|
|
13
|
+
def all(order_id:, first: 25, after: nil)
|
|
14
|
+
fetch_page(order_id: order_id, 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::Thread.new(data['thread'])
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def update(id, **input)
|
|
23
|
+
data = @graphql.mutate(UPDATE_MUTATION,
|
|
24
|
+
variables: { id: id.to_s, input: camelize_keys(input) })
|
|
25
|
+
Printavo::Thread.new(data['threadUpdate'])
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Sends an email message on a thread. Returns the raw message hash.
|
|
29
|
+
# A dedicated EmailMessage model is planned for a future version.
|
|
30
|
+
def email_message_create(**input)
|
|
31
|
+
data = @graphql.mutate(EMAIL_MESSAGE_CREATE_MUTATION,
|
|
32
|
+
variables: { input: camelize_keys(input) })
|
|
33
|
+
data['emailMessageCreate']
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
|
|
38
|
+
def fetch_page(order_id:, first: 25, after: nil, **)
|
|
39
|
+
data = @graphql.query(
|
|
40
|
+
ALL_QUERY,
|
|
41
|
+
variables: { orderId: order_id.to_s, first: first, after: after }
|
|
42
|
+
)
|
|
43
|
+
nodes = data['order']['threads']['nodes'].map { |attrs| Printavo::Thread.new(attrs) }
|
|
44
|
+
page_info = data['order']['threads']['pageInfo']
|
|
45
|
+
Printavo::Page.new(
|
|
46
|
+
records: nodes,
|
|
47
|
+
has_next_page: page_info['hasNextPage'],
|
|
48
|
+
end_cursor: page_info['endCursor']
|
|
49
|
+
)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# lib/printavo/resources/transaction_payments.rb
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Printavo
|
|
5
|
+
module Resources
|
|
6
|
+
class TransactionPayments < Base
|
|
7
|
+
CREATE_MUTATION = File.read(File.join(__dir__, '../graphql/transaction_payments/create.graphql')).freeze
|
|
8
|
+
UPDATE_MUTATION = File.read(File.join(__dir__, '../graphql/transaction_payments/update.graphql')).freeze
|
|
9
|
+
DELETE_MUTATION = File.read(File.join(__dir__, '../graphql/transaction_payments/delete.graphql')).freeze
|
|
10
|
+
|
|
11
|
+
def create(**input)
|
|
12
|
+
data = @graphql.mutate(CREATE_MUTATION, variables: { input: camelize_keys(input) })
|
|
13
|
+
Printavo::TransactionPayment.new(data['transactionPaymentCreate'])
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def update(id, **input)
|
|
17
|
+
data = @graphql.mutate(UPDATE_MUTATION,
|
|
18
|
+
variables: { id: id.to_s, input: camelize_keys(input) })
|
|
19
|
+
Printavo::TransactionPayment.new(data['transactionPaymentUpdate'])
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Deletes a transaction payment. Raises on failure; returns nil on success.
|
|
23
|
+
def delete(id)
|
|
24
|
+
@graphql.mutate(DELETE_MUTATION, variables: { id: id.to_s })
|
|
25
|
+
nil
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# lib/printavo/resources/transactions.rb
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
module Printavo
|
|
5
|
+
module Resources
|
|
6
|
+
class Transactions < Base
|
|
7
|
+
ALL_QUERY = File.read(File.join(__dir__, '../graphql/transactions/all.graphql')).freeze
|
|
8
|
+
FIND_QUERY = File.read(File.join(__dir__, '../graphql/transactions/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::Transaction.new(data['transaction'])
|
|
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']['transactions']['nodes'].map { |attrs| Printavo::Transaction.new(attrs) }
|
|
27
|
+
page_info = data['order']['transactions']['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
|
@@ -19,7 +19,16 @@ require_relative 'printavo/models/invoice'
|
|
|
19
19
|
require_relative 'printavo/models/status'
|
|
20
20
|
require_relative 'printavo/models/order'
|
|
21
21
|
require_relative 'printavo/models/job'
|
|
22
|
+
require_relative 'printavo/models/expense'
|
|
23
|
+
require_relative 'printavo/models/fee'
|
|
24
|
+
require_relative 'printavo/models/imprint'
|
|
22
25
|
require_relative 'printavo/models/inquiry'
|
|
26
|
+
require_relative 'printavo/models/line_item'
|
|
27
|
+
require_relative 'printavo/models/line_item_group'
|
|
28
|
+
require_relative 'printavo/models/task'
|
|
29
|
+
require_relative 'printavo/models/thread'
|
|
30
|
+
require_relative 'printavo/models/transaction'
|
|
31
|
+
require_relative 'printavo/models/transaction_payment'
|
|
23
32
|
require_relative 'printavo/resources/base'
|
|
24
33
|
require_relative 'printavo/resources/account'
|
|
25
34
|
require_relative 'printavo/resources/contacts'
|
|
@@ -28,7 +37,16 @@ require_relative 'printavo/resources/invoices'
|
|
|
28
37
|
require_relative 'printavo/resources/statuses'
|
|
29
38
|
require_relative 'printavo/resources/orders'
|
|
30
39
|
require_relative 'printavo/resources/jobs'
|
|
40
|
+
require_relative 'printavo/resources/expenses'
|
|
41
|
+
require_relative 'printavo/resources/fees'
|
|
42
|
+
require_relative 'printavo/resources/imprints'
|
|
31
43
|
require_relative 'printavo/resources/inquiries'
|
|
44
|
+
require_relative 'printavo/resources/line_item_groups'
|
|
45
|
+
require_relative 'printavo/resources/line_items'
|
|
46
|
+
require_relative 'printavo/resources/tasks'
|
|
47
|
+
require_relative 'printavo/resources/threads'
|
|
48
|
+
require_relative 'printavo/resources/transactions'
|
|
49
|
+
require_relative 'printavo/resources/transaction_payments'
|
|
32
50
|
require_relative 'printavo/webhooks'
|
|
33
51
|
require_relative 'printavo/client'
|
|
34
52
|
|
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.8.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Stan Carver II
|
|
@@ -276,21 +276,39 @@ files:
|
|
|
276
276
|
- lib/printavo/models/base.rb
|
|
277
277
|
- lib/printavo/models/contact.rb
|
|
278
278
|
- lib/printavo/models/customer.rb
|
|
279
|
+
- lib/printavo/models/expense.rb
|
|
280
|
+
- lib/printavo/models/fee.rb
|
|
281
|
+
- lib/printavo/models/imprint.rb
|
|
279
282
|
- lib/printavo/models/inquiry.rb
|
|
280
283
|
- lib/printavo/models/invoice.rb
|
|
281
284
|
- lib/printavo/models/job.rb
|
|
285
|
+
- lib/printavo/models/line_item.rb
|
|
286
|
+
- lib/printavo/models/line_item_group.rb
|
|
282
287
|
- lib/printavo/models/order.rb
|
|
283
288
|
- lib/printavo/models/status.rb
|
|
289
|
+
- lib/printavo/models/task.rb
|
|
290
|
+
- lib/printavo/models/thread.rb
|
|
291
|
+
- lib/printavo/models/transaction.rb
|
|
292
|
+
- lib/printavo/models/transaction_payment.rb
|
|
284
293
|
- lib/printavo/page.rb
|
|
285
294
|
- lib/printavo/resources/account.rb
|
|
286
295
|
- lib/printavo/resources/base.rb
|
|
287
296
|
- lib/printavo/resources/contacts.rb
|
|
288
297
|
- lib/printavo/resources/customers.rb
|
|
298
|
+
- lib/printavo/resources/expenses.rb
|
|
299
|
+
- lib/printavo/resources/fees.rb
|
|
300
|
+
- lib/printavo/resources/imprints.rb
|
|
289
301
|
- lib/printavo/resources/inquiries.rb
|
|
290
302
|
- lib/printavo/resources/invoices.rb
|
|
291
303
|
- lib/printavo/resources/jobs.rb
|
|
304
|
+
- lib/printavo/resources/line_item_groups.rb
|
|
305
|
+
- lib/printavo/resources/line_items.rb
|
|
292
306
|
- lib/printavo/resources/orders.rb
|
|
293
307
|
- lib/printavo/resources/statuses.rb
|
|
308
|
+
- lib/printavo/resources/tasks.rb
|
|
309
|
+
- lib/printavo/resources/threads.rb
|
|
310
|
+
- lib/printavo/resources/transaction_payments.rb
|
|
311
|
+
- lib/printavo/resources/transactions.rb
|
|
294
312
|
- lib/printavo/version.rb
|
|
295
313
|
- lib/printavo/webhooks.rb
|
|
296
314
|
homepage: https://github.com/scarver2/printavo-ruby
|