zaikio-procurement 0.2.1 → 0.3.2
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/address.rb +22 -0
- data/lib/zaikio/procurement/article.rb +6 -3
- data/lib/zaikio/procurement/concern/article_type_scoped.rb +21 -0
- data/lib/zaikio/procurement/delivery.rb +4 -3
- 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 +1 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6d678f0c86ce42a67eb9eeacd9849b4c7c1f119158a401c0d602f257339c9e0
|
4
|
+
data.tar.gz: 68afd39bf4d8b642b45717c20dab222b5278110e02054f41395742fa1478437c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26b7379563b6064aba1ed7d87626007de51b6e81c695ffd16c0040781c3896bc23fde94abccab0c37d52e3d60462d50d69e350557baf0555f62263c6bee131bc
|
7
|
+
data.tar.gz: ff0ba517aab8e36efa73dfd4200cfc59f914ca49696b6dfa4be37b9a5e6f4ee9cc9eb37851f8db524250c6d38822432231d051e32c909cd921dfd08aa4171291
|
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
|
+
```
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Zaikio
|
2
|
+
module Procurement
|
3
|
+
class Address < Base
|
4
|
+
attributes :addition,
|
5
|
+
:addressable,
|
6
|
+
:addressee,
|
7
|
+
:country_code,
|
8
|
+
:county,
|
9
|
+
:kind,
|
10
|
+
:location,
|
11
|
+
:number,
|
12
|
+
:state,
|
13
|
+
:street,
|
14
|
+
:text,
|
15
|
+
:town,
|
16
|
+
:types,
|
17
|
+
:zip_code,
|
18
|
+
:created_at,
|
19
|
+
:updated_at
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -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
|
@@ -6,11 +6,12 @@ module Zaikio
|
|
6
6
|
|
7
7
|
# Attributes
|
8
8
|
attributes :confirmed_delivery_date, :desired_delivery_date, :references,
|
9
|
-
:
|
9
|
+
:order_id, :created_at, :updated_at
|
10
10
|
|
11
11
|
# Associations
|
12
|
-
belongs_to :
|
13
|
-
|
12
|
+
belongs_to :address, class_name: "Zaikio::Procurement::Address", uri: nil
|
13
|
+
belongs_to :order, class_name: "Zaikio::Procurement::Order", uri: nil
|
14
|
+
|
14
15
|
has_many :delivery_line_items, class_name: "Zaikio::Procurement::DeliveryLineItem",
|
15
16
|
uri: "deliveries/:delivery_id/delivery_line_items(/:id)"
|
16
17
|
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
@@ -6,6 +6,7 @@ require "zaikio/procurement/authorization_middleware"
|
|
6
6
|
|
7
7
|
# Models
|
8
8
|
require "zaikio/procurement/base"
|
9
|
+
require "zaikio/procurement/address"
|
9
10
|
require "zaikio/procurement/article"
|
10
11
|
require "zaikio/procurement/variant"
|
11
12
|
require "zaikio/procurement/substrate_search"
|
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.2
|
4
|
+
version: 0.3.2
|
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-
|
12
|
+
date: 2021-11-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: concurrent-ruby
|
@@ -106,9 +106,11 @@ files:
|
|
106
106
|
- README.md
|
107
107
|
- Rakefile
|
108
108
|
- lib/zaikio/procurement.rb
|
109
|
+
- lib/zaikio/procurement/address.rb
|
109
110
|
- lib/zaikio/procurement/article.rb
|
110
111
|
- lib/zaikio/procurement/authorization_middleware.rb
|
111
112
|
- lib/zaikio/procurement/base.rb
|
113
|
+
- lib/zaikio/procurement/concern/article_type_scoped.rb
|
112
114
|
- lib/zaikio/procurement/configuration.rb
|
113
115
|
- lib/zaikio/procurement/contract.rb
|
114
116
|
- lib/zaikio/procurement/contract_request.rb
|
@@ -149,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
151
|
- !ruby/object:Gem::Version
|
150
152
|
version: '0'
|
151
153
|
requirements: []
|
152
|
-
rubygems_version: 3.
|
154
|
+
rubygems_version: 3.2.22
|
153
155
|
signing_key:
|
154
156
|
specification_version: 4
|
155
157
|
summary: Ruby API Client for Zaikio's Procurement Platform
|