-
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
What are List Views in Salesforce?
Hello everyone, In this blog, we will discuss about “List Views in Salesforce". Let's begin with what list views are. What are List Views? In…
Build A Strong and Powerful Community and Go Beyond Your Dreams
Over the last few weeks, we had relished bringing out the outstanding features of Sales Cloud and Service Cloud that will be released in Spring ‘20. Sales, Service, and…
Automation of JSON2APEX - My journey to writing my own automated tooling for this!
Lyrics Each and every time developing an integration, I wanted to automate the most tedious and routine part of it - creating wrappers for integration…
Popular Salesforce Videos
Salesforce Field Service Implementation
The possibilities for building a custom field service implementation are nearly endless when considering all the offerings in Salesforce Field Service. This 8-step guide provides…
Introduction to Salesforce Nonprofit Cloud for Program Management
Each nonprofit’s mission and the program is unique, but with Salesforce’s highly configurable and customizable platform, you can manage your entire program from one central…
What Is Salesforce Industries (Vlocity)?
Vlocity (Salesforce Industries) offers pre-built solutions on the Salesforce platform that solve the needs of particular industries that require CRMs to be heavily customized beyond…