Class: Returnly::Services::CreateReimbursement

Inherits:
Object
  • Object
show all
Defined in:
lib/returnly/services/create_reimbursement.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(reimbursement) ⇒ CreateReimbursement

Returns a new instance of CreateReimbursement.



8
9
10
# File 'lib/returnly/services/create_reimbursement.rb', line 8

def initialize(reimbursement)
  @reimbursement = reimbursement
end

Instance Attribute Details

#reimbursementObject

Returns the value of attribute reimbursement.



4
5
6
# File 'lib/returnly/services/create_reimbursement.rb', line 4

def reimbursement
  @reimbursement
end

Instance Method Details

#perform!Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/returnly/services/create_reimbursement.rb', line 12

def perform!
  reimbursement.save!
  reimbursement.update!(total: calculated_total)
  performer.perform(reimbursement)

  if unpaid_amount_within_tolerance?
    reimbursement.reimbursed!
    Spree::Reimbursement.reimbursement_success_hooks.each { |h| h.call reimbursement }
    send_reimbursement_email
  else
    reimbursement.errored!
    Spree::Reimbursement.reimbursement_failure_hooks.each { |h| h.call reimbursement }
    raise incomplete_error_class, Spree.t('validation.unpaid_amount_not_zero', amount: unpaid_amount)
  end
end