item_builder 0.1.9 → 0.1.14

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: 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