Tuesday, October 1, 2013

Attendance Details page

Local Grid &grid;
Local Rowset &gridrs;
Local datetime &in_time;

&emplid = %EmployeeId;
ScrollFlush(Record.ZIN_ATTENDANCE);

If None(ZIN_ATND_SRCH.FROM_DT) Or
      None(ZIN_ATND_SRCH.THRU_DT) Then
   Error MsgGetText(20001, 395, "Message Not Found");
End-If;
<* Code Commented for future regularization requirement
If ZIN_ATND_SRCH.THRU_DT > %Date Then
   Error MsgGetText(20001, 390, "Message Not Found");
End-If;
*>
If ZIN_ATND_SRCH.THRU_DT.Value < ZIN_ATND_SRCH.FROM_DT.Value Then
   Error MsgGetText(20001, 385, "Message Not Found");
End-If;

&from_dt = ZIN_ATND_SRCH.FROM_DT;
&to_date = ZIN_ATND_SRCH.THRU_DT;

&diff_days = Abs(Days(ZIN_ATND_SRCH.FROM_DT) - Days(ZIN_ATND_SRCH.THRU_DT));
&curr_day = 0;

&grid = GetGrid(Page.ZIN_ATTEND_DETAILS, "ZIN_ATTENDANCE");
&gridrs = GetLevel0()(1).GetRowset(Scroll.ZIN_ATTENDANCE);

If &diff_days = 0 Then
   &diff_days = 0;
End-If;
For &I = 0 To &diff_days
   &run_day = AddToDate(&from_dt, 0, 0, &curr_day);
   &String = DateTimeToLocalizedString(&run_day, "EEEEEEE");
   &curr_day = &curr_day + 1;
   &gridrs.InsertRow(&curr_day);
   &gridrs(&curr_day).ZIN_DERIVED_LVE.BEGIN_DT.Value = &run_day;
   &gridrs(&curr_day).DERIVED_HR.DAY_OF_WEEK.Value = &String;
   /* ####### Hussain 09/06/2009 added 'SC" & 'DC' for issue CQPSP00039020 ##############*/
   SQLExec("SELECT 'lve' FROM PS_ZIN_LVE_REQUEST WHERE ZIN_LVE_APPROVE_FG IN ('A','SA','SC','DC') AND EMPLID=:1 AND :2 BETWEEN BEGIN_DT AND RETURN_DT", &emplid, &run_day, &flag_lv);
  
   SQLExec("SELECT (SELECT XLATLONGNAME FROM PSXLATITEM WHERE FIELDNAME='ZIN_REASON' AND FIELDVALUE=ZIN_REASON),ZIN_IN_TIME_DTTM FROM PS_ZIN_ATTENDANCE WHERE EMPLID=:1 AND  SUBSTRING(CONVERT(CHAR,ZIN_IN_TIME_DTTM,121), 1, 10)=:2", &emplid, &run_day, &flag_at, &in_time);
  
   /* #############  09/06/2009 added the columns ZIN_REASON,ZIN_APRV_STATUS for cancel AMS enhancement ######################*/
  
   SQLExec("SELECT 'reg',ZIN_REASON,ZIN_APRV_STATUS FROM PS_ZIN_ATND_REGCHK where EMPLID=:1 AND SUBSTRING(CONVERT(CHAR,DATE,121), 1, 10)=:2", &emplid, &run_day, &flag_rg, &reg_reason, &approve_status);
  
   SQLExec("SELECT DESCR FROM PS_ZIN_LVE_SCHEDUL S, PS_ZIN_HOLIDAY_DT H WHERE  S.BEGIN_DT =(SELECT MAX(S_ED.BEGIN_DT) FROM PS_ZIN_LVE_SCHEDUL S_ED WHERE S_ED.EMPLID = S.EMPLID AND S_ED.EMPL_RCD = S.EMPL_RCD    AND S_ED.BEGIN_DT <= :2) AND S.ZIN_HDAY_SCHD=H.ZIN_HDAY_SCHD AND S.EMPLID=:1  AND  H.ZIN_HDAY_DT=:2", &emplid, &run_day, &descr);
  
   SQLExec("SELECT ZIN_LVEW_SCHD_ID FROM PS_ZIN_LVE_SCHEDUL S WHERE  S.BEGIN_DT =(SELECT MAX (S_ED.BEGIN_DT) FROM PS_ZIN_LVE_SCHEDUL S_ED WHERE S_ED.EMPLID = S.EMPLID AND S_ED.EMPL_RCD = S.EMPL_RCD AND S_ED.BEGIN_DT <= :1) AND EMPLID=:2", &run_day, &emplid, &work_tmpl);
  
   &gridrs(&curr_day).DERIVED_HR.DESCR100.Value = "No Data Found";
  
   If All(&flag_at) Then
      &gridrs(&curr_day).DERIVED_HR.DESCR100.Value = &flag_at;
   End-If;
   If All(&descr) Then
      &gridrs(&curr_day).DERIVED_HR.DESCR100.Value = &descr | " Holiday";
   End-If;
   /*########### 21/07/2009 - In time Enhancement ##############*/
   If All(&in_time) Then
      &intime = DateTimeToLocalizedString(&in_time, "hh:mm:ss aaa");
      &gridrs(&curr_day).DERIVED_HR.DESCR.Value = &intime;
   End-If;
   /*###########  21/07/2009 - In time Enhancement ##############*/
   /*###########  17/07/2009 - Reasons Enhancement ##############*/
  
   If All(&flag_at) And
         (&flag_at = "Present" Or
            &flag_at = "Leave Without Pay" Or
            &flag_at = "Training") Then
      &gridrs(&curr_day).DERIVED_HR.DESCR100.Value = &flag_at;
   Else
      If All(&flag_at) And
            (&flag_at <> "Present" Or
               &flag_at <> "Leave Without Pay" Or
               &flag_at <> "Training") Then
         &gridrs(&curr_day).DERIVED_HR.DESCR100.Value = "Attendance Regularized";
      End-If;
   End-If;
   /*###########  17/07/2009 - Reasons Enhancement ##############*/
  
   /* #############  09/06/2009 added the condition "C" for ams Enhancement ############### */
   If All(&flag_rg) And
         (None(&reg_reason) Or
            &approve_status = "C") Then
      &gridrs(&curr_day).DERIVED_HR.DESCR100.Value = "Absent";
   End-If;
  
   If All(&flag_rg) And
         All(&reg_reason) And
         &approve_status <> "C" Then
      &gridrs(&curr_day).DERIVED_HR.DESCR100.Value = "Regularization Applied";
   End-If;
  
   If All(&flag_lv) Then
      &gridrs(&curr_day).DERIVED_HR.DESCR100.Value = "Leave Application";
   End-If;
   If All(&flag_lv) And
         &flag_at = "Leave Regularization" Then
      &gridrs(&curr_day).DERIVED_HR.DESCR100.Value = &flag_at;
   Else
      If All(&flag_lv) And
            All(&flag_at) Then
         &gridrs(&curr_day).DERIVED_HR.DESCR100.Value = &flag_at | " / Leave * ";
      End-If;
   End-If;
  
   If &work_tmpl = "NORMAL WRK" Then
      If &String = "Sunday" Or
            &String = "Saturday" Then
         &gridrs(&curr_day).DERIVED_HR.DESCR100.Value = "Weekly Holiday";
      End-If;
   End-If;
   If &work_tmpl = "FSO WORK" Then
      If &String = "Sunday" Then
         &gridrs(&curr_day).DERIVED_HR.DESCR100.Value = "Weekly Holiday";
      End-If;
   End-If;
End-For;

No comments: