item_builder 0.1.9 → 0.1.14

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bce91d8493302cb16b40cb46855412d7b1cf9378ac39791c7806379c00419602
4
- data.tar.gz: 0ba73ba00283255f10b25541ae4d3c8a998135fe7d6059341a187fc164ebfe73
3
+ metadata.gz: 7f8232744164229bf81eaf5dc1069c9f56fd83d110c48d51088a2284e52dd2e5
4
+ data.tar.gz: fbbb12a28d964bc6badd2c5914ca8b0dab476576fb0d8009c4fff230d8ff8afe
5
5
  SHA512:
6
- metadata.gz: 8145858b7f105fb0dfb0ab7fc58e982e4efa0e4f095b03b33112800d3d8bd8a09f25e223121ca307f399a737dd855a0e3b75ab50c6dbc2ebfd2d9a21721f2adb
7
- data.tar.gz: 97088a338d35d90b3cf2b8ccd80acaf7039beea0db0c13dbaf2e4cd32de14b9d5faca7aed082d2e4ff50ba01c7d35c71aec2bfe7ddedeb297a4106c8eab9b503
6
+ metadata.gz: f51bf30b10eb630cf99ec445ff4192ee150c32ac5b731a007103ab9329e47bd6fb4f49179b7762f302827bbe3a7ad9e72099465c3925984bf9278be58c316273
7
+ data.tar.gz: 3c2ecb37ead73a59dd4b9158fa66eadbdd196d77c58eee56b23b859cd57c02a76d3a9c251313dda44ceea88d1cd8f72d382d331e5767a08205c679b004e74f71
@@ -10,13 +10,58 @@ require 'item_models'
10
10
 
11
11
  module ItemBuilder
12
12
  class << self
13
+ attr_reader :listing_ids
14
+ attr_reader :listings
15
+ attr_reader :mode
16
+ attr_reader :wh_spaces
17
+ attr_reader :variants
18
+ attr_reader :variant_ids
13
19
  def build(listing_ids, mode)
20
+ @listing_ids = listing_ids
14
21
  @mode = mode
15
- VariantListing.where(id: listing_ids).map do |listing|
22
+ mode_check
23
+ end
24
+
25
+ def mode_check
26
+ if mode == :quantity
27
+ quantity_mode
28
+ else
29
+ default
30
+ end
31
+ end
32
+
33
+ def quantity_mode
34
+ listings.map do |listing|
35
+ modes[mode].new(
36
+ listing: listing,
37
+ wh_spaces: wh_spaces,
38
+ variants: variants
39
+ ).perform
40
+ end
41
+ end
42
+
43
+ def default
44
+ listings.map do |listing|
16
45
  modes[mode].new(listing: listing).perform
17
46
  end
18
47
  end
19
48
 
49
+ def wh_spaces
50
+ @wh_spaces ||= WarehouseSpace.where(item_variant_id: variant_ids)
51
+ end
52
+
53
+ def variants
54
+ @variants ||= Variant.where(id: variant_ids)
55
+ end
56
+
57
+ def variant_ids
58
+ @variant_ids ||= listings.map(&:variant_id).uniq
59
+ end
60
+
61
+ def listings
62
+ @listings ||= VariantListing.where(id: listing_ids)
63
+ end
64
+
20
65
  def modes
21
66
  {
22
67
  price: ItemBuilder::Modes::PriceService,
@@ -78,21 +78,18 @@ module ItemBuilder
78
78
  # Quantity for bundle config
79
79
  qty_list = []
80
80
  bundle_variants.each do |bvr|
81
- qty = 0
82
- if bundle_condition(bvr)
83
- qty = bvr.variant.warehouse_spaces.first.quantity / bvr.unit
84
- end
81
+ qty = WarehouseSpace.find_by(item_variant_id: bvr.variant_id)&.quantity
82
+ qty ||= 0
83
+ qty = qty / bvr.unit
85
84
  qty_list.push(qty)
86
85
  end
87
86
  [qty_list.min, 0].sort[1]
88
87
  end
89
88
 
90
- def bundle_condition(bvr)
91
- bvr.variant.present? && bvr.variant.warehouse_spaces.present?
92
- end
93
-
94
89
  def bundle_variants
95
- Bundle.where('variant_id = ?', variant.id).first.bundle_variant
90
+ Bundle.where(
91
+ 'variant_id = ?', variant.id
92
+ ).first.bundle_variants.where(channel_id: listing.channel_id)
96
93
  end
97
94
 
98
95
  def listing_wh_sp_quantity
@@ -9,8 +9,12 @@ require 'item_builder/modes/update_service'
9
9
  module 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,6 @@ require 'item_builder/get_quantity_service'
6
6
  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
- require 'item_builder/modes/quantity/shopee_service'
10
9
  require 'item_builder/modes/quantity/zalora_service'
11
10
  module ItemBuilder
12
11
  module Modes
@@ -16,7 +15,6 @@ module ItemBuilder
16
15
  QUANTITY_CHANNEL = {}.tap do |hash|
17
16
  hash[3] = :Lazada
18
17
  hash[9] = :Blibli
19
- hash[12] = :Shopee
20
18
  hash[13] = :Zalora
21
19
  end.freeze
22
20
 
@@ -57,11 +55,11 @@ module ItemBuilder
57
55
  end
58
56
 
59
57
  def warehouse
60
- WarehouseSpace.find_by(item_variant_id: listing.variant_id)
58
+ wh_spaces.select {|ws| ws.item_variant_id == listing.variant_id }.first
61
59
  end
62
60
 
63
61
  def variant
64
- @variant ||= Variant.find(listing.variant_id)
62
+ variants.select {|v| v.id == listing.variant_id }.first
65
63
  end
66
64
  end
67
65
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ItemBuilder
4
- VERSION = '0.1.9'
4
+ VERSION = '0.1.14'
5
5
  end
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.9
4
+ version: 0.1.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - okaaryanata
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-05 00:00:00.000000000 Z
11
+ date: 2021-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -131,7 +131,6 @@ files:
131
131
  - lib/item_builder/modes/quantity/base.rb
132
132
  - lib/item_builder/modes/quantity/blibli_service.rb
133
133
  - lib/item_builder/modes/quantity/lazada_service.rb
134
- - lib/item_builder/modes/quantity/shopee_service.rb
135
134
  - lib/item_builder/modes/quantity/zalora_service.rb
136
135
  - lib/item_builder/modes/quantity_service.rb
137
136
  - lib/item_builder/modes/simple_service.rb
@@ -145,10 +144,10 @@ files:
145
144
  - lib/item_builder/modes/update/zalora_service.rb
146
145
  - lib/item_builder/modes/update_service.rb
147
146
  - lib/item_builder/version.rb
148
- homepage:
147
+ homepage:
149
148
  licenses: []
150
149
  metadata: {}
151
- post_install_message:
150
+ post_install_message:
152
151
  rdoc_options: []
153
152
  require_paths:
154
153
  - lib
@@ -164,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
164
163
  version: '0'
165
164
  requirements: []
166
165
  rubygems_version: 3.0.6
167
- signing_key:
166
+ signing_key:
168
167
  specification_version: 4
169
168
  summary: Item builder
170
169
  test_files: []
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'item_builder/modes/quantity/base'
4
- module ItemBuilder
5
- module Modes
6
- module Quantity
7
- class ShopeeService < Base
8
- def perform
9
- available_quantity + reserved_stock.to_i
10
- end
11
- end
12
- end
13
- end
14
- end