item_builder 0.1.33 → 0.1.34

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