zaikio-procurement 0.2.1 → 0.3.2
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/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
|