Sha256: 02f1ca57900d85317d2355791393e1952bcc0ccc946e7fc82722bdc9968afeca

Contents?: true

Size: 858 Bytes

Versions: 7

Compression:

Stored size: 858 Bytes

Contents

class LineItem < ActiveRecord::Base
  before_validation :adjust_quantity
  belongs_to :order
  belongs_to :variant

  validates_presence_of :variant
  validates_numericality_of :quantity, :only_integer => true, :message => "must be an integer"
  validates_numericality_of :price
  
  def validate
    unless quantity && quantity >= 0
      errors.add(:quantity, "must be a positive value")
    end
    unless quantity <= variant.on_hand || Spree::Config[:allow_backorders]
      errors.add(:quantity, " for #{variant.product.name} is too large-- stock on hand cannot cover requested quantity!")
    end
  end
  
  def increment_quantity
    self.quantity += 1
  end

  def decrement_quantity
    self.quantity -= 1
  end
  
  def total
    self.price * self.quantity  
  end
  
  def adjust_quantity    
    self.quantity = 0 if self.quantity < 0
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
spree-0.4.0 app/models/line_item.rb
spree-0.4.1 app/models/line_item.rb
spree-0.5.0 app/models/line_item.rb
spree-0.6.0 app/models/line_item.rb
spree-0.5.1 app/models/line_item.rb
spree-0.7.1 app/models/line_item.rb
spree-0.7.0 app/models/line_item.rb