Sha256: ae5b8dd62378eacd81d1173aec3b45fb4d8fc52027cc1c327f09bcb8d94a2f2c
Contents?: true
Size: 1.5 KB
Versions: 2
Compression:
Stored size: 1.5 KB
Contents
require 'active_support/concern' module Spree class Order module LoyaltyPoints extend ActiveSupport::Concern def loyalty_points_total loyalty_points_credit_transactions.sum(:loyalty_points) - loyalty_points_debit_transactions.sum(:loyalty_points) end def award_loyalty_points loyalty_points_earned = loyalty_points_for(item_total) if !loyalty_points_used? create_credit_transaction(loyalty_points_earned) end end def loyalty_points_awarded? loyalty_points_credit_transactions.count > 0 end def loyalty_points_used? payments.any_with_loyalty_points? end module ClassMethods def credit_loyalty_points_to_user points_award_period = Spree::Config.loyalty_points_award_period uncredited_orders = Spree::Order.with_uncredited_loyalty_points(points_award_period) uncredited_orders.each do |order| order.award_loyalty_points end end end def create_credit_transaction(points) user.loyalty_points_credit_transactions.create(source: self, loyalty_points: points) end def create_debit_transaction(points) user.loyalty_points_debit_transactions.create(source: self, loyalty_points: points) end private def complete_loyalty_points_payments payments.by_loyalty_points.with_state('checkout').each { |payment| payment.complete! } end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
spree_loyalty_points-1.1.1 | app/models/concerns/spree/order/loyalty_points.rb |
spree_loyalty_points-1.0.3 | app/models/concerns/spree/order/loyalty_points.rb |