/// <summary>
/// Service class to send the mail
/// </summary>
class PMEStockTransferIntegrationReportService
{
/// <summary>
/// Sending mail with PDF attachement
/// </summary>
[SysEntryPointAttribute(false)]
public void processRecords()
{
date integationDate;
PMEIntegrationMailSetup integrationMailSetup;
SysEmailParameters sysEmailParameters;
integationDate = DateTimeUtil::getToday(DateTimeUtil::getUserPreferredTimeZone());
Filename fileName = "StockTransferIntegrationFailedData"+ any2Str(integationDate)+ ".pdf";
PMEStockTransferIntegrationController controller = new PMEStockTransferIntegrationController();
SRSPrintDestinationSettings settings;
Array arrayFiles;
System.Byte[] reportBytes = new System.Byte[0]();
SRSProxy srsProxy;
SRSReportRunService srsReportRunService = new SrsReportRunService();
Microsoft.Dynamics.AX.Framework.Reporting.Shared.ReportingService.ParameterValue[] parameterValueArray;
Map reportParametersMap;
SRSReportExecutionInfo executionInfo = new SRSReportExecutionInfo();
Args args = new Args();
controller.parmArgs(args);
controller.parmReportName(ssrsReportStr(PMEStockTransferIntegrationReport,Report));
controller.parmShowDialog(false);
controller.parmLoadFromSysLastValue(false);
settings = controller.parmReportContract().parmPrintSettings();
settings.printMediumType(SRSPrintMediumType::File);
settings.fileName(fileName);
settings.fileFormat(SRSReportFileFormat::PDF);
controller.parmReportContract().parmReportServerConfig(SRSConfiguration::getDefaultServerConfiguration());
controller.parmReportContract().parmReportExecutionInfo(executionInfo);
srsReportRunService.getReportDataContract(controller.parmreportcontract().parmReportName());
srsReportRunService.preRunReport(controller.parmreportcontract());
reportParametersMap = srsReportRunService.createParamMapFromContract(controller.parmReportContract());
parameterValueArray = SrsReportRunUtil::getParameterValueArray(reportParametersMap);
srsProxy = SRSProxy::constructWithConfiguration(controller.parmReportContract().parmReportServerConfig());
reportBytes = srsproxy.renderReportToByteArray(controller.parmreportcontract().parmreportpath(),
parameterValueArray,
settings.fileFormat(),
settings.deviceinfo());
if (reportBytes)
{
System.IO.MemoryStream stream = new System.IO.MemoryStream(reportBytes);
File::SendFileToUser(stream, settings.parmFileName());
stream.Position = 0;
str fileContentType = System.Web.MimeMapping::GetMimeMapping(fileName);
var messageBuilder = new SysMailerMessageBuilder();
select firstonly integrationMailSetup
where integrationMailSetup.IntegrationName == 'Stock Transfer Integration';
select firstonly SMTPUserName from sysEmailParameters;
str sendFromEmail = sysEmailParameters.SMTPUserName;
str sendToEmail = integrationMailSetup.ToAddress;
str sendCCEmail = integrationMailSetup.CCAddress;
str body = "Hi Team,<o:p></o:p></p><p></p><p>Please find the attached report. Kindly review and take necessary actions. <o:p></o:p></p><p></p><p>Regards,<o:p></o:p></p><p></p><p><span style='font-size:12.0pt'>AX Team<o:p></o:p></span></p>";
messageBuilder.addTo(sendToEmail)
.setSubject("Stock transfer integration failed details")
.setBody(Body)
.addCC(sendCCEmail);
if (sendFromEmail)
{
messageBuilder.setFrom(sendFromEmail);
}
if (stream != null)
{
messageBuilder.addAttachment(
stream,
fileName);
}
SysMailerFactory::sendNonInteractive(messageBuilder.getMessage());
}
}