From 0ac248f03ab2e4ffb13c312b86d6c719db2a693e Mon Sep 17 00:00:00 2001 From: Andy Brett Date: Thu, 10 Dec 2020 09:55:08 -0800 Subject: [PATCH] refactor offline payment methods --- app/models/spree/order.rb | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/app/models/spree/order.rb b/app/models/spree/order.rb index e99e26db67..2b66cb9124 100644 --- a/app/models/spree/order.rb +++ b/app/models/spree/order.rb @@ -500,34 +500,14 @@ module Spree # :allow_checkout_on_gateway_error is set to false # def process_payments! - raise Core::GatewayError, Spree.t(:no_pending_payments) if pending_payments.empty? - - pending_payments.each do |payment| - break if payment_total >= total - - payment.process! - - if payment.completed? - self.payment_total += payment.amount - end - end + process_each_payment(&:process!) rescue Core::GatewayError => e result = !!Spree::Config[:allow_checkout_on_gateway_error] errors.add(:base, e.message) && (return result) end def process_payments_offline! - raise Core::GatewayError, Spree.t(:no_pending_payments) if pending_payments.empty? - - pending_payments.each do |payment| - break if payment_total >= total - - payment.process_offline! - - if payment.completed? - self.payment_total += payment.amount - end - end + process_each_payment(&:process_offline!) rescue Core::GatewayError => e errors.add(:base, e.message) false @@ -795,6 +775,20 @@ module Spree private + def process_each_payment + raise Core::GatewayError, Spree.t(:no_pending_payments) if pending_payments.empty? + + pending_payments.each do |payment| + break if payment_total >= total + + yield payment + + if payment.completed? + self.payment_total += payment.amount + end + end + end + def link_by_email self.email = user.email if user end