item_builder_mwh 0.1.14 → 0.1.15

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: 5a9f73afc814a44d6e54abb4e1b2fa988ed233ec7e6858be9aa964dc1e98c124
4
- data.tar.gz: 7faa7a9622d86db9130acbcaa14febed1f35cf2f93e0603c832b87c92f9e6e4e
3
+ metadata.gz: 56fc0a284bc21a40a3f253bdc3a176f306df5c0766f7ba3cc298ab92665e1dd7
4
+ data.tar.gz: 9050d240f828a6aa8bd577b3a3696024ed0ed72f75174d758a3db92afcd78756
5
5
  SHA512:
6
- metadata.gz: 0d78506e0099bb9e9326ef25ddc00db9d482728777d15e8cb37f750fb18d031767942e5233f23c28a236a9cfa2c92531b34abd3a08b5e7b69c9812b0ad72cc2b
7
- data.tar.gz: 02d0fc58a57ca7fb34429c59bb651f582412d8cb2abf70aa0de5b85e6fd11b6fbfe3e4410f897f46dae7989425f2bb03c12828194f5d754f073b2e0fc1df0de3
6
+ metadata.gz: 49fb0ffbacca4075e9042dc5e92eadc66c47836734174df6f384e35e2cc7efae3f5834ccc5aae5e4caf5a7482b68fe5d86c4418b3048c4de407203e92271e522
7
+ data.tar.gz: b51b059793226e0de15dcc696a2266e11a0ea704480dd5227c0a7641f7a173064bc4ed4911cc65e678fa43984b58a26e0e7169752b4a1570014d46e78d5952b4
@@ -8,6 +8,7 @@ require 'item_builder_mwh/modes/quantity_service'
8
8
  require 'item_builder_mwh/modes/simple_service'
9
9
  require 'item_models'
10
10
  require 'item_builder_mwh/zilingo_quantity_service'
11
+ require 'item_builder_mwh/zalora_quantity_service'
11
12
 
12
13
  class ItemBuilderMwh
13
14
  attr_reader :listing_ids
@@ -39,6 +40,11 @@ class ItemBuilderMwh
39
40
  new_param = qty_simple_params(listing)
40
41
  .merge({zilingo_delta_quantity: zilingo_delta_quantity})
41
42
 
43
+ modes[mode].new(new_param).perform
44
+ elsif listing.channel_id == 13
45
+ new_param = qty_simple_params(listing)
46
+ .merge({zalora_reserved_stock: zalora_reserved_stock})
47
+
42
48
  modes[mode].new(new_param).perform
43
49
  else
44
50
  modes[mode].new(qty_simple_params(listing)).perform
@@ -118,6 +124,12 @@ class ItemBuilderMwh
118
124
  ).perform
119
125
  end
120
126
 
127
+ def zalora_reserved_stock
128
+ @zalora_reserved_stock ||= ItemBuilderMwh::ZaloraQuantityService.new(
129
+ listings: listings, skus: skus
130
+ ).perform
131
+ end
132
+
121
133
  def order_host
122
134
  url = ENV['ORDERS_URL'] || 'orders.forstok.com'
123
135
  url + '/api/v3/item_line/reserved_stock'
@@ -17,6 +17,7 @@ class ItemBuilderMwh
17
17
  attr_reader :variant_listings
18
18
  attr_reader :reserved_stocks
19
19
  attr_reader :zilingo_delta_quantity
20
+ attr_reader :zalora_reserved_stock
20
21
  def initialize(args)
21
22
  @listing = args.fetch(:listing)
22
23
  @wh_spaces = args.fetch(:wh_spaces, [])
@@ -28,6 +29,7 @@ class ItemBuilderMwh
28
29
  @variant_listings = args.fetch(:variant_listings, [])
29
30
  @reserved_stocks = args.fetch(:reserved_stocks, [])
30
31
  @zilingo_delta_quantity = args.fetch(:zilingo_delta_quantity, [])
32
+ @zalora_reserved_stock = args.fetch(:zalora_reserved_stock, [])
31
33
  warehouse
32
34
  end
33
35
 
@@ -55,6 +55,8 @@ class ItemBuilderMwh
55
55
  def reserved_stock
56
56
  if channel_name == 'Zilingo'
57
57
  zilingo_delta_quantity[listing.local_id].to_i
58
+ elsif channel_name == 'Zalora'
59
+ zalora_reserved_stock[listing.local_id].to_i
58
60
  else
59
61
  reserved_stocks.find {|rs| rs['variant_id'] == listing.variant_id }['reserved_quantity']
60
62
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class ItemBuilderMwh
4
- VERSION = '0.1.14'
4
+ VERSION = '0.1.15'
5
5
  end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'item_builder_mwh/modes.rb'
4
+ class ItemBuilderMwh
5
+ class ZaloraQuantityService
6
+ attr_reader :listings, :skus
7
+ def initialize(args)
8
+ @listings = args.fetch(:listings)
9
+ @skus = args.fetch(:skus)
10
+ end
11
+
12
+ def perform
13
+ args = {
14
+ method: :post, url: url, payload: data, headers: headers
15
+ }
16
+ resp = JSON.parse(rest_client(args, [200, 500, 406]))
17
+ response_process(resp)
18
+ end
19
+
20
+ def headers
21
+ { content_type: :json, accept: :json }
22
+ end
23
+
24
+ def data
25
+ {
26
+ "credential": JSON.parse(credential)['credential'],
27
+ "data": { "skus": skus }
28
+ }.to_json
29
+ end
30
+
31
+ def credential
32
+ return @credential if @credential
33
+
34
+ account_id = listings[0].profile_channel_association_id
35
+ host = ENV['CREDENTIAL_URL'] || raise('credential url is not set')
36
+ url = "#{host}/credential?account_id=#{account_id}"
37
+ @credential = rest_client(method: :get, url: url)
38
+ end
39
+
40
+ def url
41
+ url = ENV['API_GATEWAY_URL'] || raise('api gateway is not set')
42
+ url + "/zalora/product_stocks"
43
+ end
44
+
45
+ def response_process(resp)
46
+ hash = Hash.new
47
+ resp.dig("SuccessResponse", "Body", "ProductStocks", "ProductStock").each do |sku|
48
+ hash[sku['SellerSku']] = sku['ReservedStock']
49
+ end
50
+ hash
51
+ end
52
+
53
+ def rest_client(params, rescued_codes = 200)
54
+ RestClient::Request.execute(params.merge(timeout: 3)) do |response|
55
+ code = response.code
56
+ unless Array.wrap(rescued_codes).include?(code)
57
+ raise "Response Code is #{code}"
58
+ end
59
+
60
+ response
61
+ end
62
+ end
63
+ end
64
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: item_builder_mwh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.14
4
+ version: 0.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Ivander
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-03 00:00:00.000000000 Z
11
+ date: 2021-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -144,6 +144,7 @@ files:
144
144
  - lib/item_builder_mwh/modes/simple/zalora_service.rb
145
145
  - lib/item_builder_mwh/modes/simple_service.rb
146
146
  - lib/item_builder_mwh/version.rb
147
+ - lib/item_builder_mwh/zalora_quantity_service.rb
147
148
  - lib/item_builder_mwh/zilingo_quantity_service.rb
148
149
  homepage:
149
150
  licenses: []