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

display_includes, #initialize_preference_defaults, page, preference

Methods included from Preferences::Preferable

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

Class Method Details

.reimburse(reimbursement, return_items, simulate, created_by: nil) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/models/spree/reimbursement_type/store_credit.rb', line 7

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