-
Calling Batch class with Salesforce Apex Trigger
trigger ProcessStage on Stage__c (after insert) {
Database.executeBatch(new BatchProcessStage(trigger.newMap.keySet()),200);
}************************************************************************************************
public class ProcessStaging{
public static void handleafterInsert(List<Stage__c> listStage){
Map<String ,Contact> contactMap = new Map<String ,Contact>();
Map<String ,Id> accountMap = new Map<String ,Id>();
Set<String>fname = new Set<String>();
Set<String>orgname = new Set<String>();
List<Contact> insertContact = new List<Contact>();
List<Contact> relatedContact = new List<Contact>();
List<Contact> finalContactinsert = new list<Contact>();
List<Opportunity> opportunityContact = new List<Opportunity>();
List<Opportunity> opportunityAccount = new List<Opportunity>();
List<Opportunity> relatedOpportunity = new List<Opportunity>();
List<Account> insertAccount = new List<Account>();
List<Contact> finalcontact = new List<Contact>();for(Stage__c st :listStage) {
fname.add(st.First_Name__c);
fname.add(st.Last_Name__c);
fname.add(st.Postal_Code__c);
orgname.add(st.Organisation_Name__c);
orgname.add(st.Postal_Code__c);
}
List<Contact> conlist = [select Id,FirstName,LastName,MailingPostalCode from contact where (FirstName IN:fname) AND (LastName IN:fname) AND (MailingPostalCode IN:fname) ];
List<Account> acclist = [select Id,Name,BillingPostalCode from account where (Name IN:orgname) AND (BillingPostalCode IN:orgname) ];
system.debug('aaaa' +conlist);
system.debug('acclist' +acclist);for(Contact con : conlist) {
contactMap.put(con.firstname +'_'+ con.lastname+'_'+ con.MailingPostalCode,con );
// contactMap.put(con.firstname,con );
}for(Account ac : acclist) {
accountMap.put(ac.Name +'_'+ ac.BillingPostalCode,ac.id );
}
for(Stage__c st :listStage) {
Id accs;if(st.Individual_Or_Organisation__c=='I'){
if(!contactMap.containsKey(st.First_Name__c+ '_' +st.Last_Name__c+ '_' +st.Postal_Code__c )) {
// if(!contactMap.containsKey(st.First_Name__c)) {
Contact cc =new Contact();
cc.firstname=st.First_Name__c;
cc.lastname=st.Last_Name__c;
cc.OtherPostalCode =st.Postal_Code__c;
// insertContact.add(cc);
system.debug(insertContact +'listtttt');if(st.Organisation_Name__c!='' && st.Postal_Code__c!='' && accountMap.containsKey(st.Organisation_Name__c+ '_' +st.Postal_Code__c)) {
system.debug('hellohey');
system.debug('aaa' +accountMap.get(st.Organisation_Name__c+ '_' +st.Postal_Code__c));
cc.accountId = accountMap.get(st.Organisation_Name__c+ '_' +st.Postal_Code__c);
system.debug('######'+''+accs);
// cc.accountId = accs;}
insertContact.add(cc);
Opportunity op= new Opportunity();
op.name= cc.firstname;
op.CloseDate= st.Date_Received__c;
op.StageName='prospecting';
op.AccountId=accountMap.get(st.Organisation_Name__c+ '_' +st.Postal_Code__c);
opportunityContact.add(op);
}
}
else if(st.Individual_Or_Organisation__c=='O') {
if(!accountMap.containsKey(st.Organisation_Name__c+ '_' +st.Postal_Code__c)) {
Account ac1 = new Account();
ac1.Name=st.First_Name__c;
insertAccount.add(ac1);
system.debug(opportunityAccount +'case2op');
if(st.Last_Name__c!='' && st.Postal_Code__c!='' && contactMap.containsKey(st.First_Name__c+ '_' +st.Last_Name__c+ '_' +st.Postal_Code__c) ){system.debug('lstloop');
Contact cntt = new Contact();
cntt = contactMap.get(st.First_Name__c+ '_' +st.Last_Name__c+ '_' +st.Postal_Code__c);
cntt.Account =ac1;
finalContactinsert.add(cntt);
system.debug('finalContactinsert'+ finalContactinsert);}
Opportunity op1= new Opportunity();
op1.Account= ac1;
op1.name =ac1.Name;
op1.CloseDate= st.Date_Received__c;
op1.StageName='prospecting';
opportunityAccount.add(op1);}
}
}if(insertContact.size()>0) {
insert insertContact;
}
if(opportunityContact.size()>0) {
upsert opportunityContact;
}
if(insertAccount.size()>0) {
insert insertAccount;
}for(Contact con :finalContactinsert) {
con.Accountid = con.Account.id;
system.debug(con.Accountid +'contact accountid');
system.debug(con.Account.id +'id of account');
relatedContact.add(con);
system.debug('relation'+relatedContact);
system.debug('relatedContact' +relatedContact);
}
if(relatedContact.size()>0) {
upsert relatedContact;
}
for(Opportunity op :opportunityAccount) {op.Accountid = op.Account.id;
system.debug(op.Accountid +'contact accountid');
system.debug(op.Account.id +'id of account');
relatedOpportunity.add(op);
system.debug('relatedOpportunity' +relatedOpportunity);
}
if(relatedOpportunity.size()>0) {upsert relatedOpportunity;
}}
}******************
global class BatchProcessStage implements Database.Batchable<Sobject> {Public string soqlquery;
Set<Id>sid= new Set<Id>();public BatchProcessStage (Set<id> sid){
this.sid = sid ;
}Public void setQry(string soqlquery){
this.soqlquery = 'Select First_Name__c,Last_Name__c,Postal_Code__c,Organisation_Name__c,Individual_Or_Organisation__c from stage where id in : sid';
}global database.querylocator start(database.batchableContext bc){
return database.getquerylocator(soqlquery);
}global void execute(database.batchablecontext bd, List<Stage> stglist){
ProcessStaging.handleafterInsert(stglist);
}Public void finish(database.batchableContext bc){
}}
Error: Compile Error: Class BatchProcessStage must implement the method: void Database.Batchable<SObject>.execute(Database.BatchableContext, List<SObject>) at line 1 column 14
Log In to reply.
Popular Salesforce Blogs
Salesforce PDO Partner Program 2021: A Guide
Salesforce AppExchange has been a huge hit across its 15-year lifespan and is the key differentiator for Salesforce when it comes to the global CRM…
Air Gapped Backup for Unbreakable Data Security
Air Gapped Backup for Unbreakable Data Security In today's digital age, safeguarding data is more crucial than ever. With cyberthreats lurking at every corner, traditional…
Salesforce Service Cloud Use Cases: Enhance Customer Experience & Insights
When it comes to selecting the ideal solution for providing enterprise-level customer support, there are frequently several possibilities. However, choosing the correct platform and technology might assist you…
Popular Salesforce Videos
Salesforce Developer Training Videos For Beginners | Salesforce Training
This Salesforce Training Video is the video session of a live virtual class conducted by Simplilearn. So if you just go through the video you…
Salesforce Flow to Create Feedback form on Case | How to use Slider, Radio button on Screen Flow
Use Case: In this video, we are creating a screen flow to get feedback from the users when the case is closed. Learnings: 1. How…
What is Salesforce Apex Trigger | When to use Salesforce Apex Trigger | Type of Salesforce Apex Trigger
In this video, we are going to learn some basic concepts of Apex trigger. Below is the Agenda. Video Resource: SFDC Panther