Tuesday, October 1, 2013

custom method's

/* #####################################################
Description: Common application Package for all custom method's
####################################################### */
class ReportBase
   method ReportBase();
   method GetFieldValue(&Record_Name As string, &Rec_Field As string, &Key1 As string, &Key2 As string, &Key3 As string, &Key4 As string, &Key5 As string) Returns string;
   method getjobfieldvalue(&Rec_Field As string, &Key1 As string) Returns string;
   method GetName(&Emplid As string) Returns string;
   method println_to_stdout(&message As string);
   method println_to_stderr(&message As string);
   method redirect_stderr(&fileName As string);
   method redirect_stdout(&fileName As string);
   method FIND_SPECIAL_CHARS(&VALUE As string) Returns boolean;
   method Validate_Name(&Name As string) Returns boolean;
end-class;

method ReportBase
  
end-method;

method getjobfieldvalue
   /+ &Rec_Field as String, +/
   /+ &Key1 as String +/
   /+ Returns String +/
   Local string &fldvalue;
  
   SQLExec("SELECT " | &Rec_Field | " FROM PS_JOB A WHERE A.EFFDT =(SELECT MAX(A_ED.EFFDT) FROM PS_JOB A_ED WHERE A.EMPLID = A_ED.EMPLID  AND A.EMPL_RCD = A_ED.EMPL_RCD  AND A_ED.EFFDT <= SUBSTRING(CONVERT(CHAR,GETDATE(),121), 1, 10))     AND A.EFFSEQ =(SELECT MAX(A_ES.EFFSEQ) FROM PS_JOB A_ES WHERE A.EMPLID = A_ES.EMPLID  AND A.EMPL_RCD = A_ES.EMPL_RCD  AND A.EFFDT = A_ES.EFFDT) AND A.EMPLID=:1", &Key1, &fldvalue);
   Return &fldvalue;
end-method;

/* GetFieldValue method will take record name,field name,key values as input and returns the specified field value */
method GetFieldValue
   /+ &Record_Name as String, +/
   /+ &Rec_Field as String, +/
   /+ &Key1 as String, +/
   /+ &Key2 as String, +/
   /+ &Key3 as String, +/
   /+ &Key4 as String, +/
   /+ &Key5 as String +/
   /+ Returns String +/
   Local Record &RCD = CreateRecord(@("Record." | &Record_Name));
   Local string &str = "";
   Local string &Rec_Name = "";
   Local string &Field_Name = "";
   Local number &Counter = 0;
   Local string &Descr = "";;
   Local string &Cnt = "";
   Local string &SqlExec_Eff, &SqlExec_No_Eff;
   Local boolean &flag;
   Local string &Where = "";
   Local string &Eff_SQL = "SELECT %firstrows(1) A." | &Rec_Field | " FROM %Table(:1) A WHERE %EffDtCheck(:1 B, A, %CurrentDateIn) /*AND A.EFF_STATUS = 'A'*/";
   Local string &No_Eff_SQL = "SELECT %firstrows(1) A." | &Rec_Field | " FROM %Table(:1) A WHERE 1=1 ";
  
  
   Local SQL &SQL1 = CreateSQL("SELECT DISTINCT RECNAME,FIELDNAME,FIELDNUM+1 FROM PSRECFIELD WHERE RECNAME=:1 AND USEEDIT & 1 > 0 ORDER BY 3", &Record_Name);
   While &SQL1.Fetch(&Rec_Name, &Field_Name, &Cnt)
      If &Field_Name = "EFFDT" Then
         &flag = True;
      Else
         &flag = False;
         &str = " AND " | &Field_Name | "=:" | &Cnt;
         &Where = &Where | &str;
         &Counter = &Counter + 1;
      End-If;
     
   End-While;
  
   Local string &Final_Eff_SQL = &Eff_SQL | &Where;
   Local string &Final_No_Eff_SQL = &No_Eff_SQL | &Where;
  
   Evaluate &Counter
   When 1
      If &flag Then
         SQLExec(&Final_Eff_SQL, &RCD, &Key1, &Descr);
      Else
         SQLExec(&Final_No_Eff_SQL, &RCD, &Key1, &Descr);
      End-If;
      Break;
   When 2
      If &flag Then
         SQLExec(&Final_Eff_SQL, &RCD, &Key1, &Key2, &Descr);
      Else
         SQLExec(&Final_No_Eff_SQL, &RCD, &Key1, &Key2, &Descr);
      End-If;
      Break;
   When 3
      If &flag Then
         SQLExec(&Final_Eff_SQL, &RCD, &Key1, &Key2, &Key3, &Descr);
      Else
         SQLExec(&Final_No_Eff_SQL, &RCD, &Key1, &Key2, &Key3, &Descr);
      End-If;
      Break;
     
   When 4
      If &flag Then
         SQLExec(&Final_Eff_SQL, &RCD, &Key1, &Key2, &Key3, &Key4, &Descr);
      Else
         SQLExec(&Final_No_Eff_SQL, &RCD, &Key1, &Key2, &Key3, &Key4, &Descr);
      End-If;
      Break;
   When 5
      If &flag Then
         SQLExec(&Final_Eff_SQL, &RCD, &Key1, &Key2, &Key3, &Key4, &Key5, &Descr);
      Else
         SQLExec(&Final_No_Eff_SQL, &RCD, &Key1, &Key2, &Key3, &Key4, &Key5, &Descr);
      End-If;
      Break;
   When-Other
      Error "Unexpected Parameters Passed"
   End-Evaluate;
  
   Return &Descr;
end-method;

method GetName
   /+ &Emplid as String +/
   /+ Returns String +/
   Local string &Name;
   SQLExec("SELECT FIRST_NAME + ' ' + LAST_NAME FROM PS_PERSON_NAME WHERE EMPLID = :1", &Emplid, &Name);
   Return &Name
end-method;

/* * Print a line of text to stdout */
method println_to_stdout
   /+ &message as String +/
  
   Local JavaObject &jSystem = GetJavaClass("java.lang.System");
   Local JavaObject &jOutStream = &jSystem.out;
   Local JavaObject &jCls = GetJavaClass("java.lang.Class");
   Local JavaObject &jStringClass = &jCls.forName("java.lang.String");
   Local JavaObject &jPrintStreamCls = &jOutStream.getClass();
   Local JavaObject &jPrintlnArgTypes = CreateJavaObject("java.lang.Class[]", &jStringClass);
   Local JavaObject &jPrintlnMethod = &jPrintStreamCls.getDeclaredMethod("println", &jPrintlnArgTypes);
   &jPrintlnMethod.invoke(&jOutStream, CreateJavaObject("java.lang.Object[]", &message));
   rem ** I didn't find flushing necessary, but here is where you would flush the buffer if desired;
   &jOutStream.flush();
end-method;

/* * Print a line of text to stderr */
method println_to_stderr
   /+ &message as String +/
   Local JavaObject &jSystem = GetJavaClass("java.lang.System");
   Local JavaObject &jOutStream = &jSystem.err;
   Local JavaObject &jCls = GetJavaClass("java.lang.Class");
   Local JavaObject &jStringClass = &jCls.forName("java.lang.String");
   Local JavaObject &jPrintStreamCls = &jOutStream.getClass();
   Local JavaObject &jPrintlnArgTypes = CreateJavaObject("java.lang.Class[]", &jStringClass);
   Local JavaObject &jPrintlnMethod = &jPrintStreamCls.getDeclaredMethod("println", &jPrintlnArgTypes);
   &jPrintlnMethod.invoke(&jOutStream, CreateJavaObject("java.lang.Object[]", &message));
   &jOutStream.flush();
end-method;

rem If you want to use the PrintStream.print
 rem ** I didn't find flushing necessary, but here is where you would flush the buffer if desired;
/* * Redirect stdout to file */
method redirect_stdout
   /+ &fileName as String +/
   Local JavaObject &jSystem = GetJavaClass("java.lang.System");
   Local JavaObject &jfos_out = CreateJavaObject("java.io.FileOutputStream", &fileName, True);
   Local JavaObject &jps_out = CreateJavaObject("java.io.PrintStream", &jfos_out, True);
   &jSystem.setOut(&jps_out);
end-method;

/* * Redirect stderr to file */
method redirect_stderr
   /+ &fileName as String +/
   Local JavaObject &jSystem = GetJavaClass("java.lang.System");
   Local JavaObject &jfos_out = CreateJavaObject("java.io.FileOutputStream", &fileName, True);
   Local JavaObject &jps_out = CreateJavaObject("java.io.PrintStream", &jfos_out, True);
   &jSystem.setErr(&jps_out);
end-method;

method FIND_SPECIAL_CHARS
   /+ &VALUE as String +/
   /+ Returns Boolean +/
  
   Local number &LENGTH = Len(&VALUE);
   Local number &I;
   For &I = 1 To &LENGTH
     
      Local number &pos = &I;
     
      Local string &char = Substring(&VALUE, &I, 1);
     
      Local any &ASCII = Code(&char);
     
      Evaluate &ASCII
      When > 127
        
         Return True;
        
         Break;
        
      When = 13
        
      When = 10
        
         Break;
        
      When < 32
        
         Return True;
        
         Break;
        
      End-Evaluate;
     
   End-For;
  
   Return False;
end-method;

method Validate_Name
   /+ &Name as String +/
   /+ Returns Boolean +/
   Local number &len = Len(&Name);
   Local number &I;
   Local boolean &rflag = True;
   For &I = 1 To &len
     
      Local number &pos = &I;
      Local string &char = Substring(&Name, &I, 1);
      Local any &ASCII = Code(&char);
      If (&ASCII >= 65 And
            &ASCII <= 90) Or
            (&ASCII >= 97 And
               &ASCII <= 122) Then
      Else
         &rflag = False;
      End-If;
   End-For;
   Return &rflag;
end-method;

Overlapping Dates

For &i = 1 To &BusnRowset.ActiveRowCount
   For &j = (&i + 1) To &BusnRowset.ActiveRowCount
      If &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value = &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_CLAIM_TYP.Value Then
         If All(&BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value) Or
               All(&BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value) Then
            If &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value <= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value And
                  &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value >= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value Then
               Error MsgGetText(27000, 170, "Message Not Found");
            End-If;
            If &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value >= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_FROM_DT.Value And
                  &BusnRowset(&j).ECL_CLAIMS_BUSN.ECL_TO_DT.Value <= &BusnRowset(&i).ECL_CLAIMS_BUSN.ECL_TO_DT.Value Then
               Error MsgGetText(27000, 170, "Message Not Found");
            End-If;
         End-If;
      End-If;
   End-For;
End-For;

checklist code

/**********************************************************************************************
Date :05/01/2010
Description : 1.To insert the SOH and checklist.
***********************************************************************************************/
Local ApiObject &oSession;
Local ApiObject &oZinJobCi;
Local ApiObject &oJobCollection;
Local ApiObject &oJob;
Local ApiObject &oPSMessageCollection;
Local ApiObject &oPSMessage;
Local File &LogFile;
Local Record &record;
Local number &i, &k, &j, &seq;
Local string &strErrMsgSetNum, &strErrMsgNum, &strErrMsgText, &strErrType;
Local array of string &MyArray, &myarray2;
Local array of number &myarray1;
Local string &array;

Function insertintochecklistcd(&Emplid As string, &action_dt As date)
  
   SQLExec("DELETE FROM PS_EMPL_CHECKLIST WHERE EMPLID=:1 AND CHECKLIST_CD LIKE '%EXIT%'", &Emplid);
  
   SQLExec("DELETE FROM PS_EMPL_CHKLST_ITM WHERE EMPLID=:1 AND CHECKLIST_CD LIKE '%EXIT%'", &Emplid);
  
   &MyArray = CreateArray("EXIT01", "EXIT02", "EXIT03", "EXIT04", "EXIT05");
   For &i = 1 To &MyArray.Len
      &record = CreateRecord(Record.EMPL_CHECKLIST);
      &record.EMPLID.Value = &Emplid;
      &record.EMPL_RCD.Value = "0";
      &record.CHECKLIST_DT.Value = %Date;
      &record.CHECKLIST_CD.Value = &MyArray [&i];
      &record.RESPONSIBLE_ID.Value = "";
      &record.COMMENTS.Value = Null;
      &record.Insert();
   End-For;
  
   For &i = 1 To &MyArray.Len
      Evaluate &MyArray [&i]
      When = "EXIT01"
         &myarray1 = CreateArray(100, 200, 300, 400, 500, 600, 700, 800, 900);
         &myarray2 = CreateArray("EXIT01", "EXIT02", "EXIT03", "EXIT04", "EXIT05", "EXIT06", "EXIT47", "EXIT48", "EXIT49");
         Break;
      When = "EXIT02"
         &myarray1 = CreateArray(100, 200, 300, 400, 500, 600);
         &myarray2 = CreateArray("EXIT50", "EXIT51", "EXIT52", "EXIT53", "EXIT54", "EXIT55");
         Break;
      When = "EXIT03"
         &myarray1 = CreateArray(100, 200, 300, 400, 500, 600, 700);
         &myarray2 = CreateArray("EXIT24", "EXIT25", "EXIT45", "EXIT46", "EXIT56", "EXIT57", "EXIT58");
         Break;
      When = "EXIT04"
         &myarray1 = CreateArray(100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100);
         &myarray2 = CreateArray("EXIT14", "EXIT15", "EXIT16", "EXIT17", "EXIT18", "EXIT19", "EXIT20", "EXIT21", "EXIT22", "EXIT23", "EXIT44");
         Break;
      When = "EXIT05"
         &myarray1 = CreateArray(100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300);
         &myarray2 = CreateArray("EXIT31", "EXIT32", "EXIT33", "EXIT34", "EXIT35", "EXIT36", "EXIT37", "EXIT38", "EXIT39", "EXIT40", "EXIT41", "EXIT42", "EXIT43");
        
         Break;
      When-Other;
      End-Evaluate;
      &k = 1;
      For &j = 1 To &myarray1.Len
         &grade_flag = "";
         &array = &myarray2 [&k];
        
         &record = CreateRecord(Record.EMPL_CHKLST_ITM);
         &record.EMPLID.Value = &Emplid;
         &record.EMPL_RCD.Value = "0";
         &record.CHECKLIST_DT.Value = %Date;
         &record.CHECKLIST_CD.Value = &MyArray [&i];
         &record.CHECKLIST_SEQ.Value = &myarray1 [&j];
         &record.CHKLST_ITEM_CD.Value = &array;
         &record.ZIN_FWD_ACC_DT.Value = &action_dt;
         /****Layeeque 11-Oct-2010****/
         Evaluate &MyArray [&i]
         When = "EXIT01"
            Evaluate &array
            When = "EXIT03"
            When = "EXIT04";
               &record.BRIEFING_STATUS.Value = "X";
               Break;
            When = "EXIT01"
            When = "EXIT02"
            When = "EXIT05"
            When = "EXIT06"
            When = "EXIT47"
               SQLExec("SELECT 'X' FROM PS_JOB JOB WHERE JOB.EMPLID=:1 AND JOB.EMPL_RCD='0' AND JOB.EFFDT=(SELECT MAX(JOB_ED.EFFDT) FROM PS_JOB JOB_ED WHERE JOB.EMPLID=JOB_ED.EMPLID AND JOB.EMPL_RCD=JOB_ED.EMPL_RCD AND JOB_ED.EFFDT<=GETDATE()) AND JOB.EFFSEQ=(SELECT MAX(JOB_EQ.EFFSEQ) FROM PS_JOB JOB_EQ WHERE JOB.EMPLID=JOB_EQ.EMPLID AND JOB.EMPL_RCD=JOB_EQ.EMPL_RCD AND JOB_EQ.EFFDT=JOB.EFFDT) AND JOB.GRADE IN ('102','104','105')", &Emplid, &grade_flag);
               If &grade_flag = "X" Then
                  &record.BRIEFING_STATUS.Value = "X";
                 
               Else
                  &record.BRIEFING_STATUS.Value = "I";
               End-If;
               Break;
            When = "EXIT48"
            When = "EXIT49"
               &grade_flag = "";
               SQLExec("SELECT 'X' FROM PS_JOB JOB WHERE JOB.EMPLID=:1 AND JOB.EMPL_RCD='0' AND JOB.EFFDT=(SELECT MAX(JOB_ED.EFFDT) FROM PS_JOB JOB_ED WHERE JOB.EMPLID=JOB_ED.EMPLID AND JOB.EMPL_RCD=JOB_ED.EMPL_RCD AND JOB_ED.EFFDT<=GETDATE()) AND JOB.EFFSEQ=(SELECT MAX(JOB_EQ.EFFSEQ) FROM PS_JOB JOB_EQ WHERE JOB.EMPLID=JOB_EQ.EMPLID AND JOB.EMPL_RCD=JOB_EQ.EMPL_RCD AND JOB_EQ.EFFDT=JOB.EFFDT) AND JOB.GRADE NOT IN ('601','602','701','702','703')", &Emplid, &grade_flag);
               If &grade_flag = "X" Then
                  &record.BRIEFING_STATUS.Value = "X";
               Else
                  &record.BRIEFING_STATUS.Value = "I";
               End-If;
               Break;
              
            When-Other;
               &record.BRIEFING_STATUS.Value = "I";
               Break;
            End-Evaluate;
         When = "EXIT02"
            Evaluate &array
            When = "EXIT52"
               &grade_flag = "";
               SQLExec("SELECT 'X' FROM PS_JOB JOB WHERE JOB.EMPLID=:1 AND JOB.EMPL_RCD='0' AND JOB.EFFDT=(SELECT MAX(JOB_ED.EFFDT) FROM PS_JOB JOB_ED WHERE JOB.EMPLID=JOB_ED.EMPLID AND JOB.EMPL_RCD=JOB_ED.EMPL_RCD AND JOB_ED.EFFDT<=GETDATE()) AND JOB.EFFSEQ=(SELECT MAX(JOB_EQ.EFFSEQ) FROM PS_JOB JOB_EQ WHERE JOB.EMPLID=JOB_EQ.EMPLID AND JOB.EMPL_RCD=JOB_EQ.EMPL_RCD AND JOB_EQ.EFFDT=JOB.EFFDT) AND JOB.GRADE IN ('101','102','103','104','105','106','107')", &Emplid, &grade_flag);
               If &grade_flag = "X" Then
                  &record.BRIEFING_STATUS.Value = "X";
               Else
                  &record.BRIEFING_STATUS.Value = "I";
               End-If;
               Break;
            When = "EXIT54"
               &grade_flag = "";
               SQLExec("SELECT 'X' FROM PS_JOB JOB WHERE JOB.EMPLID=:1 AND JOB.EMPL_RCD='0' AND JOB.EFFDT=(SELECT MAX(JOB_ED.EFFDT) FROM PS_JOB JOB_ED WHERE JOB.EMPLID=JOB_ED.EMPLID AND JOB.EMPL_RCD=JOB_ED.EMPL_RCD AND JOB_ED.EFFDT<=GETDATE()) AND JOB.EFFSEQ=(SELECT MAX(JOB_EQ.EFFSEQ) FROM PS_JOB JOB_EQ WHERE JOB.EMPLID=JOB_EQ.EMPLID AND JOB.EMPL_RCD=JOB_EQ.EMPL_RCD AND JOB_EQ.EFFDT=JOB.EFFDT) AND JOB.GRADE NOT IN ('601','602','701','702','703')", &Emplid, &grade_flag);
               If &grade_flag = "X" Then
                  &record.BRIEFING_STATUS.Value = "X";
               Else
                  &record.BRIEFING_STATUS.Value = "I";
               End-If;
               Break;
            When-Other;
               &record.BRIEFING_STATUS.Value = "I";
               Break;
            End-Evaluate;
            /****Layeeque 11-Oct-2010****/
            rem If &MyArray [&i] = "EXIT03" Then /*Layeeque*/;
         When = "EXIT03"
            SQLExec("SELECT JOB.DEPTID FROM PS_JOB JOB WHERE JOB.EMPLID=:1 AND JOB.EMPL_RCD='0' AND JOB.EFFDT=(SELECT MAX(JOB_ED.EFFDT) FROM PS_JOB JOB_ED WHERE JOB.EMPLID=JOB_ED.EMPLID AND JOB.EMPL_RCD=JOB_ED.EMPL_RCD AND JOB_ED.EFFDT<=GETDATE()) AND JOB.EFFSEQ=(SELECT MAX(JOB_EQ.EFFSEQ) FROM PS_JOB JOB_EQ WHERE JOB.EMPLID=JOB_EQ.EMPLID AND JOB.EMPL_RCD=JOB_EQ.EMPL_RCD AND JOB_EQ.EFFDT=JOB.EFFDT)", &Emplid, &DEPTID);
            SQLExec("SELECT DEP.DESCR FROM PS_DEPT_TBL DEP WHERE DEP.DEPTID=:1 AND DEP.EFF_STATUS='A' AND DEP.SETID='TALIC' AND DEP.EFFDT=(SELECT MAX(DEPT.EFFDT) FROM PS_DEPT_TBL DEPT WHERE DEPT.SETID=DEP.SETID AND DEPT.DEPTID=DEP.DEPTID AND DEPT.EFFDT<=GETDATE())", &DEPTID, &dept_descr);
            Evaluate &dept_descr
            When = "Unit Manager Model (L0-L4)"
            When = "Banca FSO -OSCB"
            When = "Banca FSO-UBI"
            When = "Broca FSO-Standard Composite I"
            When = "Wealth Management / DBS Chola"
            When = "Broca FSO Management Muthoot"
               &record.BRIEFING_STATUS.Value = "X";
               Break;
            When-Other
               &record.BRIEFING_STATUS.Value = "I";
               Break;
            End-Evaluate;
            &grade_flag = "";
            SQLExec("SELECT 'X' FROM PS_JOB JOB WHERE JOB.EMPLID=:1 AND JOB.EMPL_RCD='0' AND JOB.EFFDT=(SELECT MAX(JOB_ED.EFFDT) FROM PS_JOB JOB_ED WHERE JOB.EMPLID=JOB_ED.EMPLID AND JOB.EMPL_RCD=JOB_ED.EMPL_RCD AND JOB_ED.EFFDT<=GETDATE()) AND JOB.EFFSEQ=(SELECT MAX(JOB_EQ.EFFSEQ) FROM PS_JOB JOB_EQ WHERE JOB.EMPLID=JOB_EQ.EMPLID AND JOB.EMPL_RCD=JOB_EQ.EMPL_RCD AND JOB_EQ.EFFDT=JOB.EFFDT) AND JOB.GRADE IN ('101','102','103','104','105','106','107')", &Emplid, &grade_flag);
            If &grade_flag = "X" Then
               &record.BRIEFING_STATUS.Value = "X";
            Else
               &record.BRIEFING_STATUS.Value = "I";
            End-If;
            Break;
            <*Else
            &record.BRIEFING_STATUS.Value = "I";
         End-If;*>
         When = "EXIT04"
            Evaluate &array
            When = "EXIT14"
            When = "EXIT16"
            When = "EXIT17"
            When = "EXIT18"
            When = "EXIT19"
            When = "EXIT22"
            When = "EXIT23"
               &record.BRIEFING_STATUS.Value = "X";
               Break;
            When = "EXIT15"
               SQLExec("SELECT 'X' FROM PS_JOB A WHERE A.EFFDT = ( SELECT MAX(A_ED.EFFDT) FROM PS_JOB A_ED WHERE A.EMPLID = A_ED.EMPLID AND A.EMPL_RCD = A_ED.EMPL_RCD AND A_ED.EFFDT <= SUBSTRING(CONVERT(CHAR,GETDATE(),121), 1, 10)) AND A.EFFSEQ = ( SELECT MAX(A_ES.EFFSEQ) FROM PS_JOB A_ES WHERE A.EMPLID = A_ES.EMPLID AND A.EMPL_RCD = A_ES.EMPL_RCD AND A.EFFDT = A_ES.EFFDT) AND A.BUSINESS_UNIT='TALIC' AND A.EMPL_STATUS='A' AND A.EMPLID=:1 AND SUBSTRING(A.DEPTID,7,1)<>'H'", &Emplid, &grade_flag);
               If &grade_flag = "X" Then
                  &record.BRIEFING_STATUS.Value = "X";
               Else
                  &record.BRIEFING_STATUS.Value = "I";
               End-If;
               Break;
            When = "EXIT20"
            When = "EXIT21"
            When = "EXIT44"
               &grade_flag = "";
               SQLExec("SELECT 'X' FROM PS_JOB JOB WHERE JOB.EMPLID=:1 AND JOB.EMPL_RCD='0' AND JOB.EFFDT=(SELECT MAX(JOB_ED.EFFDT) FROM PS_JOB JOB_ED WHERE JOB.EMPLID=JOB_ED.EMPLID AND JOB.EMPL_RCD=JOB_ED.EMPL_RCD AND JOB_ED.EFFDT<=GETDATE()) AND JOB.EFFSEQ=(SELECT MAX(JOB_EQ.EFFSEQ) FROM PS_JOB JOB_EQ WHERE JOB.EMPLID=JOB_EQ.EMPLID AND JOB.EMPL_RCD=JOB_EQ.EMPL_RCD AND JOB_EQ.EFFDT=JOB.EFFDT) AND JOB.GRADE IN ('101','102','103','104','105','106','107')", &Emplid, &grade_flag);
               If &grade_flag = "X" Then
                  &record.BRIEFING_STATUS.Value = "X";
               Else
                  &record.BRIEFING_STATUS.Value = "I";
               End-If;
               Break;
              
            When-Other;
               &record.BRIEFING_STATUS.Value = "I";
            End-Evaluate;
         When-Other;
            &record.BRIEFING_STATUS.Value = "I";
         End-Evaluate;
         &record.STATUS_DT.Value = %Date;
         &record.Insert();
         &k = &k + 1;
         &grade_flag = "";
      End-For;
   End-For;
End-Function;

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;

Cleardrop down

/*To populate the Source id (Referral Source) as per the 8.8*/
&RS(1).HRS_APAL_SRCE_I.HRS_SOURCE_ID.ClearDropDownList();
&Xlat1 = CreateRowset(Record.HRS_SRC_SU_PT_I);
&Xlat1.Fill("WHERE FILL.HRS_SOURCE_ID IN ('1000','1018','1006','1007','1013','1024','1027','1017','1015','1019', '1032') AND Fill.HRS_SOURCE_DESCR in ('Agency / Consultant Firm','Converted frm Temp / Contract','Direct','Employee','Newspaper Advertisement','Job Portal','Internet','School / College','Other','Unknown', 'Intranet') ");
&Xlat_cnt1 = &Xlat1.ActiveRowCount;
For &J = 1 To &Xlat_cnt1
   &CodeIn1 = &Xlat1.GetRow(&J).GetRecord(1).HRS_SOURCE_ID.Value;
   &DescIn1 = &Xlat1.GetRow(&J).GetRecord(1).HRS_SOURCE_DESCR.Value;
  
   &RS(1).HRS_APAL_SRCE_I.HRS_SOURCE_ID.AddDropDownItem(&CodeIn1, &DescIn1);
End-For;

&RSz(1).HRS_JO_RQMT.PAY_FREQ_ABBRV.ClearDropDownList();
   &Xlat = CreateRowset(Record.PSXLATITEM);
   &Xlat.Fill("WHERE FILL.FIELDNAME = 'PAY_FREQ_ABBRV' AND Fill.FIELDVALUE in ('A') and EFFDT <= %CurrentDateIn");
   &Xlat_cnt = &Xlat.ActiveRowCount;
   For &I = 1 To &Xlat_cnt
      &CodeIn = &Xlat.GetRow(&I).GetRecord(1).FIELDVALUE.Value;
      &DescIn = &Xlat.GetRow(&I).GetRecord(1).XLATLONGNAME.Value;
     
      &RSz(1).HRS_JO_RQMT.PAY_FREQ_ABBRV.AddDropDownItem(&CodeIn, &DescIn);
   End-For;