Hi Perdo,,
Still its calling the standard, with two separate mails,
One from standard and another from customization.
class DelegateEmailSubscriptions
{
[SubscribesTo(classStr(SRSPrintDestinationSettingsDelegates), delegateStr(SRSPrintDestinationSettingsDelegates, toEmail))]
public static void SRSPrintDestinationSettingsDelegates_toEmail(SrsReportRunPrinter printer, SrsReportDataContract dataContract, Microsoft.Dynamics.AX.Framework.Reporting.Shared.ReportingService.ParameterValue[] paramArray, EventHandlerResult result)
{
PSAProjInvoiceContract projInvoiceContract = dataContract.parmRdpContract();
RecId recid = projInvoiceContract.parmProjInvoiceJourRecId();
ProjInvoiceJour projInvoiceJour;
select ProjInvoiceId, InvoiceAccount, DataAreaId from projInvoiceJour where projInvoiceJour.RecId == recid;
ENWProjInvoiceParameters enwProjInvoiceParameters;
select EnableAdditionalAttachments, EnableEmailTemplate, RecId from ProjInvoiceParameters
where ProjInvoiceParameters.DataAreaId == projInvoiceJour.DataAreaId;
str name = strFmt('%1', dataContract.parmReportName());
if(dataContract.parmPrintSettings().printMediumType() == SRSPrintMediumType::Email &&
name == PSAProjInvoiceCopy.ENWReport' &&
ProjInvoiceParameters.EnableAdditionalAttachments == NoYes::Yes)
{
//SrsReportEMailDataContract emailContract = dataContract.parmPrintSettings().parmEMailContract();
CustTable custTable;
select RecId from custTable where custTable.AccountNum == projInvoiceJour.InvoiceAccount;
DocuRef fileDocuRef = DocuRef::findTableIdRecId(projInvoiceJour.DataAreaId, custTable.TableId, custTable.RecId);
System.DateTime dateTime = System.DateTime::get_UtcNow();
str utcTimeAsStr = dateTime.ToString('yyyyMd');
str milliSecondsAlive = int2str(winApi::getTickCount());
str timeStr;
timeStr = strFmt("%1 %2", time2str(timeNow(), 3, 1), substr(milliSecondsAlive, strlen(milliSecondsAlive)-2, 2));
/* Filename _filename = CompanyInfo::find().company() + '_' + reportName + '_' + utcTimeAsStr + '_' + timeStr + '.PDF';
System.Byte[] reportBytes = srsProxy.renderReportToByteArray(dataContract.parmReportPath(),
reportParamArray,
dataContract.parmPrintSettings().fileFormat(),
dataContract.parmPrintSettings().deviceInfo());
System.IO.MemoryStream mstream = new System.IO.MemoryStream(reportBytes);*/
//From Address
str fromAddress ;
UserInfo userInfo;
SysUserInfo sysUserInfo = SysUserInfo::find(curuserid());
// try to get it from SysUserInfo
str value = strrtrim(strltrim(sysUserInfo.emailDisplay()));
if (strlen(value) == 0)
{
select firstonly Id, NetworkAlias from userInfo where userInfo.Id == curuserid();
if (strlen(userInfo.NetworkAlias) > 0)
{
value = userInfo.networkAlias;
if (!strContains(userInfo.networkAlias, '@') && strLen(userInfo.networkDomain) > 0)
{
value += '@' + userInfo.networkDomain;
}
}
}
fromAddress = value;
//Attachment message builder
var messageBuilder = new SysMailerMessageBuilder();
/*
//Customer Billing invoice report attachment via email
messageBuilder.setFrom(fromAddress)
.addTo(dataContract.parmPrintSettings().parmEMailContract().parmTo())
.addCc(dataContract.parmPrintSettings().parmEMailContract().parmCc())
.setSubject(dataContract.parmPrintSettings().parmEMailContract().parmSubject())
.setBody(dataContract.parmPrintSettings().parmEMailContract().parmBody())
.addAttachment(new System.IO.MemoryStream(reportBytes), _filename);*/
//Customer specific attachments via email
messageBuilder.setFrom(fromAddress)
.addTo(dataContract.parmPrintSettings().parmEMailContract().parmTo())
.addCc(dataContract.parmPrintSettings().parmEMailContract().parmCc())
.setSubject(dataContract.parmPrintSettings().parmEMailContract().parmSubject())
.setBody(dataContract.parmPrintSettings().parmEMailContract().parmBody())
.addAttachment(DocumentManagement::getAttachmentStream(fileDocuRef), strFmt('%1.%2', fileDocuRef.Name, fileDocuRef.fileExtension()));
//Final Attachment to the mailer
var mailer = SysMailerFactory::getNonInteractiveMailer();
mailer.sendNonInteractive(messageBuilder.getMessage());
}
}
}
Kindly suggest.
Regards