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
matt.bylermatt.byler 

Trigger a related record to be created.

We have a custom object that is related to the Opportunity object. Upon the opportunity being closed won we would like to trigger the creation of the related object called Work Order. After the Work Order is created we would like to have a case created under that work order. I have tried using triggers and apex code and I cant seem to get this to work correctly. Any ideas?

Best Answer chosen by Admin (Salesforce Developers) 
matt.bylermatt.byler

I have figured this out using this code:

 

trigger createworkorder on Opportunity (after update)
{
                if(trigger.new[0].StageName=='closed won'&&(trigger.old[0].StageName<>'closed won'))
                {
                                Work_Order__c obj=new Work_Order__c(Opportunity__c=trigger.new[0].id);
                                insert obj;
                                case c1=new case(Status='new',Subject='Create Product Cases for Work Order',Work_Order__c=obj.id);
                                insert c1;
                }
}

All Answers

Navatar_DbSupNavatar_DbSup

Hi,

Try the below code snippet as reference:

trigger createworkorder on Opportunity (after update)

{

                if(trigger.new[0].stage=='closed won')

                {

                                customobject__c obj=new customobject__c(name='test',Opportunity__c=trigger.new[0].id);

                                insert obj;

                                case c1=new case(Status='new',CaseOrigin='email',customobject__c=obj.id);

                                insert c1;

                }

}

 

Did this answer your question? If not, let me know what didn't work, or if so, please mark it solved. 

 

 

 

matt.bylermatt.byler

This worked great except if you go back to the opportunity and add information and save it will also create new records. Can we put where stage prior value not equal to closed won?

matt.bylermatt.byler

I have figured this out using this code:

 

trigger createworkorder on Opportunity (after update)
{
                if(trigger.new[0].StageName=='closed won'&&(trigger.old[0].StageName<>'closed won'))
                {
                                Work_Order__c obj=new Work_Order__c(Opportunity__c=trigger.new[0].id);
                                insert obj;
                                case c1=new case(Status='new',Subject='Create Product Cases for Work Order',Work_Order__c=obj.id);
                                insert c1;
                }
}

This was selected as the best answer