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
- #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
50 51 52 53 54 55 56 57 58 |
# File 'lib/tiny_builder/quantity_helper.rb', line 50 def bundle_warehouse_spaces(variant) bundle = MasterProduct.find_by("bundle_variants.master_variant_id": variant.id) variant_id = bundle.bundle_variants.find { |bv| !bv[:main] }[:master_variant_id] WarehouseSpace.where( item_variant_id: variant_id ).where.not( warehouse_id: nil ) end |
#counter_params(listing, wh_space = nil) ⇒ Object
29 30 31 32 33 |
# File 'lib/tiny_builder/quantity_helper.rb', line 29 def counter_params(listing, wh_space = nil) params = mapped_data[listing.icava_id].slice(:variant, :stock_alloc, :associated_stock_allocs) wh_space ||= single_warehouse_space(listing) params.merge(warehouse_space: wh_space) end |
#multi_warehouse_spaces(listing) ⇒ Object
44 45 46 47 48 |
# File 'lib/tiny_builder/quantity_helper.rb', line 44 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 |
# File 'lib/tiny_builder/quantity_helper.rb', line 23 def quantity(listing, wh_space = nil) QuantityCounter.new( counter_params(listing, wh_space) ).perform 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
35 36 37 38 39 40 41 42 |
# File 'lib/tiny_builder/quantity_helper.rb', line 35 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
60 61 62 63 64 65 66 67 |
# File 'lib/tiny_builder/quantity_helper.rb', line 60 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 |