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.
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 +16 -12
  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 +2 -12
  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: 1ff740418480a710b0cec377cec19a6330aad599ea3fbe555280f7ad0c59f08b
4
- data.tar.gz: 02e64890eb8054a0bf68bc613c1b3e0637450c9e2846ecad4fdd9649b29e6e01
3
+ metadata.gz: bfe76bc69e820c18a13d2a141af1306a4ac0872635d1e3e938e9cbe25a6bbcd2
4
+ data.tar.gz: 5c3ce99ab71ccad992bdf2097c97337ff0e848798a97e9978d2c282ce0e56051
5
5
  SHA512:
6
- metadata.gz: 40383445dc0e0b9b7a44610de2de1d8950523616f339881d0285875882dd7c50fb8d40e3680f5b100609ba8c39110d5e8d152a1d8e3d87d4fbf5b24cf4351129
7
- data.tar.gz: fe4881bb71807c32e5a6e0d39a74afa62a3606a38e72fe1f363d08b7ec72b38b2868c3c7ed133c2947dca5c1de2ae729a809ca6d9b7413b6cac22c523a32d1cb
6
+ metadata.gz: d26999a5d454b647b0a4943654ba55674de42d504d3318bf7084ce179280cf30405e8b6995b3efa5c894025b09cf6d9db84eea331de0e540525b52716d57b8de
7
+ data.tar.gz: '07980a0aee5587888f85209b63e8531c4702bf80d7a820c2d4cd2463bffaa4cadd5007194de21a7a55f958915dd73ffeed444dc458051754c7159bab6ec55de8'
@@ -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)
@@ -35,7 +35,7 @@ module ItemBuilder
35
35
  def check_consignment_variant?
36
36
  listing.consignment? ||
37
37
  (
38
- !listing.active? && listing.channel_id == 12
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
- qty_list = []
80
- bundle_variants.each do |bvr|
81
- qty = WarehouseSpace.find_by(item_variant_id: bvr.variant_id)&.quantity
82
- qty ||= 0
83
- qty = qty / bvr.unit
84
- qty_list.push(qty)
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('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)
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
@@ -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
@@ -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
- begin
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
@@ -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.12'
3
+ class ItemBuilder
4
+ VERSION = '0.1.17'
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.12
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: 2020-10-21 00:00:00.000000000 Z
11
+ date: 2021-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler