zaikio-procurement 0.1.1 → 0.3.0
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_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
|