From e6c0321fb659ca1bc8e504f25c7e2e87e70e2187 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rapha=C3=ABl=20Doursenaud?= <rdoursenaud@gpcsolutions.fr>
Date: Wed, 2 Apr 2014 17:46:15 +0200
Subject: [PATCH] Automatic events for project tasks

---
 ...terface_50_modAgenda_ActionsAuto.class.php | 47 +++++++++++++++++++
 .../mysql/data/llx_c_action_trigger.sql       |  3 ++
 .../install/mysql/migration/3.5.0-3.6.0.sql   |  5 ++
 htdocs/langs/en_US/projects.lang              |  3 ++
 4 files changed, 58 insertions(+)

diff --git a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php
index 7b0843e2421..3c2a61b1ec6 100644
--- a/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php
+++ b/htdocs/core/triggers/interface_50_modAgenda_ActionsAuto.class.php
@@ -633,6 +633,53 @@ class InterfaceActionsAuto
         	$ok=1;
         }
 
+		// Project tasks
+		elseif($action == 'TASK_CREATE') {
+			dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
+			$langs->load("other");
+			$langs->load("projects");
+			$langs->load("agenda");
+
+			$object->actiontypecode='AC_OTH_AUTO';
+
+			if (empty($object->actionmsg2)) $object->actionmsg2=$langs->transnoentities("TaskCreatedInDolibarr",$object->ref);
+			$object->actionmsg=$langs->transnoentities("TaskCreatedInDolibarr",$object->ref);
+			$object->actionmsg.="\n".$langs->transnoentities("Task").': '.$object->ref;
+			$object->actionmsg.="\n".$langs->transnoentities("Author").': '.$user->login;
+
+			$ok=1;
+		}
+
+		elseif($action == 'TASK_MODIFY') {
+			dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
+			$langs->load("other");
+			$langs->load("projects");
+			$langs->load("agenda");
+
+			$object->actiontypecode='AC_OTH_AUTO';
+			if (empty($object->actionmsg2)) $object->actionmsg2=$langs->transnoentities("TaskModifiedInDolibarr",$object->ref);
+			$object->actionmsg=$langs->transnoentities("TaskModifieddInDolibarr",$object->ref);
+			$object->actionmsg.="\n".$langs->transnoentities("Task").': '.$object->ref;
+			$object->actionmsg.="\n".$langs->transnoentities("Author").': '.$user->login;
+
+			$ok=1;
+		}
+
+		elseif($action == 'TASK_DELETE') {
+			dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
+			$langs->load("other");
+			$langs->load("projects");
+			$langs->load("agenda");
+
+			$object->actiontypecode='AC_OTH_AUTO';
+			if (empty($object->actionmsg2)) $object->actionmsg2=$langs->transnoentities("TaskDeletedInDolibarr",$object->ref);
+			$object->actionmsg=$langs->transnoentities("TaskDeletedInDolibarr",$object->ref);
+			$object->actionmsg.="\n".$langs->transnoentities("Task").': '.$object->ref;
+			$object->actionmsg.="\n".$langs->transnoentities("Author").': '.$user->login;
+
+			$ok=1;
+		}
+
 		// The trigger was enabled but we are missing the implementation, let the log know
 		else
 		{
diff --git a/htdocs/install/mysql/data/llx_c_action_trigger.sql b/htdocs/install/mysql/data/llx_c_action_trigger.sql
index 6905f4777cc..971d2d7514a 100644
--- a/htdocs/install/mysql/data/llx_c_action_trigger.sql
+++ b/htdocs/install/mysql/data/llx_c_action_trigger.sql
@@ -64,3 +64,6 @@ insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang)
 insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (32,'PROPAL_CLOSE_REFUSED','Customer proposal closed refused','Executed when a customer proposal is closed refused','propal',32);
 insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (33,'BILL_SUPPLIER_CANCELED','Supplier invoice cancelled','Executed when a supplier invoice is cancelled','invoice_supplier',33);
 insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (34,'MEMBER_MODIFY','Member modified','Executed when a member is modified','member',34);
+insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (35,'TASK_CREATE','Task created','Executed when a project task is created','project',35);
+insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (36,'TASK_MODIFY','Task modified','Executed when a project task is modified','project',36);
+insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (37,'TASK_DELETE','Task deleted','Executed when a project task is deleted','project',37);
diff --git a/htdocs/install/mysql/migration/3.5.0-3.6.0.sql b/htdocs/install/mysql/migration/3.5.0-3.6.0.sql
index 84ecee3b2e0..a503ab94344 100644
--- a/htdocs/install/mysql/migration/3.5.0-3.6.0.sql
+++ b/htdocs/install/mysql/migration/3.5.0-3.6.0.sql
@@ -1114,3 +1114,8 @@ insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang)
 insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (32,'PROPAL_CLOSE_REFUSED','Customer proposal closed refused','Executed when a customer proposal is closed refused','propal',32);
 insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (33,'BILL_SUPPLIER_CANCELED','Supplier invoice cancelled','Executed when a supplier invoice is cancelled','invoice_supplier',33);
 insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (34,'MEMBER_MODIFY','Member modified','Executed when a member is modified','member',34);
+
+-- Automatic events for tasks
+insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (35,'TASK_CREATE','Task created','Executed when a project task is created','project',35);
+insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (36,'TASK_MODIFY','Task modified','Executed when a project task is modified','project',36);
+insert into llx_c_action_trigger (rowid,code,label,description,elementtype,rang) values (37,'TASK_DELETE','Task deleted','Executed when a project task is deleted','project',37);
diff --git a/htdocs/langs/en_US/projects.lang b/htdocs/langs/en_US/projects.lang
index dd4e8246892..a37e9651bcc 100644
--- a/htdocs/langs/en_US/projects.lang
+++ b/htdocs/langs/en_US/projects.lang
@@ -106,6 +106,9 @@ ProjectReportDate=Change task date according project start date
 ErrorShiftTaskDate=Impossible to shift task date according to new project start date
 ProjectsAndTasksLines=Projects and tasks
 ProjectCreatedInDolibarr=Project %s created
+TaskCreatedInDolibarr=Task %s created
+TaskModifiedInDolibarr=Task %s modified
+TaskDeletedInDolibarr=Task %s deleted
 ##### Types de contacts #####
 TypeContact_project_internal_PROJECTLEADER=Project leader
 TypeContact_project_external_PROJECTLEADER=Project leader
-- 
GitLab