Class: SpreeCmCommissioner::Stock::AvailabilityChecker
- Inherits:
-
Object
- Object
- SpreeCmCommissioner::Stock::AvailabilityChecker
- Defined in:
- app/models/spree_cm_commissioner/stock/availability_checker.rb
Instance Attribute Summary collapse
-
#error_message ⇒ Object
readonly
Returns the value of attribute error_message.
-
#variant ⇒ Object
readonly
Returns the value of attribute variant.
Instance Method Summary collapse
- #can_supply?(quantity = 1, options = {}) ⇒ Boolean
-
#initialize(variant) ⇒ AvailabilityChecker
constructor
A new instance of AvailabilityChecker.
- #permanent_stock_variant_available?(quantity = 1, options = {}) ⇒ Boolean
- #variant_available?(quantity = 1, options = {}) ⇒ Boolean
Constructor Details
#initialize(variant) ⇒ AvailabilityChecker
6 7 8 9 |
# File 'app/models/spree_cm_commissioner/stock/availability_checker.rb', line 6 def initialize(variant) @variant = variant = nil end |
Instance Attribute Details
#error_message ⇒ Object (readonly)
Returns the value of attribute error_message.
4 5 6 |
# File 'app/models/spree_cm_commissioner/stock/availability_checker.rb', line 4 def end |
#variant ⇒ Object (readonly)
Returns the value of attribute variant.
4 5 6 |
# File 'app/models/spree_cm_commissioner/stock/availability_checker.rb', line 4 def variant @variant end |
Instance Method Details
#can_supply?(quantity = 1, options = {}) ⇒ Boolean
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'app/models/spree_cm_commissioner/stock/availability_checker.rb', line 11 def can_supply?(quantity = 1, = {}) return false unless variant.available? return true unless variant.should_track_inventory? return true if variant.backorderable? return true if variant.need_confirmation? # when delivery required, shipment will dynamically add / remove unit from stock item. # so we can directly check can_supply with stock items directly. return variant.stock_items.sum(:count_on_hand) >= quantity if variant.delivery_required? if variant.permanent_stock? permanent_stock_variant_available?(quantity, ) else variant_available?(quantity, ) end end |
#permanent_stock_variant_available?(quantity = 1, options = {}) ⇒ Boolean
38 39 40 41 42 43 44 45 |
# File 'app/models/spree_cm_commissioner/stock/availability_checker.rb', line 38 def permanent_stock_variant_available?(quantity = 1, = {}) SpreeCmCommissioner::VariantAvailability::PermanentStockQuery.new( variant: variant, from_date: [:from_date].to_date, to_date: [:to_date].to_date, except_line_item_id: [:except_line_item_id] ).available?(quantity) end |
#variant_available?(quantity = 1, options = {}) ⇒ Boolean
28 29 30 31 32 33 34 35 36 |
# File 'app/models/spree_cm_commissioner/stock/availability_checker.rb', line 28 def variant_available?(quantity = 1, = {}) query = SpreeCmCommissioner::VariantAvailability::NonPermanentStockQuery.new( variant: variant, except_line_item_id: [:except_line_item_id] ) result = query.available?(quantity) = query. unless result result end |