81 lines
2.6 KiB
Ruby
81 lines
2.6 KiB
Ruby
# encoding: utf-8
|
|
class Finance::BalancingController < Finance::BaseController
|
|
|
|
def index
|
|
@orders = Order.finished.page(params[:page]).per(@per_page).order('ends DESC')
|
|
end
|
|
|
|
def new
|
|
@order = Order.find(params[:order_id])
|
|
flash.now.alert = t('finance.balancing.new.alert') if @order.closed?
|
|
@comments = @order.comments
|
|
|
|
@articles = @order.order_articles.ordered_or_member.includes(:article, :article_price,
|
|
group_order_articles: {group_order: :ordergroup})
|
|
|
|
sort_param = params['sort'] || 'name'
|
|
@articles = case sort_param
|
|
when 'name' then
|
|
OrderArticle.sort_by_name(@articles)
|
|
when 'name_reverse' then
|
|
OrderArticle.sort_by_name(@articles).reverse
|
|
when 'order_number' then
|
|
OrderArticle.sort_by_order_number(@articles)
|
|
when 'order_number_reverse' then
|
|
OrderArticle.sort_by_order_number(@articles).reverse
|
|
else
|
|
@articles
|
|
end
|
|
|
|
render layout: false if request.xhr?
|
|
end
|
|
|
|
def new_on_order_article_update # See publish/subscribe design pattern in /doc.
|
|
@order_article = OrderArticle.find(params[:order_article_id])
|
|
|
|
render :layout => false
|
|
end
|
|
|
|
def update_summary
|
|
@order = Order.find(params[:id])
|
|
end
|
|
|
|
def edit_note
|
|
@order = Order.find(params[:id])
|
|
render :layout => false
|
|
end
|
|
|
|
def update_note
|
|
@order = Order.find(params[:id])
|
|
if @order.update_attributes(params[:order])
|
|
render :layout => false
|
|
else
|
|
render :action => :edit_note, :layout => false
|
|
end
|
|
end
|
|
|
|
# before the order will booked, a view lists all Ordergroups and its order_prices
|
|
def confirm
|
|
@order = Order.find(params[:id])
|
|
end
|
|
|
|
# Balances the Order, Update of the Ordergroup.account_balances
|
|
def close
|
|
@order = Order.find(params[:id])
|
|
@order.close!(@current_user)
|
|
redirect_to finance_order_index_url, notice: t('finance.balancing.close.notice')
|
|
|
|
rescue => error
|
|
redirect_to new_finance_order_url(order_id: @order.id), alert: t('finance.balancing.close.alert', message: error.message)
|
|
end
|
|
|
|
# Close the order directly, without automaticly updating ordergroups account balances
|
|
def close_direct
|
|
@order = Order.find(params[:id])
|
|
@order.close_direct!(@current_user)
|
|
redirect_to finance_order_index_url, notice: t('finance.balancing.close_direct.notice')
|
|
rescue => error
|
|
redirect_to finance_order_index_url, alert: t('finance.balancing.close_direct.alert', message: error.message)
|
|
end
|
|
|
|
end
|