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 diff --git a/config/locales/en.yml b/config/locales/en.yml index 8e3acde16e..9f934a9110 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2321,6 +2321,7 @@ See the %{link} to find out more about %{sitename}'s features and to start using calculator_values: "Calculator values" calculator_settings_warning: "If you are changing the calculator type, you must save first before you can edit the calculator settings" calculator_preferred_unit_error: "must be kg or lb" + calculator_preferred_amount_error: "Invalid input. Please use only numbers. For example: 10, 5.5, -20" flat_percent_per_item: "Flat Percent (per item)" flat_rate_per_item: "Flat Rate (per item)" flat_rate_per_order: "Flat Rate (per order)"