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
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/tiny_builder/quantity_helper.rb', line 52 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] WarehouseSpace.where( item_variant_id: variant_id ).where.not( warehouse_id: nil ) end |
#counter_params(listing, wh_space = nil) ⇒ Object
31 32 33 34 35 |
# File 'lib/tiny_builder/quantity_helper.rb', line 31 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
46 47 48 49 50 |
# File 'lib/tiny_builder/quantity_helper.rb', line 46 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
37 38 39 40 41 42 43 44 |
# File 'lib/tiny_builder/quantity_helper.rb', line 37 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
63 64 65 66 67 68 69 70 |
# File 'lib/tiny_builder/quantity_helper.rb', line 63 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 |