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 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