i am trying to create batch to create customer statement email, but the i am able to send with no customer statement content. However, the content does exist by manually with the same parameters. The code is shown as below.
_args.record(custTable);
str ext = SRSPrintDestinationSettings::findFileNameType(SRSReportFileFormat::PDF, SRSImageFileFormat::BMP);
fileName = custTable.AccountNum + ext;
controller = new CustAccountStatementExtController();
controller.parmReportName(reportName);
contract = controller.parmReportContract().parmRdpContract();
contract.parmFromDate(mkdate(1,1, 2000));
contract.parmToDate(DateTimeUtil::getSystemDate(DateTimeUtil::getUserPreferredTimeZone()));
contract.parmOnlyOpen(true);
controller.parmArgs(_args);
srsReportRun = controller.parmReportRun() as SrsReportRunImpl;
controller.parmReportRun(srsReportRun);
controller.parmReportContract().parmPrintSettings().printMediumType(SRSPrintMediumType::File);
controller.parmReportContract().parmPrintSettings().overwriteFile(false);
controller.parmReportContract().parmPrintSettings().fileFormat(SRSReportFileFormat::PDF);
controller.parmReportContract().parmPrintSettings().fileName(fileName);
controller.parmShowDialog(false);
controller.startOperation();
SRSReportRunService srsReportRunService = new SrsReportRunService();
srsReportRunService.getReportDataContract(controller.parmReportContract().parmReportName());
srsReportRunService.preRunReport(controller.parmReportContract());
Map reportParametersMap = srsReportRunService.createParamMapFromContract(controller.parmReportContract());
Microsoft.Dynamics.AX.Framework.Reporting.Shared.ReportingService.ParameterValue[] parameterValueArray = SrsReportRunUtil::getParameterValueArray(reportParametersMap);
SRSProxy srsProxy = SRSProxy::constructWithConfiguration(controller.parmReportContract().parmReportServerConfig());
System.Byte[] reportBytes = srsproxy.renderReportToByteArray(controller.parmreportcontract().parmreportpath(),
parameterValueArray,
controller.parmReportContract().parmPrintSettings().fileFormat(),
controller.parmReportContract().parmPrintSettings().deviceinfo());
System.Net.Mime.ContentType contType = new System.Net.Mime.ContentType();
contType.MediaType = 'application/pdf';
if (reportBytes)
{
// Converting byte array to memory stream
System.IO.MemoryStream stream = new System.IO.MemoryStream(reportBytes);
System.Byte[] bytes = stream.ToArray();
System.IO.MemoryStream newStream = new System.IO.MemoryStream(bytes);
// Upload file to temp storage and direct the browser to the file URL
//File::SendFileToUser(stream, controller.parmReportContract().parmPrintSettings().parmFileName());
stream.Position = 0;
str fileContentType = System.Web.MimeMapping::GetMimeMapping(fileName);
contType.Name = fileName;
// Attach the file to a record using stream object
//addedRecord = DocumentManagement::attachFile(custTable.TableId,custTable.RecId,custTable.DataAreaId, 'File', stream, fileName, fileContentType,'PDF file attached');
//sender = SysEmailParameters.SMTPUserName;
//pwd = SysEmailParameters::password();
sender = sysEmailTable.SenderAddr;
email = custTable.email();
ccEmail = '';
ccEmail = CustParameters::find().CustomerSOACC;
if (email)
{
var messageBuilder = new SysMailerMessageBuilder();
if(ccEmail != '')
{
messageBuilder.addTo(email)
.setSubject(strFmt("%1 - %2", SysEmailMessageTable::find(CustParameters::find().CustomerSOAEmailITemp,"en-us").Subject, custTable.name()))
.setBody(SysEmailMessageTable::find(sysEmailTable.EmailId,'en-us').Mail)
.addCC(ccEmail);
}
else
{
messageBuilder.addTo(email)
.setSubject(strFmt("%1 - %2", SysEmailMessageTable::find(CustParameters::find().CustomerSOAEmailITemp,"en-us").Subject, custTable.name()))
.setBody(SysEmailMessageTable::find(sysEmailTable.EmailId,'en-us').Mail);
//.addCC(ccEmail);
}
if (sender)
{
messageBuilder.setFrom(sender,sysEmailTable.SenderName);
}
if (newStream != null)
{
messageBuilder.addAttachment(newStream,fileName,contType.MediaType);
}
SysMailerFactory::sendNonInteractive(messageBuilder.getMessage());
//info("Email for Customer Account statement was sent Successfully..");