• NHameed
  • NEWBIE
  • 30 Points
  • Member since 2015
  • Salesforce.com Admin

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 1
    Likes Given
  • 6
    Questions
  • 5
    Replies
Hello
New requirement needs to be added to Trigger and Test Class.

We want to prevent any edits to Opportunity Team Fields: "TeamMemberRole" and "OpportunityAccessLevel" when "Opportunity_Team_Locked__c" on Opportunity is checked.
The only User that should be able to modify these two fields should be Commission Admin with "commission_Admin__c" cheked on User record. 
Currently, this trigger will prevent addition and deletion of Team Members but now we need to prevents any edits to eexiting Team Members as well. 
TIA

Trigger: 
trigger OpptyTeamLock on OpportunityTeamMember(before insert, before delete) {
    set<Id> oppIdSet = new Set<id>();
    if (Trigger.IsBefore) {
        if (Trigger.IsInsert) {
            for (OpportunityTeamMember otm : Trigger.new) {
                oppIdSet.add(otm.OpportunityId);
            }
        }
        if (Trigger.IsDelete) {
            for (OpportunityTeamMember otm : Trigger.old) {
                oppIdSet.add(otm.OpportunityId);
            }
        }
    }
    // Id userid=UserInfo.getUserId();
    List<user> userinformation = [
        SELECT id, commission_Admin__c
        FROM user
        WHERE id = :UserInfo.getUserId()
    ];
    list<Opportunity> lstOpp = [
        SELECT Id, Name, Opportunity_Team_Locked__c
        FROM opportunity
        WHERE Id IN :oppIdSet AND Opportunity_Team_Locked__c = TRUE
    ];
    if (Trigger.IsBefore) {
        if (Trigger.IsInsert) {
            for (OpportunityTeamMember otm : Trigger.new) {
                if (lstOpp.Size() > 0 && userinformation[0].commission_Admin__c == false) {
                    otm.AddError('Opportunity Team is locked. Please contact Commissions Team');
                }
            }
        }
        if (Trigger.IsDelete) {
            for (OpportunityTeamMember otm : Trigger.old) {
                if (lstOpp.Size() > 0 && userinformation[0].commission_Admin__c == false) {
                    otm.AddError('Opportunity Team is locked. Please contact Commissions Team');
                }
            }
        }
    }
}

Test Class: 
Test Class: 
@isTest
public class OpptyTeamLock_Test {
    public static testMethod void OpptyTeamTest() {
        Profile p = [SELECT Id FROM Profile WHERE Name = 'Standard User'];
        User u = new User(
            Alias = 'standt',
            Email = 'standarduser@testorg.com',
            EmailEncodingKey = 'UTF-8',
            LastName = 'Testing',
            LanguageLocaleKey = 'en_US',
            LocaleSidKey = 'en_US',
            ProfileId = p.Id,
            TimeZoneSidKey = 'America/Los_Angeles',
            UserName = 'standardusedasdasdsaadr@testorg.com'
        );
        insert u;
        Opportunity Opp = new Opportunity(
            Name = 'TestOTMOpportunity',
            StageName = 'Prospecting',
            Type = 'New Customer',
            CloseDate = date.today(),
            Opportunity_Team_Locked__c = true
        );
        insert Opp;
        OpportunityTeamMember opm = new OpportunityTeamMember(
            TeamMemberRole = 'TSE Owner',
            OpportunityId = opp.id,
            UserId = u.id
        );
        try {
            insert opm;
        } catch (Exception e) {
            System.assert(
                e.getMessage().contains('Opportunity Team is locked. Please contact Commissions Team')
            );
        }
    }

    public static testMethod void OpptyTeamTest1() {
        Profile p = [SELECT Id FROM Profile WHERE Name = 'Standard User'];
        User u = new User(
            Alias = 'standt',
            Email = 'standarduser@testorg.com',
            EmailEncodingKey = 'UTF-8',
            LastName = 'Testing',
            LanguageLocaleKey = 'en_US',
            LocaleSidKey = 'en_US',
            ProfileId = p.Id,
            TimeZoneSidKey = 'America/Los_Angeles',
            UserName = 'standardusedasdasdsaadr@testorg.com'
        );
        insert u;
        Opportunity Opp = new Opportunity(
            Name = 'TestOTMOpportunity',
            StageName = 'Prospecting',
            Type = 'New Customer',
            CloseDate = date.today()
        );
        insert Opp;
        OpportunityTeamMember opm = new OpportunityTeamMember(
            TeamMemberRole = 'TSE Owner',
            OpportunityId = opp.id,
            UserId = u.id
        );
        try {
            insert opm;
        } catch (Exception e) {
            System.assert(
                e.getMessage().contains('Opportunity Team is locked. Please contact Commissions Team')
            );
        }
        opp.Opportunity_Team_Locked__c = true;

        try {
            delete opm;
        } catch (Exception e) {
            System.assert(
                e.getMessage().contains('Opportunity Team is locked. Please contact Commission Team')
            );
        }
    }
}
 
Hello
New requirement need to be added to Trigger and Test Class. We want to prevent any edits to Fields: "TeamMemberRole" and "OpportunityAccessLevel" when "Opportunity_Team_Locked__c" on Opportunity is checked.
The only User that should be able to modify these two fields should be Commission Admin with "commission_Admin__c" cheked on User record. 
TIA

Trigger: 
trigger OpptyTeamLock on OpportunityTeamMember(before insert, before delete) {
    set<Id> oppIdSet = new Set<id>();
    if (Trigger.IsBefore) {
        if (Trigger.IsInsert) {
            for (OpportunityTeamMember otm : Trigger.new) {
                oppIdSet.add(otm.OpportunityId);
            }
        }
        if (Trigger.IsDelete) {
            for (OpportunityTeamMember otm : Trigger.old) {
                oppIdSet.add(otm.OpportunityId);
            }
        }
    }
    // Id userid=UserInfo.getUserId();
    List<user> userinformation = [
        SELECT id, commission_Admin__c
        FROM user
        WHERE id = :UserInfo.getUserId()
    ];
    list<Opportunity> lstOpp = [
        SELECT Id, Name, Opportunity_Team_Locked__c
        FROM opportunity
        WHERE Id IN :oppIdSet AND Opportunity_Team_Locked__c = TRUE
    ];
    if (Trigger.IsBefore) {
        if (Trigger.IsInsert) {
            for (OpportunityTeamMember otm : Trigger.new) {
                if (lstOpp.Size() > 0 && userinformation[0].commission_Admin__c == false) {
                    otm.AddError('Opportunity Team is locked. Please contact Commissions Team');
                }
            }
        }
        if (Trigger.IsDelete) {
            for (OpportunityTeamMember otm : Trigger.old) {
                if (lstOpp.Size() > 0 && userinformation[0].commission_Admin__c == false) {
                    otm.AddError('Opportunity Team is locked. Please contact Commissions Team');
                }
            }
        }
    }
}

Test Class: 
@isTest
public class OpptyTeamLock_Test {
    public static testMethod void OpptyTeamTest() {
        Profile p = [SELECT Id FROM Profile WHERE Name = 'Standard User'];
        User u = new User(
            Alias = 'standt',
            Email = 'standarduser@testorg.com',
            EmailEncodingKey = 'UTF-8',
            LastName = 'Testing',
            LanguageLocaleKey = 'en_US',
            LocaleSidKey = 'en_US',
            ProfileId = p.Id,
            TimeZoneSidKey = 'America/Los_Angeles',
            UserName = 'standardusedasdasdsaadr@testorg.com'
        );
        insert u;
        Opportunity Opp = new Opportunity(
            Name = 'TestOTMOpportunity',
            StageName = 'Prospecting',
            Type = 'New Customer',
            CloseDate = date.today(),
            Opportunity_Team_Locked__c = true
        );
        insert Opp;
        OpportunityTeamMember opm = new OpportunityTeamMember(
            TeamMemberRole = 'TSE Owner',
            OpportunityId = opp.id,
            UserId = u.id
        );
        try {
            insert opm;
        } catch (Exception e) {
            System.assert(
                e.getMessage().contains('Opportunity Team is locked. Please contact Commissions Team')
            );
        }
    }

    public static testMethod void OpptyTeamTest1() {
        Profile p = [SELECT Id FROM Profile WHERE Name = 'Standard User'];
        User u = new User(
            Alias = 'standt',
            Email = 'standarduser@testorg.com',
            EmailEncodingKey = 'UTF-8',
            LastName = 'Testing',
            LanguageLocaleKey = 'en_US',
            LocaleSidKey = 'en_US',
            ProfileId = p.Id,
            TimeZoneSidKey = 'America/Los_Angeles',
            UserName = 'standardusedasdasdsaadr@testorg.com'
        );
        insert u;
        Opportunity Opp = new Opportunity(
            Name = 'TestOTMOpportunity',
            StageName = 'Prospecting',
            Type = 'New Customer',
            CloseDate = date.today()
        );
        insert Opp;
        OpportunityTeamMember opm = new OpportunityTeamMember(
            TeamMemberRole = 'TSE Owner',
            OpportunityId = opp.id,
            UserId = u.id
        );
        try {
            insert opm;
        } catch (Exception e) {
            System.assert(
                e.getMessage().contains('Opportunity Team is locked. Please contact Commissions Team')
            );
        }
        opp.Opportunity_Team_Locked__c = true;

        try {
            delete opm;
        } catch (Exception e) {
            System.assert(
                e.getMessage().contains('Opportunity Team is locked. Please contact Commission Team')
            );
        }
    }
}

 
My Trigger

Need to create an excetion for User with "Commission_Admin__c" Box checked on User Record. So this trigger should not apply commission Admin. Please help. TIA

"Trigger OpptyTeamLock on OpportunityTeamMember (Before Insert,Before Delete){
       
set<Id> oppIdSet = new set<id>();
    If(Trigger.IsBefore){
        If(Trigger.IsInsert){
            for(OpportunityTeamMember otm : trigger.new){
            oppIdSet.add(otm.OpportunityId);
            }
}
        If(Trigger.IsDelete){
            for(OpportunityTeamMember otm : trigger.old){
            oppIdSet.add(otm.OpportunityId);
            }
            }
    }
    list<Opportunity>lstOpp = [select Id,Name,Opportunity_Team_Locked__c from opportunity where Id In :oppIdSet and Opportunity_Team_Locked__c = true];
    If(Trigger.IsBefore){
        If(Trigger.IsInsert){
            for(OpportunityTeamMember otm : trigger.new){
                if(lstOpp.Size()>0){
                otm.AddError('Opportunity Team is locked. Contact Commission Team');
                }
            }
        }
        If(Trigger.IsDelete){
            for(OpportunityTeamMember otm : trigger.old){
                if(lstOpp.Size()>0){
                otm.AddError('Opportunity Team is locked. Contact Commission Team');
                }
            }
        }
    }
}" 
Trigger will prevent addition or deletion of Opportunity Team Member if "Opportunity_Team_Locked__c" on Opportunity =True. 

Trigger:

"Trigger OpptyTeamLock on OpportunityTeamMember (Before Insert,Before Delete){
set<Id> oppIdSet = new set<id>();
    If(Trigger.IsBefore){
        If(Trigger.IsInsert){
            for(OpportunityTeamMember otm : trigger.new){
            oppIdSet.add(otm.OpportunityId);
            }
}
        If(Trigger.IsDelete){
            for(OpportunityTeamMember otm : trigger.old){
            oppIdSet.add(otm.OpportunityId);
            }
            }
    }
    list<Opportunity>lstOpp = [select Id,Name,Opportunity_Team_Locked__c from opportunity where Id In :oppIdSet and Opportunity_Team_Locked__c = true];
    If(Trigger.IsBefore){
        If(Trigger.IsInsert){
            for(OpportunityTeamMember otm : trigger.new){
                if(lstOpp.Size()>0){
                otm.AddError('Error Message');
                }
            }
        }
        If(Trigger.IsDelete){
            for(OpportunityTeamMember otm : trigger.old){
                if(lstOpp.Size()>0){
                otm.AddError('Opportunity Team is locked. Contact Commission Team');
                }
            }
        }
    }
}"

This is my test class so far. Not only it's failing but it also needs the Before Delete part added. 

"@isTest
Public class OpptyTeamLock_Test{
public static testmethod void OpptyTeamTest()
{
 Opportunity Opp = new Opportunity (Name ='TestOTMOpportunity',StageName ='Prospecting', Type = 'New Customer',License_Type__c= 'Direct');
    insert Opp;
    List <OpportunityTeamMember> OTM = new List <OpportunityTeamMember> {
        new OpportunityTeamMember (TeamMemberRole = 'TSE Owner',OpportunityAccessLevel='Read Only')
        }; 
    insert OTM;
}        
}"

Thanks in advance. 
Hello 
 
Condition for validation:
If Opportunity Team Member is marked locked by checking a "Team Locked" checkbox on any Team Members, no more members can be added or deleted to the Opportunity Team using the "Add Opportunity Team Member" Or 'Delete" button unless addition/deletion is made by User with checkbox "Commission Admin" checked. 
 
Alternatively, the checkbox "Team Locked" can be on Opportunity. 
 
Error Message " You don't have permission to Add or Delete Team Members. Please contact Commission Admin". 

 Thanks in advance. 
First i was getting the answer that my object and picklist cannot be found. Deleted the Project object created new one but exactly same now the error is
"Challenge Not yet complete... here's what's wrong: 
The sharing rule did not behave as expected".
Thanks for your help.
Hello
New requirement needs to be added to Trigger and Test Class.

We want to prevent any edits to Opportunity Team Fields: "TeamMemberRole" and "OpportunityAccessLevel" when "Opportunity_Team_Locked__c" on Opportunity is checked.
The only User that should be able to modify these two fields should be Commission Admin with "commission_Admin__c" cheked on User record. 
Currently, this trigger will prevent addition and deletion of Team Members but now we need to prevents any edits to eexiting Team Members as well. 
TIA

Trigger: 
trigger OpptyTeamLock on OpportunityTeamMember(before insert, before delete) {
    set<Id> oppIdSet = new Set<id>();
    if (Trigger.IsBefore) {
        if (Trigger.IsInsert) {
            for (OpportunityTeamMember otm : Trigger.new) {
                oppIdSet.add(otm.OpportunityId);
            }
        }
        if (Trigger.IsDelete) {
            for (OpportunityTeamMember otm : Trigger.old) {
                oppIdSet.add(otm.OpportunityId);
            }
        }
    }
    // Id userid=UserInfo.getUserId();
    List<user> userinformation = [
        SELECT id, commission_Admin__c
        FROM user
        WHERE id = :UserInfo.getUserId()
    ];
    list<Opportunity> lstOpp = [
        SELECT Id, Name, Opportunity_Team_Locked__c
        FROM opportunity
        WHERE Id IN :oppIdSet AND Opportunity_Team_Locked__c = TRUE
    ];
    if (Trigger.IsBefore) {
        if (Trigger.IsInsert) {
            for (OpportunityTeamMember otm : Trigger.new) {
                if (lstOpp.Size() > 0 && userinformation[0].commission_Admin__c == false) {
                    otm.AddError('Opportunity Team is locked. Please contact Commissions Team');
                }
            }
        }
        if (Trigger.IsDelete) {
            for (OpportunityTeamMember otm : Trigger.old) {
                if (lstOpp.Size() > 0 && userinformation[0].commission_Admin__c == false) {
                    otm.AddError('Opportunity Team is locked. Please contact Commissions Team');
                }
            }
        }
    }
}

Test Class: 
Test Class: 
@isTest
public class OpptyTeamLock_Test {
    public static testMethod void OpptyTeamTest() {
        Profile p = [SELECT Id FROM Profile WHERE Name = 'Standard User'];
        User u = new User(
            Alias = 'standt',
            Email = 'standarduser@testorg.com',
            EmailEncodingKey = 'UTF-8',
            LastName = 'Testing',
            LanguageLocaleKey = 'en_US',
            LocaleSidKey = 'en_US',
            ProfileId = p.Id,
            TimeZoneSidKey = 'America/Los_Angeles',
            UserName = 'standardusedasdasdsaadr@testorg.com'
        );
        insert u;
        Opportunity Opp = new Opportunity(
            Name = 'TestOTMOpportunity',
            StageName = 'Prospecting',
            Type = 'New Customer',
            CloseDate = date.today(),
            Opportunity_Team_Locked__c = true
        );
        insert Opp;
        OpportunityTeamMember opm = new OpportunityTeamMember(
            TeamMemberRole = 'TSE Owner',
            OpportunityId = opp.id,
            UserId = u.id
        );
        try {
            insert opm;
        } catch (Exception e) {
            System.assert(
                e.getMessage().contains('Opportunity Team is locked. Please contact Commissions Team')
            );
        }
    }

    public static testMethod void OpptyTeamTest1() {
        Profile p = [SELECT Id FROM Profile WHERE Name = 'Standard User'];
        User u = new User(
            Alias = 'standt',
            Email = 'standarduser@testorg.com',
            EmailEncodingKey = 'UTF-8',
            LastName = 'Testing',
            LanguageLocaleKey = 'en_US',
            LocaleSidKey = 'en_US',
            ProfileId = p.Id,
            TimeZoneSidKey = 'America/Los_Angeles',
            UserName = 'standardusedasdasdsaadr@testorg.com'
        );
        insert u;
        Opportunity Opp = new Opportunity(
            Name = 'TestOTMOpportunity',
            StageName = 'Prospecting',
            Type = 'New Customer',
            CloseDate = date.today()
        );
        insert Opp;
        OpportunityTeamMember opm = new OpportunityTeamMember(
            TeamMemberRole = 'TSE Owner',
            OpportunityId = opp.id,
            UserId = u.id
        );
        try {
            insert opm;
        } catch (Exception e) {
            System.assert(
                e.getMessage().contains('Opportunity Team is locked. Please contact Commissions Team')
            );
        }
        opp.Opportunity_Team_Locked__c = true;

        try {
            delete opm;
        } catch (Exception e) {
            System.assert(
                e.getMessage().contains('Opportunity Team is locked. Please contact Commission Team')
            );
        }
    }
}
 
Hello
New requirement need to be added to Trigger and Test Class. We want to prevent any edits to Fields: "TeamMemberRole" and "OpportunityAccessLevel" when "Opportunity_Team_Locked__c" on Opportunity is checked.
The only User that should be able to modify these two fields should be Commission Admin with "commission_Admin__c" cheked on User record. 
TIA

Trigger: 
trigger OpptyTeamLock on OpportunityTeamMember(before insert, before delete) {
    set<Id> oppIdSet = new Set<id>();
    if (Trigger.IsBefore) {
        if (Trigger.IsInsert) {
            for (OpportunityTeamMember otm : Trigger.new) {
                oppIdSet.add(otm.OpportunityId);
            }
        }
        if (Trigger.IsDelete) {
            for (OpportunityTeamMember otm : Trigger.old) {
                oppIdSet.add(otm.OpportunityId);
            }
        }
    }
    // Id userid=UserInfo.getUserId();
    List<user> userinformation = [
        SELECT id, commission_Admin__c
        FROM user
        WHERE id = :UserInfo.getUserId()
    ];
    list<Opportunity> lstOpp = [
        SELECT Id, Name, Opportunity_Team_Locked__c
        FROM opportunity
        WHERE Id IN :oppIdSet AND Opportunity_Team_Locked__c = TRUE
    ];
    if (Trigger.IsBefore) {
        if (Trigger.IsInsert) {
            for (OpportunityTeamMember otm : Trigger.new) {
                if (lstOpp.Size() > 0 && userinformation[0].commission_Admin__c == false) {
                    otm.AddError('Opportunity Team is locked. Please contact Commissions Team');
                }
            }
        }
        if (Trigger.IsDelete) {
            for (OpportunityTeamMember otm : Trigger.old) {
                if (lstOpp.Size() > 0 && userinformation[0].commission_Admin__c == false) {
                    otm.AddError('Opportunity Team is locked. Please contact Commissions Team');
                }
            }
        }
    }
}

Test Class: 
@isTest
public class OpptyTeamLock_Test {
    public static testMethod void OpptyTeamTest() {
        Profile p = [SELECT Id FROM Profile WHERE Name = 'Standard User'];
        User u = new User(
            Alias = 'standt',
            Email = 'standarduser@testorg.com',
            EmailEncodingKey = 'UTF-8',
            LastName = 'Testing',
            LanguageLocaleKey = 'en_US',
            LocaleSidKey = 'en_US',
            ProfileId = p.Id,
            TimeZoneSidKey = 'America/Los_Angeles',
            UserName = 'standardusedasdasdsaadr@testorg.com'
        );
        insert u;
        Opportunity Opp = new Opportunity(
            Name = 'TestOTMOpportunity',
            StageName = 'Prospecting',
            Type = 'New Customer',
            CloseDate = date.today(),
            Opportunity_Team_Locked__c = true
        );
        insert Opp;
        OpportunityTeamMember opm = new OpportunityTeamMember(
            TeamMemberRole = 'TSE Owner',
            OpportunityId = opp.id,
            UserId = u.id
        );
        try {
            insert opm;
        } catch (Exception e) {
            System.assert(
                e.getMessage().contains('Opportunity Team is locked. Please contact Commissions Team')
            );
        }
    }

    public static testMethod void OpptyTeamTest1() {
        Profile p = [SELECT Id FROM Profile WHERE Name = 'Standard User'];
        User u = new User(
            Alias = 'standt',
            Email = 'standarduser@testorg.com',
            EmailEncodingKey = 'UTF-8',
            LastName = 'Testing',
            LanguageLocaleKey = 'en_US',
            LocaleSidKey = 'en_US',
            ProfileId = p.Id,
            TimeZoneSidKey = 'America/Los_Angeles',
            UserName = 'standardusedasdasdsaadr@testorg.com'
        );
        insert u;
        Opportunity Opp = new Opportunity(
            Name = 'TestOTMOpportunity',
            StageName = 'Prospecting',
            Type = 'New Customer',
            CloseDate = date.today()
        );
        insert Opp;
        OpportunityTeamMember opm = new OpportunityTeamMember(
            TeamMemberRole = 'TSE Owner',
            OpportunityId = opp.id,
            UserId = u.id
        );
        try {
            insert opm;
        } catch (Exception e) {
            System.assert(
                e.getMessage().contains('Opportunity Team is locked. Please contact Commissions Team')
            );
        }
        opp.Opportunity_Team_Locked__c = true;

        try {
            delete opm;
        } catch (Exception e) {
            System.assert(
                e.getMessage().contains('Opportunity Team is locked. Please contact Commission Team')
            );
        }
    }
}

 
Trigger will prevent addition or deletion of Opportunity Team Member if "Opportunity_Team_Locked__c" on Opportunity =True. 

Trigger:

"Trigger OpptyTeamLock on OpportunityTeamMember (Before Insert,Before Delete){
set<Id> oppIdSet = new set<id>();
    If(Trigger.IsBefore){
        If(Trigger.IsInsert){
            for(OpportunityTeamMember otm : trigger.new){
            oppIdSet.add(otm.OpportunityId);
            }
}
        If(Trigger.IsDelete){
            for(OpportunityTeamMember otm : trigger.old){
            oppIdSet.add(otm.OpportunityId);
            }
            }
    }
    list<Opportunity>lstOpp = [select Id,Name,Opportunity_Team_Locked__c from opportunity where Id In :oppIdSet and Opportunity_Team_Locked__c = true];
    If(Trigger.IsBefore){
        If(Trigger.IsInsert){
            for(OpportunityTeamMember otm : trigger.new){
                if(lstOpp.Size()>0){
                otm.AddError('Error Message');
                }
            }
        }
        If(Trigger.IsDelete){
            for(OpportunityTeamMember otm : trigger.old){
                if(lstOpp.Size()>0){
                otm.AddError('Opportunity Team is locked. Contact Commission Team');
                }
            }
        }
    }
}"

This is my test class so far. Not only it's failing but it also needs the Before Delete part added. 

"@isTest
Public class OpptyTeamLock_Test{
public static testmethod void OpptyTeamTest()
{
 Opportunity Opp = new Opportunity (Name ='TestOTMOpportunity',StageName ='Prospecting', Type = 'New Customer',License_Type__c= 'Direct');
    insert Opp;
    List <OpportunityTeamMember> OTM = new List <OpportunityTeamMember> {
        new OpportunityTeamMember (TeamMemberRole = 'TSE Owner',OpportunityAccessLevel='Read Only')
        }; 
    insert OTM;
}        
}"

Thanks in advance. 
Is anyone else having the same issue or is it me doing something wrong? I downloaded the package from here (https://developer.salesforce.com/tools/sfdxcli) and I got the following error:
User-added image