Sha256: b9d66767c953d4789a85ded254a8767e8ec0932388e00317f1ac4c9c1900c5fe
Contents?: true
Size: 1.2 KB
Versions: 62
Compression:
Stored size: 1.2 KB
Contents
module Workarea class Payment class Refund include Processing field :includes_shipping, type: Boolean, default: false validate :refundable_amounts def transaction_type 'refund' end def find_reference_transactions_for(tender) tender.transactions.successful.not_canceled.captures_or_purchased end # Set amounts for tenders automatically (as opposed to custom amounts) # This will reset the current amount! def allocate_amounts!(total:) self.amounts = {} allocated_amount = 0.to_m payment.tenders.reverse.each do |tender| amount_for_this_tender = total - allocated_amount if amount_for_this_tender > tender.refundable_amount amount_for_this_tender = tender.refundable_amount end allocated_amount += amount_for_this_tender amounts[tender.id] = amount_for_this_tender end end def refundable_amounts amounts_with_tenders.each do |tender, amount| if tender.refundable_amount < amount errors.add(tender.slug, I18n.t('workarea.payment.exceeds_captured_amount')) end end end end end end
Version data entries
62 entries across 62 versions & 1 rubygems