kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
5.2 KiB
101 lines
5.2 KiB
<%#-- 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.
|
|
|
|
++#%>
|
|
|
|
<%= render partial: 'shared/costs_header' %>
|
|
<h2><%= l(:label_log_costs) %></h2>
|
|
|
|
<% url = @cost_entry.new_record? ?
|
|
{ action: 'create', project_id: @project.id } :
|
|
{ action: 'update', id: @cost_entry } %>
|
|
|
|
<% method = @cost_entry.new_record? ?
|
|
:post :
|
|
:put %>
|
|
|
|
<%= labelled_tabular_form_for @cost_entry, url: url, html: { method: method } do |f| %>
|
|
<%= error_messages_for 'cost_entry' %>
|
|
<%= back_url_hidden_field_tag %>
|
|
|
|
<div class="box">
|
|
<div class="form--field">
|
|
<%= f.text_field :work_package_id, size: 6, required: true %>
|
|
|
|
<% if @cost_entry.work_package %>
|
|
<div class="form--field-instructions">
|
|
<%= h("#{@cost_entry.work_package.to_s}") %>
|
|
</div>
|
|
<% end %>
|
|
</div>
|
|
<div class="form--field">
|
|
<%= f.text_field :spent_on, size: 10, required: true %>
|
|
<%= calendar_for('cost_entry_spent_on') %>
|
|
</div>
|
|
<% if User.current.allowed_to? :log_costs, @project %>
|
|
<div class="form--field">
|
|
<%= f.select :user_id, user_collection_for_select_options, required: true %>
|
|
</div>
|
|
<% else %>
|
|
<%= f.hidden_field :user_id, value: User.current.id %>
|
|
<% end %>
|
|
<div class="form--field">
|
|
<%= f.select :cost_type_id, cost_types_collection_for_select_options, required: true %></p>
|
|
</div>
|
|
<div class="form--field">
|
|
<% if @cost_entry.cost_type.nil? %>
|
|
<%= f.text_field :units, size: 6, required: true %>
|
|
<% else %>
|
|
<% suffix = @cost_entry.units == 1 ? @cost_entry.cost_type.unit : @cost_entry.cost_type.unit_plural %>
|
|
<%= f.text_field :units,
|
|
size: 6,
|
|
required: true,
|
|
suffix: h(suffix) %>
|
|
<% end %>
|
|
<%= observe_field( "cost_entry_cost_type_id", url: {controller: :cost_objects, action: :update_material_budget_item, project_id: @cost_entry.project}, with: "'cost_type_id=' + encodeURIComponent(value) + '&units=' + encodeURIComponent(document.getElementById('cost_entry_units').value) + '&fixed_date=' + encodeURIComponent(document.getElementById('cost_entry_spent_on').value) + '&element_id=cost_entry'") %>
|
|
<%= observe_field( "cost_entry_units", frequency: 1, url: {controller: :cost_objects, action: :update_material_budget_item, project_id: @cost_entry.project}, with: "'cost_type_id=' + encodeURIComponent(document.getElementById('cost_entry_cost_type_id').value) + '&units=' + encodeURIComponent(value) + '&fixed_date=' + encodeURIComponent(document.getElementById('cost_entry_spent_on').value) + '&element_id=cost_entry'") %>
|
|
<%= observe_field( "cost_entry_spent_on", frequency: 1, url: {controller: :cost_objects, action: :update_material_budget_item, project_id: @cost_entry.project}, with: "'cost_type_id=' + encodeURIComponent(document.getElementById('cost_entry_cost_type_id').value) + '&units=' + encodeURIComponent(document.getElementById('cost_entry_units').value) + '&fixed_date=' + encodeURIComponent(value) + '&element_id=cost_entry'") %>
|
|
</div>
|
|
|
|
<div class="form--field">
|
|
<label for="cost_entry_costs_edit" class="form--label"><%= CostEntry.human_attribute_name(:costs) %></label>
|
|
<span class="form--field-container">
|
|
<% if User.current.allowed_to? :view_cost_rates, @cost_entry.project %>
|
|
<a href="javascript:;" id="cost_entry_costs" class="icon-context icon-edit" title="<%= l(:help_click_to_edit) %>">
|
|
<%= number_to_currency(@cost_entry.calculated_costs) %>
|
|
</a>
|
|
<%= update_page_tag do |page|
|
|
page << "makeEditable('cost_entry_costs', 'cost_entry[overridden_costs]');"
|
|
page << "edit($('cost_entry_costs'), 'cost_entry[overridden_costs]', '#{number_to_currency(@cost_entry.overridden_costs)}');" if @cost_entry.overridden_costs
|
|
end %>
|
|
<% else %>
|
|
<span id="cost_entry_costs_editor" class="form--text-field-container">
|
|
<input class="currency form--text-field" value="<%= number_to_currency(@cost_entry.overridden_costs, unit: "").strip if @cost_entry.overridden_costs %>" size="7" name="cost_entry[overridden_costs]" id="cost_entry_costs_edit"/> <%= Setting.plugin_openproject_costs['costs_currency'] %>
|
|
</span>
|
|
<br /><em><%= l(:help_override_rate) %></em>
|
|
<% end %>
|
|
</span>
|
|
</div>
|
|
|
|
<div class="form--field">
|
|
<%= f.text_field :comments, size: 100 %>
|
|
</div>
|
|
</div>
|
|
|
|
<%= styled_button_tag l(:button_save), class: '-with-icon icon-checkmark' %>
|
|
<% end %>
|
|
|