プロジェクト

全般

プロフィール

Vote #72576

未完了

Allow done ratios to be affected by status AND field

Admin Redmine さんが約2年前に追加. 約2年前に更新.

ステータス:
New
優先度:
通常
担当者:
-
カテゴリ:
Issues workflow_41
対象バージョン:
-
開始日:
2022/05/09
期日:
進捗率:

50%

予定工数:
category_id:
41
version_id:
0
issue_org_id:
11989
author_id:
26118
assigned_to_id:
0
comments:
1
status_id:
1
tracker_id:
2
plus1:
0
affected_version:
closed_on:
affected_version_id:
ステータス-->[New]

説明

Consider a situation where a defect can be re-opened, or a defect can be moved to the 'resolved'/'released' state, but requires verification before it can be closed. It'd be nice to have the 'resolved'/'released' status the done ratio to 100%, but, if you do that, then you lose the capability to track progress during the 'in progress' state.

Here's a fix that allows for both (version 2.1.0):

diff -rupN redmine-2.1.0/app/models/issue.rb redmine-2.1.0-modified/app/models/issue.rb
--- redmine-2.1.0/app/models/issue.rb       2012-09-16 06:54:11.000000000 -0600
+++ redmine-2.1.0-modified/app/models/issue.rb        2012-09-28 11:16:32.479809960 -0600
@@ -49,7 +49,7 @@ class Issue < ActiveRecord::Base
   acts_as_activity_provider :find_options => {:include => [:project, :author, :tracker]},
                             :author_key => :author_id

-  DONE_RATIO_OPTIONS = %w(issue_field issue_status)
+  DONE_RATIO_OPTIONS = %w(issue_field issue_status issue_field_and_status)

   attr_reader :current_journal

@@ -494,6 +496,10 @@ class Issue < ActiveRecord::Base
   def self.use_field_for_done_ratio?
     Setting.issue_done_ratio == 'issue_field'
   end
+
+  def use_field_for_done_ratio?
+    Setting.issue_done_ratio == 'issue_field' || (Setting.issue_done_ratio == 'issue_field_or_status' && status && status.default_done_ratio.nil?)
+  end

   def validate_issue
     if self.due_date.nil? && @attributes['due_date'] && !@attributes['due_date'].empty?
diff -rupN redmine-2.1.0/app/views/context_menus/issues.html.erb redmine-2.1.0-modified/app/views/context_menus/issues.html.erb
--- redmine-2.1.0/app/views/context_menus/issues.html.erb   2012-09-16 06:54:12.000000000 -0600
+++ redmine-2.1.0-modified/app/views/context_menus/issues.html.erb    2012-09-28 11:11:07.979813055 -0600
@@ -91,7 +91,7 @@
   
   <% end -%>

-  <% if @safe_attributes.include?('done_ratio') && Issue.use_field_for_done_ratio? %>
+  <% if @safe_attributes.include?('done_ratio') && @issue.use_field_for_done_ratio %>
   
  • <%= l(:field_done_ratio) %>
      diff -rupN redmine-2.1.0/app/views/issues/_attributes.html.erb redmine-2.1.0-modified/app/views/issues/_attributes.html.erb --- redmine-2.1.0/app/views/issues/_attributes.html.erb 2012-09-16 06:54:13.000000000 -0600 +++ redmine-2.1.0-modified/app/views/issues/_attributes.html.erb 2012-09-28 11:10:31.103813406 -0600 @@ -58,7 +58,7 @@

      <%= f.text_field :estimated_hours, :size => 3, :disabled => !@issue.leaf?, :required => @issue.required_attribute?('estimated_hours') %> <%= l(:field_hours) %>

      <% end %> -<% if @issue.safe_attribute?('done_ratio') && @issue.leaf? && Issue.use_field_for_done_ratio? %> +<% if @issue.safe_attribute?('done_ratio') && @issue.leaf? && @issue.use_field_for_done_ratio? %>

      <%= f.select :done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }), :required => @issue.required_attribute?('done_ratio') %>

      <% end %>
  • diff -rupN redmine-2.1.0/app/views/issue_statuses/_form.html.erb redmine-2.1.0-modified/app/views/issue_statuses/_form.html.erb --- redmine-2.1.0/app/views/issue_statuses/_form.html.erb 2012-09-16 06:54:12.000000000 -0600 +++ redmine-2.1.0-modified/app/views/issue_statuses/_form.html.erb 2012-09-28 11:18:48.535808664 -0600 @@ -2,7 +2,7 @@

    <%= f.text_field :name, :required => true %>

    -<% if Issue.use_status_for_done_ratio? %> +<% if not Issue.use_field_for_done_ratio? %>

    <%= f.select :default_done_ratio, ((0..10).to_a.collect {|r| ["#{r*10} %", r*10] }), :include_blank => true, :label => :field_done_ratio %>

    <% end %>

    <%= f.check_box :is_closed %>

    diff -rupN redmine-2.1.0/app/views/issue_statuses/index.html.erb redmine-2.1.0-modified/app/views/issue_statuses/index.html.erb --- redmine-2.1.0/app/views/issue_statuses/index.html.erb 2012-09-16 06:54:12.000000000 -0600 +++ redmine-2.1.0-modified/app/views/issue_statuses/index.html.erb 2012-09-28 11:19:39.799808172 -0600 @@ -1,6 +1,6 @@
    <%= link_to l(:label_issue_status_new), new_issue_status_path, :class => 'icon icon-add' %> -<%= link_to(l(:label_update_issue_done_ratios), update_issue_done_ratio_issue_statuses_path, :class => 'icon icon-multiple', :method => 'post', :data => {:confirm => l(:text_are_you_sure)}) if Issue.use_status_for_done_ratio? %> +<%= link_to(l(:label_update_issue_done_ratios), update_issue_done_ratio_issue_statuses_path, :class => 'icon icon-multiple', :method => 'post', :data => {:confirm => l(:text_are_you_sure)}) if not Issue.use_field_for_done_ratio? %>

    <%=l(:label_issue_status_plural)%>

    @@ -8,7 +8,7 @@ - <% if Issue.use_status_for_done_ratio? %> + <% if not Issue.use_field_for_done_ratio? %> <% end %> @@ -20,7 +20,7 @@ <% for status in @issue_statuses %> "> - <% if Issue.use_status_for_done_ratio? %> + <% if not Issue.use_field_for_done_ratio? %> <% end %> diff -rupN redmine-2.1.0/config/locales/en.yml redmine-2.1.0-modified/config/locales/en.yml --- redmine-2.1.0/config/locales/en.yml 2012-09-16 06:54:19.000000000 -0600 +++ redmine-2.1.0-modified/config/locales/en.yml 2012-09-28 11:13:35.371811650 -0600 @@ -382,6 +382,7 @@ en: setting_issue_done_ratio: Calculate the issue done ratio with setting_issue_done_ratio_issue_field: Use the issue field setting_issue_done_ratio_issue_status: Use the issue status + setting_issue_done_ratio_issue_field_and_status: Use the issue field and status

    journals

    This is similar to the current feature request I am having: #11999 .

    In my opinion the calculation of the "issue done ratios" is yet a bit too static. It should also be possible to have a different behavior on a project basis. We would need to have different ratio calculation types in different projects because we use Redmine to manage not only software development project tasks but also to solve customer support issues.
    --------------------------------------------------------------------------------

    Admin Redmine さんが約2年前に更新

    • カテゴリIssues workflow_41 にセット

    他の形式にエクスポート: Atom PDF

    いいね!0
    いいね!0
    <%=l(:field_status)%><%=l(:field_done_ratio)%><%=l(:field_is_default)%>
    <%= link_to h(status.name), edit_issue_status_path(status) %><%= h status.default_done_ratio %><%= checked_image status.is_default? %>