Module: RailsTrade::Good
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/rails_trade/good.rb
Instance Method Summary collapse
- #default_promote_goods ⇒ Object
- #final_price ⇒ Object
- #generate_order(buyer: nil, cart: nil, maintain_id: nil, **params) ⇒ Object
- #generate_order!(buyer: nil, cart: nil, maintain_id: nil, **params) ⇒ Object
- #order_done ⇒ Object
- #valid_promote_goods ⇒ Object
Instance Method Details
#default_promote_goods ⇒ Object
29 30 31 |
# File 'app/models/rails_trade/good.rb', line 29 def default_promote_goods PromoteGood.default.where(good_type: self.class.base_class.name, good_id: [nil, self.id]) end |
#final_price ⇒ Object
20 21 22 23 |
# File 'app/models/rails_trade/good.rb', line 20 def final_price compute_order_amount #self.retail_price + self.promote_price end |
#generate_order(buyer: nil, cart: nil, maintain_id: nil, **params) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'app/models/rails_trade/good.rb', line 40 def generate_order(buyer: nil, cart: nil, maintain_id: nil, **params) if buyer o = buyer.orders.build elsif cart o = cart.orders.build else raise 'please assign buyer or cart' end o.organ_id = self.organ_id if self.respond_to?(:organ_id) if o.respond_to?(:maintain_id) o.maintain_id = maintain_id o.organ_id ||= o.maintain&.organ_id end ti = o.trade_items.build(good: self) ti.assign_attributes params.slice(:number) ti.init_amount ti.compute_promote ti.sum_amount o.assign_attributes params.slice(:extra, :currency) o.compute_promote o.compute_amount o end |
#generate_order!(buyer: nil, cart: nil, maintain_id: nil, **params) ⇒ Object
33 34 35 36 37 38 |
# File 'app/models/rails_trade/good.rb', line 33 def generate_order!(buyer: nil, cart: nil, maintain_id: nil, **params) o = generate_order(buyer: buyer, cart: cart, maintain_id: maintain_id, **params) o.check_state o.save! o end |
#order_done ⇒ Object
67 68 69 |
# File 'app/models/rails_trade/good.rb', line 67 def order_done puts 'Should realize in good entity' end |
#valid_promote_goods ⇒ Object
25 26 27 |
# File 'app/models/rails_trade/good.rb', line 25 def valid_promote_goods PromoteGood.valid.where(good_type: self.class.base_class.name, good_id: [nil, self.id]).where.not(promote_id: self.promote_goods.select(:promote_id).unavailable) end |