item_builder_mwh 0.1.14 → 0.1.15

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