Sha256: f8b4925572431cae30a08ce7fc1ad8ff642e6c515c3bfe48b5b6526303497a99

Contents?: true

Size: 1.73 KB

Versions: 29

Compression:

Stored size: 1.73 KB

Contents

module Spree
  module ReimbursementType::ReimbursementHelpers
    def create_refunds(reimbursement, payments, unpaid_amount, simulate, reimbursement_list = [])
      payments.map do |payment|
        break if unpaid_amount <= 0
        next unless payment.can_credit?

        amount = [unpaid_amount, payment.credit_allowed].min
        reimbursement_list << create_refund(reimbursement, payment, amount, simulate)
        unpaid_amount -= amount
      end

      return reimbursement_list, unpaid_amount
    end

    def create_credits(reimbursement, unpaid_amount, simulate, reimbursement_list = [])
      credits = [create_credit(reimbursement, unpaid_amount, simulate)]
      unpaid_amount -= credits.sum(&:amount)
      reimbursement_list += credits

      return reimbursement_list, unpaid_amount
    end

    private

    def create_refund(reimbursement, payment, amount, simulate)
      refund = reimbursement.refunds.build({
        payment: payment,
        amount: amount,
        reason: Spree::RefundReason.return_processing_reason,
      })

      simulate ? refund.readonly! : refund.save!
      refund
    end

    # If you have multiple methods of crediting a customer, overwrite this method
    # Must return an array of objects the respond to #description, #display_amount
    def create_credit(reimbursement, unpaid_amount, simulate)
      creditable = create_creditable(reimbursement, unpaid_amount)
      credit = reimbursement.credits.build(creditable: creditable, amount: unpaid_amount)
      simulate ? credit.readonly! : credit.save!
      credit
    end

    def create_creditable(reimbursement, unpaid_amount)
      Spree::Reimbursement::Credit.default_creditable_class.new(reimbursement: reimbursement, amount: unpaid_amount)
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
spree_core-3.0.10 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.9 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.8 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.7 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.6.1 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.6 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.5 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.4 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-2.4.10 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.3 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-2.4.9 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.2 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-2.4.8 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.1 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-2.4.7 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.0 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-2.4.6 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-2.4.5 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.0.rc4 app/models/spree/reimbursement_type/reimbursement_helpers.rb
spree_core-3.0.0.rc3 app/models/spree/reimbursement_type/reimbursement_helpers.rb