diff --git a/app/controllers/spree/admin/payment_methods_controller.rb b/app/controllers/spree/admin/payment_methods_controller.rb index 72ac7a7a35..e4d1d8f3ed 100644 --- a/app/controllers/spree/admin/payment_methods_controller.rb +++ b/app/controllers/spree/admin/payment_methods_controller.rb @@ -7,6 +7,7 @@ module Spree before_action :load_data before_action :validate_payment_method_provider, only: [:create] before_action :load_hubs, only: [:new, :edit, :update] + before_action :validate_calculator_preferred_amount, only: [:update] respond_to :html @@ -173,6 +174,16 @@ module Spree params_for_update end end + + def validate_calculator_preferred_amount + preferred_amount = params.dig(:payment_method_check, :calculator_attributes, + :preferred_amount) + return if preferred_amount.nil? || Float(preferred_amount, + exception: false) + + flash[:error] = I18n.t(:calculator_preferred_amount_error) + redirect_to spree.edit_admin_payment_method_path(@payment_method) + end end end end