You need to sign in to do that
Don't have an account?

create an opportunity when stage Name=="ClosedWon"
When an opportunity is created as Stage Name = =’Closed Won ‘ create an opportunity of this opportunity whose Name will be as "Cloned+Name of new Opportunity".
As well as Associated Account will be same as new opportunity
Thanks in advance
list<Opportunity> listOfOppTiInsert = new list<Opportunity>();
String StageChanged='Closed Won';
for(Opportunity o:trigger.new){
if(o.StageName==StageChanged)
{
Opportunity Clone = o.clone(false,true);
clone.Name='Cloned ' + clone.Name;
clone.StageName='Closed Won Cloned';
clone.CloseDate =clone.CloseDate+365;
listOfOppTiInsert.add(clone);
}
}
if(!listOfOppTiInsert.isEmpty()) {
insert listOfOppTiInsert;
}
}
All Answers
Hello,
For this requirement create a trigger after update with the condition stage name - "closed won" within the trigger and while cloning the opportunity you can specify the account name within the code.
For code samples please refer following links:
http://salesforce.stackexchange.com/questions/11639/cloning-opportunities
http://salesforce.stackexchange.com/questions/8493/deep-clone-parent-child-grand-child
You can try this code
trigger OpportunityClone on Opportunity (after insert) {
list<Opportunity> listOfOpportunity = new list<Opportunity>();
for(Opportunity opp : trigger.New) {
if(opp.StageName == 'Closed Won') {
Opportunity newOpp = opp.clone(false, true);
newOpp.Name = 'Cloned' + newOpp.Name;
listOfOpportunity.add(newOpp);
}
}
if(!listOfOpportunity.isEmpty()) {
insert listOfOpportunity;
}
}
This s my code.
trigger CloneOpp on Opportunity (before insert, before update) {
Set<Id> oppId=new Set<id>();
String StageChanged='Closed Won';
for(Opportunity o:trigger.new){
if(o.StageName==StageChanged)
{
oppId.add(o.Id);
}
system.debug('#$%$%$%$'+o);
Opportunity Clone = o.clone(false,true);
system.debug('@#$@!534'+clone);
clone.Name='Cloned';
clone.StageName='Closed Won Cloned';
clone.CloseDate =clone.CloseDate+365;
insert clone;
//oppclone.add(clone);
system.debug('!@@@#!1@#'+Clone);
}
}
but I got this error
Error:Apex trigger CloneOpp caused an unexpected exception, contact your administrator: CloneOpp: execution of BeforeUpdate caused by: System.DmlException: Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, CloneOpp: maximum trigger depth exceeded Opportunity trigger event BeforeUpdate for [0069000000BeUb9] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new] Opportunity trigger event BeforeInsert for [new]: []: Trigger.CloneOpp: line 20, column 1
trigger CloneOpp on Opportunity (before insert, before update) {
list<Opportunity> listOfOppTiInsert = new list<Opportunity>();
String StageChanged='Closed Won';
for(Opportunity o:trigger.new){
if(o.StageName==StageChanged)
{
Opportunity Clone = o.clone(false,true);
clone.Name='Cloned';
clone.StageName='Closed Won Cloned';
clone.CloseDate =clone.CloseDate+365;
listOfOppTiInsert.add(clone)'
}
}
if(!listOfOppTiInsert.isEmpty()) {
insert listOfOppTiInsert;
}
}
In debug log i checked that stageName='Closed Won Clonned'.
In detail page trigger is not reflected.
My trigger is active only.
Write trigger/triggers on Opportunity for the following scenario
When an opportunity is created as Stage Name = =’Closed Won ‘ create an opportunity of this opportunity whose
Name will be as ‘Cloned’+’Name of new opportunity.
Stage Name will be “Closed Won Cloned”
Close Date will be new opportunity’s Close Date + 1year
Associated Account will be same as new opportunity.
Same functionality if any opportunity gets updated as Stage Name “Closed Won”.
list<Opportunity> listOfOppTiInsert = new list<Opportunity>();
String StageChanged='Closed Won';
for(Opportunity o:trigger.new){
if(o.StageName==StageChanged)
{
Opportunity Clone = o.clone(false,true);
clone.Name='Cloned ' + clone.Name;
clone.StageName='Closed Won Cloned';
clone.CloseDate =clone.CloseDate+365;
listOfOppTiInsert.add(clone);
}
}
if(!listOfOppTiInsert.isEmpty()) {
insert listOfOppTiInsert;
}
}
Thanks. Record remains the same. Nothing updated.
Can you explain the scenario what are the steps i have to follow ?
when Stage name is changed or created to "closed won" , this trigger has to fire. Name , stage name,close date will change like above.
In database there will be 2 record like
*test
*clonned test
Is this rite?
If I have 3 scenarios in opportunity, i have to write 3 separate trigger or in single trigger ?