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
Hari Krishnan 105Hari Krishnan 105 

When ever opportunity Stage is modified to closed won then set close date as Today date and type as New customer

Apex class and call from trigger
Sai PraveenSai Praveen (Salesforce Developers) 
Hi Hari,

You can write the trigger on opportunity as below.

Trigger Handler:
 
public class ClosedOppyHandler {
    public void updatedate(List<Opportunity> newoppy, Map<id,opportunity> oldmap)
    {
        for(opportunity opp: newoppy){
            opportunity oldapp = oldmap.get(opp.id);
            if(opp.StageName =='Closed Won' && opp.StageName!=oldapp.StageName){
                opp.Closed_Date__c  =date.today();
                opp.Type='New Customer';
            }
        }
    }

}



Trigger;
trigger ClosedOppy on Opportunity (before update) {
    
    if(trigger.isupdate && Trigger.isbefore){
        ClosedOppyHandler cs= new ClosedOppyHandler();
        cs.updatedate(Trigger.new,Trigger.oldmap);
    }

}

Let me know if you face any errors.
If this solution helps, Please mark it as best answer.

Thanks,
 
Hari Krishnan 105Hari Krishnan 105
Not working
Aniket Shewade 8Aniket Shewade 8

You Can try This

if(trigger.isBefore && trigger.isUpdate){
        Map<Id,Opportunity> oppOldMap = Trigger.oldMap;
        Map<Id,Opportunity> oppNewMap = Trigger.newMap;
        Set<Id> keys =oppOldMap.keySet();
        for(Id opp :keys){
            Opportunity oldOpp = oppOldMap.get(opp);
            Opportunity newOpp = oppNewMap.get(opp);
            
            if(newOpp.stagename=='Closed Won' && oldOpp.stagename!='Closed Won'){
                newOpp.closeDate=System.today();
                newOpp.type='New Customer';
            }
        }         
    }

OR 

trigger OpportunityHandlerTrigger on Opportunity (before update) {
 if(trigger.isBefore && trigger.isUpdate){
opportunityHandler.Method1(trigger.new);
}
}
public class OpportunityHandler {
    //When ever Opportunity "Stage" is modified to "Closed Won" then set "Close Date" as "Today Date" and "Type" as "New Customer".
    public static void method1(List<opportunity> lstopportunity){
        if(lstopportunity!=null){
            for(opportunity opp: lstopportunity){
                system.debug('stage Name '+ opp.StageName);
                if(opp.StageName == 'Closed Won')
                {
                    system.debug('stage Name '+ opp.StageName);
                    opp.CloseDate = system.today();
                    opp.Type = 'New Customer';
                }
            }
        }
    }
}