Sha256: 74d1b3c16072b8010981270f5ee10a1b7e5a7206fca5b54a19e5a9b3fff14394

Contents?: true

Size: 1.32 KB

Versions: 4

Compression:

Stored size: 1.32 KB

Contents

Spree::CheckoutController.class_eval do

  #TODO 90% of this method is duplicated code. DRY
  def update
    if @order.update_attributes(object_params)

      fire_event('spree.checkout.update')

      if @order.coupon_code.present?
        event_name = "spree.checkout.coupon_code_added"
        if promo = Spree::Promotion.with_coupon_code(@order.coupon_code).where(:event_name => event_name).first
          fire_event(event_name, :coupon_code => @order.coupon_code)
          # If it doesn't exist, raise an error!
          # Giving them another chance to enter a valid coupon code
        else
          flash[:error] = t(:promotion_not_found)
          render :edit and return
        end
      end

      if @order.next
        state_callback(:after)
      else
        flash[:error] = t(:payment_processing_failed)
        respond_with(@order, :location => checkout_state_path(@order.state))
        return
      end

      if @order.state == 'complete' || @order.completed?
        flash.notice = t(:order_processed_successfully)
        flash[:commerce_tracking] = 'nothing special'
        respond_with(@order, :location => completion_route)
      else
        respond_with(@order, :location => checkout_state_path(@order.state))
      end
    else
      respond_with(@order) { |format| format.html { render :edit } }
    end
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
spree_promo-1.2.5 app/controllers/spree/checkout_controller_decorator.rb
spree_promo-1.2.4 app/controllers/spree/checkout_controller_decorator.rb
spree_promo-1.2.3 app/controllers/spree/checkout_controller_decorator.rb
spree_promo-1.2.2 app/controllers/spree/checkout_controller_decorator.rb