class MFL_SalesOrderOrderEmailBatchJob extends RunBaseBatch
{
public static void main(Args _args)
{
MFL_SalesOrderOrderEmailBatchJob SalesOrderOrderEmailBatchJob;
SalesOrderOrderEmailBatchJob = new MFL_SalesOrderOrderEmailBatchJob();
if (SalesOrderOrderEmailBatchJob.prompt())
{
SalesOrderOrderEmailBatchJob.run();
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public ClassDescription caption()
{
ClassDescription ret;
ret = super();
ret = "OmniChannel SalesOrder Email Batch Job";
return ret;
}
void run()
{
this.email();
}
public container pack()
{
return [#CurrentVersion];
}
public boolean unpack(container packedClass)
{
//Deserializes the packedClass parameter value to an instance of the RunBase class.
boolean isSuccessful;
Version version = RunBase::getVersion(packedClass);
container base;
;
switch (version)
{
case #CurrentVersion:
{
[version, base] = packedClass;
isSuccessful = true;
break;
}
default :
return false;
}
return isSuccessful;
}
public boolean runsImpersonated()
{
return true;
}
public boolean canGoBatch()
{
return true;
}
public System.IO.Stream runAndSaveSSRSReport(Str Storeid)
{
SrsReportRunController ssrsController = new SrsReportRunController();
Pwc_OmniEmailContractClass Contract = new Pwc_OmniEmailContractClass();
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();
SRSPrintDestinationSettings printerSettings;
str ReportPath;
SRSReportRUN srsReportRun;
System.String[] files;
int filecount;
int i;
System.IO.Stream stream;
//folder = WianAPI::getTempPath()+"\Report";
//folder = "C:\\Pwc_Mail";
ReportPath = Storeid + "Pending Omni Order"+".CSV";
ssrsController.parmReportName(ssrsReportStr(Pwc_OmniEmail, Report));
ssrsController.parmExecutionMode(SysOperationExecutionMode::Synchronous);
ssrsController.parmShowDialog(false);
Contract.parmStoreId(Storeid);
ssrsController.parmReportContract().parmRdpContract(Contract);
//link the printer settings to the controller
printerSettings = ssrsController.parmReportContract().parmPrintSettings();
//print to pdf and always overwrite if the file exists
printerSettings.overridePrintContractSettings(true);
printerSettings.printMediumType(SRSPrintMediumType::File);
printerSettings.fileFormat(SRSReportFileFormat::Excel);
printerSettings.overwriteFile(true);
printerSettings.fileName(@ReportPath);
ssrsController.parmReportContract().parmReportServerConfig(SRSConfiguration::getDefaultServerConfiguration());
ssrsController.parmReportContract().parmReportExecutionInfo(executionInfo);
srsReportRunService.getReportDataContract(ssrsController.parmreportcontract().parmReportName());
srsReportRunService.preRunReport(ssrsController.parmreportcontract());
reportParametersMap = srsReportRunService.createParamMapFromContract(ssrsController.parmReportContract());
parameterValueArray = SrsReportRunUtil::getParameterValueArray(reportParametersMap);
srsProxy = SRSProxy::constructWithConfiguration(ssrsController.parmReportContract().parmReportServerConfig());
// Actual rendering to byte array
reportBytes = srsproxy.renderReportToByteArray(ssrsController.parmreportcontract().parmreportpath(),
parameterValueArray,
printerSettings.fileFormat(),
printerSettings.deviceinfo());
container binData;
Binary binaryData;
System.IO.MemoryStream mstream = new System.IO.MemoryStream(reportBytes);
//binaryData = Binary::constructFromMemoryStream(mstream);
// this.SendEmailNotification(mstream,PackingSlipJour);
return mstream;
}
public void email()
{
MFL_OrderCancellation_Status OrderCancellation;
RETAIL_STOREEXTRAFIELDSTABLE STOREEXTRAFIELDSTABLE;
MFL_SalesOrderCreation SalesOrderCreation;
MFL_StrelinOutboundStatus StrelinOutboundStatus;
MFL_SalesOrderCancellationConformation SalesOrderCancellationConformation ;
MFL_SalesOrderStatus SalesOrderStatus;
SalesTable salestabe;
int orderstatus;
string20 salesnumber;
SysEmailParameters parameters = SysEmailParameters::find();
SMTPRelayServerName relayServer;
SMTPPortNumber portNumber;
SMTPUserName userName;
SMTPPassword password;
Str1260 subject,body;
InteropPermission interopPermission;
SysMailerSMTP smtp = new SysMailerSMTP();
SysMailerMessageBuilder mailer = new SysMailerMessageBuilder();
str emailBody1,emailBody2,emailBody3;
int i;
LogisticsElectronicAddressLocator resourceEmailAddress,fromEmailAddress = '';
str tomailaddress;
RetailStoreTable StoreTable;
//while select SalesOrderReleaseNumber,storecode from SalesOrderCreation notexists join
// StrelinOutboundStatus where StrelinOutboundStatus.SalesOrderReleaseNumber == SalesOrderCreation.SalesOrderReleaseNumber && StrelinOutboundStatus.MFL_SalesRecordStatus != MFL_SalesRecordStatus::S && StrelinOutboundStatus.MFL_SalesRecordStatus != MFL_SalesRecordStatus::C && StrelinOutboundStatus.SalesOrderReleaseNumber == '13053605'
while select crosscompany StoreTable where StoreTable.StoreNumber == '59705'
{
try
{
//select crosscompany STOREEXTRAFIELDSTABLE where STOREEXTRAFIELDSTABLE.STOREID ==SalesOrderCreation.storecode;
//if(STOREEXTRAFIELDSTABLE.Retail_storeemailid != '')
//{
System.IO.MemoryStream reportstream = this.runAndSaveSSRSReport(StoreTable.StoreNumber);
if (parameters.SMTPRelayServerName)
relayServer = parameters.SMTPRelayServerName;
portNumber = parameters.SMTPPortNumber;
userName = parameters.SMTPUserName;
fromEmailAddress = parameters.SMTPUserName;
password = SysEmailParameters::password();
if ((relayServer == '') || (userName == '') || (fromEmailAddress == '') || (password == ''))
{
throw error('Email parameters are missing');
}
subject = "Omni Pending order report";
resourceEmailAddress = 'manindra.kaku@pwc.com';
if (resourceEmailAddress == '')
throw error(strFmt('Resource Email address is blank'));
try
{
new InteropPermission(InteropKind::ClrInterop).assert();
System.Net.Mail.AttachmentCollection mailAttachementCollection;
System.Net.Mail.Attachment mailAttachment;
System.Net.Mail.MailMessage mailMessage;
System.Net.Mail.SmtpClient myMail;
System.Net.Mail.MailAddressCollection mailToCollection;
System.Net.Mail.MailAddressCollection mailCCCollection;
System.Net.Mail.MailAddress mailFrom;
System.Net.Mail.MailAddress mailTo;
System.Net.Mail.MailAddress mailCC;
str CcMailAddress,pwd,mailfrom_check,smtpServer;
int SMTPPort;
ListEnumerator le;
List ccList,toList;
System.IO.Stream stream,fileStream;
ccList = strSplit(tomailaddress, ';');
mailFrom = new System.Net.Mail.MailAddress(fromEmailAddress);
mailTo = new System.Net.Mail.MailAddress(resourceEmailAddress);
// mailCC = new System.Net.Mail.MailAddress(tomailaddress);
mailMessage = new System.Net.Mail.MailMessage(mailFrom,mailTo);
//le = ccList.getEnumerator();
//mailCCCollection = mailMessage.get_CC();
//while (le.moveNext())
//{
// mailCCCollection.Add(strLTrim(strRTrim(le.current())));
//}
smtpServer = SysEmaiLParameters::find(false).SMTPRelayServerName;
mailmessage.set_Subject(strFmt(subject));
mailmessage.set_Body("Dear Store Team,\n Please find enclosed Open ECOM orders report for store");
mailAttachementCollection = mailMessage.get_Attachments();
mailAttachment = new System.Net.Mail.Attachment(reportstream, "OmniPendingOrder.CSV");
mailAttachementCollection.Add(mailAttachment);
SMTPPort = SysEmaiLParameters::find(false).SMTPPortNumber;
myMail = new System.Net.Mail.SmtpClient(smtpServer, SMTPPort);
myMail.set_EnableSsl(true);
pwd = SysEmaiLParameters::password();
myMail.set_EnableSsl(true);
pwd = SysEmaiLParameters::password();
mymail.set_Credentials(New System.Net.NetworkCredential(parameters.SMTPUserName, pwd));
mymail.Send(mailmessage);
CodeAccessPermission::revertAssert();
}
catch(Exception::CLRError)
{
System.Exception ex = ClrInterop::getLastException();
if (ex != null)
{
ex = ex.get_InnerException();
if (ex != null)
{
}
}
}
}
catch(Exception::CLRError)
{
System.Exception ex = ClrInterop::getLastException();
if (ex != null)
{
ex = ex.get_InnerException();
if (ex != null)
{
}
}
}
}
}
}