Incorrect Records in the Time Sheet

Task: It is impossible to set a correct time format in the Time Sheet report. Minutes should be limited to the value of 60.

Solution: In the MemFldRIGHTDURATION filed, change [INT([NET DURATION]) +0.6*FRAC([NET DURATION])] to [[NET DURATION]*60*60/(60*60*24)] and select the time format 00:00:00 in the DisplayFormat property.
image2020-11-21_12-42-37.png

Correcting Layouts for Direct Reports

Mission: To edit layouts for direct reports: remove (merge) unnecessary empty lines.

Solution: In the Menu items sold by category layout, on the code page, insert the script:

var S: string;

    D: Tdatetime;                                                                                  

    DS: TfrxDataSet;

procedure MasterData1OnAfterCalcHeight(Sender: TfrxComponent);

begin

 if ((Engine.FreeSpace < 2*memDataCLASSIFICATION.Height) and (Engine.FreeSpace > memDataCLASSIFICATION.Height))

   then memDataCLASSIFICATION.Frame.Typ := memDataCLASSIFICATION.Frame.Typ + ftBottom;

end;      


procedure memDataCLASSIFICATIONOnBeforePrint(Sender: TfrxComponent);

begin

  if S = <ReportSource."CLASSIFICATION">

   then memDataCLASSIFICATION.Frame.Typ := ftLeft + ftRight

   else memDataCLASSIFICATION.Frame.Typ := ftLeft + ftRight + ftTop;

 DS.Next;

 if DS.Eof

   then memDataCLASSIFICATION.Frame.Typ := memDataCLASSIFICATION.Frame.Typ + ftBottom

   else DS.Prior;

 S :=  <ReportSource."CLASSIFICATION">;  

end;


procedure Memo8OnBeforePrint(Sender: TfrxComponent);

begin

  if D = <ReportSource."SHIFTDATE">

   then Memo8.Frame.Typ := ftLeft + ftRight

   else Memo8.Frame.Typ := ftLeft + ftRight + ftTop;

 DS.Next;

 if DS.Eof

   then Memo8.Frame.Typ := Memo8.Frame.Typ + ftBottom

   else DS.Prior;

 D :=  <ReportSource."SHIFTDATE">;

end;


begin

  DS := Report.GetDataSet('ReportSource');                                                                  

  S := '';                    

end.

Insert the following script in the Menu items sold layout on the code page:

var D: Tdatetime;

    DS: TfrxDataSet;


procedure memDataDISHCODEOnBeforePrint(Sender: TfrxComponent);

begin

  if D = <ReportSource."SHIFTDATE">

   then memDataDISHCODE.Frame.Typ := ftLeft + ftRight

   else memDataDISHCODE.Frame.Typ := ftLeft + ftRight + ftTop;

 DS.Next;

 if DS.Eof

   then memDataDISHCODE.Frame.Typ := memDataDISHCODE.Frame.Typ + ftBottom

   else DS.Prior;

 D :=  <ReportSource."SHIFTDATE">;

end;


procedure Table_BodyOnAfterCalcHeight(Sender: TfrxComponent);

begin

 if ((Engine.FreeSpace < 2*memHeadDISHCODE.Height) and (Engine.FreeSpace > memHeadDISHCODE.Height))

   then memHeadDISHCODE.Frame.Typ := memHeadDISHCODE.Frame.Typ + ftBottom;

end;


begin

  DS := Report.GetDataSet('ReportSource');                                                                 

  D := 0;                     

end.

Insert the following script in the Common revenue layout on the code page:

var S: string;

    DS: TfrxDataSet;

procedure MasterData1OnAfterCalcHeight(Sender: TfrxComponent);

begin

 if ((Engine.FreeSpace < 2*Memo19.Height) and (Engine.FreeSpace > Memo19.Height))

   then Memo19.Frame.Typ := Memo19.Frame.Typ + ftBottom;

end;      


procedure Memo19OnBeforePrint(Sender: TfrxComponent);

begin

  if S = <ReportSource."CURRENCYTYPE">

   then Memo19.Frame.Typ := ftLeft + ftRight

   else Memo19.Frame.Typ := ftLeft + ftRight + ftTop;

 DS.Next;

 if DS.Eof

   then Memo19.Frame.Typ := Memo19.Frame.Typ + ftBottom

   else DS.Prior;

 S :=  <ReportSource."CURRENCYTYPE">;  

end;


begin

  DS := Report.GetDataSet('ReportSource');                                                                  

  S := '';                     

end.

Settings for Label Printing in r_keeper Delivery

Task: A script is required that will manually arrange a report, generate a label for each dish, and divide dish modifiers into lines.
image2020-11-21_12-43-26.png

Combo dishes are printed separately on the labels, i.e. the combo dish name and its components are shown separately.

Example: a combo dish, shown on one label

Assorted pizza:

  • - ½ of pizza 1
  • - ½ of pizza 2

Solution:

procedure Page1OnManualBuild(Sender: TfrxComponent);

var    

  dsDishes : TfrxDataSet;

  i : integer;

  modstr, newmodstr : string;                                                                         

begin                    

  dsDishes:=MasterData1.DataSet;

  dsDishes.First;                                                           

  while not dsDishes.eof do begin

    if dsDishes.Value('ComboDish') <> '' then

    begin

      dsDishes.next;

      continue;                          

    end;            

    if length(dsDishes.Value('ModifiersText')) >0 then

    begin

     modstr:=dsDishes.Value('ModifiersText');                                

     while pos(',',modstr)<>0 do

     begin

       newmodstr:='- '+copy(modstr,0,pos(',',modstr)-1)+#13;

       modstr:=copy(modstr,pos(',',modstr)+1,length(modstr));                      

     end;

     newmodstr:=newmodstr+'- '+modstr;                                                                             

    end;             

    for i:=1 to dsDishes.Value('Quantity') do begin

      Memo10.Text:=newmodstr;                                          

      Engine.ShowBand(MasterData1);        

    end;

    newmodstr:='';                                          

    dsDishes.Next;                  

  end;


end;


begin


end.

Fastreport Script for Merging Vertical Cells

Task: To add the Order Contents field to the Operations cube. Upon creating a new cube, columns display information incorrectly: if there are several deleted dishes in the same receipt, the Receipt Contents column duplicates the information.

Solution: Change the script

var prevOrder,     prevOrder3, prevShiftDate, prevDishName: string;

    DS, DS3: TfrxDataSet;  


procedure RKeeperDataOnBeforePrint(Sender: TfrxComponent);

begin

  prevOrder := '';

  prevOrder3 := '';    

  prevShiftDate := ''; 

  prevDishName := '';

end;


procedure Table_BodyOnAfterCalcHeight(Sender: TfrxComponent);

begin

{  if ((Engine.FreeSpace < 2*memDataORDERNAME.Height) and (Engine.FreeSpace > memDataORDERNAME.Height))

  then memDataORDERNAME.Frame.Typ := memDataORDERNAME.Frame.Typ + ftBottom; }  

end;


procedure memDataSHIFTDATEOnBeforePrint(Sender: TfrxComponent);

begin

  if prevShiftDate = DateToStr(DS.value('SHIFTDATE'))

   then memDataSHIFTDATE.Frame.Typ := ftLeft + ftRight

   else memDataSHIFTDATE.Frame.Typ := ftLeft + ftRight + ftTop;

  DS.Next;

  if DS.Eof

   then memDataSHIFTDATE.Frame.Typ := memDataSHIFTDATE.Frame.Typ + ftBottom

   else DS.Prior;

  if null<>DS.value('SHIFTDATE') then     

    prevShiftDate := DateToStr(DS.value('SHIFTDATE'))

  else

    prevShiftDate := '';

end;


procedure memDataORDERNAMEOnBeforePrint(Sender: TfrxComponent);

begin

  if prevOrder = (DS.value('ORDERNAME'))

   then memDataORDERNAME.Frame.Typ := ftLeft + ftRight

   else memDataORDERNAME.Frame.Typ := ftLeft + ftRight + ftTop;

  DS.Next;

  if DS.Eof

   then memDataORDERNAME.Frame.Typ := memDataORDERNAME.Frame.Typ + ftBottom

   else DS.Prior;

  if null<>DS.value('ORDERNAME') then                          

    prevOrder := (DS.value('ORDERNAME'))

  else

    prevOrder := '';

end;


procedure memDataDISH1OnBeforePrint(Sender: TfrxComponent);

begin

  if (prevDishName = (DS3.value('DISH1')))and(prevOrder3 = (DS3.value('ORDERNAME')))            

   then memDataDISH1.Frame.Typ := ftLeft + ftRight

   else memDataDISH1.Frame.Typ := ftLeft + ftRight + ftTop;

  DS3.Next;

  if DS3.Eof

   then memDataDISH1.Frame.Typ := memDataDISH1.Frame.Typ + ftBottom

   else DS3.Prior;

  if null<>DS3.value('DISH1') then                           

    prevDishName := (DS3.value('DISH1'))

  else

    prevDishName := '';

  if null<>DS3.value('ORDERNAME') then                          

    prevOrder3 := (DS3.value('ORDERNAME'))

  else

    prevOrder3 := '';          

end;


begin

  DS := Table_Body.Dataset; // Report.GetDataSet('ReportSource');                                                                 

  DS3 := Table_Body.Dataset; // Report.GetDataSet('ReportSource');                                                                  

  prevOrder := '';

  prevOrder3 := '';

  prevShiftDate := '';

  prevDishName := '';    

end.


  • No labels