item_builder 0.1.13 → 0.1.18

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 +66 -15
  3. data/lib/item_builder/get_quantity_service.rb +13 -11
  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: f30c408c745d0be7fec186569f4015f4f758db7aef762a325fc001b23a930d47
4
- data.tar.gz: 5eea167ecc2c308e7f947fc48332cb64f51098b51b5da16bb8159dc3e1794e80
3
+ metadata.gz: 2d5296817adbceee44af0d40c56904531f0d83e719e3845a91a331b1c5442167
4
+ data.tar.gz: 87abd04e435be4b3dbaf7da63496c9b081f467f142ecf2c05f6b00f79f13126c
5
5
  SHA512:
6
- metadata.gz: 237d19131993e4fec10b22704357c5d9204393021d509072db31b2e333e418acae87a9f2d2c4cb3876dd547eb34e6211204051492dfb65ae757b330bdcf7721f
7
- data.tar.gz: 6f9c343067f6a134dc20fba3e91ed5c5ab276364e121dc17e512455ffb460969e5578c84304140cbb352844898ac9f2dadddd9779171c1639a40ec647707430f
6
+ metadata.gz: 8d9e2954488f28ffa4e4ce03718ed29d116703eeb8ee76005c601da879250d022638f8bd93ed318ecf1e4b7d9686047f8fb1d1024b9207fe3585b26ad1fa2600
7
+ data.tar.gz: 275d56b3d9313b451571df31fc18166a03ea4e2ca57a50d0b03a2c6bf8d55397543dd229057870ae6784a31be11d89857699ec241c624173f98b4ae5580a68f3
@@ -8,23 +8,74 @@ 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
35
+
36
+ def quantity_mode
37
+ listings.map do |listing|
38
+ modes[mode].new(qty_params(listing)).perform
39
+ end
40
+ end
41
+
42
+ def qty_params(listing)
43
+ {
44
+ listing: listing,
45
+ wh_spaces: wh_spaces,
46
+ variants: variants
47
+ }
48
+ end
19
49
 
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
- }
50
+ def default
51
+ listings.map do |listing|
52
+ modes[mode].new(listing: listing).perform
28
53
  end
29
54
  end
55
+
56
+ def wh_spaces
57
+ @wh_spaces ||= WarehouseSpace.where(item_variant_id: variant_ids)
58
+ end
59
+
60
+ def variants
61
+ @variants ||= Variant.where(id: variant_ids)
62
+ end
63
+
64
+ def variant_ids
65
+ @variant_ids ||= listings.map(&:variant_id).uniq
66
+ end
67
+
68
+ def listings
69
+ @listings ||= VariantListing.where(id: listing_ids)
70
+ end
71
+
72
+ def modes
73
+ {
74
+ price: ItemBuilder::Modes::PriceService,
75
+ quantity: ItemBuilder::Modes::QuantityService,
76
+ simple: ItemBuilder::Modes::SimpleService,
77
+ active: ItemBuilder::Modes::ActiveService,
78
+ update: ItemBuilder::Modes::UpdateService
79
+ }
80
+ end
30
81
  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,14 +76,18 @@ 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
@@ -131,8 +135,6 @@ module ItemBuilder
131
135
  # allocated reserved stock
132
136
  def one_alloc_rsvd_stock(allocated_stock)
133
137
  RestClient.get("#{host}?#{params(allocated_stock)}")
134
- rescue RestClient::ExceptionWithResponse => e
135
- e.response
136
138
  end
137
139
  end
138
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.13'
3
+ class ItemBuilder
4
+ VERSION = '0.1.18'
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.13
4
+ version: 0.1.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - okaaryanata
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-08 00:00:00.000000000 Z
11
+ date: 2021-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler