function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
viadeoviadeo 

trigger to create task

Hello 

 

I'm trying to create a trigger wich create automatically a task when a contrat have a particular status .compilation is ok but nothing happen when i change status

this my  code 

 

trigger Training_task on Contract (after update) {

List<Contract>NewContract = trigger.new;
for(Contract a : NewContract){
if ( a.Status == 'Activé'){
Task b = new Task (Subject='Formation - Espace Emploi'+ a.Name,
OwnerId = a.OwnerId,
WhatId = a.ContractNumber,
Status = 'In progress',
Priority = 'High');
upsert b;
}
}

}

thanks for your help

Best Answer chosen by Admin (Salesforce Developers) 
viadeoviadeo

Hi, 

 

Its working !

final code 

trigger Training_task on Contract(After update)
{
    List<Task>tache=new List<Task>();
    for(Integer i = 0;i<Trigger.new.size();i++)
    {
        if(Trigger.new[i].Status != Trigger.old[i].Status)
        {
            if(Trigger.new[i].Status=='Activé'&& Trigger.new[i].Name!=null )
            {
                Task b = new Task(Subject='Formation - Espace Emploi'+ Trigger.new[i].Name,Status = 'In progress',Priority = 'High',
                OwnerId = Trigger.new[i].OwnerId,ActivityDate = Date.today(),WhatId=Trigger.new[i].Id,RecordTypeId = '01220000000PeAyAAK');
                tache.add(b);
            }
        }
    }
Database.insert(tache);




}



All Answers

Devendra@SFDCDevendra@SFDC

 

Hi,

 

Try this:

 

trigger Training_Task on Contract (after insert,after update)
{
    if(Trigger.isInsert)
    {
	    List<Task> lstTask;	
	    Contract obj=Trigger.New[0];
	    if(obj.Status=='Active')
		{
	 		lstTask=new List<Task>();
			
			Task myTask=New Task();
			myTask.Subject='Formation - Espace Emploi'+ myTask.Name;
			--" similarly add all required fields here "--
			
			lstTask.add(myTask);
			
			
		}	
		insert lstTask;			
   }


    if(Trigger.isUpdate)
    {
        Contract oldContract=Trigger.oldMap.get(Trigger.New[0].id);
        if(Trigger.New[0].Status!=oldContract.Status)
        {
		    if(Trigger.New[0].Status=='Active')
		{
	 		lstTask=new List<Task>();
			
			Task myTask=New Task();
			myTask.Subject='Formation - Espace Emploi'+ myTask.Name;
			--" smilarly add all required fields here "--
			
			lstTask.add(myTask);
		}	
		insert lstTask;	
        }
    }
}

 

Hope this helps.

 

Thanks,

Devendra

viadeoviadeo

Hi

 

First thanks for your answer . I tried your code but  it doesn't create any task i don't know what is wrong maybe task creation is more complex than i tought and i miss something .

lakslaks

Hi viadeo,

 

Check out the following code for iterating Trigger.new records and creating task.

 

trigger Training_task on Contract (after update) 
{
    List<Task> TaskList = new List<Task>();
    
    for(Integer i = 0; i < Trigger.new.size(); i++)
    {
        if(Trigger.new[i].Status != Trigger.old[i].Status)
        {
            if(Trigger.new[i].Status == 'Active')
            {
                Task b = new Task (Subject='Formation - Espace Emploi'+ Trigger.new[i].Name,
                
                //Set all required fields..
                
                Status = 'In progress',
                Priority = 'High');
                TaskList.add(b);
            }        
        }
    }
    insert TaskList;
}

 

 

 

Hope this solves your problem. If so please mark it as solution so that others may benefit. If not do let me know what went wrong.

 

 

Regards,

Lakshmi.

 

 

 

 

 

viadeoviadeo

Hi ,

 

thanks for your answer unfortunately after contract activation no task created  .

viadeoviadeo

This entire code 

 

trigger Training_task on Contract (after update) 
{
    List<Task> TaskList = new List<Task>();
    
    for(Integer i = 0; i < Trigger.new.size(); i++)
    {
        if(Trigger.new[i].Status != Trigger.old[i].Status)
        {
            if(Trigger.new[i].Status == 'Activé')
            {
                Task b = new Task () ;
               
                b.Subject='Formation - Espace Emploi'+ Trigger.new[i].Name;
                b.Status = 'In progress';
                b.Priority = 'High';
                b.OwnerId = Trigger.new[i].OwnerId;
               b.ActivityDate = Date.today();
               b.WhatId = Trigger.new[i].ContractNumber ;
               b.RecordTypeId = '01220000000PeAyAAK';
              
                
               
                TaskList.add(b);
            }        
        }
    }
    insert TaskList;
}

viadeoviadeo

Hi, 

 

Its working !

final code 

trigger Training_task on Contract(After update)
{
    List<Task>tache=new List<Task>();
    for(Integer i = 0;i<Trigger.new.size();i++)
    {
        if(Trigger.new[i].Status != Trigger.old[i].Status)
        {
            if(Trigger.new[i].Status=='Activé'&& Trigger.new[i].Name!=null )
            {
                Task b = new Task(Subject='Formation - Espace Emploi'+ Trigger.new[i].Name,Status = 'In progress',Priority = 'High',
                OwnerId = Trigger.new[i].OwnerId,ActivityDate = Date.today(),WhatId=Trigger.new[i].Id,RecordTypeId = '01220000000PeAyAAK');
                tache.add(b);
            }
        }
    }
Database.insert(tache);




}



This was selected as the best answer