diff --git a/app/controllers/spree/admin/payment_methods_controller_decorator.rb b/app/controllers/spree/admin/payment_methods_controller_decorator.rb index 27b89b59..599c5a41 100644 --- a/app/controllers/spree/admin/payment_methods_controller_decorator.rb +++ b/app/controllers/spree/admin/payment_methods_controller_decorator.rb @@ -1,11 +1,64 @@ module Spree module Admin module PaymentMethodsControllerDecorator + def scope scope = current_store.payment_methods_including_vendor.accessible_by(current_ability, :index) scope = scope.where.not(vendor_id: nil) if params[:tab] == 'vendors' scope end + + # overrdie + # handling error response + def create + @payment_method = params[:payment_method].delete(:type).constantize.new(payment_method_params) + @object = @payment_method + set_current_store + invoke_callbacks(:create, :before) + if @payment_method.save + invoke_callbacks(:create, :after) + flash[:success] = Spree.t(:successfully_created, resource: Spree.t(:payment_method)) + redirect_to location_after_create + else + invoke_callbacks(:create, :fails) + respond_with(@object) do |format| + format.html { render action: :new, status: :unprocessable_entity } + format.js { render layout: false, status: :unprocessable_entity } + end + end + end + + # overrdie + # handling error response + def update + invoke_callbacks(:update, :before) + payment_method_type = params[:payment_method].delete(:type) + if @payment_method['type'].to_s != payment_method_type + @payment_method.update_columns( + type: payment_method_type, + updated_at: Time.current + ) + @payment_method = scope.find(params[:id]) + end + + attributes = payment_method_params.merge(preferences_params) + attributes.each do |k, _v| + attributes.delete(k) if k.include?('password') && attributes[k].blank? + end + + if @payment_method.update(attributes) + set_current_store + invoke_callbacks(:update, :after) + flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:payment_method)) + redirect_to spree.edit_admin_payment_method_path(@payment_method) + else + invoke_callbacks(:update, :fails) + respond_with(@payment_method) do |format| + format.html { render :edit, status: :unprocessable_entity } + format.json { render json: @payment_method.errors.full_messages.to_sentence, status: :unprocessable_entity } + end + end + end end end end diff --git a/app/models/spree/gateway/payway_v2.rb b/app/models/spree/gateway/payway_v2.rb index 60c0a2d6..018a6730 100644 --- a/app/models/spree/gateway/payway_v2.rb +++ b/app/models/spree/gateway/payway_v2.rb @@ -17,6 +17,12 @@ class Gateway::PaywayV2 < PaymentMethod # Gem.loaded_specs.key?('spree_auth_devise') # end + validates :preferred_public_key, presence: true, if: :require_public_key? + + def require_public_key? + enable_pre_auth == true + end + def payment_source_class Spree::VpagoPaymentSource end diff --git a/app/overrides/spree/admin/payment_methods/index/list.html.erb.deface b/app/overrides/spree/admin/payment_methods/index/list.html.erb.deface new file mode 100644 index 00000000..6c1d6c00 --- /dev/null +++ b/app/overrides/spree/admin/payment_methods/index/list.html.erb.deface @@ -0,0 +1,45 @@ + + +
+ | <%= Spree.t(:name) %> | +<%= Spree.t(:provider) %> | +<%= Spree.t(:transaction_type) %> | +<%= Spree.t(:display) %> | +<%= Spree.t(:active) %> | ++ |
---|---|---|---|---|---|---|
+ <% if can?(:edit, method) %> + <%= svg_icon name: "grip-vertical.svg", width: '18', height: '18' %> + <% end %> + | +<%= method.name %> | +<%= method.type.split('::', 3).last %> | ++ <% if method.enable_pre_auth? %> + Pre-Auth + <% else %> + Purchase + <% end %> + | +<%= Spree.t("admin.display_on.#{method.display_on}") %> | +<%= active_badge(method.active) %> | ++ + <%= link_to_edit(method, no_text: true) if can? :edit, method %> + <%= link_to_delete(method, no_text: true) if can? :delete, method %> + + | +