zaikio-procurement 0.2.2 → 0.4.0

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