Saturday, July 22, 2017

ci

FDC_ABS_EVNT app engine -

/***********************************************************************************
Modification Log
Programmer        Date        Project Code   Description
----------------  ----------  ------------   -----------   11/04/2012  FDC_526        Program to load the Absence Events CI
                                             through Peoplecode, by reading a input file
                                             from a FTP path.
*************************************************************************************/
Function Format_date(&dt_temp As string) Returns date
   Local date &ret_dt;
   &dt_temp1 = &dt_temp;
   &dt_check_month = Substring(&dt_temp1, 1, Find("/", &dt_temp1) - 1);
   &dt_check_month = Rept("0", 2 - Len(&dt_check_month)) | &dt_check_month;
   &dt_temp1 = Substring(&dt_temp1, Find("/", &dt_temp1) + 1, Len(&dt_temp1));
   &dt_check_date = Substring(&dt_temp1, 1, Find("/", &dt_temp1) - 1);
   &dt_check_date = Rept("0", 2 - Len(&dt_check_date)) | &dt_check_date;
   &dt_temp1 = Substring(&dt_temp1, Find("/", &dt_temp1) + 1, Len(&dt_temp1));
   &dt_check_year = &dt_temp1;
   &dt_check_year = Rept("0", 4 - Len(&dt_check_year)) | &dt_check_year;
   &dt_check = &dt_check_year | "-" | &dt_check_month | "-" | &dt_check_date;

   If All(&dt_temp) Then
      If IsDate(&dt_check) Then
         SQLExec("select %dateout(to_date(:1,'mm/dd/yyyy')) from dual", &dt_temp, &ret_dt);
      Else
         &PROCESS_FLAG = "E";
         &COMMENTS_VALUE = "Invalid Date found for Employee ";
         &ERROR_MESSAGE = &ERROR_MESSAGE | "Invalid Date found for Employee " | &dt_temp;
     
      End-If;
   Else
      SQLExec("Select null from dual", &ret_dt);
   End-If;
   Return &ret_dt;
End-Function;

Function EditRecord(&REC As Record) Returns boolean;
   Local integer &E;
   REM   &REC.ExecuteEdits(%Edit_Required + %Edit_DateRange + %Edit_YesNo + %Edit_TranslateTable + %Edit_PromptTable + %Edit_OneZero);
   &REC.ExecuteEdits(%Edit_Required + %Edit_DateRange + %Edit_YesNo + %Edit_OneZero);
   If &REC.IsEditError Then
      &LOGFILE.WriteLine("*******************************************************************************************");
      &LOGFILE.Writeline(&ERROR_DETAILS | &enter | &ERROR_MESSAGE);
      &Error_Log.writeline(&Emp_String);
      For &E = 1 To &REC.FieldCount
         &MYFIELD = &REC.GetField(&E);
         If &MYFIELD.EditError Then
            &MSGNUM = &MYFIELD.MessageNumber;
            &MSGSET = &MYFIELD.MessageSetNumber;
            &LOGFILE.WriteLine("****Record:" | &REC.Name | ", Field:" | &MYFIELD.Name);
            &LOGFILE.WriteLine("****" | MsgGet(&MSGSET, &MSGNUM, ""));
         End-If;
      End-For;
      Return False;
   Else
      Return True;
   End-If;
End-Function;

Function ImportSegment(&RS2 As Rowset, &RSParent As Rowset)
   Local Rowset &RS1, &RSP;
   Local string &RecordName;
   Local Record &REC2, &RECP;
   Local SQL &SQL1;
   Local integer &I, &L;
   &enter = Char(13);
   &SQL1 = CreateSQL("%Insert(:1)");
   &RecordName = "RECORD." | &RS2.DBRecordName;
   &REC2 = CreateRecord(@(&RecordName));
   &REC2.PROCESS_INSTANCE.Value = FDC_ABSENCE_AET.PROCESS_INSTANCE.Value; /*added process instance */
   &REC2.PROCESS_FLAG.Value = "N";
   &REC2.COMMENTS.Value = " ";
   &RECP = &RSParent(1).GetRecord(@(&RecordName));
   For &I = 1 To &RS2.ActiveRowCount
      &PROCESS_FLAG = "N";
      &COMMENTS_VALUE = " ";
      &bgn_dt = &RS2(&I).GetRecord(1).BGN_DT.Value;
      &end_dt = &RS2(&I).GetRecord(1).END_DT.Value;
      &orig_begin_dt = &RS2(&I).GetRecord(1).ORIG_BEGIN_DT.Value;
      &evt_config_dt = &RS2(&I).GetRecord(1).EVT_CONFIG1_DT.Value;
   
      &RS2(&I).GetRecord(1).BGN_DT.Value = Format_date(&RS2(&I).GetRecord(1).BGN_DT.Value);
      &RS2(&I).GetRecord(1).END_DT.Value = Format_date(&RS2(&I).GetRecord(1).END_DT.Value);
      &RS2(&I).GetRecord(1).ORIG_BEGIN_DT.Value = Format_date(&RS2(&I).GetRecord(1).ORIG_BEGIN_DT.Value);
      &RS2(&I).GetRecord(1).EVT_CONFIG1_DT.Value = Format_date(&RS2(&I).GetRecord(1).EVT_CONFIG1_DT.Value);
      &RS2(&I).GetRecord(1).CopyFieldsTo(&REC2);
      &ERROR_DETAILS = "Employee Id:" | &REC2.EMPLID.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ", Employee Record:" | &REC2.EMPL_RCD.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ", Absence Take:" | &REC2.PIN_NM.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ", Absence Reason:" | &REC2.ABSENCE_REASON.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ", Manager Approved:" | &REC2.MANAGER_APPR_IND.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ",  Begin Date:" | &bgn_dt;
      &ERROR_DETAILS = &ERROR_DETAILS | ", End Date:" | &end_dt;
      &ERROR_DETAILS = &ERROR_DETAILS | ", Original Begin Date:" | &orig_begin_dt;
      &ERROR_DETAILS = &ERROR_DETAILS | ", Partial Days :" | &REC2.PARTIAL_DAYS.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ", Start Day Hours :" | &REC2.BEGIN_DAY_HRS.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ", End Day Hours :" | &REC2.END_DAY_HRS.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ", All Day Hours:" | &REC2.ALL_DAY_HRS.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ", Start Day is Half Day:" | &REC2.BEGIN_DAY_HALF_IND.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ", End Day is Half Day::" | &REC2.END_DAY_HALF_IND.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ", All Days Are Half Days:" | &REC2.ALL_DAYS_IND.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ", Date 1 :" | &evt_config_dt;
      &ERROR_DETAILS = &ERROR_DETAILS | ", Character 1 :" | &REC2.EVT_CONFIG1.Value;
      &ERROR_DETAILS = &ERROR_DETAILS | ", Decimal 1 :" | &REC2.EVT_CONFIG1_DEC.Value;
   
      &Emp_String = &REC2.EMPLID.Value | "," | &REC2.EMPL_RCD.Value | "," | &REC2.PIN_NM.Value | "," | &REC2.ABSENCE_REASON.Value | "," | &REC2.MANAGER_APPR_IND.Value | "," | &bgn_dt | "," | &end_dt | "," | &orig_begin_dt | "," | &REC2.PARTIAL_DAYS.Value | "," | &REC2.BEGIN_DAY_HRS.Value | "," | &REC2.END_DAY_HRS.Value | "," | &REC2.ALL_DAY_HRS.Value | "," | &REC2.BEGIN_DAY_HALF_IND.Value | "," | &REC2.END_DAY_HALF_IND.Value | "," | &REC2.ALL_DAYS_IND.Value | "," | &evt_config_dt | "," | &REC2.EVT_CONFIG1.Value | "," | &REC2.EVT_CONFIG1_DEC.Value;
      If (EditRecord(&REC2)) Then
         If &PROCESS_FLAG = "E" Then
            &REC2.PROCESS_FLAG.Value = &PROCESS_FLAG;
            &REC2.COMMENTS.Value = &COMMENTS_VALUE;
            &LOGFILE.WriteLine("*******************************************************************************************");
            &LOGFILE.Writeline(&ERROR_DETAILS | &enter | &ERROR_MESSAGE);
            &LOGFILE.WriteLine("*******************************************************************************************");
            &Error_Log.writeline(&Emp_String);
         End-If;
         &SQL1.Execute(&REC2);
      Else
         &LOGFILE.WriteLine("****Correct error in this record and delete all error messages");
         &LOGFILE.WriteLine("*******************************************************************************************");
      End-If;
   End-For;
End-Function;

rem *****************************************************************;
rem * PeopleCode to Import Data                                     *;
rem *****************************************************************;
Local File &FILE1;
Local Record &REC1;
Local SQL &SQL1;
Local Rowset &RS1, &RS2;
Local integer &M;
Local string &file_name, &err_file_name, &run_cntl_id;
Local number &prcs_instance;
Component string &string1;

&date_time = %Datetime;
&file_path = GetURL(URL.FDC_GP_AM);
&filename = &file_path | FDC_ABSENCE_AET.FILE_NAME.Value;

&file_no_ext = Substring(&filename, 1, (Find(".", &filename) - 1));
&err_file = &file_no_ext | "_LOG.LOG";
&ERROR_FILE1 = &file_no_ext | "_ERR.CSV";
&FILE1 = GetFile(&filename, "r", "a", %FilePath_Absolute);
&LOGFILE = GetFile(&err_file, "W", %FilePath_Absolute);
&Error_Log = GetFile(&ERROR_FILE1, "w", "a", %FilePath_Absolute);

If &FILE1.ReadLine(&string1) Then
   &Error_Log.writeline(&string1);
End-If;

&LOGFILE.WriteLine("*******************************************************************************************");
&LOGFILE.WriteLine("Absence Event Load Process.");
&LOGFILE.WriteLine("Process Instance - " | FDC_ABSENCE_AET.PROCESS_INSTANCE.Value);
&LOGFILE.WriteLine("Process Execution Time - " | &date_time);
&LOGFILE.WriteLine("Input File Name - " | FDC_ABSENCE_AET.FILE_NAME.Value);
&LOGFILE.WriteLine("*******************************************************************************************");
&LOGFILE.WriteLine("");

&FILE1.SetFileLayout(FileLayout.FDC_ABS_FL);
&LOGFILE.SetFileLayout(FileLayout.FDC_ABS_FL);
&RS1 = &FILE1.CreateRowset();
&RS = CreateRowset(Record.FDC_ABEVT_TAO);
&SQL1 = CreateSQL("%Insert(:1)");
&RS1 = &FILE1.ReadRowset();
While &RS1 <> Null;
   ImportSegment(&RS1, &RS);
   &RS1 = &FILE1.ReadRowset();
End-While;
SQLExec("Commit");
&FILE1.Close();
&LOGFILE.Close();


Step 2 - CI

/************************************************************************************
Modification Log
Programmer        Date        Project Code   Description
----------------  ----------  ------------   -----------
   11/04/2012  FDC_526        To Load the Absence Events for Employee
************************************************************************************/

Local File &fileLog;
Local ApiObject &oSession, &oFdcGpAbsenceEvent;
Local ApiObject &oGpAbsEventCollection, &oGpAbsEvent;
Local ApiObject &oGpAbsevtFcsVCollection, &oGpAbsevtFcsV;
Local ApiObject &oGpxpyeMsgVwCollection, &oGpxpyeMsgVw;
Local SQL &sql1;
Local string &Sql_data;
Local string &emplid, &pin_nm, &absence_reason, &evt_config1;
Local number &empl_rcd, &pin_num, &begin_day_hrs, &end_day_hrs, &all_day_hrs, &evt_config1_dec;
Local date &bgn_dt, &end_dt, &orig_begin_dt, &evt_config1_dt;
Local string &manager_appr_ind, &partial_days, &begin_day_half_ind, &end_day_half_ind, &all_days_ind;
Local Record &record1;
Local array of Record &array1;
Component string &string1;


Function errorHandler()
   Local ApiObject &oPSMessageCollection, &oPSMessage;
   Local number &i;
   Local string &sErrMsgSetNum, &sErrMsgNum, &sErrMsgText, &sErrType;

   &oPSMessageCollection = &oSession.PSMessages;
   For &i = 1 To &oPSMessageCollection.Count
      &oPSMessage = &oPSMessageCollection.Item(&i);
      &sErrMsgSetNum = &oPSMessage.MessageSetNumber;
      &sErrMsgNum = &oPSMessage.MessageNumber;
      &sErrMsgText = &oPSMessage.Text;
      &fileLog.WriteLine(&sErrType | " (" | &sErrMsgSetNum | "," | &sErrMsgNum | ") - " | &sErrMsgText);
   End-For;
   &ERROR_MSG = &sErrMsgText; /*added*/
   rem ***** Delete the Messages from the collection *****;
   &oPSMessageCollection.DeleteAll();
End-Function;

try

   &record1 = CreateRecord(Record.FDC_ABEVT_TAO);
   &array1 = CreateArrayRept(&record1, 0);

   &file_path = GetURL(URL.FDC_GP_AM);
   &FILE_NO_EXT = &file_path | Substring(FDC_ABSENCE_AET.FILE_NAME, 1, (Find(".", FDC_ABSENCE_AET.FILE_NAME) - 1));
   &ERROR_FILE = &FILE_NO_EXT | "_ERR.CSV";
   &LOG_FILE = &FILE_NO_EXT | "_LOG.LOG";
   &Error_Log = GetFile(&ERROR_FILE, "a", "a", %FilePath_Absolute);
   &fileLog = GetFile(&LOG_FILE, "a", "a", %FilePath_Absolute);


   rem ***** Get current PeopleSoft Session *****;
   &oSession = %Session;

   rem ***** Set the PeopleSoft Session Error Message Mode *****;
   rem ***** 0 - None *****;
   rem ***** 1 - PSMessage Collection only (default) *****;
   rem ***** 2 - Message Box only *****;
   rem ***** 3 - Both collection and message box *****;
   &oSession.PSMessagesMode = 1;

   rem ***** Get the Component Interface *****;
   &oFdcGpAbsenceEvent = &oSession.GetCompIntfc(CompIntfc.FDC_GP_ABSENCE_EVENT);
   If &oFdcGpAbsenceEvent = Null Then
      errorHandler();
      throw CreateException(0, 0, "GetCompIntfc failed");
   End-If;

   rem ***** Set the Component Interface Mode *****;
   &oFdcGpAbsenceEvent.InteractiveMode = False;
   &oFdcGpAbsenceEvent.GetHistoryItems = True;
   &oFdcGpAbsenceEvent.EditHistoryItems = True;

   &sql = CreateSQL("select process_instance, emplid, empl_rcd, pin_nm, absence_reason, manager_appr_ind, bgn_dt, end_dt, orig_begin_dt, partial_days, begin_day_hrs, end_day_hrs, all_day_hrs, begin_day_half_ind, end_day_half_ind, all_days_ind, evt_config1_dt, evt_config1, evt_config1_dec,process_flag,comments from %table(FDC_ABEVT_TAO) where process_instance = :1 and process_flag='N' order by emplid", FDC_ABSENCE_AET.PROCESS_INSTANCE.Value, &record1);
   While &sql.fetch(&record1)
      &array1.Push(&record1);
      &record1 = CreateRecord(Record.FDC_ABEVT_TAO);
   End-While;
   &count = 0;
   &enter = Char(13);

   For &count = 1 To &array1.Len
      &record1 = &array1.Shift();
      &emplid = &record1.EMPLID.Value;
      &empl_rcd = &record1.EMPL_RCD.Value;
      &pin_nm = &record1.PIN_NM.Value;
      &absence_reason = &record1.ABSENCE_REASON.Value;
      &manager_appr_ind = &record1.MANAGER_APPR_IND.Value;
      &bgn_dt = &record1.BGN_DT.Value;
      &end_dt = &record1.END_DT.Value;
      &orig_begin_dt = &record1.ORIG_BEGIN_DT.Value;
      &partial_days = &record1.PARTIAL_DAYS.Value;
      &begin_day_hrs = &record1.BEGIN_DAY_HRS.Value;
      &end_day_hrs = &record1.END_DAY_HRS.Value;
      &all_day_hrs = &record1.ALL_DAY_HRS.Value;
      &begin_day_half_ind = &record1.BEGIN_DAY_HALF_IND.Value;
      &end_day_half_ind = &record1.END_DAY_HALF_IND.Value;
      &all_days_ind = &record1.ALL_DAYS_IND.Value;
      &evt_config1_dt = &record1.EVT_CONFIG1_DT.Value;
      &evt_config1 = &record1.EVT_CONFIG1.Value;
      &evt_config1_dec = &record1.EVT_CONFIG1_DEC.Value;
      &ERROR_MSG = " ";
   
      If None(&bgn_dt) Then
         &from_dt_condition = " and BGN_DT is null";
      Else
         &from_dt_condition = " and TO_CHAR(BGN_DT,'YYYY-MM-DD') = '" | &bgn_dt | "'";
      End-If;
      If None(&end_dt) Then
         &thru_dt_condition = " and END_DT is null";
      Else
         &thru_dt_condition = " and TO_CHAR(END_DT,'YYYY-MM-DD') = '" | &end_dt | "'";
      End-If;
      try
         rem ***** Set Component Interface Get/Create Keys *****;
         &oFdcGpAbsenceEvent.EMPLID = &emplid;
         &oFdcGpAbsenceEvent.EMPL_RCD = &empl_rcd;
     
         rem ***** Execute Get *****;
         If Not &oFdcGpAbsenceEvent.Get() Then
            rem ***** No rows exist for the specified keys.*****;
            errorHandler();
            throw CreateException(0, 0, "Get failed");
         End-If;
         /*To Fetch the Pin Num*/
         SQLExec("select pin_num from ps_gp_pin where pin_nm = :1", &pin_nm, &pin_num);
     
         SQLExec("select to_char(%DATEIN(:1),'mm/dd/yyyy'),to_char(%DATEIN(:2),'mm/dd/yyyy'),to_char(%DATEIN(:3),'mm/dd/yyyy'),to_char(%DATEIN(:4),'mm/dd/yyyy') from dual", &bgn_dt, &end_dt, &orig_begin_dt, &evt_config1_dt, &bgn_dt_orig, &end_dt_orig, &orig_begin_dt_orig, &evt_config1_dt_orig);
         &error_message = "Employee Id:" | &emplid;
         &error_message = &error_message | ", Absence Take:" | &pin_nm;
         &error_message = &error_message | ", Begin Date:" | &bgn_dt_orig;
         &error_message = &error_message | ", End Date:" | &end_dt_orig;
     
         rem ***** Begin: Get/Set Component Interface Properties *****;
     
         rem ***** Set/Get GP_ABS_EVENT Collection Field Properties -- Parent: PS_ROOT Collection *****;
         &oGpAbsEventCollection = &oFdcGpAbsenceEvent.GP_ABS_EVENT;
         &oGpAbsEvent = &oGpAbsEventCollection.insertItem(1);
         &oGpAbsEvent.BGN_DT = &bgn_dt;
         &oGpAbsEvent.PIN_TAKE_NUM = &pin_num;
         &oGpAbsEvent.END_DT = &end_dt;
         &oGpAbsEvent.ABSENCE_REASON = &absence_reason;
         &oGpAbsEvent.EVT_CONFIG1 = &evt_config1;
         &oGpAbsEvent.EVT_CONFIG1_DT = &evt_config1_dt;
         &oGpAbsEvent.EVT_CONFIG1_DEC = &evt_config1_dec;
         &oGpAbsEvent.MANAGER_APPR_IND = &manager_appr_ind;
         &oGpAbsEvent.PARTIAL_DAYS = &partial_days;
         &oGpAbsEvent.ALL_DAYS_IND_0 = &all_days_ind;
         &oGpAbsEvent.ALL_DAYS_IND = &all_days_ind;
         &oGpAbsEvent.ALL_DAY_HRS = &all_day_hrs;
         &oGpAbsEvent.BEGIN_DAY_HALF_IND = &begin_day_half_ind;
         &oGpAbsEvent.BEGIN_DAY_HALF_IND_0 = &begin_day_half_ind;
         &oGpAbsEvent.BEGIN_DAY_HRS = &begin_day_hrs;
         &oGpAbsEvent.BEGIN_DAY_HRS_0 = &begin_day_hrs;
     
         /*Added for All Day Hours*/
         If &all_day_hrs > 0 Then
            &oGpAbsEvent.BEGIN_DAY_HRS = &all_day_hrs;
            &oGpAbsEvent.BEGIN_DAY_HRS_0 = &all_day_hrs;
            &oGpAbsEvent.ALL_DAYS_IND_0 = "Y";
            &oGpAbsEvent.ALL_DAYS_IND = "Y";
         End-If;
         /*Added for All Days Are Half Days */
         If &all_days_ind = "Y" Then
            &oGpAbsEvent.BEGIN_DAY_HALF_IND_0 = "Y";
         End-If;
     
     
         &oGpAbsEvent.END_DAY_HALF_IND = &end_day_half_ind;
         &oGpAbsEvent.END_DAY_HALF_IND_0 = &end_day_half_ind;
     
         &oGpAbsEvent.END_DAY_HRS = &end_day_hrs;
         &oGpAbsEvent.END_DAY_HRS_0 = &end_day_hrs;
     
     
         rem ***** End: Get/Set Component Interface Properties *****;
     
         rem ***** Execute Save *****;
         If Not &oFdcGpAbsenceEvent.Save() Then;
            &fileLog.WriteLine("*******************************************************************************************");
            &error_message = &error_message | " - Save Failed";
            &fileLog.WriteLine(&error_message);
            errorHandler();
            &ERROR_MSG = &ERROR_MSG | "Save Failed for Employee - " | &emplid | &enter | "Pin Name -" | &pin_nm | &enter | "Pin Number" | &pin_num;
            SQLExec("UPDATE %table(FDC_ABEVT_TAO) SET PROCESS_FLAG = 'E',COMMENTS = :5 WHERE PROCESS_INSTANCE = :1 AND PROCESS_FLAG = 'N' AND EMPLID=:2 AND EMPL_RCD=:3 AND PIN_NM = :4 " | &from_dt_condition | &thru_dt_condition, FDC_ABSENCE_AET.PROCESS_INSTANCE, &emplid, &empl_rcd, &pin_nm, &ERROR_MSG);
            &Emp_String = &emplid | "," | &empl_rcd | "," | &pin_nm | "," | &absence_reason | "," | &manager_appr_ind | "," | &bgn_dt_orig | "," | &end_dt_orig | "," | &orig_begin_dt_orig | "," | &partial_days | "," | &begin_day_hrs | "," | &end_day_hrs | "," | &all_day_hrs | "," | &begin_day_half_ind | "," | &end_day_half_ind | "," | &all_days_ind | "," | &evt_config1_dt_orig | "," | &evt_config1 | "," | &evt_config1_dec;
            &Error_Log.WriteLine(&Emp_String);
            throw CreateException(0, 0, "Save failed");
         Else
            &ERROR_MSG = "Saved Successfully for Employee - " | &emplid | &enter | "Pin Name -" | &pin_nm | &enter | "Pin Number-" | &pin_num;
            SQLExec("UPDATE %table(FDC_ABEVT_TAO) SET PROCESS_FLAG = 'Y',COMMENTS = :5 WHERE PROCESS_INSTANCE = :1 AND PROCESS_FLAG = 'N' AND EMPLID=:2 AND EMPL_RCD=:3 AND PIN_NM = :4 " | &from_dt_condition | &thru_dt_condition, FDC_ABSENCE_AET.PROCESS_INSTANCE, &emplid, &empl_rcd, &pin_nm, &ERROR_MSG);
            &error_message = &error_message | " - Saved Successfully";
            &fileLog.WriteLine(&error_message);
         End-If;
     
         rem ***** Execute Cancel *****;
         If Not &oFdcGpAbsenceEvent.Cancel() Then;
            errorHandler();
            throw CreateException(0, 0, "Cancel failed");
         End-If;
     
      catch Exception &ex1
         &fileLog.WriteLine(&ex1.ToString());
         &fileLog.WriteLine("*******************************************************************************************");
         If Not &oFdcGpAbsenceEvent.Cancel() Then;
            errorHandler();
         End-If;
     
      end-try;
      SQLExec("commit");
   
   End-For;
   SQLExec("SELECT COUNT(*) FROM  %TABLE(FDC_ABEVT_TAO) WHERE PROCESS_INSTANCE = :1", FDC_ABSENCE_AET.PROCESS_INSTANCE, &total_count);
   SQLExec("SELECT COUNT(*) FROM  %TABLE(FDC_ABEVT_TAO) WHERE PROCESS_INSTANCE = :1 AND PROCESS_FLAG = 'E'", FDC_ABSENCE_AET.PROCESS_INSTANCE, &fail_count);
   SQLExec("SELECT COUNT(*) FROM  %TABLE(FDC_ABEVT_TAO) WHERE PROCESS_INSTANCE = :1 AND PROCESS_FLAG = 'Y'", FDC_ABSENCE_AET.PROCESS_INSTANCE, &success_count);
   SQLExec("SELECT COUNT(*) FROM  %TABLE(FDC_ABEVT_TAO) WHERE PROCESS_INSTANCE = :1 AND PROCESS_FLAG = 'N'", FDC_ABSENCE_AET.PROCESS_INSTANCE, &not_process_count);
   &fileLog.WriteLine(" ");
   &fileLog.WriteLine("Total number of rows in File               : " | &total_count);
   &fileLog.WriteLine("Number of rows loaded successfully         : " | &success_count);
   &fileLog.WriteLine("Number of rows not loaded                  : " | &fail_count);
   &fileLog.WriteLine("Number of rows not Processed               : " | &not_process_count);

catch Exception &ex

   &fileLog.WriteLine(&ex.ToString());
end-try;

&fileLog.Close();


----------------------------------------------------------------------------------------------------------

Date validation -




import FD_SVR_LIB:FD_SVR_COMMON_LIB:FD_SVR_COMMON;

Declare Function AgeInYears PeopleCode FUNCLIB_HR.AGE FieldFormula;

Function CalcAge() Returns number;
 
   SQLExec("SELECT BIRTHDATE FROM PS_PERSONAL_DATA WHERE EMPLID =:1", FD_SVR_USA_DTL.EMPLID.Value, &birth_date);
   &Current_date = %Date;
 
   If All(&birth_date) Then
      &EMP_AGE = AgeInYears(&birth_date, &Current_date);
   End-If;
 
   Return &EMP_AGE;
 
 
End-Function;

Function CalcRule70(&ServYr) Returns number;
   <* &EMP_AGE = CalcAge();
 
   &rule_of_70_calc = &EMP_AGE + &ServYr;
 
   If &rule_of_70_calc >= "70" Then
      FD_SVR_USA_DTL.FD_SVR_RULE70_ELIG.Value = "Y";
      FD_SVR_USA_DTL.FD_SVR_RULE70_ELIG.DisplayOnly = True;
   Else
      FD_SVR_USA_DTL.FD_SVR_RULE70_ELIG.Value = "N";
      FD_SVR_USA_DTL.FD_SVR_RULE70_ELIG.DisplayOnly = True;
   End-If;
 
   If FD_SVR_USA_DTL.FD_SVR_RULE70_ELIG.Value = "Y" Then
      FD_SVR_USA_DTL.FD_SVR_RULE70_ELEC.Value = "Y";
      FD_SVR_USA_DTL.FD_SVR_RULE70_ELEC.DisplayOnly = True;
   Else
      FD_SVR_USA_DTL.FD_SVR_RULE70_ELEC.Value = "N";
      FD_SVR_USA_DTL.FD_SVR_RULE70_ELEC.DisplayOnly = True;
   End-If;*>
 
End-Function;

Function CalcSrvcdate Returns number;
 
   Local FD_SVR_LIB:FD_SVR_COMMON_LIB:FD_SVR_COMMON &SvrCommon = create FD_SVR_LIB:FD_SVR_COMMON_LIB:FD_SVR_COMMON();
   &REC_JOB = &SvrCommon.GetJobRecord(FD_SVR_USA_DTL.EMPLID.Value, "EMP");
   If All(&REC_JOB.termination_dt.value) Then
      &term_dt = &REC_JOB.termination_dt.value;
   Else
      &term_dt = %Date;
   End-If;
 
   rem &serv_date = &SvrCommon.GetServdate(FD_SVR_USA_DTL.EMPLID.Value, 0, "EMP");
   &serv_date = &SvrCommon.GetServdate(FD_SVR_USA_DTL.EMPLID.Value, 0);
   &ServYr = "";
   If (All(&serv_date) And
         All(&term_dt)) Then
      &ServYr = AgeInYears(&serv_date, &term_dt);
   End-If;
   rem &rule70 = CalcRule70(&ServYr);
   Return &ServYr;
 
End-Function;


Function getPayabletime() Returns number;
 
   <* Local FD_SVR_LIB:FD_SVR_COMMON_LIB:FD_SVR_COMMON &SvrCommon = create FD_SVR_LIB:FD_SVR_COMMON_LIB:FD_SVR_COMMON();
   &REC_JOB = &SvrCommon.GetJobRecord(FD_SVR_USA_DTL.EMPLID.Value, "EMP");
   &term_dt = &REC_JOB.termination_dt.value;
   &serv_date = &SvrCommon.GetServdate(FD_SVR_USA_DTL.EMPLID.Value, 0, "EMP");
   &ServYr = "";
   If (All(&serv_date) And
         All(&term_dt)) Then
      &ServYr = AgeInYears(&serv_date, &term_dt);
   End-If;*>
   &sevyr = CalcSrvcdate();
 
 
   rem Evaluate &ServYr;
   Evaluate &sevyr
   When <= "1"
      &Sev_weeks = "2";
      Break;
      <*When >= "2"
      &Sev_weeks = 1 * (&ServYr);
      Break;*>
   When <= "25"
      &Sev_weeks = 1 * (&ServYr);
      Break;
   When >= "26"
      &Sev_weeks = "26";
      Break;
   End-Evaluate;
 
   FD_SVR_USA_DTL.FD_SVR_PY_TIME.Value = &Sev_weeks;
   FD_SVR_USA_DTL.FD_SVR_PY_TIME.DisplayOnly = True;
   FD_SVR_USA_DTL.FD_SVR_PAY_DUR.Value = "WEEKS";
   FD_SVR_USA_DTL.FD_SVR_PAY_DUR.DisplayOnly = True;
   &days = FD_SVR_USA_DTL.FD_SVR_PY_TIME.Value * 7;
 
 
   Return &ServYr;
 
 
End-Function;



Function CalcRates(&req_rate) Returns number;
 
   Local FD_SVR_LIB:FD_SVR_COMMON_LIB:FD_SVR_COMMON &SvrCommon = create FD_SVR_LIB:FD_SVR_COMMON_LIB:FD_SVR_COMMON();
   &rate = 0;
   &daily_rt = 0;
   &monthly_rt = 0;
   &ANNUAL_RT = 0;
   &HOURLY_RT = 0;
   &STD_HOURS = 0;
 
   &REC_JOB = &SvrCommon.GetJobRecord(FD_SVR_USA_DTL.EMPLID.Value, "EMP");
   &daily_rt = &REC_JOB.DAILY_RT.value;
   &monthly_rt = &REC_JOB.MONTHLY_RT.value;
   &ANNUAL_RT = &REC_JOB.ANNUAL_RT.value;
   &HOURLY_RT = &REC_JOB.HOURLY_RT.value;
   &STD_HOURS = &REC_JOB.STD_HOURS.Value;
   If &req_rate = "SevAmount" Then
      If &HOURLY_RT <> 0 Then
         &rate = &HOURLY_RT;
      Else
       
         rem &rate = Round((&daily_rt / 8), 2);
         &rate = (&daily_rt / 8);
      End-If;
   End-If;
 
   If &req_rate = "Nonworkingamt" Then
      If &daily_rt <> 0 Then
         &rate = &daily_rt;
      Else
         rem &rate = Round((&HOURLY_RT * &STD_HOURS / 5), 2);
         &rate = (&HOURLY_RT * &STD_HOURS / 5);
      End-If;
   End-If;
   Return &rate;
 
End-Function;

Function CalcSevAmt(&pay_time As number, &pay_st_date As date) Returns number;
   FD_SVR_USA_DTL.FD_SVR_DISM_AMT.Value = 0;
   FD_SVR_USA_DTL.FD_SVR_CONTG_SEVR.Value = "0";
   FD_SVR_USA_DTL.FD_SVR_CONTG_STDT.Value = "";
   FD_SVR_USA_DTL.FD_SVR_CONTG_ENDDT.Value = "";
   FD_SVR_USA_DTL.FD_SVR_BASDISM_AMT.Value = "0";
   FD_SVR_USA_DTL.FD_SVR_TOTAL_PAID.Value = "0";
   FD_SVR_USA_DTL.FD_SVR_SVC_FRNG.Value = "0";
 
   Local FD_SVR_LIB:FD_SVR_COMMON_LIB:FD_SVR_COMMON &SvrCommon = create FD_SVR_LIB:FD_SVR_COMMON_LIB:FD_SVR_COMMON();
   Local date &cont_start_day, &cont_num_day, &cont_end_day;
   &days = FD_SVR_USA_DTL.FD_SVR_PY_TIME.Value * 7;
 
   &REC_JOB = &SvrCommon.GetJobRecord(FD_SVR_USA_DTL.EMPLID.Value, "EMP");
   If All(FD_SVR_USA_DTL.FD_SVR_PY_TIME.Value) And
         All(FD_SVR_USA_DTL.FD_SVR_PY_STDT.Value) Then
     
      &sev_calc_days = FD_SVR_USA_DTL.FD_SVR_PY_TIME * 7;
      &sev_calc_weeks = FD_SVR_USA_DTL.FD_SVR_PY_TIME.Value;
      &rate = CalcRates("SevAmount");
      rem &hrly_rate = &REC_JOB.HOURLY_RT.value;
     
      &STD_HOURS = &REC_JOB.STD_HOURS.value;
      &Weekly_rate = &rate * &STD_HOURS;
     
     
     
      If &sev_calc_weeks <= "12" Then
         &cont_weeks = "0";
         &Sev_weeks = &sev_calc_weeks;
       
         FD_SVR_USA_DTL.FD_SVR_BASDISM_AMT.Value = &Weekly_rate * &sev_calc_weeks;
         FD_SVR_USA_DTL.FD_SVR_CONTG_SEVR.Value = "0";
         FD_SVR_USA_DTL.FD_SVR_CONTG_STDT.Value = "";
         FD_SVR_USA_DTL.FD_SVR_CONTG_ENDDT.Value = "";
         FD_SVR_USA_DTL.FD_SVR_DISM_AMT.Value = FD_SVR_USA_DTL.FD_SVR_BASDISM_AMT.Value + FD_SVR_USA_DTL.FD_SVR_CONTG_SEVR.Value;
         FD_SVR_USA_DTL.FD_SVR_DISM_AMT.Value = Round(FD_SVR_USA_DTL.FD_SVR_DISM_AMT.Value, 2);
         FD_SVR_USA_DTL.FD_SVR_SVC_FRNG.Value = Round((FD_SVR_USA_DTL.FD_SVR_DISM_AMT.Value * 0.15), 2); /*Added logic to calculate the svc fringe based on dismissal $*/
         FD_SVR_USA_DTL.FD_SVR_DISM_AMT.DisplayOnly = True;
      Else
         &cont_weeks = &sev_calc_weeks - 12;
         &sev_calc_weeks = &sev_calc_weeks - &cont_weeks;
         &cont_days = &cont_weeks * 7;
         &sev_days = &sev_calc_weeks * 7;
       
         &cont_num_day = AddToDate(FD_SVR_USA_DTL.FD_SVR_PY_STDT.Value, 0, 0, &sev_days);
         &cont_num_day = AddToDate(&cont_num_day, 0, 0, - 1); /*logic changed to include the start date also while calcuating the date difference */
         &cont_start_day = AddToDate(&cont_num_day, 0, 0, 1);
         &cont_end_day = AddToDate(&cont_start_day, 0, 0, &cont_days);
         &cont_end_day = AddToDate(&cont_end_day, 0, 0, - 1); /*logic changed to include the contingency start date also while calcuating the date difference */
       
         FD_SVR_USA_DTL.FD_SVR_DISM_AMT.Value = "0";
         FD_SVR_USA_DTL.FD_SVR_BASDISM_AMT.Value = &Weekly_rate * &sev_calc_weeks;
         FD_SVR_USA_DTL.FD_SVR_CONTG_SEVR.Value = &Weekly_rate * &cont_weeks;
         FD_SVR_USA_DTL.FD_SVR_CONTG_STDT.Value = &cont_start_day;
         FD_SVR_USA_DTL.FD_SVR_CONTG_ENDDT.Value = &cont_end_day;
         FD_SVR_USA_DTL.FD_SVR_DISM_AMT.Value = FD_SVR_USA_DTL.FD_SVR_BASDISM_AMT.Value + FD_SVR_USA_DTL.FD_SVR_CONTG_SEVR.Value;
         FD_SVR_USA_DTL.FD_SVR_DISM_AMT.Value = Round(FD_SVR_USA_DTL.FD_SVR_DISM_AMT.Value, 2);
         FD_SVR_USA_DTL.FD_SVR_SVC_FRNG.Value = Round((FD_SVR_USA_DTL.FD_SVR_DISM_AMT.Value * 0.15), 2); /*Added logic to calculate the svc fringe based on dismissal $*/
         FD_SVR_USA_DTL.FD_SVR_DISM_AMT.DisplayOnly = True;
       
      End-If;
   End-If;
 
   If All(FD_SVR_USA_DTL.FD_SVR_PY_STDT.Value) And
         All(FD_SVR_USA_DTL.FD_SVR_PY_TIME.Value) Then
      FD_SVR_USA_DTL.FD_SVR_PY_ENDDT.Value = AddToDate(FD_SVR_USA_DTL.FD_SVR_PY_STDT.Value, 0, 0, &days);
      FD_SVR_USA_DTL.FD_SVR_PY_ENDDT.Value = AddToDate(FD_SVR_USA_DTL.FD_SVR_PY_ENDDT.Value, 0, 0, - 1); /*logic changed to include the start date also while calcuating the date difference */
      FD_SVR_USA_DTL.FD_SVR_PY_ENDDT.DisplayOnly = True;
   End-If;
 
   If All(FD_SVR_USA_DTL.FD_SVR_PY_ENDDT.Value) Then
      If All(FD_SVR_USA_DTL.FD_SVR_CONTG_ENDDT.Value) Then
         FD_SVR_USA_DTL.TERMINATION_DT.Value = AddToDate(FD_SVR_USA_DTL.FD_SVR_CONTG_ENDDT.Value, 0, 0, 1);
         FD_SVR_USA_DTL.TERMINATION_DT.DisplayOnly = True;
      Else
         FD_SVR_USA_DTL.TERMINATION_DT.Value = AddToDate(FD_SVR_USA_DTL.FD_SVR_PY_ENDDT.Value, 0, 0, 1);
         FD_SVR_USA_DTL.TERMINATION_DT.DisplayOnly = True;
      End-If;
   End-If;
   /*Added additional pay $ to the total paid calculation to the below code - UAT enhancement*/
   FD_SVR_USA_DTL.FD_SVR_TOTAL_PAID.Value = FD_SVR_USA_DTL.FD_SVR_RET_TOTAL.Value + FD_SVR_USA_DTL.FD_SVR_WNTC_AMT.Value + FD_SVR_USA_DTL.FD_SVR_NWNTC_AMT.Value + FD_SVR_USA_DTL.FD_SVR_NWNTC_FRNG.Value + FD_SVR_USA_DTL.FD_SVR_SVC_FRNG.Value + FD_SVR_USA_DTL.FD_SVR_DISM_AMT.Value + FD_SVR_USA_DTL.FD_SVR_OUTPLCMNT.Value + FD_SVR_USA_DTL.FD_SVR_VAC_AMT.Value + FD_SVR_USA_DTL.FD_SVR_ADDPAY.Value;
 
 
End-Function;

Function CalcPayableAmt(&start_dt As date, &end_dt As date) Returns number;
   Local FD_SVR_LIB:FD_SVR_COMMON_LIB:FD_SVR_COMMON &SvrCommon = create FD_SVR_LIB:FD_SVR_COMMON_LIB:FD_SVR_COMMON();
   &day_count = 0;
 
   &REC_JOB = &SvrCommon.GetJobRecord(FD_SVR_USA_DTL.EMPLID.Value, "EMP");
 
 
 
   SQLExec("SELECT COUNT (*)FROM (SELECT ROWNUM rnum FROM ps_fd_svr_usa_dtl WHERE ROWNUM <= TO_DATE (%datein(:2)) - TO_DATE (%datein(:1)) + 1) WHERE TO_CHAR (TO_DATE (%datein(:1)) + rnum - 1, 'DY') NOT IN ('SAT', 'SUN')", &start_dt, &end_dt, &day_count);
   rem  MessageBox(0, "", 0, 0, "days : " | &day_count);
   Return &day_count;
 
 
 
 
 
End-Function;



App Engine -


-------------------------------------------------------------------------------------------------------------------------

No comments: