54 lines
1.5 KiB
Ruby
54 lines
1.5 KiB
Ruby
class Admin::PaypalPaymentsController < Admin::BaseController
|
|
before_filter :load_data
|
|
before_filter :load_amount, :except => :country_changed
|
|
resource_controller
|
|
belongs_to :order
|
|
ssl_required
|
|
|
|
update do
|
|
wants.html { redirect_to edit_object_url }
|
|
end
|
|
|
|
def country_changed
|
|
end
|
|
|
|
# to allow capture (NB also included in order controller...)
|
|
include Spree::PaypalExpress
|
|
|
|
def capture
|
|
if !@order.paypal_payments.empty? && (payment = @order.paypal_payments.last).can_capture?
|
|
|
|
do_capture(payment.find_authorization)
|
|
|
|
flash[:notice] = t("paypal_capture_complete")
|
|
else
|
|
flash[:error] = t("unable_to_capture_paypal")
|
|
end
|
|
redirect_to edit_object_url
|
|
end
|
|
|
|
private
|
|
def load_data
|
|
load_object
|
|
@selected_country_id = params[:payment_presenter][:address_country_id].to_i if params.has_key?('payment_presenter')
|
|
@selected_country_id ||= @order.bill_address.country_id if @order and @order.bill_address
|
|
@selected_country_id ||= Spree::Config[:default_country_id]
|
|
|
|
@states = State.find_all_by_country_id(@selected_country_id, :order => 'name')
|
|
@countries = Country.find(:all)
|
|
end
|
|
|
|
# what for?
|
|
def load_amount
|
|
@amount = params[:amount] || @order.total
|
|
end
|
|
|
|
def build_object
|
|
@object ||= end_of_association_chain.send parent? ? :build : :new, object_params
|
|
# not relevant?
|
|
# @object.creditcard = Creditcard.new(:address => @object.order.bill_address.clone) unless @object.creditcard
|
|
@object
|
|
end
|
|
|
|
end
|