%#-- copyright
OpenProject Costs Plugin
Copyright (C) 2009 - 2014 the OpenProject Foundation (OPF)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
version 3.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++#%>
<%= l(:caption_materials) %>
<%= VariableCostObject.human_attribute_name(:material_budget) %>
<%= MaterialBudgetItem.human_attribute_name(:units) %> |
<%= MaterialBudgetItem.human_attribute_name(:cost_type) %> |
<%= MaterialBudgetItem.human_attribute_name(:comment) %> |
<%= MaterialBudgetItem.human_attribute_name(:budget) %> |
<% @cost_object.material_budget_items.each do |material_budget_item| %>
<%=h pluralize(material_budget_item.units, material_budget_item.cost_type.unit, material_budget_item.cost_type.unit_plural) %> |
<%=h material_budget_item.cost_type.name %> |
<%= material_budget_item.costs_visible_by?(User.current) ? number_to_currency(material_budget_item.costs) : "" %> |
<% end %>
<% if User.current.allowed_to?(:view_cost_rates, @project) %>
<%= number_to_currency(@cost_object.material_budget) %> |
<% end %>
<%= l(:caption_material_costs) %>
<%= CostEntry.human_attribute_name(:work_package)%> |
<%= CostEntry.human_attribute_name(:units) %> |
<%= CostEntry.human_attribute_name(:cost_type) %> |
<%= CostEntry.human_attribute_name(:costs) %> |
<% @cost_object.cost_entries.visible(User.current, @project).all(:include => [:cost_type]).group_by(&:work_package).each do |work_package, cost_entries|
entries = cost_entries.inject(Hash.new) do |results, entry|
result = results[entry.cost_type.id.to_s]
unless result
result = CostEntry.new(:cost_type => entry.cost_type, :cost_object => @cost_object, :overridden_costs => 0.0, :units => 0)
results[entry.cost_type.id.to_s] = result
end
result.overridden_costs += entry.real_costs
result.units += entry.units
results
end.values
entries.each do |c|
%>
<%= link_to_work_package work_package %> |
<%= link_to pluralize(c.units, c.cost_type.unit, c.cost_type.unit_plural), {:controller => "/costlog", :action => "index", :cost_type_id => c.cost_type, :work_package_id => work_package} %> |
<%= c.cost_type %> |
<%= c.costs_visible_by?(User.current) ? number_to_currency(c.real_costs) : "" %> |
<% end %>
<% end %>
<% if User.current.allowed_to?(:view_cost_rates, @project) %>
<%= number_to_currency(@cost_object.spent_material) %> |
<% end %>
<%= l(:caption_labor) %>
<%= VariableCostObject.human_attribute_name(:labor_budget)%>
<%= LaborBudgetItem.human_attribute_name(:hours) %> |
<%= LaborBudgetItem.human_attribute_name(:user) %> |
<%= LaborBudgetItem.human_attribute_name(:comment) %> |
<%= LaborBudgetItem.human_attribute_name(:budget) %> |
<% @cost_object.labor_budget_items.each do |labor_budget_item| %>
<%= labor_budget_item.hours %>h |
<%=h labor_budget_item.user.name %> |
<% if labor_budget_item.costs_visible_by?(User.current) %>
<%= number_to_currency(labor_budget_item.costs)%>
|
<% else %>
|
<% end %>
<% end %>
<% if User.current.allowed_to?(:view_hourly_rates, @project) || User.current.allowed_to?(:view_own_hourly_rate, @project) %>
<%= number_to_currency(@cost_object.labor_budget) %> |
<% end %>
<%= l(:caption_labor_costs) %>
<%= TimeEntry.human_attribute_name(:work_package) %> |
<%= TimeEntry.human_attribute_name(:hours) %> |
<%= TimeEntry.human_attribute_name(:user) %> |
<%= TimeEntry.human_attribute_name(:costs) %> |
<% @cost_object.time_entries.visible(User.current, @project).all.group_by(&:work_package).each do |work_package, time_entries|
entries = time_entries.inject(Hash.new) do |results, entry|
result = results[entry.user.id.to_s]
unless result
result = TimeEntry.new(:user => entry.user, :overridden_costs => 0)
result.hours = 0
results[entry.user.id.to_s] = result
end
result.overridden_costs += entry.real_costs
result.hours += entry.hours
results
end.values
entries.each do |t|
%>
<%= link_to_work_package work_package %> |
<%= link_to "#{t.hours}h", {:controller => "/timelog", :action => "index", :work_package_id => work_package} %> |
<%=h t.user.name %> |
<%= number_to_currency(t.real_costs) %> |
<% end %>
<% end %>
<%= number_to_currency(@cost_object.spent_labor) %> |