43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'app/models/piggybak/line_item.rb', line 43
def preprocess_sellable
if self.sellable_id.nil?
self.errors.add(:sellable_id, "Sellable can't be blank")
return
end
sellable = Piggybak::Sellable.where(id: self.sellable_id).first
return if sellable.nil?
quantity_change = 0
if self.new_record?
quantity_change = self.quantity.to_i
elsif self.changes.keys.include?("quantity") && self.quantity > self.quantity_was
quantity_change = self.quantity - self.quantity_was
end
if sellable.quantity < quantity_change && !sellable.unlimited_inventory
self.errors.add(:sellable_id, "Insufficient inventory by #{quantity_change - sellable.quantity} unit(s).")
return
end
self.description = sellable.description
self.unit_price = sellable.price
self.price = self.unit_price*self.quantity.to_i
end
|