Sha256: ebd265a38cb0707fcc05a265cd5da0fdc1e571421f08c11cb37c05b36ab98c8a

Contents?: true

Size: 1.25 KB

Versions: 39

Compression:

Stored size: 1.25 KB

Contents

# frozen_string_literal: true

class Spree::ReimbursementType::StoreCredit < Spree::ReimbursementType
  extend Spree::ReimbursementType::ReimbursementHelpers

  class << self
    def reimburse(reimbursement, return_items, simulate, created_by: nil)
      unless created_by
        Spree::Deprecation.warn("Calling #reimburse on #{self} without created_by is deprecated")
      end
      unpaid_amount = return_items.sum(&:total).to_d.round(2, :down)
      payments = store_credit_payments(reimbursement)
      reimbursement_list = []

      # Credit each store credit that was used on the order
      reimbursement_list, unpaid_amount = create_refunds(
        reimbursement,
        payments,
        unpaid_amount,
        simulate,
        reimbursement_list
      )

      # If there is any amount left to pay out to the customer, then create credit with that amount
      if unpaid_amount > 0.0
        reimbursement_list, _unpaid_amount = create_credits(
          reimbursement,
          unpaid_amount,
          simulate,
          reimbursement_list,
          created_by: created_by
        )
      end

      reimbursement_list
    end

    private

    def store_credit_payments(reimbursement)
      reimbursement.order.payments.completed.store_credits
    end
  end
end

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
solidus_core-2.11.17 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.16 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.15 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.14 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.13 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.12 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.11 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.10.5 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.10 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.9 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.8 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.7 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.6 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.5 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.4 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.3 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.2 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.1 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.10.3 app/models/spree/reimbursement_type/store_credit.rb
solidus_core-2.11.0 app/models/spree/reimbursement_type/store_credit.rb