From abaf90fc4188f44894ee685035334e85fec31bcb Mon Sep 17 00:00:00 2001 From: Kristina Lim Date: Wed, 13 Mar 2019 10:15:37 +0800 Subject: [PATCH] Copy more actions advancing order from Spree This copies the following: * admin/orders/customer_details#update * admin/payments#create --- .../customer_details_controller_decorator.rb | 15 +++++++++ .../admin/payments_controller_decorator.rb | 31 +++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/app/controllers/spree/admin/orders/customer_details_controller_decorator.rb b/app/controllers/spree/admin/orders/customer_details_controller_decorator.rb index a8ce4dad59..38bd15142a 100644 --- a/app/controllers/spree/admin/orders/customer_details_controller_decorator.rb +++ b/app/controllers/spree/admin/orders/customer_details_controller_decorator.rb @@ -1,6 +1,21 @@ Spree::Admin::Orders::CustomerDetailsController.class_eval do before_filter :set_guest_checkout_status, only: :update + def update + if @order.update_attributes(params[:order]) + if params[:guest_checkout] == "false" + @order.associate_user!(Spree.user_class.find_by_email(@order.email)) + end + while @order.next; end + + @order.shipments.map &:refresh_rates + flash[:success] = Spree.t('customer_details_updated') + redirect_to admin_order_customer_path(@order) + else + render :action => :edit + end + end + # Inherit CanCan permissions for the current order def model_class load_order unless @order diff --git a/app/controllers/spree/admin/payments_controller_decorator.rb b/app/controllers/spree/admin/payments_controller_decorator.rb index ccbdef25d5..fb3c1c6865 100644 --- a/app/controllers/spree/admin/payments_controller_decorator.rb +++ b/app/controllers/spree/admin/payments_controller_decorator.rb @@ -1,6 +1,37 @@ Spree::Admin::PaymentsController.class_eval do append_before_filter :filter_payment_methods + def create + @payment = @order.payments.build(object_params) + if @payment.payment_method.is_a?(Spree::Gateway) && @payment.payment_method.payment_profiles_supported? && params[:card].present? and params[:card] != 'new' + @payment.source = CreditCard.find_by_id(params[:card]) + end + + begin + unless @payment.save + redirect_to admin_order_payments_path(@order) + return + end + + if @order.completed? + @payment.process! + flash[:success] = flash_message_for(@payment, :successfully_created) + + redirect_to admin_order_payments_path(@order) + else + #This is the first payment (admin created order) + until @order.completed? + @order.next! + end + flash[:success] = Spree.t(:new_order_completed) + redirect_to edit_admin_order_url(@order) + end + + rescue Spree::Core::GatewayError => e + flash[:error] = "#{e.message}" + redirect_to new_admin_order_payment_path(@order) + end + end # When a user fires an event, take them back to where they came from # (we can't use respond_override because Spree no longer uses respond_with)