• Harshavardhan Reddy 29
  • NEWBIE
  • 0 Points
  • Member since 2017

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 2
    Questions
  • 1
    Replies
trigger CaseOwnerChangeTrigger on Case (before insert,before update) 

  
    
    Map<ID, Account> AccownerIds = new Map<ID, Account>();

  
    set<id> accID = new set<id>();

for(Case cn : Trigger.new) 

   if(cn.AccountID!=null)
  { 
  system.debug(cn.AccountID);
      accID.add(cn.AccountID); 
  } 
}

 for(Account an : [select id,ownerid from account where id IN:accID]) 

AccownerIds.put(an.id,an.ownerid); 


for(case cb : Trigger.new)
 { 
if(AccownerIds.containsKey(cb.AccountID)) 

cb.ownerID = AccownerIds.get(cb.AccountID);
 } 
}
}
Hi I want to delete custom object records and also case records when account is deleted using trigger. Undelete the child records if account is undeleted the trigger works only for custome objects but case records are not deleted and undelted .Below is the trigger code.

trigger OrderDeletion on Account (before delete,after undelete) {
    
    List<Id> AccIds= new List<Id>();
   
    if(trigger.isbefore && trigger.isdelete){  
        for(Account acc: trigger.old){
            AccIds.add(acc.id);
        }
        List<AccountOrder__c> ordlist=[select id,name,AccountOrder__c from AccountOrder__c WHERE AccountOrder__c in:AccIds];
        if(ordlist.size()>0){
            delete ordlist;
        }
        
        List<Case> caselist = [select id from Case where Account.Id in:AccIds];
        if(caselist.size()>0){
            delete caselist;
        }
    }
    
    if(trigger.isAfter && trigger.isUndelete){
        for(Account acc: trigger.new){
            AccIds.add(acc.id);
        }
        
        List<AccountOrder__c> ordlist2=[select id,name,AccountOrder__c from AccountOrder__c WHERE AccountOrder__c in:AccIds AND isDeleted = true ALL ROWS];
        if(ordlist2.size()>0){
            undelete ordlist2;
        }
        
         List<Case> caselist1 = [select id from Case where Account.Id in:AccIds AND isDeleted = true ALL ROWS];
        if(caselist1.size()>0){
            delete caselist1;
        }
    }
}

Hi All,

I am working on a scenario where i have 2 objects : Accounts and Order1__c(order1 has a lookup relationship with account).
On deletion of account i am able to delete the related child records. But on undelete i am getting the error.

On undelete
Below is my implementation for the same.

trigger OrderDeletion on Account (before delete,after delete,after undelete) {
    
List<Id> AccIds= new List<Id>();
    
    for(Account acc: trigger.old){
       
        
        AccIds.add(acc.id);
    }
    List<Order1__c> ordlist=[select id,name,Account__c from Order1__c WHERE Account__c in:AccIds ];
    if(ordlist.size()>0)
    delete ordlist;
    
    if(trigger.isAfter && trigger.isUndelete){
        if(ordlist.size()>0)
        undelete ordlist;
        
    }
}