diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang index ead787d3d84..75082f8012c 100644 --- a/htdocs/langs/en_US/projects.lang +++ b/htdocs/langs/en_US/projects.lang @@ -85,6 +85,10 @@ TaskIsNotAffectedToYou=Task not allocated to you ErrorTimeSpentIsEmpty=Time spent is empty ThisWillAlsoRemoveTasks=This action will also delete all tasks of project (%s tasks at the moment) and all inputs of time spent. IfNeedToUseOhterObjectKeepEmpty=If some objects (invoice, order, ...), belonging to another third party, must be linked to the project to create, keep this empty to have the project being multi third parties. +CloneProject=Clone project (associated task will be duplicated too) +ConfirmCloneProject=Are you sure to clone this project ? +ProjectReportDate=Change task date according project start date +ErrorShiftTaskDate=Impossible to shift task date according to new project start date ##### Types de contacts ##### TypeContact_project_internal_PROJECTLEADER=Project leader TypeContact_project_external_PROJECTLEADER=Project leader diff --git a/htdocs/langs/fr_FR/projects.lang b/htdocs/langs/fr_FR/projects.lang index 6722ac6bb1d..0c3a21e4cdb 100644 --- a/htdocs/langs/fr_FR/projects.lang +++ b/htdocs/langs/fr_FR/projects.lang @@ -85,6 +85,10 @@ TaskIsNotAffectedToYou=Tâche qui ne vous est pas affectée ErrorTimeSpentIsEmpty=Le temps consommé n'est pas renseigné ThisWillAlsoRemoveTasks=Cette opération détruira également les tâches du projet (%s tâches actuellement) et le suivi des consommés. IfNeedToUseOhterObjectKeepEmpty=Si des objets (facture, commande, ...), appartenant à un autre tiers que celui choisi, doivent être liés au projet à créer, laisser vide afin de laisser le projet multi-tiers. +CloneProject=Cloner le projet (les taches associées sont dupliquées également) +ConfirmCloneProject=Êtes-vous sûr de vouloir cloner ce projet ? +ProjectReportDate=Reporter les dates des taches en fonction de la date de départ. +ErrorShiftTaskDate=Une erreur c'est produite dans le report des dates des taches. ##### Types de contacts ##### TypeContact_project_internal_PROJECTLEADER=Chef de projet TypeContact_project_external_PROJECTLEADER=Chef de projet diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 435c59d395d..d838f61b869 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -52,7 +52,7 @@ class Project extends CommonObject /** * Constructor * - * @param DoliDB $db Database handler + * @param DoliDB $DB Database handler */ function __construct($db) { @@ -707,7 +707,7 @@ class Project extends CommonObject { global $user, $langs, $conf; - $now = dol_now(); + $now = mktime(); // Charge tableau des produits prodids $prodids = array(); diff --git a/htdocs/projet/class/task.class.php b/htdocs/projet/class/task.class.php index 6aefb92ec6c..b93598b600f 100644 --- a/htdocs/projet/class/task.class.php +++ b/htdocs/projet/class/task.class.php @@ -64,7 +64,7 @@ class Task extends CommonObject /** * Constructor * - * @param DoliDB $db Database handler + * @param DoliDB $DB Database handler */ function __construct($db) { @@ -305,6 +305,7 @@ class Task extends CommonObject */ function delete($user, $notrigger=0) { + global $conf, $langs; $error=0; @@ -391,7 +392,7 @@ class Task extends CommonObject $this->db->commit(); - return 1; + return 1; } } diff --git a/htdocs/projet/fiche.php b/htdocs/projet/fiche.php index f84dca56cbe..e57f24c5878 100644 --- a/htdocs/projet/fiche.php +++ b/htdocs/projet/fiche.php @@ -117,7 +117,6 @@ if ($action == 'add' && $user->rights->projet->creer) $db->begin(); $project = new Project($db); - $project->ref = GETPOST('ref','alpha'); $project->title = GETPOST('title','alpha'); $project->socid = GETPOST('socid','int'); @@ -246,6 +245,7 @@ if ($action == 'builddoc' && $user->rights->projet->creer) } } + if ($action == 'confirm_validate' && GETPOST('confirm') == 'yes') { $project = new Project($db); @@ -315,6 +315,24 @@ if ($action == 'confirm_clone' && $user->rights->projet->creer && GETPOST('confi } } +if ($action == 'confirm_clone' && $user->rights->projet->creer && GETPOST('confirm') == 'yes') +{ + $idtoclone=$id; + $project = new Project($db); + $project->fetch($idtoclone); + $result=$project->createFromClone($idtoclone,true,true,true,true); + if ($result <= 0) + { + $mesg='