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, ¬_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 : " | ¬_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 -
-------------------------------------------------------------------------------------------------------------------------