Class: Spree::ReimbursementType::StoreCredit

Inherits:
Spree::ReimbursementType show all
Extended by:
ReimbursementHelpers
Defined in:
app/models/spree/reimbursement_type/store_credit.rb

Constant Summary

Constants inherited from Spree::ReimbursementType

ORIGINAL

Instance Attribute Summary

Attributes included from ReimbursementHelpers

#eligible_refund_methods

Class Method Summary collapse

Methods included from ReimbursementHelpers

create_credits, create_refunds

Methods inherited from Base

page

Methods included from Preferences::Preferable

#default_preferences, #defined_preferences, #get_preference, #has_preference!, #has_preference?, #preference_default, #preference_type, #set_preference

Class Method Details

.reimburse(reimbursement, return_items, simulate) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'app/models/spree/reimbursement_type/store_credit.rb', line 5

def reimburse(reimbursement, return_items, simulate)
  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)
  end

  reimbursement_list
end