Email sending
/// <summary>
/// Class to send email for - Confirm Now button
/// </summary>
class GopSalesConfirmationEmail
{
#ISOCountryRegionCodes
/// <summary>
/// Send Email
/// </summary>
/// <param name = "_custConfirmJour"> Table buffer </param>
/// <param name = "_salesTable"> Table buffer </param>
void emailConfirmation(CustConfirmJour _custConfirmJour,SalesTable _salesTable)
{
SysMailerMessageBuilder messagebuilder = new SysMailerMessageBuilder();
CustTable custTable;
container invoiceEmails;
SalesTable salesTable;
CustConfirmJour custConfirmJour = _custConfirmJour;
custTable = CustTable::find(custConfirmJour.OrderAccount);
if (SysCountryRegionCode::isLegalEntityInCountryRegion([#isoCL,#isoCO]))
{
invoiceEmails = DirParty::electronicAddressLocatorsByRole(custTable.Party, LogisticsElectronicAddressMethodType::Email, '@Gop:PurchaseOrderSend');
}
salesTable = _salesTable;
if(custConfirmJour && invoiceEmails != conNull())
{
try
{
messagebuilder.setSubject(strFmt('ORDER Confirmation PO '+salesTable.CustomerRef+' / '+ 'Sales order number '+custConfirmJour.SalesId));
messagebuilder.setBody(strFmt('ORDER Confirmation PO '+salesTable.CustomerRef+' / '+ 'Sales order number '+custConfirmJour.SalesId));//date2Str(DateTimeUtil::getToday(DateTimeUtil::getUserPreferredTimeZone()),213,DateDay::Digits2,DateSeparator::Slash,DateMonth::Digits2,DateSeparator::Slash,DateYear::Digits4)));
messagebuilder.addTo(con2Str(invoiceEmails,';'));
//generate packing slip pdf
//Set variables
SRSProxy srsProxy;
SRSCatalogItemName reportDesignLocal;
Map reportParametersMap;
SRSPrintDestinationSettings settings;
Filename fileName = strFmt('%1 _ %2.pdf', custConfirmJour.SalesId, custConfirmJour.ConfirmDocNum);
SrsReportRunController formLetterController = SalesConfirmController::construct();
SalesConfirmController controller = formLetterController;
SalesConfirmContract contract = new SalesConfirmContract();
System.Byte[] reportBytes = new System.Byte[0]();
SRSReportRunService srsReportRunService = new SrsReportRunService();
SRSReportExecutionInfo executionInfo = new SRSReportExecutionInfo();
Microsoft.Dynamics.AX.Framework.Reporting.Shared.ReportingService.ParameterValue[] parameterValueArray;
PrintMgmtReportFormatName printMgmtReportFormatName = PrintMgmtDocType::construct(PrintMgmtDocumentType::SalesOrderConfirmation).getDefaultReportFormat();
reportDesignLocal = printMgmtReportFormatName;
if (!reportDesignLocal)
{
if (CustParameters::find().GopSendConfirmationEmailinSpanish)
{
reportDesignLocal = ssrsReportStr(GopSalesConfirm, ReportLatamSpanish);
}
else
{
reportDesignLocal = ssrsReportStr(GopSalesConfirm, ReportLatamEnglish);
}
}
//set the report contract parameters
contract.parmRecordId(custConfirmJour.RecId);
contract.parmTableId(tableNum(custConfirmJour));
//set the report controller parameters
//set report name and design name
controller.parmReportName(reportDesignLocal);
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)
{
System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(reportBytes);
messagebuilder.addAttachment(memoryStream, fileName, 'application/pdf');
}
SysMailerFactory::sendNonInteractive(messagebuilder.getMessage());
//custPackingSlipJour.GopEmailSentToWarehouse = NoYes::Yes;
//ttsbegin;
//custPackingSlipJour.doUpdate();
//ttscommit;
info(strFmt("@SYS31964",con2Str(invoiceEmails,';')));
}
catch
{
error('Email error - check email history.');
}
}
else
{
info('This customer does not contain an email address with the purpose - Invoice');
}
}
}
Comments
Post a Comment