Sha256: 7b0ef105869c83ca09fc50a736f777a957362bd59f41c692ae37ec28e3250459

Contents?: true

Size: 1.35 KB

Versions: 31

Compression:

Stored size: 1.35 KB

Contents

module Piggybak
  class LineItem < ActiveRecord::Base
    belongs_to :order
    acts_as_changer
    belongs_to :variant
  
    validates_presence_of :variant_id
    validates_presence_of :total
    validates_presence_of :price
    validates_presence_of :description
    validates_presence_of :quantity
    validates_numericality_of :quantity, :only_integer => true, :greater_than_or_equal_to => 0

    after_create :decrease_inventory, :if => Proc.new { |line_item| !line_item.variant.unlimited_inventory }
    after_destroy :increase_inventory, :if => Proc.new { |line_item| !line_item.variant.unlimited_inventory }
    after_update :update_inventory, :if => Proc.new { |line_item| !line_item.variant.unlimited_inventory }
        
    def admin_label
      "#{self.quantity} x #{self.variant.description}"
    end

    def decrease_inventory
      self.variant.update_inventory(-1 * self.quantity)
    end

    def increase_inventory
      self.variant.update_inventory(self.quantity)
    end

    def update_inventory
      if self.variant_id != self.variant_id_was
        old_variant = Variant.find(self.variant_id_was)
        old_variant.update_inventory(self.quantity_was)
        self.variant.update_inventory(-1*self.quantity)
      else
        quantity_diff = self.quantity_was - self.quantity
        self.variant.update_inventory(quantity_diff)
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
piggybak-0.5.5 app/models/piggybak/line_item.rb
piggybak-0.5.4 app/models/piggybak/line_item.rb
piggybak-0.5.3 app/models/piggybak/line_item.rb
piggybak-0.5.2 app/models/piggybak/line_item.rb
piggybak-0.5.1 app/models/piggybak/line_item.rb
piggybak-0.5.0 app/models/piggybak/line_item.rb
piggybak-0.4.39 app/models/piggybak/line_item.rb
piggybak-0.4.38 app/models/piggybak/line_item.rb
piggybak-0.4.37 app/models/piggybak/line_item.rb
piggybak-0.4.36 app/models/piggybak/line_item.rb
piggybak-0.4.35 app/models/piggybak/line_item.rb
piggybak-0.4.34 app/models/piggybak/line_item.rb
piggybak-0.4.33 app/models/piggybak/line_item.rb
piggybak-0.4.32 app/models/piggybak/line_item.rb
piggybak-0.4.31 app/models/piggybak/line_item.rb
piggybak-0.4.30 app/models/piggybak/line_item.rb
piggybak-0.4.29 app/models/piggybak/line_item.rb
piggybak-0.4.28 app/models/piggybak/line_item.rb
piggybak-0.4.27 app/models/piggybak/line_item.rb
piggybak-0.4.26 app/models/piggybak/line_item.rb