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
Kris WebsterKris Webster 

Trigger NOT executing what it should.. PLEASE HELP

I wrote a trigger on a custom object called Project (Pse__proj__c).

Basically I want the trigger to create a new budget (Pse__Budget__c) which is a seperate custom object, every time the checkbox "pro.Created_by_Opp__c == True" 

My trigger is not getting any errors in the dev org but it is not creating a new budget when the checkbox is checked... 

Any help would be much appreciated !! 
 
trigger CreateBudgetForProject on pse__Proj__c (after insert){
    
    List<pse__Budget__c> Listbud = new List<pse__Budget__c>();
    
    for(pse__Proj__c pro : trigger.new)
    {
        if(Trigger.isUpdate)
        {
            if(pro.Created_by_Opp__c == True)
            {
                //Fields that will be filled on Budget
                listbud.add(new pse__Budget__c(name = pro.name, 
                                               pse__Amount__c = pro.Product_Budget_MAP__c,
                                               pse__Project__c = pro.Name,
                                               pse__Type__c = 'Customer Purcahse Order',
                                               pse__Status__c = 'Approved',
                                               pse__Effective_Date__c = pro.pse__Start_Date__c
                                              ));
            }
            if (Trigger.isInsert)
            {
                if(pro.Created_by_Opp__c == True)
                {
                    //Fill Mandatory Fields on Associated Budget Object 
                    listbud.add(new pse__Budget__c(name = pro.name, 
                                               pse__Amount__c = pro.Product_Budget_MAP__c,
                                               pse__Project__c = pro.Name,
                                               pse__Type__c = 'Customer Purcahse Order',
                                               pse__Status__c = 'Approved',
                                               pse__Effective_Date__c = pro.pse__Start_Date__c
                                              ));
                }
            }
        }
        if(listbud.size() > 0)
        {
            insert listbud;
        }
        }
    }

 
Steven NsubugaSteven Nsubuga
Try this
trigger CreateBudgetForProject on pse__Proj__c (after insert){
    
    List<pse__Budget__c> Listbud = new List<pse__Budget__c>();  
    for(pse__Proj__c pro : trigger.new)
    {
        if(Trigger.isUpdate)
        {
            if(pro.Created_by_Opp__c == True)
            {
                //Fields that will be filled on Budget
                listbud.add(new pse__Budget__c(name = pro.name, 
                                               pse__Amount__c = pro.Product_Budget_MAP__c,
                                               pse__Project__c = pro.Name,
                                               pse__Type__c = 'Customer Purcahse Order',
                                               pse__Status__c = 'Approved',
                                               pse__Effective_Date__c = pro.pse__Start_Date__c
                                              ));
            }
        }
        
        if (Trigger.isInsert)
        {
            if(pro.Created_by_Opp__c == True)
            {
                //Fill Mandatory Fields on Associated Budget Object 
                listbud.add(new pse__Budget__c(name = pro.name, 
                                           pse__Amount__c = pro.Product_Budget_MAP__c,
                                           pse__Project__c = pro.Name,
                                           pse__Type__c = 'Customer Purcahse Order',
                                           pse__Status__c = 'Approved',
                                           pse__Effective_Date__c = pro.pse__Start_Date__c
                                          ));
            }
        }
        
        if(listbud.size() > 0)
        {
            insert listbud;
        }
        }
    }

 
Raj VakatiRaj Vakati
Try this .. your trigger is after insert  .. you are checking isUpdate and inside your check insert .. it will never reach this condition .

 
trigger CreateBudgetForProject on pse__Proj__c (after insert){

List<pse__Budget__c> Listbud = new List<pse__Budget__c>();

for(pse__Proj__c pro : trigger.new)
{
 	if (Trigger.isInsert)
		{
			if(pro.Created_by_Opp__c == True)
			{
				//Fill Mandatory Fields on Associated Budget Object 
				listbud.add(new pse__Budget__c(name = pro.name, 
										   pse__Amount__c = pro.Product_Budget_MAP__c,
										   pse__Project__c = pro.Name,
										   pse__Type__c = 'Customer Purcahse Order',
										   pse__Status__c = 'Approved',
										   pse__Effective_Date__c = pro.pse__Start_Date__c
										  ));
			}
		}
}

	if(listbud.size() > 0)
	{
		insert listbud;
	}
	
}

 
Kris WebsterKris Webster
Okay let me try it. What would be a test class to write for this trigger? I am new to this and can;t seem to get the test class written correctly 
Kris WebsterKris Webster
Okay what woul be a good test class to write for this? I am new to this and cant seem to get the class written correctly 
Ajay K DubediAjay K Dubedi

Hi Kris,
If you insert the record at both of events i.e. after insert and after update. You will specify both the condition in the trigger like this. 


trigger CreateBudgetForProject on pse__Proj__c (after insert,after update){
    
    List<pse__Budget__c> listbud = new List<pse__Budget__c>();  
    
    if(trigger.isAfter && trigger.isUpdate)
    {
      for(pse__Proj__c pro : trigger.new)
        {
           if(pro.Created_by_Opp__c == True)
            {
                //Fields that will be filled on Budget
                listbud.add(new pse__Budget__c(name = pro.name, 
                                               pse__Amount__c = pro.Product_Budget_MAP__c,
                                               pse__Project__c = pro.Name,
                                               pse__Type__c = 'Customer Purcahse Order',
                                               pse__Status__c = 'Approved',
                                               pse__Effective_Date__c = pro.pse__Start_Date__c
                                              ));
            }
        }
        if(listbud.size() > 0)
        {
            insert listbud;
        }
    }
        
    else if (trigger.isAfter && trigger.isInsert)
        {
          for(pse__Proj__c pro : trigger.new)
          {
              if(pro.Created_by_Opp__c == True)
               {
                //Fill Mandatory Fields on Associated Budget Object 
                  listbud.add(new pse__Budget__c(name = pro.name, 
                                           pse__Amount__c = pro.Product_Budget_MAP__c,
                                           pse__Project__c = pro.Name,
                                           pse__Type__c = 'Customer Purcahse Order',
                                           pse__Status__c = 'Approved',
                                           pse__Effective_Date__c = pro.pse__Start_Date__c
                                          ));
               }
           }
         if(listbud.size()>0)
           {
            insert listbud;
           }
        }
        
        
        
        
        
Hope this will help you.

Thank You
Ajay Dubedi