zaikio-procurement 0.2.2 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b4e2a41d312bf1c6a430d1c527182bb86fc53cb2b95e6629d1a593af2dec099
4
- data.tar.gz: 212e0b722072eed7b0caa5b70d2dcf6e881c7682c7a47cda12f982be9703c02f
3
+ metadata.gz: c253fd375c7d6ff7336b6a1d8e6b132086b32358e6a23c0c02aebc2f943293ec
4
+ data.tar.gz: ca0da2c26956697cae57124aca5d4f99e77d6eef155c3ad36ae25ace85c72213
5
5
  SHA512:
6
- metadata.gz: f894250c1f410743a77e4af7834797b08d20450960bb932772e7824c2fc74b2d78f4a64a02a9db6524759279ef756e4b48043293ea14c2280a462c8cecb8882e
7
- data.tar.gz: 9a16adffdbf68fd6fc30937a639d8c9d3d69b712b453c65e24b811835a90f6b900f9562668f1a714fd75963e1dce6a29549c56ab9b74cd3ccab4b7c64c8016f6
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 ? "substrate/articles(/:id)" : "articles(/:id)"
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, class_name: "Zaikio::Procurement::Supplier",
28
- uri: nil
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,13 +15,9 @@ module Zaikio
15
15
 
16
16
  # Manually build variant association to work for consumers and suppliers
17
17
  def variant
18
- path = if Zaikio::Procurement.configuration.flavor == :supplier
19
- "substrate/variants/#{variant_id}"
20
- else
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 ? "substrate/variants(/:id)" : "variants(/:id)"
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, class_name: "Zaikio::Procurement::Sku",
20
- uri: "variants/:variant_id/skus"
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(
@@ -1,5 +1,5 @@
1
1
  module Zaikio
2
2
  module Procurement
3
- VERSION = "0.2.2".freeze
3
+ VERSION = "0.3.0".freeze
4
4
  end
5
5
  end
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.2
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-25 00:00:00.000000000 Z
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.1.4
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