105 lines
3.6 KiB
Ruby
105 lines
3.6 KiB
Ruby
|
|
module ContractsHelper
|
||
|
|
def collection_for_status_select
|
||
|
|
contract_statuses.collect{|s| [s.name, s.id.to_s]}
|
||
|
|
end
|
||
|
|
|
||
|
|
def collection_for_currencies_select
|
||
|
|
[:en, :de, :'en-GB', :ru].each_with_index.collect{|l, index| [I18n.translate(:'number.currency.format.unit', :locale => l), index]}
|
||
|
|
end
|
||
|
|
|
||
|
|
def contract_status_options_for_select(select="")
|
||
|
|
options_for_select(collection_for_status_select, select)
|
||
|
|
end
|
||
|
|
|
||
|
|
def contracts_sum_to_currency(contracts_sum)
|
||
|
|
contracts_sum.map{|c| content_tag(:span, contract_price_to_currency(c[1], c[0].to_i), :style => "white-space: nowrap;")}.join(' / ')
|
||
|
|
end
|
||
|
|
|
||
|
|
def contract_price_to_currency(price, currency)
|
||
|
|
case currency
|
||
|
|
when 0
|
||
|
|
locale = :en
|
||
|
|
when 1
|
||
|
|
locale = :de
|
||
|
|
when 2
|
||
|
|
locale = :'en-GB'
|
||
|
|
when 3
|
||
|
|
locale = :ru
|
||
|
|
else
|
||
|
|
end
|
||
|
|
|
||
|
|
!locale.blank? ? number_to_currency(price, :locale => locale.to_sym, :precision => 2) : number_with_delimiter(price, :delimiter => ' ', :precision => 2)
|
||
|
|
end
|
||
|
|
|
||
|
|
def contract_price(contract)
|
||
|
|
contract_price_to_currency(contract.price, contract.currency)
|
||
|
|
end
|
||
|
|
|
||
|
|
def contract_statuses
|
||
|
|
(!@project.blank? ? @project.contract_statuses : ContractStatus.all(:order => "position")) || []
|
||
|
|
end
|
||
|
|
|
||
|
|
def remove_contractor_link(contact)
|
||
|
|
link_to_remote(image_tag('delete.png'),
|
||
|
|
:url => {:controller => "contract_contacts", :action => 'delete', :project_id => @project, :contract_id => @contract, :contact_id => contact},
|
||
|
|
:method => :delete,
|
||
|
|
:confirm => l(:text_are_you_sure),
|
||
|
|
:html => {:class => "delete", :title => l(:button_delete) }) if User.current.allowed_to?(:edit_contracts, @project)
|
||
|
|
end
|
||
|
|
|
||
|
|
def retrieve_date_range(period)
|
||
|
|
@from, @to = nil, nil
|
||
|
|
case period
|
||
|
|
when 'today'
|
||
|
|
@from = @to = Date.today
|
||
|
|
when 'yesterday'
|
||
|
|
@from = @to = Date.today - 1
|
||
|
|
when 'current_week'
|
||
|
|
@from = Date.today - (Date.today.cwday - 1)%7
|
||
|
|
@to = @from + 6
|
||
|
|
when 'last_week'
|
||
|
|
@from = Date.today - 7 - (Date.today.cwday - 1)%7
|
||
|
|
@to = @from + 6
|
||
|
|
when '7_days'
|
||
|
|
@from = Date.today - 7
|
||
|
|
@to = Date.today
|
||
|
|
when 'current_month'
|
||
|
|
@from = Date.civil(Date.today.year, Date.today.month, 1)
|
||
|
|
@to = (@from >> 1) - 1
|
||
|
|
when 'last_month'
|
||
|
|
@from = Date.civil(Date.today.year, Date.today.month, 1) << 1
|
||
|
|
@to = (@from >> 1) - 1
|
||
|
|
when '30_days'
|
||
|
|
@from = Date.today - 30
|
||
|
|
@to = Date.today
|
||
|
|
when 'current_year'
|
||
|
|
@from = Date.civil(Date.today.year, 1, 1)
|
||
|
|
@to = Date.civil(Date.today.year, 12, 31)
|
||
|
|
end
|
||
|
|
|
||
|
|
@from, @to = @from, @to + 1 if (@from && @to)
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
def retrieve_contracts_query
|
||
|
|
# debugger
|
||
|
|
# params.merge!(session[:contracts_query])
|
||
|
|
# session[:contracts_query] = {:project_id => @project.id, :status_id => params[:status_id], :category_id => params[:category_id], :assigned_to_id => params[:assigned_to_id]}
|
||
|
|
if params[:status_id] || !params[:period].blank? || !params[:category_id].blank? || !params[:assigned_to_id].blank?
|
||
|
|
session[:contracts_query] = {:project_id => (@project ? @project.id : nil),
|
||
|
|
:status_id => params[:status_id],
|
||
|
|
:category_id => params[:category_id],
|
||
|
|
:period => params[:period],
|
||
|
|
:assigned_to_id => params[:assigned_to_id]}
|
||
|
|
else
|
||
|
|
if api_request? || params[:set_filter] || session[:contracts_query].nil? || session[:contracts_query][:project_id] != (@project ? @project.id : nil)
|
||
|
|
session[:contracts_query] = {}
|
||
|
|
else
|
||
|
|
params.merge!(session[:contracts_query])
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
|
||
|
|
end
|