Sha256: a41c600d805fed1a1a20225b4d7d3dbb36d82dc4014a8cba276e50078eaebb3b

Contents?: true

Size: 1.18 KB

Versions: 9

Compression:

Stored size: 1.18 KB

Contents

module Piggybak
  class LineItem < ActiveRecord::Base
    belongs_to :order
    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
    after_destroy :increase_inventory
    after_update :update_inventory
        
    def admin_label
      "#{self.quantity} x #{self.variant.description}"
    end

    def decrease_inventory
      if !self.variant.unlimited_inventory
        self.variant.update_inventory(-1 * self.quantity)
      end
    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

9 entries across 9 versions & 1 rubygems

Version Path
piggybak-0.4.12 app/models/piggybak/line_item.rb
piggybak-0.4.11 app/models/piggybak/line_item.rb
piggybak-0.4.10 app/models/piggybak/line_item.rb
piggybak-0.4.9 app/models/piggybak/line_item.rb
piggybak-0.4.7.1 app/models/piggybak/line_item.rb
piggybak-0.4.7 app/models/piggybak/line_item.rb
piggybak-0.4.6 app/models/piggybak/line_item.rb
piggybak-0.4.5 app/models/piggybak/line_item.rb
piggybak-0.4.4 app/models/piggybak/line_item.rb