Create the class with below methods
public class OnhandQty extends RunBaseBatch
{
SysMailer mailer;
boolean check;
SysEmailParameters parameters;
#define.CurrentVersion(1)
#localmacro.CurrentList
//onhandQty
//
methodVariable2
#endmacro
}
public static void main(Args args)
{
OnhandQty onhandQty;
;
onhandQty = new OnhandQty();
onhandQty.run();
}
void run()
{
this.WriteCSV();
if(check == true)
{
this.EmailCheck();
}
}
// This method is
used to bring the data and Save it into CSV file
void WriteCSV()
{
Commaio file;
container line,line1;
FileIOPermission permission;
InventTable inventTable;
MinimumQty minimumQty;
//
#define.filename("C:\\Report\\On-Hand.csv")
#File
;
check
= false;
permission = new FileIOPermission(#filename,#io_write);
permission.assert();
file
= new Commaio(#filename , #io_write);
file
= new Commaio(#filename , 'W');
if( !file ||
file.status() != IO_Status::Ok)
{
throw error("File Cannot be opened");
}
line1 =
["Item Id","Description","On
Hand","Min-ReOrder Qty"];
file.writeExp(line1);
while select minimumQty
{
if(minimumQty.MinQty > minimumQty.Onhand &&
minimumQty.MinQty !=0)
{
line =
[minimumQty.ItemID,InventTable::find(minimumQty.ItemID).ItemName
,minimumQty.Onhand,minimumQty.MinQty];
file.writeExp(line);
check = true;
}
}
}
// By using this method
we can send this CSV file to users in the List..
void EmailCheck()
{
//Set permissionSet2 = new
Set(Types::Class);
InteropPermission permission = new
InteropPermission(InteropKind::ComInterop);
;
CodeAccessPermission::revertAssert();
// permissionSet2.add(new
InteropPermission(InteropKind::ClrInterop));
// permission = new
InteropPermission(InteropKind::ComInterop);
// permissionSet2.add(new
FileIOPermission(_attachmentFilename, 'r'));
permission.assert();
mailer = new SysMailer();
parameters = SysEmailParameters::find();
if (parameters.SMTPRelayServerName)
{
mailer.SMTPRelayServer(parameters.SMTPRelayServerName,
parameters.SMTPPortNumber,
parameters.SMTPUserName,
SysEmailParameters::password(),
parameters.NTLM);
}
else
{
mailer.SMTPRelayServer(parameters.SMTPServerIPAddress,
parameters.SMTPPortNumber,
parameters.SMTPUserName,
SysEmailParameters::password(),
parameters.NTLM);
}
mailer.fromAddress('ABC@XYZ.com,');
mailer.tos().appendAddress('xyx@abc.com’);
mailer.tos().appendAddress('abc@abc.com);
mailer.htmlBody('Find
the attachment and update the on hand quantiy. <Br>\n NOTE:This is a
System Generated
Email. Please do not Reply.');
mailer.subject('Inventory
On Hand Status');
//mailer.attachments().add("C:\\Report\\On-Hand.csv");
CodeAccessPermission::revertAssert();
}
// Save the
values
public container pack()
{
return [#CurrentVersion];
}
// Retrieve those
values
public boolean unpack(container packedClass)
{
Version version =
RunBase::getVersion(packedClass);
switch (version)
{
case
#CurrentVersion:
[version] =
packedClass;
break;
default:
return false;
}
return true;
}
You Know friends here one more issue is there,
in this process we need to assign the email ids for the users manually, but
that is not the correct process for technical peoples.
Avoid those
process, create one form like parameter form there users can add /remove the
email id. System will automatically take the ids from that form and emails
every day.
After completing
above process we need to configure the batch in Batch server.
Go to ->Administration Module->set
Up->Batch Group
Here we need to
select the batch server
Over view tab
Batch Server Tab
Administration -> set Up -> Server
configuration->
Select the class what we wrote for sending Emails to users , choose the class and save it .
Go to Functions ->change status-> change the status to waiting
Final Step is Go to Recurrences -> Here we
can give the timings based on the time give below.
Thanks
DAX..
Administration -> set Up -> Server configuration->
Select the class what we wrote for sending Emails to users , choose the class and save it .
Final Step is Go to Recurrences -> Here we can give the timings based on the time give below.
DAX..
Very Nice Explanation...!
ReplyDelete