FIX issue on Task delete

Added a control on time spent so it is not possible to delete a task
where some time spent has already been tracked.
This commit is contained in:
bgenere 2017-01-18 10:57:18 +01:00
parent 49fc8129ac
commit c6bd1a7d7d
2 changed files with 35 additions and 1 deletions

View File

@ -534,6 +534,40 @@ class Task extends CommonObject
return -1;
}
}
/**
* Return nb of time spent
*
* @return int <0 if KO, 0 if no children, >0 if OK
*/
function hasTimeSpent()
{
$error=0;
$ret=0;
$sql = "SELECT COUNT(*) as nb";
$sql.= " FROM ".MAIN_DB_PREFIX."projet_task_time";
$sql.= " WHERE fk_task=".$this->id;
dol_syslog(get_class($this)."::hasTimeSpent", LOG_DEBUG);
$resql = $this->db->query($sql);
if (! $resql) { $error++; $this->errors[]="Error ".$this->db->lasterror(); }
else
{
$obj=$this->db->fetch_object($resql);
if ($obj) $ret=$obj->nb;
$this->db->free($resql);
}
if (! $error)
{
return $ret;
}
else
{
return -1;
}
}
/**

View File

@ -551,7 +551,7 @@ if ($id > 0 || ! empty($ref))
}
// Delete
if ($user->rights->projet->supprimer && ! $object->hasChildren())
if ($user->rights->projet->supprimer && ! $object->hasChildren() && ! $object->hasTimeSpent())
{
print '<a class="butActionDelete" href="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'&amp;action=delete&amp;withproject='.$withproject.'">'.$langs->trans('Delete').'</a>';
}