In Microsoft Dynamics Navision 2015 this feature is available at most of the places, but we can design for other earlier versions too.
Long-time back I was having this requirement from one of my client, those days I scanned lots of website and tried lots of method. This one I found compact and easy to use. Their after whenever I get similar requirements I prefer using this.
Today I wish to share the same with others, as I have used it in my several implementations and found it working perfect and tested with several clients.
Let’s see this, it could help someone getting his work done in easy way and can save lots of time from hit and try with several methods.
First step, I will create a function which will help us generating the file on Service tier and down load to local temporary folder, so that we can easily access and attach to our mail.
Let’s give it a meaningful name like: DownloadToClientFileName
I will define two parameters for this Function as below:
Var | Name | DataType | Subtype | Length |
No | ServerFileName | Text | 250 | |
No | ToFile | Text | 250 |
I will define Return Value of Function as: Text of Length 250
I will define Local Variables for Function as below:
Name | DataType | Subtype | Length |
ClientFileName | Text | 250 | |
objScript | Automation | 'Microsoft Script Control 1.0'.ScriptControl | |
CR | Text | 1 |
Now we will write Code for the Function as below:
ClientFileName := ToFile;
IF NOT DOWNLOAD(ServerFileName, '', '<TEMP>','', ClientFileName) THEN
EXIT('');
IF CREATE(objScript,TRUE,TRUE) THEN
BEGIN
CR := ' '; CR[1] := 13;
objScript.Language := 'VBScript';
objScript.AddCode(
'function RenameTempFile(fromFile, toFile)'+CR+
'set fso = createobject("Scripting.FileSystemObject")'+CR+
'set x = createobject("Scriptlet.TypeLib")'+CR+
'path = fso.getparentfoldername(fromFile)'+CR+
'toPath = path+"\"+left(x.GUID,38)'+CR+
'fso.CreateFolder toPath'+CR+
'fso.MoveFile fromFile, toPath+"\"+toFile'+CR+
'RenameTempFile = toPath'+CR+
'end function');
ClientFileName := objScript.Eval('RenameTempFile("'+ClientFileName+'","'+ToFile+'")');
ClientFileName := ClientFileName+'\'+ToFile;
END;
EXIT(ClientFileName);
Second Step, I will write code to call this function to attach the file to Mail and send using SMTP as below:
//SMTP is an Variable of Codeunit SMTP Mail
SMTP.CreateMessage(SenderName,SenderAddress,Recipient,Subject,Body,TRUE);
//SenderName,SenderAddress,Recipent is an email addresses
SMTP.AppendBody(Body);
CLEAR(MailReport);
//MailReport is Variable for Report of which output we want to use as attachment.
//Name & ToFile is Text type variable of Length 250
Name := STRSUBSTNO('Estimate No. %1.pdf', SalesHeader.”No.”);
//Creating File Name
ToFile := Name;
FileName := TEMPORARYPATH + ToFile;
//We are using temporarypath OS Variable to get the path for file
MailReport.SetMailFilters(SalesHeader);
MailReport.SAVEASPDF(FileName);
ToFile := DownloadToClientFileName(FileName, ToFile);
SMTP.AddAttachment(ToFile);
FILE.ERASE(FileName);
SMTP.Send;
Now you can create a template function and use where ever require.
Hello,
ReplyDeleteI'm working on NAV 2016 and getting an error about objSCript.Language not being defined in the CAL global symbols. could you help out? I've copied the cod and global\lcoals setup.