Class: Unidom::Order::OrderItem

Inherits:
ApplicationRecord show all
Includes:
Common::Concerns::ModelExtension, Concerns::AsAdjusted
Defined in:
app/models/unidom/order/order_item.rb

Class Method Summary collapse

Class Method Details

.order!(ordered, of: nil, by: of.placer, unit_price: 0, quantity: 1) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'app/models/unidom/order/order_item.rb', line 31

def self.order!(ordered, of: nil, by: of.placer, unit_price: 0, quantity: 1)
  item = of.items.ordered_is(ordered).placed_by(by).valid_at.alive.first
  if item.present?
    item.quantity        += quantity
    item.unit_price      =  unit_price
    item.purchase_amount =  item.unit_price*item.quantity
    item.subtotal_amount =  item.purchase_amount+item.adjustments.valid_at.alive.sum(:amount).to_f
    item.save!
  else
    ordinal = 1+of.items.valid_at.alive.maximum(:ordinal).to_i
    of.items.create! ordered: ordered, placer: by, ordinal: ordinal, quantity: quantity, unit_price: unit_price, purchase_amount: unit_price*quantity, subtotal_amount: unit_price*quantity, opened_at: Time.now
  end
end