create report as PDF and send to emil
Thu Sep 12 2024 14:43:54 GMT+0000 (Coordinated Universal Time)
Saved by @MinaTimo
class NW_EmailAssetTransferRequestController extends SrsReportRunController
{
public static void main(args _args)
{
NW_EmailAssetTransferRequestContract contract = new NW_EmailAssetTransferRequestContract();
SRSPrintDestinationSettings settings;
SrsReportEMailDataContract emailContract;
AssetTransferRequest _AssetTransferRequest;
System.IO.MemoryStream _stream;
SysMailerMessageBuilder mailer = new SysMailerMessageBuilder();
SysMailerSMTP smtp = new SysMailerSMTP();
Filename fileName;
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();
NW_EmailAssetTransferRequestController controller = new NW_EmailAssetTransferRequestController();
_AssetTransferRequest = _args.record();
fileName = 'Asset Transfer.PDF';
contract.parmRequestId(_AssetTransferRequest.RequestId);
// Provide details to controller and add contract
controller.parmArgs(_args);
controller.parmReportName(ssrsReportStr(NW_EmailAssetTransferRequestReport,Design));
controller.parmShowDialog(false);
controller.parmLoadFromSysLastValue(false);
controller.parmReportContract().parmRdpContract(contract);
// Provide printer settings
settings = controller.parmReportContract().parmPrintSettings();
settings.printMediumType(SRSPrintMediumType::File);
settings.fileName(fileName);
settings.fileFormat(SRSReportFileFormat::PDF);
// Below is a part of code responsible for rendering the report
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());
// Actual rendering to byte array
reportBytes = srsproxy.renderReportToByteArray(controller.parmreportcontract().parmreportpath(),
parameterValueArray,
settings.fileFormat(),
settings.deviceinfo());
if (reportBytes)
{
// Converting byte array to memory stream
System.IO.MemoryStream stream = new System.IO.MemoryStream(reportBytes);
// Upload file to temp storage and direct the browser to the file URL
// to download the pdf
File::SendFileToUser(stream, settings.parmFileName());
stream.Position = 0;
str fileContentType = System.Web.MimeMapping::GetMimeMapping(fileName);
_stream = stream;
}
// UserInfo _UserInfo;
// select _UserInfo where _UserInfo.id == HcmWorker::find( _AssetTransferRequest.Employee);
str ToEmail = HcmWorker::find( _AssetTransferRequest.Employee).email(); // _UserInfo.networkAlias;
mailer.setSubject(" AssetTransfer Request Report");
mailer.setFrom("hub@sanabil.com");
mailer.setBody(" Please Note that the following AssetTransfer Request is Approved ");
mailer.addTo(ToEmail);
if (_AssetTransferRequest.AssetTypes == AssetTypes::OffBoarding && _AssetTransferRequest.Release==NoYes::Yes)
{
// mailer.addTo("");
}
mailer.addAttachment(_stream, strFmt('%1%2','AssetTransferRequest Report', '.PDF'));
// send email part
try
{
smtp.sendNonInteractive(mailer.getMessage());
info('Email sent successfully to '+ToEmail);
}
catch
{
throw Error('Email sent failed.');
}
}
}



Comments