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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 68bec08a8cf3b082a8c062fe76b957ec3160d1e206cda4abc1703187358c054c
4
- data.tar.gz: 83315dc24f36433f048324cd014ca48300ca545314cc122e3ee491cf1e64d0af
3
+ metadata.gz: b6d678f0c86ce42a67eb9eeacd9849b4c7c1f119158a401c0d602f257339c9e0
4
+ data.tar.gz: 68afd39bf4d8b642b45717c20dab222b5278110e02054f41395742fa1478437c
5
5
  SHA512:
6
- metadata.gz: 4407e261617426ea7445b723371e36814996bdeb50282c9d138eafe3276f8b244a07335533dcb84f6a6e1cd788150faeb0b55fe079c014ca363eda265457ca41
7
- data.tar.gz: 1da09fc4ea5b59bb620e820e3b0949bd9e1f3d606e0d03c49250bbb2e4ffd493ee9caeb1de9668940021d5a20c43fb1437278eff716d526770363c2d5b4c8da3
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 ? "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
@@ -6,11 +6,12 @@ module Zaikio
6
6
 
7
7
  # Attributes
8
8
  attributes :confirmed_delivery_date, :desired_delivery_date, :references,
9
- :address, :order_id, :created_at, :updated_at
9
+ :order_id, :created_at, :updated_at
10
10
 
11
11
  # Associations
12
- belongs_to :order, class_name: "Zaikio::Procurement::Order",
13
- uri: nil
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
- 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.1".freeze
3
+ VERSION = "0.3.2".freeze
4
4
  end
5
5
  end
@@ -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.1
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-10-18 00:00:00.000000000 Z
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.1.4
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