• Nicholas Sewitz
  • NEWBIE
  • 0 Points
  • Member since 2015

  • Chatter
    Feed
  • 0
    Best Answers
  • 1
    Likes Received
  • 0
    Likes Given
  • 1
    Questions
  • 10
    Replies
Hi I am trying to populate a custom field on the Account object with the most recent Task Activity Date where the Task Owner = Account Owner. This is the trigger I have so far, I can't figure out how to add the t.ownerid = a.ownerid filter.
 
trigger LastActivityByOwner on task(after insert) {

  map<id,Account> accounts = new map<id,account>();
    
  for(task record:trigger.new) {
      
    if(record.ownerid.getsobjecttype()==user.sobjecttype) {
        
      if(record.ownerid!=null) {
        accounts.put(record.accountid,new account(id=record.accountid,Last_Activity_By_Owner__c=record.ActivityDate));
      }
    }
  }
  update accounts.values();
}

 
Hi I am trying to populate a custom field on the Account object with the most recent Task Activity Date where the Task Owner = Account Owner. This is the trigger I have so far, I can't figure out how to add the t.ownerid = a.ownerid filter.
 
trigger LastActivityByOwner on task(after insert) {

  map<id,Account> accounts = new map<id,account>();
    
  for(task record:trigger.new) {
      
    if(record.ownerid.getsobjecttype()==user.sobjecttype) {
        
      if(record.ownerid!=null) {
        accounts.put(record.accountid,new account(id=record.accountid,Last_Activity_By_Owner__c=record.ActivityDate));
      }
    }
  }
  update accounts.values();
}

 
Hi I am trying to populate a custom field on the Account object with the most recent Task Activity Date where the Task Owner = Account Owner. This is the trigger I have so far, I can't figure out how to add the t.ownerid = a.ownerid filter.
 
trigger LastActivityByOwner on task(after insert) {

  map<id,Account> accounts = new map<id,account>();
    
  for(task record:trigger.new) {
      
    if(record.ownerid.getsobjecttype()==user.sobjecttype) {
        
      if(record.ownerid!=null) {
        accounts.put(record.accountid,new account(id=record.accountid,Last_Activity_By_Owner__c=record.ActivityDate));
      }
    }
  }
  update accounts.values();
}

 
I downloaded the Salesforce labs case assignment unmanaged package and hacked the trigger to round robin assign leads, which works great.

I tried to update the test code, but every time I run the test I get a MIXED_DML_OPERATION error on 4 different lines of code.  I've researched the error and found some advice, but I haven't been able to implement the fixes that people suggested.  Can any help me fix these errors?

Here is the test class:
 
@isTest
public class TestLeadAssignment{

    static testMethod void myTest1() {

        // This code runs as the system user

        User u1;

        try{
          u1 = [select Id from User WHERE IsActive=True AND Profile.Name = 'System Administrator'  LIMIT 1];
        } catch (QueryException qe){

        List<User> users = [SELECT Id, Profile.PermissionsModifyAllData FROM User WHERE IsActive = true LIMIT 1000];

        for(User u : users){
            if(u.Profile.PermissionsModifyAllData = true){
              u1 = u;
              break;
        }
        }

        }

        System.debug(u1);

       //*****Create Queue
      
       Group testGroup = new Group ();
       testGroup.Name = 'TestQueue';
       testGroup.Type = 'Queue';
       insert testGroup;
      
       QueueSObject testQueue = new QueueSObject();
       testQueue.QueueId = testGroup.id;
       testQueue.SObjectType = 'Lead';
       insert testQueue;

       // Second Queue      
       Group testGroup2 = new Group ();
       testGroup2.Name = 'TestQueue2';
       testGroup2.Type = 'Queue';
       insert testGroup2;
      
       QueueSObject testQueue2 = new QueueSObject();
       testQueue2.QueueId = testGroup2.id;
       testQueue2.SObjectType = 'Lead';
       insert testQueue2;


       test.starttest();
       
        //Run test

        //Assign Lead with out any Assignment Groups
        Lead ld = new Lead (FirstName='Tim',LastName='Jones', Company='ABC Corp', tempOwnerID__c=testGroup2.id, OwnerID=u1.id); //tempOwnerID__c=testGroup2.id, 
        insert ld;
        update ld;
       
       
        //Create Assignment Group
        Assignment_Group_Name__c ag1 = new Assignment_Group_Name__c (Name='TestAG', Type__c = 'Lead');
        insert ag1;

        
        //Add bad queue name
        Assignment_Group_Queues__c agqBad = new Assignment_Group_Queues__c(name='Bad Queue',Assignment_Group_Name__c = ag1.id );

        try {
            insert agqBad;
        } catch (DmlException e){
             System.assert(e.getMessage().contains('CUSTOM_VALIDATION_EXCEPTION'), e.getMessage());
       
        } //catch

        test.stoptest();
       
    }
   
    static testMethod void myTest2() {

        // This code runs as the system user

        User u1;

        try{
          u1 = [select Id from User WHERE IsActive=True AND Profile.Name = 'System Administrator'  LIMIT 1];
        } catch (QueryException qe){

        List<User> users = [SELECT Id, Profile.PermissionsModifyAllData FROM User WHERE IsActive = true LIMIT 1000];

        for(User u : users){
            if(u.Profile.PermissionsModifyAllData = true){
              u1 = u;
              break;
        }
        }

        }

        System.debug(u1);

       //*****Create Queue
      
       Group testGroup = new Group ();
       testGroup.Name = 'TestQueue';
       testGroup.Type = 'Queue';
       insert testGroup;
      
       QueueSObject testQueue = new QueueSObject();
       testQueue.QueueId = testGroup.id;
       testQueue.SObjectType = 'Lead';
       insert testQueue;

       // Second Queue      
       Group testGroup2 = new Group ();
       testGroup2.Name = 'TestQueue2';
       testGroup2.Type = 'Queue';
       insert testGroup2;
      
       QueueSObject testQueue2 = new QueueSObject();
       testQueue2.QueueId = testGroup2.id;
       testQueue2.SObjectType = 'Lead';
       insert testQueue2;


       test.starttest();
       
        //Run test
      
       
        //Create Assignment Group
        Assignment_Group_Name__c ag1 = new Assignment_Group_Name__c (Name='TestAG', Type__c = 'Lead');
        insert ag1;       

        //Add Good Queue to Assignment Group
        Assignment_Group_Queues__c agq1 = new Assignment_Group_Queues__c(name=testGroup.Name ,Assignment_Group_Name__c = ag1.id );
        insert agq1;
       
       
        //Add User to Assignment Groups Users
        Assignment_Groups__c agu1 = new Assignment_Groups__c (User__c = u1.id, Active__c='True', Group_Name__c = ag1.id, Last_Assignment__c = datetime.valueOf('2009-01-01 21:13:24') );
        insert agu1;

        Lead l2 = new Lead (FirstName='Tom',LastName='Dunn', Company='JKL Corp', tempOwnerID__c=testGroup2.id , OwnerID=testGroup.id); //Set owner ID to Queue
        insert l2;
        update l2;       

        test.stoptest();
       
    }

    static testMethod void myTest3() {

        // This code runs as the system user

        User u1;

        try{
          u1 = [select Id from User WHERE IsActive=True AND Profile.Name = 'System Administrator'  LIMIT 1];
        } catch (QueryException qe){

        List<User> users = [SELECT Id, Profile.PermissionsModifyAllData FROM User WHERE IsActive = true LIMIT 1000];

        for(User u : users){
            if(u.Profile.PermissionsModifyAllData = true){
              u1 = u;
              break;
        }
        }

        }

        System.debug(u1);

       //*****Create Queue
      
       Group testGroup = new Group ();
       testGroup.Name = 'TestQueue';
       testGroup.Type = 'Queue';
       insert testGroup;
      
       QueueSObject testQueue = new QueueSObject();
       testQueue.QueueId = testGroup.id;
       testQueue.SObjectType = 'Lead';
       insert testQueue;

       test.starttest();
       
        //Run test       
       
        //Create Assignment Group
        Assignment_Group_Name__c ag1 = new Assignment_Group_Name__c (Name='TestAG', Type__c = 'Lead');
        insert ag1;       

        //Add Good Queue to Assignment Group
        Assignment_Group_Queues__c agq1 = new Assignment_Group_Queues__c(name=testGroup.Name ,Assignment_Group_Name__c = ag1.id );
        insert agq1;
       
       
        //Add User to Assignment Groups Users
        Assignment_Groups__c agu1 = new Assignment_Groups__c (User__c = u1.id, Active__c='True', Group_Name__c = ag1.id, Last_Assignment__c = datetime.valueOf('2009-01-01 21:13:24') );
        insert agu1;     

        Lead l3 = new Lead (FirstName='Dave',LastName='Barry', Company='CBS Corp', OwnerID=testGroup.id); //Set owner ID to Queue
        insert l3;
        update l3;

        test.stoptest();
       
    }

    static testMethod void myTest4() {

        // This code runs as the system user

        User u1;

        try{
          u1 = [select Id from User WHERE IsActive=True AND Profile.Name = 'System Administrator'  LIMIT 1];
        } catch (QueryException qe){

        List<User> users = [SELECT Id, Profile.PermissionsModifyAllData FROM User WHERE IsActive = true LIMIT 1000];

        for(User u : users){
            if(u.Profile.PermissionsModifyAllData = true){
              u1 = u;
              break;
        }
        }

        }

        System.debug(u1);

       //*****Create Queue
      
       Group testGroup = new Group ();
       testGroup.Name = 'TestQueue';
       testGroup.Type = 'Queue';
       insert testGroup;
      
       QueueSObject testQueue = new QueueSObject();
       testQueue.QueueId = testGroup.id;
       testQueue.SObjectType = 'Lead';
       insert testQueue;
     

       test.starttest();
       
        //Run test

        //Create Assignment Group
        Assignment_Group_Name__c ag1 = new Assignment_Group_Name__c (Name='TestAG', Type__c = 'Lead');
        insert ag1;       

        //Add Good Queue to Assignment Group
        Assignment_Group_Queues__c agq1 = new Assignment_Group_Queues__c(name=testGroup.Name ,Assignment_Group_Name__c = ag1.id );
        insert agq1;
       
          //Test for AG-Queues already assigned to another Assignment Group
        Assignment_Group_Queues__c agq2 = new Assignment_Group_Queues__c(name=testGroup.Name,Assignment_Group_Name__c = ag1.id );
        try {
            insert agq2;
        } catch (DmlException e){
             System.assert(e.getMessage().contains('CUSTOM_VALIDATION_EXCEPTION'), e.getMessage());
        } //catch

        test.stoptest();
    
 
  }
}