item_builder 0.1.11 → 0.1.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/lib/item_builder.rb +62 -15
  3. data/lib/item_builder/get_quantity_service.rb +14 -13
  4. data/lib/item_builder/modes.rb +5 -1
  5. data/lib/item_builder/modes/active_service.rb +1 -1
  6. data/lib/item_builder/modes/base_service.rb +1 -1
  7. data/lib/item_builder/modes/price/base.rb +1 -1
  8. data/lib/item_builder/modes/price/blibli_service.rb +1 -1
  9. data/lib/item_builder/modes/price/bukalapak_service.rb +1 -1
  10. data/lib/item_builder/modes/price/jd_service.rb +1 -1
  11. data/lib/item_builder/modes/price/sale_price_policy.rb +1 -1
  12. data/lib/item_builder/modes/price/shopify_service.rb +1 -1
  13. data/lib/item_builder/modes/price/zalora_service.rb +1 -1
  14. data/lib/item_builder/modes/price_service.rb +1 -1
  15. data/lib/item_builder/modes/quantity/base.rb +1 -1
  16. data/lib/item_builder/modes/quantity/blibli_service.rb +1 -1
  17. data/lib/item_builder/modes/quantity/lazada_service.rb +1 -1
  18. data/lib/item_builder/modes/quantity/zalora_service.rb +1 -1
  19. data/lib/item_builder/modes/quantity_service.rb +3 -3
  20. data/lib/item_builder/modes/simple_service.rb +1 -1
  21. data/lib/item_builder/modes/update/base.rb +1 -1
  22. data/lib/item_builder/modes/update/blibli_service.rb +1 -1
  23. data/lib/item_builder/modes/update/bukalapak_service.rb +1 -1
  24. data/lib/item_builder/modes/update/jd_service.rb +1 -1
  25. data/lib/item_builder/modes/update/lazada_service.rb +1 -1
  26. data/lib/item_builder/modes/update/shopify_service.rb +1 -1
  27. data/lib/item_builder/modes/update/tokopedia_service.rb +1 -1
  28. data/lib/item_builder/modes/update/zalora_service.rb +1 -1
  29. data/lib/item_builder/modes/update_service.rb +1 -1
  30. data/lib/item_builder/version.rb +2 -2
  31. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4ddc2ca092fa7c101e60c5783bfd3490f9941607ca1ca43bc391a6a28efa34b3
4
- data.tar.gz: 8a35a5c7788941679e513c5932412de396d9a47adfe07d6ae6e60d8536cf1de7
3
+ metadata.gz: c73662d1db692cc3c0356465e141d519e3880f2f57ecf9934e8c14b431fad8ba
4
+ data.tar.gz: a210f12fb2665cbb4275816c7dd10d8483dacd70a9bcbc066634ec7fdeeddec0
5
5
  SHA512:
6
- metadata.gz: ea23a5e5fd024dcf4fca70589fa6c9715bda51e4e1e22cafdd1fd4e04bbf764faef8b829a6c0428d644f46880e683ae65938041e2d6ccee69bb6d49e60ccaccc
7
- data.tar.gz: 1763a2c44c86051beeeb39167b164a367a1cda8d07d6be1fffb3d9300cafb9b7cc2f6c539dea40159ae06bc5869fd5aa9c76126bac1aa6d520e6c0281a78b016
6
+ metadata.gz: d7cee35582b4506ec8762dbccb7681c1cfbb93c17f9c30c86b0cc607bde60e479ee8e973a444ae30f3a36f619dbac97c424629ea3e0e2a3afeeb0b2a3c53d710
7
+ data.tar.gz: 670770117728b939f832b038849a82a33041c53677e6b211f154aa684bb215e192a0af7dc21022815e79d10f93e55c6578db17dd6cfb61a7284300c8cda45fbd
@@ -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
- module ItemBuilder
12
- class << self
13
- def build(listing_ids, mode)
14
- @mode = mode
15
- VariantListing.where(id: listing_ids).map do |listing|
16
- modes[mode].new(listing: listing).perform
17
- end
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
- def modes
21
- {
22
- price: ItemBuilder::Modes::PriceService,
23
- quantity: ItemBuilder::Modes::QuantityService,
24
- simple: ItemBuilder::Modes::SimpleService,
25
- active: ItemBuilder::Modes::ActiveService,
26
- update: ItemBuilder::Modes::UpdateService
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
- module ItemBuilder
5
+ class ItemBuilder
6
6
  class GetQuantityService
7
7
  attr_reader :listing, :wh_sp, :variant
8
8
  def initialize(args)
@@ -76,23 +76,24 @@ module ItemBuilder
76
76
 
77
77
  def qty_bundle
78
78
  # Quantity for bundle config
79
- qty_list = []
80
- bundle_variants.each do |bvr|
81
- qty = 0
82
- if bundle_condition(bvr)
83
- qty = bvr.variant.warehouse_spaces.first.quantity / bvr.unit
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)
84
86
  end
85
- qty_list.push(qty)
87
+ [qty_list.min, 0].sort[1]
88
+ else
89
+ qty_default
86
90
  end
87
- [qty_list.min, 0].sort[1]
88
- end
89
-
90
- def bundle_condition(bvr)
91
- bvr.variant.present? && bvr.variant.warehouse_spaces.present?
92
91
  end
93
92
 
94
93
  def bundle_variants
95
- Bundle.where('variant_id = ?', variant.id).first.bundle_variants
94
+ Bundle.where(
95
+ 'variant_id = ?', variant.id
96
+ ).first.bundle_variants.where(channel_id: listing.channel_id)
96
97
  end
97
98
 
98
99
  def listing_wh_sp_quantity
@@ -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
- module ItemBuilder
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
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes.rb'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  class ActiveService
7
7
  include Modes
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes.rb'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  class BaseService
7
7
  attr_reader :listing
@@ -4,7 +4,7 @@ require 'date'
4
4
  require 'item_builder/modes.rb'
5
5
  require 'item_builder/modes/price_service'
6
6
  require 'item_builder/modes/price/sale_price_policy'
7
- module ItemBuilder
7
+ class ItemBuilder
8
8
  module Modes
9
9
  module Price
10
10
  class Base
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'date'
4
4
  require 'item_builder/modes/price/base'
5
- module ItemBuilder
5
+ class ItemBuilder
6
6
  module Modes
7
7
  module Price
8
8
  class BlibliService < Base
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'date'
4
4
  require 'item_builder/modes/price/base'
5
- module ItemBuilder
5
+ class ItemBuilder
6
6
  module Modes
7
7
  module Price
8
8
  class BukalapakService < Base
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'date'
4
4
  require 'item_builder/modes/price/base'
5
- module ItemBuilder
5
+ class ItemBuilder
6
6
  module Modes
7
7
  module Price
8
8
  class JdService < Base
@@ -3,7 +3,7 @@
3
3
  require 'date'
4
4
  require 'item_builder/modes.rb'
5
5
  require 'item_builder/modes/price_service'
6
- module ItemBuilder
6
+ class ItemBuilder
7
7
  module Modes
8
8
  module Price
9
9
  class SalePricePolicy
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'date'
4
4
  require 'item_builder/modes/price/base'
5
- module ItemBuilder
5
+ class ItemBuilder
6
6
  module Modes
7
7
  module Price
8
8
  class ShopifyService < Base
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'date'
4
4
  require 'item_builder/modes/price/base'
5
- module ItemBuilder
5
+ class ItemBuilder
6
6
  module Modes
7
7
  module Price
8
8
  class ZaloraService < 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
- module ItemBuilder
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
- module ItemBuilder
3
+ class ItemBuilder
4
4
  module Modes
5
5
  module Quantity
6
6
  class Base
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes/quantity/base'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  module Quantity
7
7
  class BlibliService < Base
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes/quantity/base'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  module Quantity
7
7
  class LazadaService < Base
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes/quantity/base'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  module Quantity
7
7
  class ZaloraService < Base
@@ -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
- module ItemBuilder
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
- WarehouseSpace.find_by(item_variant_id: listing.variant_id)
58
+ wh_spaces.select {|ws| ws.item_variant_id == listing.variant_id }.first
59
59
  end
60
60
 
61
61
  def variant
62
- @variant ||= Variant.find(listing.variant_id)
62
+ variants.select {|v| v.id == listing.variant_id }.first
63
63
  end
64
64
  end
65
65
  end
@@ -3,7 +3,7 @@
3
3
  require 'item_builder/modes/quantity_service.rb'
4
4
  require 'item_builder/modes/price_service.rb'
5
5
  require 'item_builder/modes.rb'
6
- module ItemBuilder
6
+ class ItemBuilder
7
7
  module Modes
8
8
  class SimpleService
9
9
  include Modes
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes.rb'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  module Update
7
7
  class Base
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes/update/base'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  module Update
7
7
  class BlibliService < Base
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes/update/base'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  module Update
7
7
  class BukalapakService < Base
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes/update/base'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  module Update
7
7
  class JdService < Base
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes/update/base'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  module Update
7
7
  class LazadaService < Base
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes/update/base'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  module Update
7
7
  class ShopifyService < Base
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes/update/base'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  module Update
7
7
  class TokopediaService < Base
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'item_builder/modes/update/base'
4
- module ItemBuilder
4
+ class ItemBuilder
5
5
  module Modes
6
6
  module Update
7
7
  class ZaloraService < Base
@@ -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
- module ItemBuilder
11
+ class ItemBuilder
12
12
  module Modes
13
13
  class UpdateService
14
14
  include Modes
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module ItemBuilder
4
- VERSION = '0.1.11'
3
+ class ItemBuilder
4
+ VERSION = '0.1.16'
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.11
4
+ version: 0.1.16
5
5
  platform: ruby
6
6
  authors:
7
7
  - okaaryanata
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-20 00:00:00.000000000 Z
11
+ date: 2021-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler