item_builder 0.1.13 → 0.1.18
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 +4 -4
- data/lib/item_builder.rb +66 -15
- data/lib/item_builder/get_quantity_service.rb +13 -11
- data/lib/item_builder/modes.rb +5 -1
- data/lib/item_builder/modes/active_service.rb +1 -1
- data/lib/item_builder/modes/base_service.rb +1 -1
- data/lib/item_builder/modes/price/base.rb +1 -1
- data/lib/item_builder/modes/price/blibli_service.rb +1 -1
- data/lib/item_builder/modes/price/bukalapak_service.rb +1 -1
- data/lib/item_builder/modes/price/jd_service.rb +1 -1
- data/lib/item_builder/modes/price/sale_price_policy.rb +1 -1
- data/lib/item_builder/modes/price/shopify_service.rb +1 -1
- data/lib/item_builder/modes/price/zalora_service.rb +1 -1
- data/lib/item_builder/modes/price_service.rb +1 -1
- data/lib/item_builder/modes/quantity/base.rb +2 -12
- data/lib/item_builder/modes/quantity/blibli_service.rb +1 -1
- data/lib/item_builder/modes/quantity/lazada_service.rb +1 -1
- data/lib/item_builder/modes/quantity/zalora_service.rb +1 -1
- data/lib/item_builder/modes/quantity_service.rb +3 -3
- data/lib/item_builder/modes/simple_service.rb +1 -1
- data/lib/item_builder/modes/update/base.rb +1 -1
- data/lib/item_builder/modes/update/blibli_service.rb +1 -1
- data/lib/item_builder/modes/update/bukalapak_service.rb +1 -1
- data/lib/item_builder/modes/update/jd_service.rb +1 -1
- data/lib/item_builder/modes/update/lazada_service.rb +1 -1
- data/lib/item_builder/modes/update/shopify_service.rb +1 -1
- data/lib/item_builder/modes/update/tokopedia_service.rb +1 -1
- data/lib/item_builder/modes/update/zalora_service.rb +1 -1
- data/lib/item_builder/modes/update_service.rb +1 -1
- data/lib/item_builder/version.rb +2 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d5296817adbceee44af0d40c56904531f0d83e719e3845a91a331b1c5442167
|
4
|
+
data.tar.gz: 87abd04e435be4b3dbaf7da63496c9b081f467f142ecf2c05f6b00f79f13126c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d9e2954488f28ffa4e4ce03718ed29d116703eeb8ee76005c601da879250d022638f8bd93ed318ecf1e4b7d9686047f8fb1d1024b9207fe3585b26ad1fa2600
|
7
|
+
data.tar.gz: 275d56b3d9313b451571df31fc18166a03ea4e2ca57a50d0b03a2c6bf8d55397543dd229057870ae6784a31be11d89857699ec241c624173f98b4ae5580a68f3
|
data/lib/item_builder.rb
CHANGED
@@ -8,23 +8,74 @@ require 'item_builder/modes/quantity_service'
|
|
8
8
|
require 'item_builder/modes/simple_service'
|
9
9
|
require 'item_models'
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
11
|
+
class ItemBuilder
|
12
|
+
def self.build(listing_ids, mode)
|
13
|
+
new(listing_ids, mode).mode_check
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_reader :listing_ids
|
17
|
+
attr_reader :listings
|
18
|
+
attr_reader :mode
|
19
|
+
attr_reader :wh_spaces
|
20
|
+
attr_reader :variants
|
21
|
+
attr_reader :variant_ids
|
22
|
+
|
23
|
+
def initialize(listing_ids, mode)
|
24
|
+
@listing_ids = listing_ids
|
25
|
+
@mode = mode
|
26
|
+
end
|
27
|
+
|
28
|
+
def mode_check
|
29
|
+
if mode == :quantity
|
30
|
+
quantity_mode
|
31
|
+
else
|
32
|
+
default
|
18
33
|
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def quantity_mode
|
37
|
+
listings.map do |listing|
|
38
|
+
modes[mode].new(qty_params(listing)).perform
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def qty_params(listing)
|
43
|
+
{
|
44
|
+
listing: listing,
|
45
|
+
wh_spaces: wh_spaces,
|
46
|
+
variants: variants
|
47
|
+
}
|
48
|
+
end
|
19
49
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
quantity: ItemBuilder::Modes::QuantityService,
|
24
|
-
simple: ItemBuilder::Modes::SimpleService,
|
25
|
-
active: ItemBuilder::Modes::ActiveService,
|
26
|
-
update: ItemBuilder::Modes::UpdateService
|
27
|
-
}
|
50
|
+
def default
|
51
|
+
listings.map do |listing|
|
52
|
+
modes[mode].new(listing: listing).perform
|
28
53
|
end
|
29
54
|
end
|
55
|
+
|
56
|
+
def wh_spaces
|
57
|
+
@wh_spaces ||= WarehouseSpace.where(item_variant_id: variant_ids)
|
58
|
+
end
|
59
|
+
|
60
|
+
def variants
|
61
|
+
@variants ||= Variant.where(id: variant_ids)
|
62
|
+
end
|
63
|
+
|
64
|
+
def variant_ids
|
65
|
+
@variant_ids ||= listings.map(&:variant_id).uniq
|
66
|
+
end
|
67
|
+
|
68
|
+
def listings
|
69
|
+
@listings ||= VariantListing.where(id: listing_ids)
|
70
|
+
end
|
71
|
+
|
72
|
+
def modes
|
73
|
+
{
|
74
|
+
price: ItemBuilder::Modes::PriceService,
|
75
|
+
quantity: ItemBuilder::Modes::QuantityService,
|
76
|
+
simple: ItemBuilder::Modes::SimpleService,
|
77
|
+
active: ItemBuilder::Modes::ActiveService,
|
78
|
+
update: ItemBuilder::Modes::UpdateService
|
79
|
+
}
|
80
|
+
end
|
30
81
|
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'warehouse_models'
|
4
4
|
require 'item_builder/modes.rb'
|
5
|
-
|
5
|
+
class ItemBuilder
|
6
6
|
class GetQuantityService
|
7
7
|
attr_reader :listing, :wh_sp, :variant
|
8
8
|
def initialize(args)
|
@@ -35,7 +35,7 @@ module ItemBuilder
|
|
35
35
|
def check_consignment_variant?
|
36
36
|
listing.consignment? ||
|
37
37
|
(
|
38
|
-
!listing.active? && listing.channel_id
|
38
|
+
!listing.active? && [12, 15].include?(listing.channel_id)
|
39
39
|
)
|
40
40
|
end
|
41
41
|
|
@@ -76,14 +76,18 @@ module ItemBuilder
|
|
76
76
|
|
77
77
|
def qty_bundle
|
78
78
|
# Quantity for bundle config
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
79
|
+
if bundle_variants.present?
|
80
|
+
qty_list = []
|
81
|
+
bundle_variants.each do |bvr|
|
82
|
+
qty = WarehouseSpace.find_by(item_variant_id: bvr.variant_id)&.quantity
|
83
|
+
qty ||= 0
|
84
|
+
qty = qty / bvr.unit
|
85
|
+
qty_list.push(qty)
|
86
|
+
end
|
87
|
+
[qty_list.min, 0].sort[1]
|
88
|
+
else
|
89
|
+
qty_default
|
85
90
|
end
|
86
|
-
[qty_list.min, 0].sort[1]
|
87
91
|
end
|
88
92
|
|
89
93
|
def bundle_variants
|
@@ -131,8 +135,6 @@ module ItemBuilder
|
|
131
135
|
# allocated reserved stock
|
132
136
|
def one_alloc_rsvd_stock(allocated_stock)
|
133
137
|
RestClient.get("#{host}?#{params(allocated_stock)}")
|
134
|
-
rescue RestClient::ExceptionWithResponse => e
|
135
|
-
e.response
|
136
138
|
end
|
137
139
|
end
|
138
140
|
end
|
data/lib/item_builder/modes.rb
CHANGED
@@ -6,11 +6,15 @@ require 'item_builder/modes/quantity_service'
|
|
6
6
|
require 'item_builder/modes/simple_service'
|
7
7
|
require 'item_builder/modes/active_service'
|
8
8
|
require 'item_builder/modes/update_service'
|
9
|
-
|
9
|
+
class ItemBuilder
|
10
10
|
module Modes
|
11
11
|
attr_reader :listing
|
12
|
+
attr_reader :wh_spaces
|
13
|
+
attr_reader :variants
|
12
14
|
def initialize(args)
|
13
15
|
@listing = args.fetch(:listing)
|
16
|
+
@wh_spaces = args.fetch(:wh_spaces, [])
|
17
|
+
@variants = args.fetch(:variants, [])
|
14
18
|
end
|
15
19
|
|
16
20
|
def base
|
@@ -6,7 +6,7 @@ require 'item_builder/modes/price/bukalapak_service'
|
|
6
6
|
require 'item_builder/modes/price/zalora_service'
|
7
7
|
require 'item_builder/modes/price/shopify_service'
|
8
8
|
require 'item_builder/modes/price/jd_service'
|
9
|
-
|
9
|
+
class ItemBuilder
|
10
10
|
module Modes
|
11
11
|
class PriceService
|
12
12
|
include Modes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
class ItemBuilder
|
4
4
|
module Modes
|
5
5
|
module Quantity
|
6
6
|
class Base
|
@@ -26,14 +26,10 @@ module ItemBuilder
|
|
26
26
|
|
27
27
|
def reserved_stock
|
28
28
|
RestClient.get("#{order_host}?#{reserved_params}")
|
29
|
-
rescue RestClient::ExceptionWithResponse => e
|
30
|
-
e.response
|
31
29
|
end
|
32
30
|
|
33
31
|
def apigateway_get
|
34
32
|
RestClient.get("#{host}?#{params}")
|
35
|
-
rescue RestClient::ExceptionWithResponse => e
|
36
|
-
e.response
|
37
33
|
end
|
38
34
|
|
39
35
|
def headers
|
@@ -46,11 +42,7 @@ module ItemBuilder
|
|
46
42
|
def credential
|
47
43
|
account_id = listing.profile_channel_association_id
|
48
44
|
host = ENV['CREDENTIAL_URL'] || 'user.forstok.com'
|
49
|
-
|
50
|
-
RestClient.get("#{host}/credential?account_id=#{account_id}")
|
51
|
-
rescue RestClient::ExceptionWithResponse => e
|
52
|
-
e.response
|
53
|
-
end
|
45
|
+
RestClient.get("#{host}/credential?account_id=#{account_id}")
|
54
46
|
end
|
55
47
|
|
56
48
|
def data
|
@@ -66,8 +58,6 @@ module ItemBuilder
|
|
66
58
|
|
67
59
|
def apigateway_post
|
68
60
|
RestClient.post(url, api_data, headers)
|
69
|
-
rescue RestClient::ExceptionWithResponse => e
|
70
|
-
e.response
|
71
61
|
end
|
72
62
|
end
|
73
63
|
end
|
@@ -7,7 +7,7 @@ require 'item_builder/modes/quantity/base'
|
|
7
7
|
require 'item_builder/modes/quantity/lazada_service'
|
8
8
|
require 'item_builder/modes/quantity/blibli_service'
|
9
9
|
require 'item_builder/modes/quantity/zalora_service'
|
10
|
-
|
10
|
+
class ItemBuilder
|
11
11
|
module Modes
|
12
12
|
class QuantityService
|
13
13
|
include Modes
|
@@ -55,11 +55,11 @@ module ItemBuilder
|
|
55
55
|
end
|
56
56
|
|
57
57
|
def warehouse
|
58
|
-
|
58
|
+
wh_spaces.select {|ws| ws.item_variant_id == listing.variant_id }.first
|
59
59
|
end
|
60
60
|
|
61
61
|
def variant
|
62
|
-
|
62
|
+
variants.select {|v| v.id == listing.variant_id }.first
|
63
63
|
end
|
64
64
|
end
|
65
65
|
end
|
@@ -8,7 +8,7 @@ require 'item_builder/modes/update/zalora_service'
|
|
8
8
|
require 'item_builder/modes/update/shopify_service'
|
9
9
|
require 'item_builder/modes/update/jd_service'
|
10
10
|
require 'item_builder/modes/update/tokopedia_service'
|
11
|
-
|
11
|
+
class ItemBuilder
|
12
12
|
module Modes
|
13
13
|
class UpdateService
|
14
14
|
include Modes
|
data/lib/item_builder/version.rb
CHANGED
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.
|
4
|
+
version: 0.1.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- okaaryanata
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-01-
|
11
|
+
date: 2021-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|