103 lines
3.2 KiB
Ruby
103 lines
3.2 KiB
Ruby
class Finance::TransactionsController < ApplicationController
|
|
before_filter :authenticate_finance
|
|
|
|
def index
|
|
if (params[:per_page] && params[:per_page].to_i > 0 && params[:per_page].to_i <= 100)
|
|
@per_page = params[:per_page].to_i
|
|
else
|
|
@per_page = 20
|
|
end
|
|
if params["sort"]
|
|
sort = case params["sort"]
|
|
when "name" then "name"
|
|
when "account_balance" then "account_balance"
|
|
when "name_reverse" then "name DESC"
|
|
when "account_balance_reverse" then "account_balance DESC"
|
|
end
|
|
else
|
|
sort = "name"
|
|
end
|
|
|
|
conditions = "name LIKE '%#{params[:query]}%'" unless params[:query].nil?
|
|
|
|
@total = Ordergroup.count(:conditions => conditions)
|
|
@groups = Ordergroup.paginate :conditions => conditions, :page => params[:page],
|
|
:per_page => @per_page, :order => sort
|
|
|
|
respond_to do |format|
|
|
format.html
|
|
format.js { render :partial => "ordergroups" }
|
|
end
|
|
end
|
|
|
|
def list
|
|
@group = Ordergroup.find(params[:id])
|
|
|
|
if params['sort']
|
|
sort = case params['sort']
|
|
when "date" then "created_on"
|
|
when "note" then "note"
|
|
when "amount" then "amount"
|
|
when "date_reverse" then "created_on DESC"
|
|
when "note_reverse" then "note DESC"
|
|
when "amount_reverse" then "amount DESC"
|
|
end
|
|
else
|
|
sort = "created_on DESC"
|
|
end
|
|
|
|
conditions = ["note LIKE ?", "%#{params[:query]}%"] unless params[:query].nil?
|
|
|
|
@total = @group.financial_transactions.count(:conditions => conditions)
|
|
@financial_transactions = @group.financial_transactions.paginate(
|
|
:page => params[:page],
|
|
:per_page => 10,
|
|
:conditions => conditions,
|
|
:order => sort)
|
|
|
|
respond_to do |format|
|
|
format.html
|
|
format.js { render :partial => "list" }
|
|
end
|
|
end
|
|
|
|
def new
|
|
@group = Ordergroup.find(params[:id])
|
|
@financial_transaction = @group.financial_transactions.build
|
|
end
|
|
|
|
def create
|
|
@group = Ordergroup.find(params[:financial_transaction][:ordergroup_id])
|
|
amount = params[:financial_transaction][:amount]
|
|
note = params[:financial_transaction][:note]
|
|
begin
|
|
@group.addFinancialTransaction(amount, note, @current_user)
|
|
flash[:notice] = 'Transaktion erfolgreich angelegt.'
|
|
redirect_to :action => 'index'
|
|
rescue => e
|
|
@financial_transaction = FinancialTransaction.new(params[:financial_transaction])
|
|
flash.now[:error] = 'Transaktion konnte nicht angelegt werden!' + ' (' + e.message + ')'
|
|
render :action => 'new'
|
|
end
|
|
end
|
|
|
|
def new_collection
|
|
end
|
|
|
|
def create_collection
|
|
note = params[:note]
|
|
raise "Note is required!" if note.blank?
|
|
params[:financial_transactions].each do |trans|
|
|
# ignore empty amount fields ...
|
|
unless trans[:amount].blank?
|
|
Ordergroup.find(trans[:ordergroup_id]).addFinancialTransaction trans[:amount], note, @current_user
|
|
end
|
|
end
|
|
flash[:notice] = 'Saved all transactions successfully'
|
|
redirect_to :action => 'index'
|
|
rescue => error
|
|
flash[:error] = "An error occured: " + error.to_s
|
|
redirect_to :action => 'new_collection'
|
|
end
|
|
|
|
end
|