item_builder 0.1.33 → 0.1.34

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: e5163bc9aeaf2a76f547dc19cb482de6f50fe456e9f9a62860493e9a4d2c4a7c
4
- data.tar.gz: fb2f1120b1518a26fbf7c36892afe8bfb2e7dd38fc4797e8864cf7b7c1a9fb8a
3
+ metadata.gz: 8e9895ea021aab0e2ffe939409176b92e8478b8c31a1645480e55ed07f14e86d
4
+ data.tar.gz: a35617cca876d0d21c28b5bd11c6d8a209111b9ef0b96540908b177f38755cec
5
5
  SHA512:
6
- metadata.gz: 5cd6ffa5b4add1d53f21dad2fb40475dffecc8950116c047c90d6802d56262d1fec562565ee02fae17740b660b4c6ec073f807ea68890949506f9d34fe197ec1
7
- data.tar.gz: f5c222851018274f3b03d768d0c7e78273061ef7e9c4bcf3e8c032cb533db62284291beadedccf6a83b6000ac54ca40220de3a6a1a2dbc661c064ca5316ae0e1
6
+ metadata.gz: 9fd151f3dc3afba437effd13e5d2cb199fc8590615bca4c696e0d5eb291eddeb23a331cc12569bedea8eb50a5a3979fc3cd959625b18c41b166c22fa5f19e22c
7
+ data.tar.gz: 6ce4e2f994f07c8bd0074a23d1fd7764e86c43a323ff588506af7ffa4aaf53f0bcaca3589f9710d23168041cdc5715a5a8b23269c076a0ddd9cbad3667b91d6e
data/lib/item_builder.rb CHANGED
@@ -9,6 +9,7 @@ require 'item_builder/modes/simple_service'
9
9
  require 'item_builder/modes/active_service'
10
10
  require 'item_models'
11
11
  require 'item_builder/zilingo_quantity_service'
12
+ require 'item_builder/zalora_quantity_service'
12
13
 
13
14
  class ItemBuilder
14
15
  def self.build(listing_ids, mode)
@@ -41,6 +42,11 @@ class ItemBuilder
41
42
  new_param = qty_simple_params(listing)
42
43
  .merge({zilingo_delta_quantity: zilingo_delta_quantity})
43
44
 
45
+ modes[mode].new(new_param).perform
46
+ elsif listing.channel_id == 13
47
+ new_param = qty_simple_params(listing)
48
+ .merge({zalora_reserved_stock: zalora_reserved_stock})
49
+
44
50
  modes[mode].new(new_param).perform
45
51
  else
46
52
  modes[mode].new(qty_simple_params(listing)).perform
@@ -128,6 +134,12 @@ class ItemBuilder
128
134
  ).perform
129
135
  end
130
136
 
137
+ def zalora_reserved_stock
138
+ @zalora_reserved_stock ||= ItemBuilder::ZaloraQuantityService.new(
139
+ listings: listings, skus: skus
140
+ ).perform
141
+ end
142
+
131
143
  def modes
132
144
  {
133
145
  price: ItemBuilder::Modes::PriceService,
@@ -151,6 +163,6 @@ class ItemBuilder
151
163
  def reserved_stocks
152
164
  @reserved_stocks ||= JSON.parse(RestClient.get(
153
165
  "#{order_host}?#{reserved_params}"
154
- ).body) if [3,13].include?(listings[0].channel_id)
166
+ ).body) if [3].include?(listings[0].channel_id)
155
167
  end
156
168
  end
@@ -18,6 +18,7 @@ class ItemBuilder
18
18
  attr_reader :variant_listings
19
19
  attr_reader :reserved_stocks
20
20
  attr_reader :zilingo_delta_quantity
21
+ attr_reader :zalora_reserved_stock
21
22
  def initialize(args)
22
23
  @listing = args.fetch(:listing)
23
24
  @wh_spaces = args.fetch(:wh_spaces, [])
@@ -29,6 +30,7 @@ class ItemBuilder
29
30
  @variant_listings = args.fetch(:variant_listings, [])
30
31
  @reserved_stocks = args.fetch(:reserved_stocks, [])
31
32
  @zilingo_delta_quantity = args.fetch(:zilingo_delta_quantity, [])
33
+ @zalora_reserved_stock = args.fetch(:zalora_reserved_stock, [])
32
34
  end
33
35
 
34
36
  def base
@@ -29,7 +29,8 @@ class ItemBuilder
29
29
  bundles: bundles, item_bundle_variants: item_bundle_variants,
30
30
  existing_alloc_stocks: existing_alloc_stocks,
31
31
  reserved_stocks: reserved_stocks,
32
- zilingo_delta_quantity: zilingo_delta_quantity
32
+ zilingo_delta_quantity: zilingo_delta_quantity,
33
+ zalora_reserved_stock: zalora_reserved_stock
33
34
  ).to_h
34
35
  end
35
36
 
@@ -49,6 +49,8 @@ class ItemBuilder
49
49
  def reserved_stock
50
50
  if channel_name == 'Zilingo'
51
51
  zilingo_delta_quantity[listing.local_id].to_i
52
+ elsif channel_name == 'Zalora'
53
+ zalora_reserved_stock[listing.local_id].to_i
52
54
  else
53
55
  reserved_stocks.find {|rs| rs['variant_id'] == listing.variant_id }['reserved_quantity']
54
56
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class ItemBuilder
4
- VERSION = '0.1.33'
4
+ VERSION = '0.1.34'
5
5
  end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'item_builder/modes.rb'
4
+ class ItemBuilder
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
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.33
4
+ version: 0.1.34
5
5
  platform: ruby
6
6
  authors:
7
7
  - okaaryanata
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/modes/update/zalora_service.rb
145
145
  - lib/item_builder/modes/update_service.rb
146
146
  - lib/item_builder/version.rb
147
+ - lib/item_builder/zalora_quantity_service.rb
147
148
  - lib/item_builder/zilingo_quantity_service.rb
148
149
  homepage:
149
150
  licenses: []