Fast Report - E-Mail Client (Batch) & E-Mail (Native)

From eStream Software
Revision as of 05:33, 18 April 2016 by Twfaung (talk | contribs) (→‎Setup)

Introduction

By default we got 2 types of Export to E Mail for Fast Report

  • E-Mail Client (Batch)
  • E-Mail (Native)

E-Mail Client (Batch)

Pros

  • Can use for Batch & Single Document E-Mail
  • Sended E-Mail will had keep in the Client E-Mail

Cons

  • Not easy to setup

E-Mail (Native)

Pros

  • Easy to Setup

Cons

  • No record is keeped for Sended E-Mail
  • Only For Single Document E-Mail

Setup

Below is example using Sales Invoice

01. Click the Code Tab
02. Enter below Script at the First line
E-Mail Script 1
//var lSQL : String;

procedure GetEMailTpl;
var D : TfrxDataSet;
begin
  D := Report.GetDataSet('plEMailTpl');
  D.First;
  While not D.Eof do begin
    if Trim(D.DisplayText('ReportName')) = Trim(Report.ReportOptions.Name) then
      Break;
    D.Next;
  end;
end;

//For E-Mail Client (Batch)
procedure OnGetEmailSettings(EmailSettings: TStrings);
var vEmail, vName: Variant;
begin
  GetEMailTpl;
  vEmail := Trim(<Document_CompanyBranch."Email">);
  if Trim(vEmail) = '' then
    vEmail := <plEMailTpl."AltEMail">;
  vName := Trim(<Main."CompanyName">);

  if (vName <> '' ) and (vEmail <> '') then begin
    EmailSettings.Values['Recipients'] := vEmail;
    EmailSettings.Values['Subject']    := <plEMailTpl."Subject">;
    EmailSettings.Values['Body']       := RichTextToPlainText(<plEMailTpl."Body">);
  end;
  //ID uses for display on progress dialog
  EmailSettings.Values['ID']        := vName;
end;

//For E-Mail (Native)
function SQL_Email_GetInfo(Info: Integer): string;
var vEmail, vName: Variant;
begin
  GetEMailTpl;
  Result := '';
  vEmail := Trim(<Document_CompanyBranch."Email">);
  if Trim(vEmail) = '' then
    vEmail := <plEMailTpl."AltEMail">;
  vName := Trim(<Main."CompanyName">);

  if (vName <> '' ) and (vEmail <> '') then begin
    case Info of
      SQL_Email_Address: Result := vEmail;
      SQL_Email_Subject: Result := <plEMailTpl."Subject">;
      SQL_Email_Content: Result := RichTextToPlainText(<plEMailTpl."Body">);
    end;
  end;
end;
03. Scroll down look for procedure SetUp
04. Copy below script & paste it between the begin & end; in procedure SetUp
  SQL := 'SELECT B.Description As ReportName, B.Description2 As Subject, B.Description3 As Body, '+
         'B.Remark1 AltEMail FROM SL_QT A ' +
         'INNER JOIN SL_QTDTL B ON (A.Dockey=B.Dockey) ' +
         'WHERE A.DocNo=''EMAIL'' ';
  AddDataSet('plEMailTpl', ['ReportName', 'Subject', 'Body', 'AltEMail'])
  .GetDBData(SQL);
05. Click File | Save As... to save the file (eg Sales Invoice 7 (GST 2)-Email)
06. Click File | Exit to exit the report design
07. Click Design again in the report designer for the file just save on Steps 5 (eg Sales Invoice 7 (GST 2)-Email)
08. Click the Code Tab
09. Remove the // at the First line of the Script
10. Click File | Save... to save the file
11. Click File | Exit to exit the report design