Class: SpreeCmCommissioner::RedisStock::Base
- Inherits:
-
Object
- Object
- SpreeCmCommissioner::RedisStock::Base
- Extended by:
- ServiceModuleThrowable
- Includes:
- Spree::ServiceModule::Base
- Defined in:
- app/services/spree_cm_commissioner/redis_stock/base.rb
Instance Method Summary collapse
- #call(line_item_ids:) ⇒ Object
-
#line_items ⇒ Object
only unstock or restock when variants is available, track inventory, not backorderable & not need_confirmation.
- #schedule_sync_inventory(inventory_id_and_quantities) ⇒ Object
- #warm_redis_keys!(inventory_items) ⇒ Object
Methods included from ServiceModuleThrowable
Instance Method Details
#call(line_item_ids:) ⇒ Object
7 8 9 |
# File 'app/services/spree_cm_commissioner/redis_stock/base.rb', line 7 def call(line_item_ids:) raise NotImplementedError, 'Subclasses must implement the call method' end |
#line_items ⇒ Object
only unstock or restock when variants is available, track inventory, not backorderable & not need_confirmation. otherwise, we can ignore them.
13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'app/services/spree_cm_commissioner/redis_stock/base.rb', line 13 def line_items return @line_items if defined?(@line_items) @line_items = Spree::LineItem.where(id: @line_item_ids).includes(:inventory_items, variant: :stock_items) @line_items = @line_items.select do |line_item| next false unless line_item.variant.available? next false unless line_item.variant.should_track_inventory? next false if line_item.variant.backorderable? next false if line_item.variant.need_confirmation? true end end |
#schedule_sync_inventory(inventory_id_and_quantities) ⇒ Object
31 32 33 34 35 36 |
# File 'app/services/spree_cm_commissioner/redis_stock/base.rb', line 31 def schedule_sync_inventory(inventory_id_and_quantities) SpreeCmCommissioner::InventoryItems::BulkAdjustQuantitiesJob.perform_later( inventory_id_and_quantities: inventory_id_and_quantities, line_item_ids: @line_item_ids ) end |
#warm_redis_keys!(inventory_items) ⇒ Object
27 28 29 |
# File 'app/services/spree_cm_commissioner/redis_stock/base.rb', line 27 def warm_redis_keys!(inventory_items) SpreeCmCommissioner::RedisStock::CachedInventoryItemsBuilder.new(inventory_items).call end |