diff --git a/app/controllers/spree/checkout_controller_decorator.rb b/app/controllers/spree/checkout_controller_decorator.rb index 66ca7fb034..5f6f7826e1 100644 --- a/app/controllers/spree/checkout_controller_decorator.rb +++ b/app/controllers/spree/checkout_controller_decorator.rb @@ -1,8 +1,6 @@ Spree::CheckoutController.class_eval do - #def update - #binding.pry - #end + include CheckoutHelper private @@ -24,21 +22,7 @@ Spree::CheckoutController.class_eval do end def after_complete - distributor = current_order.distributor - token = current_order.token - - session[:order_id] = nil - clear_current_order_cache - current_order(true) - - current_order.set_distributor!(distributor) - current_order.tokenized_permission.token = token - current_order.tokenized_permission.save! - session[:access_token] = token - end - - def clear_current_order_cache - @current_order = nil + reset_order end def find_last_used_addresses(email) diff --git a/app/controllers/spree/paypal_controller_decorator.rb b/app/controllers/spree/paypal_controller_decorator.rb index 25f5b50cf3..fce09cfe0b 100644 --- a/app/controllers/spree/paypal_controller_decorator.rb +++ b/app/controllers/spree/paypal_controller_decorator.rb @@ -1,6 +1,20 @@ Spree::PaypalController.class_eval do + include CheckoutHelper + + after_filter :reset_order_when_complete, only: :confirm + def cancel flash[:notice] = t('flash.cancel', :scope => 'paypal') redirect_to main_app.checkout_path end + + + private + + def reset_order_when_complete + if current_order.complete? + flash[:success] = t(:order_processed_successfully) + reset_order + end + end end diff --git a/app/helpers/checkout_helper.rb b/app/helpers/checkout_helper.rb index e5e721454a..5faccb781d 100644 --- a/app/helpers/checkout_helper.rb +++ b/app/helpers/checkout_helper.rb @@ -25,4 +25,18 @@ module CheckoutHelper render partial: "shared/validated_input", locals: {name: name, path: path, attributes: attributes} end + + def reset_order + distributor = current_order.distributor + token = current_order.token + + session[:order_id] = nil + @current_order = nil + current_order(true) + + current_order.set_distributor!(distributor) + current_order.tokenized_permission.token = token + current_order.tokenized_permission.save! + session[:access_token] = token + end end