item_builder 0.1.12 → 0.1.17
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 +62 -15
- data/lib/item_builder/get_quantity_service.rb +16 -12
- 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: bfe76bc69e820c18a13d2a141af1306a4ac0872635d1e3e938e9cbe25a6bbcd2
|
|
4
|
+
data.tar.gz: 5c3ce99ab71ccad992bdf2097c97337ff0e848798a97e9978d2c282ce0e56051
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d26999a5d454b647b0a4943654ba55674de42d504d3318bf7084ce179280cf30405e8b6995b3efa5c894025b09cf6d9db84eea331de0e540525b52716d57b8de
|
|
7
|
+
data.tar.gz: '07980a0aee5587888f85209b63e8531c4702bf80d7a820c2d4cd2463bffaa4cadd5007194de21a7a55f958915dd73ffeed444dc458051754c7159bab6ec55de8'
|
data/lib/item_builder.rb
CHANGED
|
@@ -8,23 +8,70 @@ 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
|
|
19
35
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
36
|
+
def quantity_mode
|
|
37
|
+
listings.map do |listing|
|
|
38
|
+
modes[mode].new(
|
|
39
|
+
listing: listing,
|
|
40
|
+
wh_spaces: wh_spaces,
|
|
41
|
+
variants: variants
|
|
42
|
+
).perform
|
|
28
43
|
end
|
|
29
44
|
end
|
|
45
|
+
|
|
46
|
+
def default
|
|
47
|
+
listings.map do |listing|
|
|
48
|
+
modes[mode].new(listing: listing).perform
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def wh_spaces
|
|
53
|
+
@wh_spaces ||= WarehouseSpace.where(item_variant_id: variant_ids)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def variants
|
|
57
|
+
@variants ||= Variant.where(id: variant_ids)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def variant_ids
|
|
61
|
+
@variant_ids ||= listings.map(&:variant_id).uniq
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def listings
|
|
65
|
+
@listings ||= VariantListing.where(id: listing_ids)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def modes
|
|
69
|
+
{
|
|
70
|
+
price: ItemBuilder::Modes::PriceService,
|
|
71
|
+
quantity: ItemBuilder::Modes::QuantityService,
|
|
72
|
+
simple: ItemBuilder::Modes::SimpleService,
|
|
73
|
+
active: ItemBuilder::Modes::ActiveService,
|
|
74
|
+
update: ItemBuilder::Modes::UpdateService
|
|
75
|
+
}
|
|
76
|
+
end
|
|
30
77
|
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,18 +76,24 @@ 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
|
|
90
|
-
Bundle.where(
|
|
94
|
+
Bundle.where(
|
|
95
|
+
'variant_id = ?', variant.id
|
|
96
|
+
).first.bundle_variants.where(channel_id: listing.channel_id)
|
|
91
97
|
end
|
|
92
98
|
|
|
93
99
|
def listing_wh_sp_quantity
|
|
@@ -129,8 +135,6 @@ module ItemBuilder
|
|
|
129
135
|
# allocated reserved stock
|
|
130
136
|
def one_alloc_rsvd_stock(allocated_stock)
|
|
131
137
|
RestClient.get("#{host}?#{params(allocated_stock)}")
|
|
132
|
-
rescue RestClient::ExceptionWithResponse => e
|
|
133
|
-
e.response
|
|
134
138
|
end
|
|
135
139
|
end
|
|
136
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.17
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- okaaryanata
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-01-18 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|