Class: Comable::Order

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
Checkout, Morrisable, Ransackable
Defined in:
app/models/comable/order.rb,
app/models/comable/order/morrisable.rb

Defined Under Namespace

Modules: Morrisable

Instance Method Summary collapse

Methods included from Checkout

#delivery_required?, #orderer_required?, #payment_required?, #shipment_required?, #stated?

Instance Method Details

#completeObject



35
36
37
38
39
40
41
# File 'app/models/comable/order.rb', line 35

def complete
  ActiveRecord::Base.transaction do
    run_callbacks :complete do
      save_to_complete.tap { |completed| self.completed_at = nil unless completed }
    end
  end
end

#complete!Object



43
44
45
46
47
# File 'app/models/comable/order.rb', line 43

def complete!
  Rails.logger.debug '[DEPRECATED] #complete! is deprecated. Please use #next_state method.'
  fail Comable::InvalidOrder unless complete
  self
end

#completed?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'app/models/comable/order.rb', line 49

def completed?
  !completed_at.nil?
end

#completing?Boolean

TODO: switch to state_machine

Returns:

  • (Boolean)


54
55
56
# File 'app/models/comable/order.rb', line 54

def completing?
  completed_at && completed_at_was.nil?
end

#current_item_total_priceObject

時価商品合計を取得



66
67
68
# File 'app/models/comable/order.rb', line 66

def current_item_total_price
  order_details.to_a.sum(&:current_subtotal_price)
end

#current_shipment_feeObject

時価送料を取得



76
77
78
# File 'app/models/comable/order.rb', line 76

def current_shipment_fee
  shipment_method.try(:fee) || 0
end

#current_total_priceObject

時価合計を取得



81
82
83
# File 'app/models/comable/order.rb', line 81

def current_total_price
  current_item_total_price + current_shipment_fee
end

#item_total_priceObject

売価商品合計を取得



71
72
73
# File 'app/models/comable/order.rb', line 71

def item_total_price
  order_details.to_a.sum(&:subtotal_price)
end

#stocked_itemsObject Also known as: soldout_stocks



58
59
60
# File 'app/models/comable/order.rb', line 58

def stocked_items
  order_details.to_a.select(&:unstocked?)
end