Sha256: 3d72e639f34c6c096bde2fceb39b9354c12341ac2d3ca0dbf3d085a94158beac

Contents?: true

Size: 1.11 KB

Versions: 3

Compression:

Stored size: 1.11 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 :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

3 entries across 3 versions & 1 rubygems

Version Path
piggybak-0.4.3 app/models/piggybak/line_item.rb
piggybak-0.4.2 app/models/piggybak/line_item.rb
piggybak-0.4.1 app/models/piggybak/line_item.rb