You need to sign in to do that
Don't have an account?
ashu 6112
Help in Trigger
Hi,
I have wrote a trigger to send an attachment once the Account Field 'Status' field value changed to 'Approved/Submitted to BA' OR 'Paperwork Complete'.
All is working fine except it is attaching the document 2 times, we have to attach only one time.
trigger SendAttachmentonAccount on Account (after update)
{
List<Account> lstGreensheet = new List<Account>();
system.debug('======= AccountAttachment Started =============');
Account AccountOld = trigger.old[0];
Account AccountNew = trigger.new[0];
system.debug('AccountOld '+ AccountOld.get('Status__c'));
system.debug('AccountNew '+ AccountNew.get('Status__c'));
if((AccountOld.get('Status__c') != AccountNew.get('Status__c')) &&
(AccountNew.get('Status__c') == 'Approved/Submitted to BA' ||
AccountNew.get('Status__c') == 'Paperwork Complete' ))
{
generateAccountPDF.attachingPDFOnStatusChange((String)AccountNew.get('Id'),(String)AccountNew.get('Name'));
}
system.debug('======= Account Attachment Completed =============');
}
I have wrote a trigger to send an attachment once the Account Field 'Status' field value changed to 'Approved/Submitted to BA' OR 'Paperwork Complete'.
All is working fine except it is attaching the document 2 times, we have to attach only one time.
trigger SendAttachmentonAccount on Account (after update)
{
List<Account> lstGreensheet = new List<Account>();
system.debug('======= AccountAttachment Started =============');
Account AccountOld = trigger.old[0];
Account AccountNew = trigger.new[0];
system.debug('AccountOld '+ AccountOld.get('Status__c'));
system.debug('AccountNew '+ AccountNew.get('Status__c'));
if((AccountOld.get('Status__c') != AccountNew.get('Status__c')) &&
(AccountNew.get('Status__c') == 'Approved/Submitted to BA' ||
AccountNew.get('Status__c') == 'Paperwork Complete' ))
{
generateAccountPDF.attachingPDFOnStatusChange((String)AccountNew.get('Id'),(String)AccountNew.get('Name'));
}
system.debug('======= Account Attachment Completed =============');
}
I think nothing wrong with the trigger!
Maybe some problem on your class"generateAccountPDF", can u share the class?
private Greensheet__c greensheet{get;set;}
public String idGreensheet {get;set;}
public generateGreensheetPDF(){ }
public generateGreensheetPDF(ApexPages.StandardController cntrll){
idGreensheet = ApexPages.currentPage().getParameters().get('id');
greensheet = (Greensheet__c)cntrll.getRecord();
System.debug('idGreensheet '+idGreensheet);
}
@Future(callout=true)
public static void attachingPDFOnStatusChange(String id,String name){
system.debug('==== Executing attachingPDFOnStatusChange Started============');
String pdfName = name+'.pdf';
PageReference pgPDFAtachment = Page.greensheetpdf;
pgPDFAtachment.getParameters().put('id',id);
Blob blobPDF = pgPDFAtachment.getContent();
String tmpName = '';
Attachment attachPDF = new Attachment(parentid= id,Name=pdfName,body=blobPDF);
insert attachPDF;
system.debug('==== Executing attachingPDFOnStatusChange Completed============');
}
@Future(callout=true)
public static void attachingPDFOnStatusChange(String idGreensheetrec,String strTitle,String statusCurr){
system.debug('==== Executing attachingPDFOnStatusChange Started============');
String pdfName = '';
PageReference pgPDFAtachment = Page.greensheetpdf;
pgPDFAtachment.getParameters().put('id',idGreensheetrec);
Blob blobPDF = pgPDFAtachment.getContent();
String tmpName = '';
pdfName = genFileNameForGreensheetAtt(idGreensheetrec,strTitle, statusCurr);
Attachment attachPDF = new Attachment(parentid= idGreensheetrec,Name=pdfName,body=blobPDF);
insert attachPDF;
system.debug('==== Executing attachingPDFOnStatusChange Completed============');
}
public static String genFileNameForGreensheetAtt(String idGreensheetrec,String strTitle,String statusCurr){
//idGreensheetrec = 'a1IV00000018Uy7MAE';
//strTitle = 'Fox Movie Package';
//statusCurr = 'Paperwork Complete%';
system.debug('idGreensheetrec '+idGreensheetrec+'====strTitle :'+strTitle+'=====statusCurr :'+statusCurr);
String strSearchQuery = strTitle +'_'+ statusCurr;
String strFileName ='';
/*
List<Attachment> lstAtt = [SELECT count(Name) FROM Attachment //SELECT Id,Name,ParentId,SystemModstamp FROM Attachment
WHERE ParentId =:idGreensheetrec AND Name LIKE :strSearchQuery
ORDER BY SystemModstamp DESC NULLS FIRST ];
if(lstAtt!=null && lstAtt.size()>0){
//tmpName = lstAtt.get(0).Name;
//pdfName = lstAtt.get(0).Name.split('_')[0]
}else{
}*/
AggregateResult[] aresult = [select count(ParentId) attatchmentCnt From Attachment Where ParentId=:idGreensheetrec AND Name LIKE :strSearchQuery ];
if(aresult!=null && aresult.size()>0){
for(AggregateResult ar : aresult){
strFileName = strSearchQuery+'_'+ar.get('attatchmentCnt')+'.pdf';
}
}else{
strFileName = strSearchQuery+'.pdf';
}
system.debug('FileName Generated :'+strFileName);
return strFileName;
}
public PageReference attachingPDF(){
String pdfName = [select Name from Greensheet__c where Id=:idGreensheet limit 1][0].Name+'.pdf';
PageReference pgPDFAtachment = Page.greensheetpdf;
pgPDFAtachment.getParameters().put('id',idGreensheet);
Blob blobPDF = pgPDFAtachment.getContent();
// Attachment attachPDF = new Attachment(parentid= greensheet.Id,Name=pdfName,body=blobPDF);
Attachment attachPDF = new Attachment(parentid= idGreensheet,Name=pdfName,body=blobPDF);
insert attachPDF;
PageReference redirectToPage = new ApexPages.StandardController(greensheet).view();
redirectToPage.setRedirect(true);
return redirectToPage;
}
}
From me this working fine
Regards,