zaikio-procurement 0.2.2 → 0.4.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: 6025b3ec71f3a51029df00184334cd3f90b46c777068d08092eebdcbfae5b047
4
+ data.tar.gz: 585fc195103c24cd304b39a80fdb78996c2cdaecbaf1cfa66138f71261a59f85
5
5
  SHA512:
6
- metadata.gz: f894250c1f410743a77e4af7834797b08d20450960bb932772e7824c2fc74b2d78f4a64a02a9db6524759279ef756e4b48043293ea14c2280a462c8cecb8882e
7
- data.tar.gz: 9a16adffdbf68fd6fc30937a639d8c9d3d69b712b453c65e24b811835a90f6b900f9562668f1a714fd75963e1dce6a29549c56ab9b74cd3ccab4b7c64c8016f6
6
+ metadata.gz: e2339466d3af3150f3c67f4e40f434b374801c2704f985a31bda16a7a2bd2fdf72730405dfe35b05a94fbb87e7920c670701abee502d328ce524652b7c62bd17
7
+ data.tar.gz: 6ed25c344a83987e01a3472fc79ac03252d8b936efb55786e02fa48c9b7210897001de27a1c34cb35f76669cb5371d37c853cd949988a7df597398600c840063
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
@@ -0,0 +1,15 @@
1
+ module Zaikio
2
+ module Procurement
3
+ class OrderConditionsInquiry < Base
4
+ uri "order_conditions_inquiries(/:id)"
5
+ include_root_in_json :order_conditions_inquiry
6
+
7
+ # Attributes
8
+ attributes :contract_id, :currency, :created_at, :updated_at,
9
+ :desired_delivery_date, :verified_at, :expires_at,
10
+ :verified_net_handling_fee, :verified_net_shipping_fee,
11
+ :verified_net_total, :verified_delivery_date, :order_line_items,
12
+ :verified_order_line_items
13
+ end
14
+ end
15
+ 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.4.0".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"
@@ -23,6 +24,7 @@ require "zaikio/procurement/delivery_line_item"
23
24
  require "zaikio/procurement/current_supplier"
24
25
  require "zaikio/procurement/material_requirement"
25
26
  require "zaikio/procurement/material_availability_check"
27
+ require "zaikio/procurement/order_conditions_inquiry"
26
28
 
27
29
  module Zaikio
28
30
  module Procurement
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.4.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-11-18 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
@@ -119,6 +121,7 @@ files:
119
121
  - lib/zaikio/procurement/material_availability_check.rb
120
122
  - lib/zaikio/procurement/material_requirement.rb
121
123
  - lib/zaikio/procurement/order.rb
124
+ - lib/zaikio/procurement/order_conditions_inquiry.rb
122
125
  - lib/zaikio/procurement/order_line_item.rb
123
126
  - lib/zaikio/procurement/price.rb
124
127
  - lib/zaikio/procurement/sales_group.rb
@@ -149,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
149
152
  - !ruby/object:Gem::Version
150
153
  version: '0'
151
154
  requirements: []
152
- rubygems_version: 3.1.4
155
+ rubygems_version: 3.2.22
153
156
  signing_key:
154
157
  specification_version: 4
155
158
  summary: Ruby API Client for Zaikio's Procurement Platform