Module: RailsTrade::Order

Extended by:
ActiveSupport::Concern
Includes:
RailsTrade::Ordering::Payment, RailsTrade::Ordering::Refund
Included in:
Order
Defined in:
app/models/rails_trade/order.rb

Instance Method Summary collapse

Instance Method Details

#amount_moneyObject



69
70
71
# File 'app/models/rails_trade/order.rb', line 69

def amount_money
  amounto_money(self.currency)
end

#compute_promoteObject



73
74
# File 'app/models/rails_trade/order.rb', line 73

def compute_promote
end

#compute_received_amountObject



92
93
94
95
96
# File 'app/models/rails_trade/order.rb', line 92

def compute_received_amount
  _received_amount = self.payment_orders.where(state: 'confirmed').sum(:check_amount)
  _refund_amount = self.refunds.where.not(state: 'failed').sum(:total_amount)
  _received_amount - _refund_amount
end

#confirm_ordered!Object



88
89
90
# File 'app/models/rails_trade/order.rb', line 88

def confirm_ordered!
  self.trade_items.each(&:confirm_ordered!)
end

#metering_attributesObject



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

def metering_attributes
  attributes.slice 'quantity', 'amount'
end

#subjectObject



61
62
63
# File 'app/models/rails_trade/order.rb', line 61

def subject
  trade_items.map { |oi| oi.good&.name || 'Goods' }.join(', ')
end

#sync_from_cartObject



80
81
82
83
84
85
86
# File 'app/models/rails_trade/order.rb', line 80

def sync_from_cart
  cart.trade_items.checked.default_where(myself: myself).update_all(trade_type: self.class.name, trade_id: self.id)
  cart.trade_promotes.update_all(trade_type: self.class.name, trade_id: self.id)

  self.compute_amount
  self.save
end

#user_nameObject



65
66
67
# File 'app/models/rails_trade/order.rb', line 65

def user_name
  user&.name.presence || "#{user&.id}"
end