zaikio-procurement 0.2.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -1
- data/lib/zaikio/procurement/article.rb +6 -3
- data/lib/zaikio/procurement/concern/article_type_scoped.rb +21 -0
- data/lib/zaikio/procurement/material_requirement.rb +7 -0
- data/lib/zaikio/procurement/sku.rb +3 -7
- data/lib/zaikio/procurement/variant.rb +6 -3
- data/lib/zaikio/procurement/version.rb +1 -1
- data/lib/zaikio/procurement.rb +2 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9540114d7502d46b01cb3d75866f69acc3d656c1a016143820e703272561118
|
4
|
+
data.tar.gz: 78c76db5dcec3c309df633287a1991f2c214e69a01e5b500045b6cd310f5961e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9818b2381bc1064059aacd653ee52a5c65fc56f364a5b7647b6f1e796acb1b90ddb8c84e7c9017c112d8b946c00598b2f12b387b57caa529fc04de8ff82ed023
|
7
|
+
data.tar.gz: 5d003d7e5801e69c1374c7201ef0ff8d4007c4018e2d288c3a7401cbf07c72f38a4e3e6accbe008b69a00e3219b2764c1c7e1029a5782cdae51d87f9e6514aee
|
data/README.md
CHANGED
@@ -68,6 +68,11 @@ Zaikio::Procurement.with_token(token) do
|
|
68
68
|
variant = Zaikio::Procurement::Variant.find("845a4d7e-db5a-46a6-9d30-bf2e884cb393")
|
69
69
|
variant.line_item_suggestion(amount: 10, unit: "sheet") # Returns a line item suggestion for a specifc variant
|
70
70
|
|
71
|
+
# in Supplier API one must provide a valid scope when using `Variant` or `Article`:
|
72
|
+
# https://docs.zaikio.com/api/procurement_suppliers/procurement.html#/Variants/get__article_type__variants__variant_id_
|
73
|
+
variant = Zaikio::Procurement::Variant.substrate.find("845a4d7e-db5a-46a6-9d30-bf2e884cb393")
|
74
|
+
variant.skus
|
75
|
+
|
71
76
|
# https://docs.zaikio.com/api/procurement_consumers/procurement.html#/LineItemSuggestions/post_suppliers__supplier_id__line_item_suggestions
|
72
77
|
supplier = Zaikio::Procurement::Supplier.find("b5b14aa0-ae84-452b-9719-a38545365902")
|
73
78
|
supplier.line_item_suggestions(
|
@@ -137,4 +142,4 @@ Zaikio::Directory.with_token(token) do
|
|
137
142
|
Zaikio::Procurement::Article.with_fallback.find("7cbf51bd-35a8-47a1-84a2-57aa63140234") # => nil
|
138
143
|
Zaikio::Procurement::Article.with_fallback.all # Automatically uses empty array as fallback
|
139
144
|
end
|
140
|
-
```
|
145
|
+
```
|
@@ -1,13 +1,16 @@
|
|
1
|
+
require_relative "concern/article_type_scoped"
|
2
|
+
|
1
3
|
module Zaikio
|
2
4
|
module Procurement
|
3
5
|
class Article < Base
|
6
|
+
include ArticleTypeScoped
|
4
7
|
include_root_in_json :article
|
5
8
|
|
6
9
|
# Class methods
|
7
10
|
class << self
|
8
11
|
# Spyke URI override
|
9
12
|
def uri
|
10
|
-
Zaikio::Procurement.configuration.flavor == :supplier ? "
|
13
|
+
Zaikio::Procurement.configuration.flavor == :supplier ? ":type/articles(/:id)" : "articles(/:id)"
|
11
14
|
end
|
12
15
|
|
13
16
|
def list_by_article_type_or_supplier_slug(type_or_slug)
|
@@ -24,8 +27,8 @@ module Zaikio
|
|
24
27
|
:kind, :supplier_id, :created_at, :updated_at
|
25
28
|
|
26
29
|
# Associations
|
27
|
-
has_one :supplier,
|
28
|
-
|
30
|
+
has_one :supplier, class_name: "Zaikio::Procurement::Supplier",
|
31
|
+
uri: nil
|
29
32
|
# Manually build variants association to work for consumers and suppliers
|
30
33
|
def variants
|
31
34
|
self.class.request(:get, "#{uri}/variants").data.collect { |v| Zaikio::Procurement::Variant.new(v) }
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Zaikio
|
2
|
+
module Procurement
|
3
|
+
module ArticleTypeScoped
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
included do
|
6
|
+
scope :substrate, -> { where(type: :substrate) }
|
7
|
+
scope :plate, -> { where(type: :plate) }
|
8
|
+
end
|
9
|
+
module ClassMethods
|
10
|
+
def find(id)
|
11
|
+
if Zaikio::Procurement.configuration.flavor == :supplier &&
|
12
|
+
(current_scope.nil? || current_scope.params[:type].blank?)
|
13
|
+
raise ArgumentError, "id and type are required for #{name.demodulize} in Supplier API"
|
14
|
+
end
|
15
|
+
|
16
|
+
super
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -15,6 +15,13 @@ module Zaikio
|
|
15
15
|
has_one :supplier, class_name: "Zaikio::Procurement::Supplier", uri: nil
|
16
16
|
has_one :variant, class_name: "Zaikio::Procurement::Variant", uri: nil
|
17
17
|
has_many :order_line_items, class_name: "Zaikio::Procurement::OrderLineItem", uri: nil
|
18
|
+
|
19
|
+
def order(purchaser_id:)
|
20
|
+
result = self.class.request(:post, "material_requirements/#{id}/order",
|
21
|
+
order: { purchaser_id: purchaser_id })
|
22
|
+
|
23
|
+
Zaikio::Procurement::MaterialRequirement.new(result.data)
|
24
|
+
end
|
18
25
|
end
|
19
26
|
end
|
20
27
|
end
|
@@ -15,13 +15,9 @@ module Zaikio
|
|
15
15
|
|
16
16
|
# Manually build variant association to work for consumers and suppliers
|
17
17
|
def variant
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
"variants/#{variant_id}"
|
22
|
-
end
|
23
|
-
|
24
|
-
Zaikio::Procurement::Variant.new(self.class.request(:get, path).data)
|
18
|
+
Zaikio::Procurement::Variant.new(
|
19
|
+
self.class.request(:get, attributes.dig("variant", "links", 0, "href")).data
|
20
|
+
)
|
25
21
|
end
|
26
22
|
end
|
27
23
|
end
|
@@ -1,11 +1,14 @@
|
|
1
|
+
require_relative "concern/article_type_scoped"
|
2
|
+
|
1
3
|
module Zaikio
|
2
4
|
module Procurement
|
3
5
|
class Variant < Base
|
6
|
+
include ArticleTypeScoped
|
4
7
|
include_root_in_json :variant
|
5
8
|
|
6
9
|
# Spyke URI override
|
7
10
|
def self.uri
|
8
|
-
Zaikio::Procurement.configuration.flavor == :supplier ? "
|
11
|
+
Zaikio::Procurement.configuration.flavor == :supplier ? ":type/variants(/:id)" : "variants(/:id)"
|
9
12
|
end
|
10
13
|
|
11
14
|
# Attributes
|
@@ -16,8 +19,8 @@ module Zaikio
|
|
16
19
|
# Associations
|
17
20
|
has_one :article, class_name: "Zaikio::Procurement::Article",
|
18
21
|
uri: nil
|
19
|
-
has_many :skus,
|
20
|
-
|
22
|
+
has_many :skus, class_name: "Zaikio::Procurement::Sku",
|
23
|
+
uri: "variants/:variant_id/skus"
|
21
24
|
|
22
25
|
def line_item_suggestion(**attributes)
|
23
26
|
self.class.request(
|
data/lib/zaikio/procurement.rb
CHANGED
@@ -40,10 +40,11 @@ module Zaikio
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def with_token(token)
|
43
|
+
original_token = AuthorizationMiddleware.token
|
43
44
|
AuthorizationMiddleware.token = token
|
44
45
|
yield
|
45
46
|
ensure
|
46
|
-
AuthorizationMiddleware.
|
47
|
+
AuthorizationMiddleware.token = original_token
|
47
48
|
end
|
48
49
|
|
49
50
|
def connection_path
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zaikio-procurement
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zaikio GmbH
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2021-10-
|
12
|
+
date: 2021-10-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: concurrent-ruby
|
@@ -109,6 +109,7 @@ files:
|
|
109
109
|
- lib/zaikio/procurement/article.rb
|
110
110
|
- lib/zaikio/procurement/authorization_middleware.rb
|
111
111
|
- lib/zaikio/procurement/base.rb
|
112
|
+
- lib/zaikio/procurement/concern/article_type_scoped.rb
|
112
113
|
- lib/zaikio/procurement/configuration.rb
|
113
114
|
- lib/zaikio/procurement/contract.rb
|
114
115
|
- lib/zaikio/procurement/contract_request.rb
|
@@ -149,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
150
|
- !ruby/object:Gem::Version
|
150
151
|
version: '0'
|
151
152
|
requirements: []
|
152
|
-
rubygems_version: 3.
|
153
|
+
rubygems_version: 3.2.22
|
153
154
|
signing_key:
|
154
155
|
specification_version: 4
|
155
156
|
summary: Ruby API Client for Zaikio's Procurement Platform
|