item_builder_mwh 0.1.26 → 0.1.27

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: 7e01aa6ef954cf51bc3dcb92ca26f17d430c4ea1fc51d4ef8c90fecfc990f0fd
4
- data.tar.gz: f11f2141638776fa7aa54fed48488b4b5435288dcd9367290d51443963d2434b
3
+ metadata.gz: 04b4fda61b151bdae803aa466654125bfdd93fac256ba962ddcc7e7e5c05aed0
4
+ data.tar.gz: fd2c4433e919374acd2d64065791eca10fb554c10408bc75a207d6fc104734b8
5
5
  SHA512:
6
- metadata.gz: 6fff1385a38d7539f9ecf9776fb3fd2d6bc06047035cae7f529b9e5f11bb4de9107a21b1dca457a579d3fb6b59bcec691b0b5799b37ef5e98a40d45cb96e4982
7
- data.tar.gz: 5e8dea305c73d37530197d3506d5f9a697c35e4690281d96465e93b0f65d59ad73f8ca20897fae1bdcc4ccee0b10f600d419968a7f596aeb977cafa06d305f03
6
+ metadata.gz: 457e75fd354af093c0cfcf399d3657f555e0efcd2e9dd5e791fc68a0c6d33c3308bf233653f582065ea960cc9336974c54d77dbb5127980a7114f2b08b1223f7
7
+ data.tar.gz: d8cda55e85a6777e3ea70711c980209c864af0ae0b6d760f28ec9d9893a54bf5a28db8c230b91650208d83edae3a9b05a72c44e4a129f053c616a87d0b1d4644
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'item_builder_mwh/modes.rb'
4
+ class ItemBuilderMwh
5
+ class LazadaQuantityService
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.to_json }
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 + '/lazada/items'
43
+ end
44
+
45
+ def response_process(resp)
46
+ hash = {}
47
+ resp['data']['products'].each do |product|
48
+ product['skus'].each do |sku|
49
+ qty = sku['multiWarehouseInventories'][0]
50
+ hash[sku['SellerSku']] = qty['occupyQuantity'] + qty['withholdQuantity']
51
+ end
52
+ end
53
+ hash
54
+ end
55
+
56
+ def rest_client(params, rescued_codes = 200)
57
+ RestClient::Request.execute(params.merge(timeout: 3)) do |response|
58
+ code = response.code
59
+ unless Array.wrap(rescued_codes).include?(code)
60
+ raise "Response Code is #{code}"
61
+ end
62
+
63
+ response
64
+ end
65
+ end
66
+ end
67
+ end
@@ -15,6 +15,7 @@ class ItemBuilderMwh
15
15
 
16
16
  QUANTITY_CHANNEL = {}.tap do |hash|
17
17
  hash[2] = :Shopify
18
+ hash[3] = :Lazada
18
19
  hash[13] = :Zalora
19
20
  hash[18] = :Zilingo
20
21
  end.freeze
@@ -77,7 +78,9 @@ class ItemBuilderMwh
77
78
 
78
79
  zalora_reserved_stock[listing.local_id].to_i
79
80
  else
80
- reserved_stocks.find {|rs| rs['variant_id'] == listing.variant_id }['reserved_quantity']
81
+ return 0 if lazada_quantity.blank?
82
+
83
+ lazada_quantity[listing.local_id].to_i
81
84
  end
82
85
  end
83
86
 
@@ -17,6 +17,7 @@ class ItemBuilderMwh
17
17
  attr_reader :variant_listings
18
18
  attr_reader :reserved_stocks
19
19
  attr_reader :zilingo_quantity
20
+ attr_reader :lazada_quantity
20
21
  attr_reader :zalora_reserved_stock
21
22
  attr_reader :shopify_inventory_location
22
23
  def initialize(args)
@@ -30,6 +31,7 @@ class ItemBuilderMwh
30
31
  @variant_listings = args.fetch(:variant_listings, [])
31
32
  @reserved_stocks = args.fetch(:reserved_stocks, [])
32
33
  @zilingo_quantity = args.fetch(:zilingo_quantity, [])
34
+ @lazada_quantity = args.fetch(:lazada_quantity, [])
33
35
  @zalora_reserved_stock = args.fetch(:zalora_reserved_stock, [])
34
36
  @shopify_inventory_location = args.fetch(:shopify_inventory_location, {})
35
37
  warehouse
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class ItemBuilderMwh
4
- VERSION = '0.1.26'
4
+ VERSION = '0.1.27'
5
5
  end
@@ -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/lazada_quantity_service'
11
12
  require 'item_builder_mwh/zalora_quantity_service'
12
13
  require 'item_builder_mwh/shopify_quantity_service'
13
14
 
@@ -53,6 +54,11 @@ class ItemBuilderMwh
53
54
  new_param = qty_simple_params(listing)
54
55
  .merge({shopify_inventory_location: shopify_inventory_location})
55
56
 
57
+ modes[mode].new(new_param).perform
58
+ elsif listing.channel_id == 3
59
+ new_param = qty_simple_params(listing)
60
+ .merge({lazada_quantity: lazada_quantity})
61
+
56
62
  modes[mode].new(new_param).perform
57
63
  else
58
64
  modes[mode].new(qty_simple_params(listing)).perform
@@ -154,6 +160,12 @@ class ItemBuilderMwh
154
160
  ).perform
155
161
  end
156
162
 
163
+ def lazada_quantity
164
+ @lazada_quantity ||= ItemBuilderMwh::LazadaQuantityService.new(
165
+ listings: listings, skus: skus
166
+ ).perform
167
+ end
168
+
157
169
  def order_host
158
170
  url = ENV['ORDERS_URL'] || 'orders.forstok.com'
159
171
  url + '/api/v3/item_line/reserved_stock'
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.26
4
+ version: 0.1.27
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-09-02 00:00:00.000000000 Z
11
+ date: 2021-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -117,6 +117,7 @@ extra_rdoc_files: []
117
117
  files:
118
118
  - lib/item_builder_mwh.rb
119
119
  - lib/item_builder_mwh/get_quantity_service.rb
120
+ - lib/item_builder_mwh/lazada_quantity_service.rb
120
121
  - lib/item_builder_mwh/modes.rb
121
122
  - lib/item_builder_mwh/modes/active_service.rb
122
123
  - lib/item_builder_mwh/modes/base_service.rb
@@ -165,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
166
  - !ruby/object:Gem::Version
166
167
  version: '0'
167
168
  requirements: []
168
- rubygems_version: 3.2.3
169
+ rubygems_version: 3.0.9
169
170
  signing_key:
170
171
  specification_version: 4
171
172
  summary: Item Builder Multiwarehouse