zaikio-procurement 0.1.1 → 0.3.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/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_availability_check.rb +14 -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 +4 -1
- metadata +6 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c253fd375c7d6ff7336b6a1d8e6b132086b32358e6a23c0c02aebc2f943293ec
|
|
4
|
+
data.tar.gz: ca0da2c26956697cae57124aca5d4f99e77d6eef155c3ad36ae25ace85c72213
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: abe508a14342b486217890609ba9471feadc7c5547a6f963f47ee38ca27cc75b2bcdfb41d10e1abce8ca5c066c4198a86fa7b27c156327a5b7f601fea89b575e
|
|
7
|
+
data.tar.gz: 149171c40f18b812f824ab2812ed356ac6c30054079d8496bb3f8c6b184a0420b07bbce5e16696004124df7ccf60bfc8abe0cb1c3612d6651415fa7a637d22e1
|
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
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
module Zaikio
|
|
2
|
+
module Procurement
|
|
3
|
+
class MaterialAvailabilityCheck < Base
|
|
4
|
+
uri "material_availability_checks(/:id)"
|
|
5
|
+
include_root_in_json :material_availability_check
|
|
6
|
+
|
|
7
|
+
# Attributes
|
|
8
|
+
attributes :consumer_id, :variant_id, :environmental_certification,
|
|
9
|
+
:unit, :amount, :currency, :required_at, :responded_at, :expires_at,
|
|
10
|
+
:earliest_delivery_date, :stock_availability_amount, :confirmed_price,
|
|
11
|
+
:created_at, :updated_at
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
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
|
@@ -22,6 +22,8 @@ require "zaikio/procurement/delivery"
|
|
|
22
22
|
require "zaikio/procurement/delivery_line_item"
|
|
23
23
|
require "zaikio/procurement/current_supplier"
|
|
24
24
|
require "zaikio/procurement/material_requirement"
|
|
25
|
+
require "zaikio/procurement/material_availability_check"
|
|
26
|
+
|
|
25
27
|
module Zaikio
|
|
26
28
|
module Procurement
|
|
27
29
|
class << self
|
|
@@ -38,10 +40,11 @@ module Zaikio
|
|
|
38
40
|
end
|
|
39
41
|
|
|
40
42
|
def with_token(token)
|
|
43
|
+
original_token = AuthorizationMiddleware.token
|
|
41
44
|
AuthorizationMiddleware.token = token
|
|
42
45
|
yield
|
|
43
46
|
ensure
|
|
44
|
-
AuthorizationMiddleware.
|
|
47
|
+
AuthorizationMiddleware.token = original_token
|
|
45
48
|
end
|
|
46
49
|
|
|
47
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.0
|
|
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
|
|
@@ -116,6 +117,7 @@ files:
|
|
|
116
117
|
- lib/zaikio/procurement/delivery.rb
|
|
117
118
|
- lib/zaikio/procurement/delivery_line_item.rb
|
|
118
119
|
- lib/zaikio/procurement/invoice.rb
|
|
120
|
+
- lib/zaikio/procurement/material_availability_check.rb
|
|
119
121
|
- lib/zaikio/procurement/material_requirement.rb
|
|
120
122
|
- lib/zaikio/procurement/order.rb
|
|
121
123
|
- lib/zaikio/procurement/order_line_item.rb
|
|
@@ -131,7 +133,7 @@ homepage: https://www.zaikio.com/
|
|
|
131
133
|
licenses:
|
|
132
134
|
- MIT
|
|
133
135
|
metadata:
|
|
134
|
-
changelog_uri: https://github.com/zaikio/zaikio-procurement-ruby/blob/
|
|
136
|
+
changelog_uri: https://github.com/zaikio/zaikio-procurement-ruby/blob/main/CHANGELOG.md
|
|
135
137
|
source_code_uri: https://github.com/zaikio/zaikio-procurement-ruby
|
|
136
138
|
post_install_message:
|
|
137
139
|
rdoc_options: []
|
|
@@ -148,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
148
150
|
- !ruby/object:Gem::Version
|
|
149
151
|
version: '0'
|
|
150
152
|
requirements: []
|
|
151
|
-
rubygems_version: 3.
|
|
153
|
+
rubygems_version: 3.2.22
|
|
152
154
|
signing_key:
|
|
153
155
|
specification_version: 4
|
|
154
156
|
summary: Ruby API Client for Zaikio's Procurement Platform
|