Sha256: 72109e60e68c7012b0dda29c156a60ac958afc2f5cba6deb97b868b11e47da14

Contents?: true

Size: 1.5 KB

Versions: 4

Compression:

Stored size: 1.5 KB

Contents

class Admin::AdjustmentsController < Admin::BaseController
  resource_controller
  belongs_to :order
  ssl_required

  before_filter :list_adjustment_types

  update.wants.html { redirect_to collection_url }
  create.wants.html { redirect_to collection_url }
  destroy.success.wants.js { render_js_for_destroy }

  create.before :set_type
  create.after :set_order_state
  update.after :set_order_state
  destroy.after :set_order_state

  private
  def list_adjustment_types
    applicable_credits = Credit.subclasses.reject{|c| c.to_s == "CouponCredit" }
    applicable_charges = Charge.subclasses
    @adjustment_types ||= [
        [ 'Credits', applicable_credits.map {|c| [c.to_s.titleize, c.to_s]} ],
        [ 'Charges', applicable_charges.map {|c| [c.to_s.titleize, c.to_s]} ]
      ]
  end

  def set_type
    object.type = params[:adjustment][:type]
  end

  # Automatically complete and order where no payment is necessary because adjustments cancel out the total
  def set_order_state
    @order.update_totals!

    if @order.in_progress? and @order.item_total > 0 and @order.total == 0 and @order.payments.total == 0  #for new orders that are adjusted to zero
      until @order.checkout.complete?
        @order.checkout.next!
      end
      @order.reload.pay!
    elsif @order.item_total > 0 && ((@order.balance_due? && @order.outstanding_balance == 0) || (@order.credit_owed? && @order.outstanding_credit == 0)) #set existing orders back to paid, if adjustment corrects balance
      @order.reload.pay!
    end
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
spree-0.11.4 app/controllers/admin/adjustments_controller.rb
spree-0.11.3 app/controllers/admin/adjustments_controller.rb
spree-0.11.2 app/controllers/admin/adjustments_controller.rb
spree-0.11.1 app/controllers/admin/adjustments_controller.rb