0% found this document useful (0 votes)
67 views

Mob Compassionate Leave Validation

This formula validates absence entries for compassionate leave at Mobily. It checks if the employee has already availed leave for the same limited relationship within the period by querying other tables. If the employee has already taken leave for the specified relationship, the validation returns N and an error message. Otherwise, it returns Y.

Uploaded by

mahmoudshehab
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
67 views

Mob Compassionate Leave Validation

This formula validates absence entries for compassionate leave at Mobily. It checks if the employee has already availed leave for the same limited relationship within the period by querying other tables. If the employee has already taken leave for the specified relationship, the validation returns N and an error message. Otherwise, it returns Y.

Uploaded by

mahmoudshehab
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

/*

***********************************************************************************
******
FORMULA NAME : MOB_COMPASSIONATE_LEAVE_VALIDATION
FORMULA TYPE : Global Absence Entry Validation
DESCRIPTION : This formula validate the absence entry for Mobily
Change History:
-----------------------------------------------------------------------------------
-------
Name Date Version Comments
-----------------------------------------------------------------------------------
-------
Ali Hassan 01-DEC-2022 0.1 Initial Version

***********************************************************************************
****** */

DEFAULT FOR ANC_ABS_TYP_NAME IS ' '


DEFAULT FOR PER_ASG_DATE_PROBATION_END IS '1950/01/01 00:00:00' (date)
DEFAULT FOR PER_PERSON_ENTERPRISE_HIRE_DATE IS '1950/01/01 00:00:00' (date)
DEFAULT FOR IV_START_DATE IS '1951/01/01 00:00:00' (date)
DEFAULT FOR IV_END_DATE IS '4712/01/01 00:00:00' (date)
DEFAULT FOR PER_ASG_PROBATION_UNIT IS 'M'
DEFAULT FOR PER_ASG_PROBATION_PERIOD IS -1
DEFAULT_DATA_VALUE for ANC_PER_ABS_ENTRS_ABSENCE_ENTRY_ID_ARR is 0
DEFAULT for ANC_ABS_ENTRS_ABSENCE_TYPE_ID is 0
DEFAULT FOR ANC_ABS_ENTRS_DURATION IS 0
DEFAULT_DATA_VALUE for PER_EXT_RELIGION_NAME is 'No Religion'
DEFAULT_DATA_VALUE for PER_EXT_RELIGION_PERSON_ID is -1
DEFAULT for ANC_ABS_ENTRS_ATTRIBUTE1 is ' '
DEFAULT FOR ANC_ABS_ENTRS_ABSENCE_STATUS_CD IS ' '
DEFAULT FOR ANC_ABS_ENTRS_APPROVAL_STATUS_CD IS ' '
DEFAULT FOR ANC_ABS_ENTRS_ATTRIBUTE_DATE1 IS '1951/01/01 00:00:00' (date)
DEFAULT FOR IV_ATTRIBUTE_DATE1 IS '1951/01/01 00:00:00' (date)
DEFAULT FOR IV_ATTRIBUTE1 IS ' '
DEFAULT FOR IV_ATTRIBUTE2 IS ' '
DEFAULT FOR IV_ATTRIBUTE_1 IS ' '
DEFAULT FOR PER_PER_CITIZENSHIP_LEG_NAME IS ' '
DEFAULT_DATA_VALUE for PER_EXT_RELIGION_NAME is 'NO_DATA_FOUND'
DEFAULT FOR l_msg IS ' '

INPUTS ARE IV_START_DATE (Date),


IV_END_DATE (Date),
IV_TOTALDURATION (Number),
IV_START_DURATION (Number),
IV_END_DURATION (Number),
IV_START_TIME (Text),
IV_END_TIME (Text),
IV_ACTUALCHILDBIRTHDATE (Date),
IV_ACTUALSTARTDATE (Date),
IV_ACTUALENDDATE (Date),
IV_EXPECTEDCHILDBIRTHDATE (Date),
IV_PLANNEDSTARTDATE (Date),
IV_PLANNEDENDDATE (Date),
IV_ABSENCE_REASON (Text),
IV_ATTRIBUTE_DATE1 (Date),
IV_ATTRIBUTE_2 (Text),
IV_ATTRIBUTE_1 (Text)
l_person_id = -1
l_person_id = GET_CONTEXT(PERSON_ID, -1)

l_msg = ' '


VALID ='Y'
l_abs_type_name = ANC_ABS_TYP_NAME
l_emp_hire_date = PER_PERSON_ENTERPRISE_HIRE_DATE
l_prob_end_date = PER_ASG_DATE_PROBATION_END
l_abs_start_dt = IV_START_DATE
/* l_prv_abs_dt = l_abs_start_dt -2 */
l_abs_end_dt = IV_END_DATE
l_leave_days = IV_TOTALDURATION
l_attribute_1 = IV_ATTRIBUTE_1
l_hajj_duration_date = '1951/01/01 00:00:00' (date)
abs_duration = 0
LV_RELATION_LEAVE_COUNT = 0
LV_LIMITED_RELATION_FLAG = 'X'
LV_AVAILED_LEAVES = 0
LV_CURRENT_ABSENCE_TYPE = GET_TABLE_VALUE('MOB_COMPASSIONATE_LEAVE_VALIDATION',
'VALUE', 'CURRENT_ABSENCE_TYPE') /*'300000005227259'*/
LV_CURRENT_ABS_DATE = TO_CHAR (l_abs_start_dt, 'YYYY/MM/DD')

LV_RELATION_LEAVE_COUNT =
TO_NUMBER( GET_VALUE_SET('MOB_GET_ANSENCE_ATTRIBUTE1_PAST','|=P_PERSON_ID='''||
TO_CHAR(l_person_id)||''''||'|P_ATTRIBUTE1='''||l_attribute_1||''''||'|
P_ABS_DATE='''||LV_CURRENT_ABS_DATE||''''||'|P_ABS_TYPE='''||
LV_CURRENT_ABSENCE_TYPE||''''))

/*IF (l_attribute_1 = 'Father' OR l_attribute_1 = 'Mother' OR l_attribute_1 =


'Grandfather (Of Father)' OR (l_attribute_1 = 'Grandmother (Of Father)') OR
(l_attribute_1 = 'Grandfather (Of Mother)')OR (l_attribute_1 = 'Grandmother (Of
Mother)')) THEN*/
IF GET_TABLE_VALUE('MOB_COMPASSIONATE_LEAVE_VALIDATION', 'LIMITED_RELATION',
l_attribute_1) = 'Y' THEN
LV_LIMITED_RELATION_FLAG = 'Y'

IF LV_LIMITED_RELATION_FLAG = 'Y' AND LV_RELATION_LEAVE_COUNT > 0 THEN


(ERROR_MESSAGE = 'MOB_ABS_COMPASSIONATE_1'
VALID = 'N')
ELSE VALID = 'Y'

/*
LV_AVAILED_LEAVES = TO_NUMBER( GET_VALUE_SET('MOB_GET_AVAILED_DURATION','|
=P_PERSON_ID='''||TO_CHAR(l_person_id)||''''||'|P_FROM_DATE='''||
LV_START_DATE||''''||'|P_TO_DATE='''||LV_END_DATE||''''||'|P_ABS_DATE='''||
LV_CURRENT_ABS_DATE||''''||'|P_ABS_TYPE='''||LV_CURRENT_ABSENCE_TYPE||''''))
*/

RETURN VALID, ERROR_MESSAGE

You might also like