https://redmine.ociotec.com/https://redmine.ociotec.com/favicon.ico?15768443862017-11-14T14:01:15ZRedmine OCIO y TECnologĂaScrum - To do #1508: issue_patch : Optimize update_parent_pbi_on_closed_taskshttps://redmine.ociotec.com/issues/1508?journal_id=26532017-11-14T14:01:15ZRedmine Smileredmine-dev@smile.fr
<ul></ul><p>The same with update_parent_pbi, break at first task not new</p>
<pre><code>
def update_parent_pbi
new_status = IssueStatus.task_statuses.first
in_progress_status = IssueStatus.task_statuses.second
if new_status && in_progress_status
pbi = self.parent
if pbi and pbi.is_pbi?
all_tasks_new = (self.status == new_status)
pbi.children.each do |task|
if task.is_task?
task = self if task.id == self.id
if task.status != new_status
all_tasks_new = false
break # at least a task not new, no need to go further
end
end
end
if pbi.status == new_status and !all_tasks_new
pbi.init_journal(User.current,
l(:label_pbi_status_auto_updated_one_task_no_new,
:pbi_status => in_progress_status.name,
:task_status => new_status.name))
pbi.status = in_progress_status
pbi.save!
elsif pbi.status != new_status and all_tasks_new
pbi.init_journal(User.current,
l(:label_pbi_status_auto_updated_all_tasks_new,
:pbi_status => new_status.name,
:task_status => new_status.name))
pbi.status = new_status
pbi.save!
end
end
end
end
</code></pre> Scrum - To do #1508: issue_patch : Optimize update_parent_pbi_on_closed_taskshttps://redmine.ociotec.com/issues/1508?journal_id=26542017-11-14T14:07:25ZRedmine Smileredmine-dev@smile.fr
<ul></ul><p>The same for scrum_closed? :</p>
<pre>
def scrum_closed?
closed = self.closed?
if !closed and is_pbi? and self.children.any? and
Scrum::Setting.pbi_is_closed_if_tasks_are_closed?
closed = true
self.children.each do |task|
if !task.closed?
closed = false
break # at least a task opened, no need to go further
end
end
end
return closed
end
</pre> Scrum - To do #1508: issue_patch : Optimize update_parent_pbi_on_closed_taskshttps://redmine.ociotec.com/issues/1508?journal_id=26552017-11-14T14:20:38ZRedmine Smileredmine-dev@smile.fr
<ul></ul><p>Again for closed_on_for_burndown :</p>
<pre>
def closed_on_for_burndown
completed_date = nil
closed_statuses = IssueStatus::closed_status_ids
if self.closed?
self.journals.order('created_on DESC').each do |journal|
if completed_date.nil?
journal.details.where(:prop_key => 'status_id',
:value => closed_statuses).each do |detail|
completed_date = journal.created_on
break # a date found, no need to go further
end
end
end
end
if self.is_pbi? and self.children.any? and
Scrum::Setting.pbi_is_closed_if_tasks_are_closed
all_tasks_closed = true
last_closed_task_date = completed_date
self.children.each do |task|
if all_tasks_closed and task.closed?
task_closed_on = task.closed_on_for_burndown
if task_closed_on
if last_closed_task_date.nil? or
last_closed_task_date > task_closed_on
last_closed_task_date = task_closed_on
end
end
else
all_tasks_closed = false
end
end
if all_tasks_closed and last_closed_task_date
completed_date = last_closed_task_date
end
end
return completed_date
end
</pre> Scrum - To do #1508: issue_patch : Optimize update_parent_pbi_on_closed_taskshttps://redmine.ociotec.com/issues/1508?journal_id=26912017-12-22T15:13:51ZRedmine Smileredmine-dev@smile.fr
<ul></ul><p>Merge Request : <a class="external" href="https://git.ociotec.com/redmine/scrum/merge_requests/2">https://git.ociotec.com/redmine/scrum/merge_requests/2</a></p> Scrum - To do #1508: issue_patch : Optimize update_parent_pbi_on_closed_taskshttps://redmine.ociotec.com/issues/1508?journal_id=27052018-01-03T17:58:32ZRedmine Smileredmine-dev@smile.fr
<ul></ul><p>Emilio, I have checked your modifications on the MR, it's OK for me.</p>