Class: LineItem

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/line_item.rb

Instance Method Summary collapse

Instance Method Details

#adjust_quantityObject



59
60
61
# File 'app/models/line_item.rb', line 59

def adjust_quantity
  self.quantity = 0 if self.quantity.nil? || self.quantity < 0
end

#amountObject Also known as: total



54
55
56
# File 'app/models/line_item.rb', line 54

def amount
  self.price * self.quantity
end

#copy_priceObject



25
26
27
# File 'app/models/line_item.rb', line 25

def copy_price
  self.price = variant.price if variant && self.price.nil?
end

#decrement_quantityObject



50
51
52
# File 'app/models/line_item.rb', line 50

def decrement_quantity
  self.quantity -= 1
end

#increment_quantityObject

def meta_validation_of_quantities

unless quantity && quantity >= 0
  errors.add(:quantity, I18n.t("validation.must_be_non_negative"))
end
# avoid reload of order.inventory_units by using direct lookup
unless !Spree::Config[:track_inventory_levels]                        ||
       Spree::Config[:allow_backorders]                               ||
       order   && InventoryUnit.order_id_equals(order).first.present? ||
       variant && quantity <= variant.on_hand
  errors.add(:quantity, I18n.t("validation.is_too_large") + " (#{self.variant.name})")
end

if shipped_count = order.shipped_units.nil? ? nil : order.shipped_units[variant]
  errors.add(:quantity, I18n.t("validation.cannot_be_less_than_shipped_units") ) if quantity < shipped_count
end

end



46
47
48
# File 'app/models/line_item.rb', line 46

def increment_quantity
  self.quantity += 1
end

#insufficient_stock?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'app/models/line_item.rb', line 67

def insufficient_stock?
  !sufficient_stock?
end

#sufficient_stock?Boolean

Returns:

  • (Boolean)


63
64
65
# File 'app/models/line_item.rb', line 63

def sufficient_stock?
  Spree::Config[:allow_backorders] ? true : (self.variant.on_hand >= self.quantity)
end