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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 04b4fda61b151bdae803aa466654125bfdd93fac256ba962ddcc7e7e5c05aed0
|
|
4
|
+
data.tar.gz: fd2c4433e919374acd2d64065791eca10fb554c10408bc75a207d6fc104734b8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
|
-
|
|
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
|
data/lib/item_builder_mwh.rb
CHANGED
|
@@ -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.
|
|
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-
|
|
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.
|
|
169
|
+
rubygems_version: 3.0.9
|
|
169
170
|
signing_key:
|
|
170
171
|
specification_version: 4
|
|
171
172
|
summary: Item Builder Multiwarehouse
|