Class: ItemBuilder
- Inherits:
-
Object
show all
- Defined in:
- lib/item_builder.rb,
lib/item_builder/modes.rb,
lib/item_builder/version.rb,
lib/item_builder/modes/price/base.rb,
lib/item_builder/modes/update/base.rb,
lib/item_builder/modes/base_service.rb,
lib/item_builder/modes/price_service.rb,
lib/item_builder/modes/quantity/base.rb,
lib/item_builder/get_quantity_service.rb,
lib/item_builder/modes/active_service.rb,
lib/item_builder/modes/simple_service.rb,
lib/item_builder/modes/update_service.rb,
lib/item_builder/modes/price/jd_service.rb,
lib/item_builder/modes/quantity_service.rb,
lib/item_builder/modes/update/jd_service.rb,
lib/item_builder/zilingo_quantity_service.rb,
lib/item_builder/modes/price/blibli_service.rb,
lib/item_builder/modes/price/zalora_service.rb,
lib/item_builder/modes/price/shopify_service.rb,
lib/item_builder/modes/update/blibli_service.rb,
lib/item_builder/modes/update/lazada_service.rb,
lib/item_builder/modes/update/zalora_service.rb,
lib/item_builder/modes/update/shopify_service.rb,
lib/item_builder/modes/price/bukalapak_service.rb,
lib/item_builder/modes/price/sale_price_policy.rb,
lib/item_builder/modes/quantity/lazada_service.rb,
lib/item_builder/modes/quantity/zalora_service.rb,
lib/item_builder/modes/quantity/zilingo_service.rb,
lib/item_builder/modes/update/bukalapak_service.rb,
lib/item_builder/modes/update/tokopedia_service.rb
Defined Under Namespace
Modules: Modes
Classes: GetQuantityService, ZilingoQuantityService
Constant Summary
collapse
- VERSION =
'0.1.30'
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(listing_ids, mode) ⇒ ItemBuilder
Returns a new instance of ItemBuilder.
24
25
26
27
|
# File 'lib/item_builder.rb', line 24
def initialize(listing_ids, mode)
@listing_ids = listing_ids
@mode = mode
end
|
Instance Attribute Details
#listing_ids ⇒ Object
Returns the value of attribute listing_ids.
17
18
19
|
# File 'lib/item_builder.rb', line 17
def listing_ids
@listing_ids
end
|
#listings ⇒ Object
Returns the value of attribute listings.
18
19
20
|
# File 'lib/item_builder.rb', line 18
def listings
@listings
end
|
#mode ⇒ Object
Returns the value of attribute mode.
19
20
21
|
# File 'lib/item_builder.rb', line 19
def mode
@mode
end
|
#variant_ids ⇒ Object
Returns the value of attribute variant_ids.
22
23
24
|
# File 'lib/item_builder.rb', line 22
def variant_ids
@variant_ids
end
|
#variants ⇒ Object
Returns the value of attribute variants.
21
22
23
|
# File 'lib/item_builder.rb', line 21
def variants
@variants
end
|
#wh_spaces ⇒ Object
Returns the value of attribute wh_spaces.
20
21
22
|
# File 'lib/item_builder.rb', line 20
def wh_spaces
@wh_spaces
end
|
Class Method Details
.build(listing_ids, mode) ⇒ Object
13
14
15
|
# File 'lib/item_builder.rb', line 13
def self.build(listing_ids, mode)
new(listing_ids, mode).mode_check
end
|
Instance Method Details
#bundle_ids ⇒ Object
80
81
82
|
# File 'lib/item_builder.rb', line 80
def bundle_ids
@bundle_ids ||= bundles.map(&:id).uniq
end
|
#bundles ⇒ Object
84
85
86
|
# File 'lib/item_builder.rb', line 84
def bundles
@bundles ||= Bundle.where(variant_id: variant_ids).group(:variant_id)
end
|
#default ⇒ Object
54
55
56
57
58
|
# File 'lib/item_builder.rb', line 54
def default
listings.map do |listing|
modes[mode].new(listing: listing).perform
end
end
|
#existing_alloc_stocks ⇒ Object
60
61
62
63
64
|
# File 'lib/item_builder.rb', line 60
def existing_alloc_stocks
@existing_alloc_stocks ||= VariantListingStockAllocation.where(
variant_association_id: vl_ids
).where('ADDTIME(end_at, "07:00") >= NOW()')
end
|
#item_bundle_variants ⇒ Object
74
75
76
77
78
|
# File 'lib/item_builder.rb', line 74
def item_bundle_variants
@item_bundle_variants ||= BundleVariant.where(
bundle_id: bundle_ids
)
end
|
#mode_check ⇒ Object
29
30
31
32
33
34
35
|
# File 'lib/item_builder.rb', line 29
def mode_check
if mode == :quantity || mode == :simple
quantity_simple_mode
else
default
end
end
|
#order_host ⇒ Object
130
131
132
133
|
# File 'lib/item_builder.rb', line 130
def order_host
url = ENV['ORDERS_URL'] || 'orders.forstok.com'
url + '/api/v3/item_line/reserved_stock'
end
|
#qty_simple_params(listing) ⇒ Object
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/item_builder.rb', line 43
def qty_simple_params(listing)
{
listing: listing, wh_spaces: wh_spaces, variants: variants,
stock_allocs: stock_allocs, variant_listings: variant_listings,
bundles: bundles, item_bundle_variants: item_bundle_variants,
existing_alloc_stocks: existing_alloc_stocks,
reserved_stocks: reserved_stocks,
zilingo_delta_quantity: zilingo_delta_quantity
}
end
|
#quantity_simple_mode ⇒ Object
37
38
39
40
41
|
# File 'lib/item_builder.rb', line 37
def quantity_simple_mode
listings.map do |listing|
modes[mode].new(qty_simple_params(listing)).perform
end
end
|
#reserved_params ⇒ Object
135
136
137
138
|
# File 'lib/item_builder.rb', line 135
def reserved_params
"account_id=#{listings[0].profile_channel_association_id}
&item_variant_ids=#{variant_ids.join(',')}"
end
|
#reserved_stocks ⇒ Object
140
141
142
143
144
|
# File 'lib/item_builder.rb', line 140
def reserved_stocks
@reserved_stocks ||= JSON.parse(RestClient.get(
"#{order_host}?#{reserved_params}"
).body) if [3,13].include?(listings[0].channel_id)
end
|
#skus ⇒ Object
110
111
112
|
# File 'lib/item_builder.rb', line 110
def skus
@skus ||= listings.map(&:local_id).uniq
end
|
#stock_allocs ⇒ Object
88
89
90
91
92
|
# File 'lib/item_builder.rb', line 88
def stock_allocs
@stock_allocs ||= VariantListingStockAllocation.where(
variant_association_id: vl_ids
)
end
|
#variant_listings ⇒ Object
70
71
72
|
# File 'lib/item_builder.rb', line 70
def variant_listings
@variant_listings ||= VariantListing.where(variant_id: variant_ids)
end
|
#vl_ids ⇒ Object
66
67
68
|
# File 'lib/item_builder.rb', line 66
def vl_ids
@vl_ids ||= variant_listings.map(&:id).uniq
end
|
#zilingo_delta_quantity ⇒ Object