Module: TinyBuilder::QuantityHelper
- Included in:
- BaseBuilder
- Defined in:
- lib/tiny_builder/quantity_helper.rb
Instance Method Summary collapse
- #bundle_warehouse_spaces(variant) ⇒ Object
- #counter_params(listing, wh_space = nil) ⇒ Object
- #get_warehouse_spaces_v2(variant_id) ⇒ Object
- #multi_warehouse_spaces(listing) ⇒ Object
- #quantity(listing, wh_space = nil) ⇒ Object
- #quantity_hash(listing) ⇒ Object
- #single_warehouse_space(listing) ⇒ Object
- #warehouse_quantities(listing) ⇒ Object
- #wh_spaces(listing) ⇒ Object
Instance Method Details
#bundle_warehouse_spaces(variant) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/tiny_builder/quantity_helper.rb', line 56 def bundle_warehouse_spaces(variant) bundle = MasterProduct.find_by("bundle_variants.master_variant_id": variant.id) return [] unless bundle variant_id = bundle.bundle_variants.find { |bv| !bv[:main] }[:master_variant_id] if inventory_v2 get_warehouse_spaces_v2(variant_id) else WarehouseSpace.where( item_variant_id: variant_id ).where.not( warehouse_id: nil ) end end |
#counter_params(listing, wh_space = nil) ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/tiny_builder/quantity_helper.rb', line 31 def counter_params(listing, wh_space = nil) wh_space ||= single_warehouse_space(listing) { warehouse_space: wh_space, listing: listing, variant: mapped_data[listing.icava_id][:variant], inventory_v2: inventory_v2 } end |
#get_warehouse_spaces_v2(variant_id) ⇒ Object
81 82 83 84 85 86 87 |
# File 'lib/tiny_builder/quantity_helper.rb', line 81 def get_warehouse_spaces_v2(variant_id) spaces = [] MongoWarehouseSpace.where(item_variant_id: variant_id).where(:warehouse_id.exists => true).each do |ws| spaces << ws end spaces end |
#multi_warehouse_spaces(listing) ⇒ Object
50 51 52 53 54 |
# File 'lib/tiny_builder/quantity_helper.rb', line 50 def multi_warehouse_spaces(listing) wh_spaces(listing).select do |wh_space| warehouse_mappings.map(&:warehouse_id).include?(wh_space.warehouse_id) end end |
#quantity(listing, wh_space = nil) ⇒ Object
23 24 25 26 27 28 29 |
# File 'lib/tiny_builder/quantity_helper.rb', line 23 def quantity(listing, wh_space = nil) qty = QuantityCounter.new( counter_params(listing, wh_space) ).perform qty += listing[:zalora_reserved_stock].to_i if channel_id == 13 qty end |
#quantity_hash(listing) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/tiny_builder/quantity_helper.rb', line 5 def quantity_hash(listing) if mwh { warehouse: warehouse_quantities(listing) } else { quantity: quantity(listing) } end end |
#single_warehouse_space(listing) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/tiny_builder/quantity_helper.rb', line 41 def single_warehouse_space(listing) variant_wh_spaces = wh_spaces(listing) if warehouse_mapping variant_wh_spaces.find{ |wh_space| wh_space.warehouse_id == warehouse_mapping.warehouse_id } else variant_wh_spaces.last end end |
#warehouse_quantities(listing) ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/tiny_builder/quantity_helper.rb', line 13 def warehouse_quantities(listing) multi_warehouse_spaces(listing).map do |wh_space| { id: wh_space&.warehouse_id, quantity: quantity(listing, wh_space), warehouse_id: mapped_wh_mappings[wh_space.warehouse_id] } end end |
#wh_spaces(listing) ⇒ Object
72 73 74 75 76 77 78 79 |
# File 'lib/tiny_builder/quantity_helper.rb', line 72 def wh_spaces(listing) variant = mapped_data[listing.icava_id][:variant] wh_spaces = if variant.config == 'default' mapped_data[listing.icava_id][:warehouse_spaces] else bundle_warehouse_spaces(variant) end end |