0% found this document useful (0 votes)
43 views42 pages

Important Note

This document contains code snippets and descriptions of various HR related functions and processes. It includes examples of functions to get employee information, validate data, calculate durations and salaries, and refresh materialized views. It also includes descriptions of tasks like obtaining hire dates and listing decrees.

Uploaded by

hossam.elrweny
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)
43 views42 pages

Important Note

This document contains code snippets and descriptions of various HR related functions and processes. It includes examples of functions to get employee information, validate data, calculate durations and salaries, and refresh materialized views. It also includes descriptions of tasks like obtaining hire dates and listing decrees.

Uploaded by

hossam.elrweny
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/ 42

XXX_HR_PACKAGE5.

XXX_CALC_GENERAL_ALW>>>> in DB
XXX_CALC_GENERAL_ALW>>>>> in write formula
-----------------------------------------------------------------------------------
-

IF L_FLAG <> 'PASS' THEN


--
HR_UTILITY.SET_MESSAGE (800, NVL( L_FLAG , 'XXX_TEACHING_001' ) );
HR_UTILITY.RAISE_ERROR;
--
END IF;

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

ELSIF p_information_type = 'XXX_GRADE_STEP_CORRECT' THEN

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

L_EMP_CATEGORY := XXX_HR_PACKAGE4.XXX_PERSON_INFO ( P_PERSON_ID , 0 ,


FND_DATE.CANONICAL_TO_DATE(L_PEI_INFORMATION6) , 'PT_NAME' , 'US' ) ;
-----------------------------------------------------------------------------------
--------------------------

xxx_hr_package1.XXX_gregorian_to_hijrah_2(date)

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

xx_errors:= apps.xx_debug('L_EIT_NAME'||L_EIT_NAME);
xx_errors:= apps.xx_debug('L_ELEMENT_LINK_ID_ADDITIONAL2:'||
L_ELEMENT_LINK_ID_ADDITIONAL2);
-----------------------------------------------------------------------------------
-------------------------

������ ������� EIT������ ����� ������


select PPEI.INFORMATION_TYPE,TRUNC(PPEI.CREATION_DATE)CREATION_DATE
from per_people_extra_info ppei,per_all_people_f papf
where --ppei.CREATION_DATE <= TRUNC(FND_DATE.CANONICAL_TO_DATE ('24/11/15'))
ppei.person_id=papf.person_id
and papf.person_id=56416
-----------------------------------------------------------------------------------
-------------------------

XXX_HR_PACKAGE1.XXX_GET_EIT_SEGMENT( 'XXX_ALW' , P_PEI_INFORMATION1 , '1' )


-----------------------------------------------------------------------------------
--------------------------
<<VIEW TO DISPALY ALL DECREE DETAILS>>>

XXCUSTOM.XXX_HR_All_DECREES_DETAILS

-----------------------------------------------------------------------------------
---------------------------
������ ������� ��� ����

XXX_HR_PACKAGE1.XXX_GH_DATE (PPEI.PEI_INFORMATION8,'H', 'DD-MM-YYYY') AWARD_DATE


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

xx_errors := apps.xx_debug('L_LOC_CITY: '||L_LOC_CITY);


xx_errors := apps.xx_debug('L_TRNS_LOC_CITY: '||L_TRNS_LOC_CITY);
---------------------------------------------------------------------

������� FUNCTION

SELECT XXX_HR_VALIDATE_EIT.XXX_PERSON_ORG_CITY(44885,SYSDATE-1) FROM DUAL;


-----------------------------------------------------------------------------------
-----
��� �������� ��� �����
A)#select xxx_hr_validate_eit.XXX_PERSON_ORG_CITY(44885,TO_DATE('28/06/14','DD/MM/
YY')-1)x from dual;
***** TO_DATE('08/04/2016','DD/MM/YYYY') BETWEEN PAAF.EFFECTIVE_START_DATE AND
PAAF.EFFECTIVE_END_DATE

B)#SELECT XXX_HR_PACKAGE3.XXX_DURATION_LENGTH( TO_DATE('16/11/15','DD/MM/YY')


,TO_DATE('09/05/15','DD/MM/YY')
,NULL
,'M'
,'M'
)X FROM DUAL

-----------------------------------------------------------------------------------
--------------------------
�����

SELECT * FROM ALL_SOURCE WHERE TEXT LIKE '%XXX%CALC%ALW%'

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

DDL+DML COMMANDS

CREATE TABLE XXX_HR_PROMOTION_DETAILS_TEMP AS(


SELECT *
FROM XXX_HR_PROMOTION_DETAILS);
....................................

DELETE XXX_HR_PROMOTION_DETAILS_TEMP

....................................
INSERT INTO XXX_HR_PROMOTION_DETAILS_TEMP(SELECT *
FROM XXX_HR_PROMOTION_DETAILS)
....................................
<<<Feild Leave Element>>>

Field Accrual Plan Carried Over


.....................................
For Tracking>>>>
DBMS_OUTPUT.PUT_LINE('')
...................................................................................
....................

<<< NEW VALIDATION ON TRANSPORTATION ALLOWANCE>>>

T_GRADE_ID VARCHAR2(100);
--This Validation made by Yazeed Awwad in 22/02/2016
-- This Validation to prevent pay a transportation allowance from a type : CASH
for the rank which grade id is :1156

T_GRADE_ID:=XXX_HR_PACKAGE4.XXX_PERSON_INFO ( P_PERSON_ID ,
l_assignment_id , SYSDATE , 'GRD_ID' , 'US' );

IF T_GRADE_ID=1156 AND P_INFORMATION_TYPE='XXX_TRANS_ALW'AND


P_PEI_INFORMATION2='CASH'THEN
HR_UTILITY.SET_MESSAGE (800, NVL( L_FLAG , 'XXX_TRANS_20' ) );
HR_UTILITY.RAISE_ERROR;
END IF;

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

<<<Refresh for materialized view>>>

���� ���� ��� ������:


DBA_JOBS DJ
��� �� ��� �����:
WHAT LIKE '%fresh%'
�� ������

��� �� ���� ��� ��materialzed view���� ��� ������ refresh������� ������:

begin
dbms_refresh.refresh('"XXCUSTOM"."XXX_HR_ASSIGNMENT_REFERENCE"');
end;

-----------------------------------------------------------------------------------
-----------------------------
<<FOR EXCELL CONCATENATION FUNCTION>>>

EX:
=CONCATENATE("'";A1;"'";",")
OUTPUT IS :
'4134',
��� A1��� �� ������

-----------------------------------------------------------------------------------
-------------------------------
Function to Get informations about the person>>>>>
--
L_PERSON_TYPE :=
XXX_HR_PACKAGE4.XXX_PERSON_INFO (L_PERSON_ID,
0,
P_START_DATE,
'PT_NAME',
'US');
L_ASSIGNMENT_ID :=
XXX_HR_PACKAGE4.XXX_PERSON_INFO (L_PERSON_ID,
0,
P_START_DATE,
'ASS_ID',
'US');
-----------------------------------------------------------------------------------
-----------------------------------
FUNCTION TO GET PRIMARY ASSIGNMENT>>>

EX:
WHERE pspp.assignment_id = XXX_HR_PACKAGE1.XXX_get_primary_asg
(p_person_id,
TRUNC (SYSDATE)
)

-----------------------------------------------------------------------------------
------------------------------------
<<<<<<Important information about the name of the field in ENTER & MAINTAIN
screen>>>>

��� �� :
���� �� ������ ��� ��:
EFFECTIVE_START_DATE
��� ����� ������� ���� �� ������ ��� ��:
START_DATE

..............................

GREATEST & LEAST

GREATEST IN DATE
������ :
��� ���� �����
LEAST:
��� ���� �����

EX)

SELECT
GREATEST(PPEI.PEI_INFORMATION9,TO_CHAR(GREATEST(PAPF.EFFECTIVE_START_DATE,PAPF.STAR
T_DATE),'YYYY/MM/DD'))PPPPP
FROM ...
WHERE ...
-----------------------------------------------------------------------------------
-----------------------------------------
*������ ��� ������*
select employee_number
from per_all_people_f
where person_id=61354
and trunc(sysdate)between effective_start_date and effective_end_date

-----------------------------------------------------------------------------------
----------
������ ������ ������� ���� ����

XXX_HR_PACKAGE1. FUNCTION XXX_BASIC_SALARY_IN_PERIOD


-----------------------------------------------------------------------------------
-----------
<<<REFRESH FOR ASSIGNMENTS AND POST DITRIBUATION ALLOWANCE>>>>
.........
begin
dbms_refresh.refresh('"XXCUSTOM"."XXX_HR_SPECIALITY_INFO"');
end;

DBA_JOBS
.......................................
BEGIN
dbms_refresh.refresh('"XXCUSTOM"."XXX_HR_ASSIGNMENT_REFERENCE"');
END ;
.......................................
-----------------------------------------------------------------------------------
-----------
<<< Table ERROR >>>>
DROP TABLE APPS.XX_ERROR CASCADE CONSTRAINTS;

CREATE TABLE APPS.XX_ERROR


(
SEQ NUMBER,
TDATE DATE,
ERR_MSG VARCHAR2(2500 BYTE)
)
TABLESPACE APPS_TS_TX_DATA
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 128K
NEXT 128K
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;

-----------------------------------------------------------------------------------
----------------------------
<<<Employee Hire Date>>>
V_EMP_HIRE_DATE :=
FND_DATE.CANONICAL_TO_DATE (XXX_HR_PACKAGE4.XXX_PERSON_INFO (
P_PERSON_ID,
0,
TRUNC (SYSDATE) - 1,
'CURR_HIR',
'US'));

-----------------------------------------------------------------------------------
-----------------------------
XXX_HR_ALW_DETAILS ... view �������� ������� �� XXX_EIT_ELEMENT_MAPPING.. UDT �����
������ ��

SELECT DISTINCT INFORMATION_TYPE


FROM XXX_HR_ALW_DETAILS
WHERE INFORMATION_TYPE NOT IN

(
SELECT BASE_ROW_LOW_RANGE_OR_NAME
FROM PAY_USER_COLUMN_INSTANCES_FV
WHERE (BUSINESS_GROUP_ID IS NULL OR BUSINESS_GROUP_ID = 0)
AND (LEGISLATION_CODE IS NULL OR LEGISLATION_CODE = 'SA')
AND (USER_COLUMN_ID = 52836)

)
-----------------------------------------------------------------------------------
------------------------------
TO LIST ALL HOLD BULK DECREES <<<<���� �������� ��������>>>

-------------------- From OSama------------------------


SELECT AD.FULL_NAME
,AD.EMPLOYEE_NUMBER
,PPF.PAYROLL_NAME
,DECODE (AD.TYPE,'XXX_DAILYFIELD_ALW','��� ����� �����'
,'XXX_RISK_ALW','��� ���'
,'XXX_TERROR_ALW','����� ������ �������'
,'XXX_FEDAYEEN_ALW','����� ���������'
,'XXX_NCOS_OVT_ASSIGNMENT','������ ��� ����� �������'
,'XXX_NCOS_OVT_PAYMENT','��� ��� ����� �������'
,'XXX_OVT_ALW','��� �����'
) ALW
,AD.ATTRIBUTE15 DECREE_NUMBER
,AD.ATTRIBUTE16 DECREE_DATE
,AD.BATCH_ID
,AD.STATUS
FROM XXX_HR_ADD_INF_DET AD,PER_ALL_ASSIGNMENTS_F PAAF, (SELECT
PAYROLL_ID,PAYROLL_NAME FROM PAY_PAYROLLS_F PPF WHERE TO_DATE('2015/10/14
00:00:00','rrrr/mm/dd HH24:MI:SS') BETWEEN PPF.EFFECTIVE_START_DATE AND
PPF.EFFECTIVE_END_DATE ) PPF
WHERE STATUS !='EXECUTED'
AND PAAF.PAYROLL_ID = PPF.PAYROLL_ID(+)
--and TO_DATE('2015/10/14 00:00:00','rrrr/mm/dd HH24:MI:SS') BETWEEN
ppf.EFFECTIVE_START_DATE AND ppf.EFFECTIVE_END_DATE
AND TO_DATE(AD.ATTRIBUTE16,'rrrr/mm/dd HH24:MI:SS') <= TO_DATE('2015/10/14
00:00:00','rrrr/mm/dd HH24:MI:SS')
AND AD.PERSON_ID=PAAF.PERSON_ID
AND TO_DATE('2015/10/14 00:00:00','rrrr/mm/dd HH24:MI:SS') BETWEEN
PAAF.EFFECTIVE_START_DATE AND PAAF.EFFECTIVE_END_DATE
ORDER BY PPF.PAYROLL_NAME,AD.FULL_NAME
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------

<<<<Value Set Depend on Another>>>

WHERE ATTR.ABSENCE_ATTENDANCE_TYPE_ID = :$FLEX$.XXX_HR_ABSENCE_TYPES


____________________
example of the value set name the
origin vale set
when you choose the the type of
the absence the reasons listed depned on.
-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
--------------------------------

������ ��� �� ����� ������ �� ��.... ����<<<

L_END_SCH := 0;

SELECT 1
INTO L_END_SCH
FROM PER_PEOPLE_EXTRA_INFO
WHERE INFORMATION_TYPE = 'XXX_SCH_DELETE_DECREE'
AND PERSON_ID = P_PERSON_ID
AND PEI_INFORMATION25 = P_PEI_INFORMATION25
AND PEI_INFORMATION4 = 'END'
AND FND_DATE.CANONICAL_TO_DATE(PEI_INFORMATION5) <=
FND_DATE.CANONICAL_TO_DATE (P_PEI_INFORMATION3)--rejoin date
AND PEI_INFORMATION15 IS NOT NULL
AND PEI_INFORMATION16 IS NOT NULL;

IF L_END_SCH = 0 THEN

IF FND_DATE.CANONICAL_TO_DATE (P_PEI_INFORMATION3) <=


L_SCH_END_DATE
THEN
--
HR_UTILITY.SET_MESSAGE (800, 'XXX_SCHOLARSHIP_037'); -- You Cannot
Resume Before or On Scholarship End Date. Please First End Date it then Resume on
this Date.
HR_UTILITY.RAISE_ERROR;
--
END IF;
-----------------------------------------------------------------------------------
--------------------------
<<function char 2 date>>
function canonical_to_date(canonical varchar2) return date is
dateval date;
new_canonical varchar2(30);
begin
new_canonical := canonical;
dateval := to_date(new_canonical, canonical_DT_mask);
return dateval;
end canonical_to_date;

-----------------------------------------------------------------------------------
------------------------------
<<<TO SHOW MESSAGES FOR TRACKING>>>
XX_ERRORS VARCHAR2(1000);

XX_ERRORS:=APPS.XX_DEBUG('FFFF1');

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

<<<������ ������ �������� ���� �����>>>

ORG_CLOSED := XXX_HR_RSAF_REPORT.XXX_IS_ORG_CLOSED ( L_ORG_ID, sysdate ) ;

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

<<������ ������� �������� �� ����� ����� �� ���� ���EIT>>

���� ����� :
���� ���� ����� ������� �������� ����� ������ ���� ��� ���� ������� ���� �� ����
��� ������� �� �� �������� ���� ����� �������� �������� ���� ���� ��� ������� :
SELECT *
FROM PER_PEOPLE_EXTRA_INFO PPEI
WHERE PPEI.INFORMATION_TYPE LIKE'XXX_ASSIGNMENT_CANCEL'
--AND PPEI.PERSON_ID=1835
AND PPEI.PEI_INFORMATION1=(SELECT PERSON_EXTRA_INFO_ID
FROM PER_PEOPLE_EXTRA_INFO PPEI2
WHERE
PPEI.PEI_INFORMATION1=PPEI2.PERSON_EXTRA_INFO_ID
AND
PPEI2.INFORMATION_TYPE='XXX_TRANSFER_DECREE')
--AND PPEI2.PERSON_ID=1835)

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

<<System Login>>>
user name: 440007655

Pass. :y123456*

-----------------------------------------------------------------------------------
---------------------------------------------
������ ������ ������� ������� �� ����� ������,,

����:���� ����� ��� ����� ��������� ���<����� ����� �������


������ �� ������ ��� ���� ����� ������� ��� ��� �������
������:���� ����� ����� ����� ���� ������� ��� ������ �� ���� ������� ����� �������
Help >> Diagonistic>> Examin
Search with : Payroll Action Id And put it ��� �������
������ ��� ������ ������� �� ���� : �������
������: �� ��� ������ ������� ����� ����� ������ ������� ����� ���� ������ ��
������� �������� ���� ���� ���� ����� ����� ���� ������� �� ��� ���� ����� �����
����� ���������
Formula Result
��� ��� ������ ������� ����� ���
����� ����� ������� ������� ����� ��� ������
Indirect Result
-----------------------------------------------------------------------------------
----------

������ �� ���Payroll

��� ������� �� ����� �� :


PAYROLL_ACTION_ID
�� ���� ��� ����� ����� ��������
������ ���� ��� ������ ������� ������� ������� �� ��� �����

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

<<<<<<<<<This Query To View The Net Salary of the employee >>>>>>>>>>>>>>

SELECT ppx.EMPLOYEE_NUMBER,
ppx.FULL_NAME,
-- pet.CLASSIFICATION_ID,
'������' CLASSIFICATION,
'������' element_name,
pay.payroll_name payroll,
sum(DECODE (pet.CLASSIFICATION_ID,
105, TO_NUMBER (prv1.result_value),
101, TO_NUMBER (prv1.result_value) * -1,
0))
result_value--, XXX_HR_PACKAGE4.XXX_PERSON_INFO
( ppx.PERSON_ID, 0, to_date('20-MAR-2015','dd-MON-yyyy') , 'GRADE_STEP', 'US' )
STEP_NO

pax.EMPLOYMENT_CATEGORY,
lk.meaning lk_emp_class,
DECODE (pax.EMPLOYMENT_CATEGORY,
'01', '������',
'02', '������',
'10', '�������',
'11', '�������',
'20', '�������',
'30', '�������',
'31', '�������',
'51', '����������',
'52', '����������',
lk.meaning)
emp_class
--,XXX_HR_PACKAGE1.GET_GRADE_INFO( Pax.GRADE_ID , 'RANK' )
RANK_CODE
FROM pay_element_types_f pet,
pay_input_values_f piv1 /* Pay Value */
,
pay_assignment_actions rpaa /* run assignment action */
,
pay_payroll_actions rppa /* run payroll action */
,
pay_run_result_values prv1 /* Pay Value */
,
pay_run_results prr,
per_all_assignments_f pax,
per_people_x ppx,
pay_payrolls_f pay,
pay_payrolls_f pay1,
fnd_common_lookups lk
WHERE rppa.action_type IN ('R', 'Q')
-- and rppa.action_status = 'C'
-- and ppx.employee_number='200022786'
AND rppa.payroll_action_id = rpaa.payroll_action_id
AND rpaa.assignment_action_id = prr.assignment_action_id
AND rpaa.assignment_id = pax.assignment_id
AND SYSDATE BETWEEN pay.effective_start_date
AND pay.effective_end_date
AND SYSDATE BETWEEN pet.effective_start_date
AND pet.effective_end_date
AND rppa.EFFECTIVE_DATE BETWEEN pax.effective_start_date
AND pax.effective_end_date
-- and grstep.assignment_id(+) = pax.assignment_id

AND pet.element_type_id = piv1.element_type_id


AND piv1.name = 'Pay Value'
AND piv1.input_value_id = prv1.input_value_id
AND prv1.run_result_id = prr.run_result_id
AND prv1.result_value IS NOT NULL
AND ppx.person_id = pax.person_id
AND pay.payroll_id = pax.payroll_id
AND pay1.payroll_id = pax.payroll_id
AND lk.lookup_type = 'EMP_CAT'
AND lookup_code = pax.EMPLOYMENT_CATEGORY
--and rppa.ELEMENT_SET_ID = 2078

AND RPPA.CONSOLIDATION_SET_ID = 1
--AND pet.CLASSIFICATION_ID IN (105,101,109,104,100)

-- and payroll_name = '��� ����� ����� ������ ������'

and employee_number = '200022786'

AND rppa.EFFECTIVE_DATE BETWEEN TO_DATE ('05-09-2016',


'dd-mm-yyyy')
AND TO_DATE ('05-09-2016',
'dd-mm-yyyy')

group by ppx.EMPLOYEE_NUMBER,
ppx.FULL_NAME,
-- pet.CLASSIFICATION_ID,
--CLASSIFICATION,
--element_name,
pay.payroll_name,
pax.EMPLOYMENT_CATEGORY,
lk.meaning,
DECODE (pax.EMPLOYMENT_CATEGORY,
'01', '������',
'02', '������',
'10', '�������',
'11', '�������',
'20', '�������',
'30', '�������',
'31', '�������',
'51', '����������',
'52', '����������',
lk.meaning)

-- ORDER BY 1-- AND


pax.assignment_status_type_id = 1
--
-- and
pay.payroll_id = 89

-------------------------------And This Query To list All elements _Earnings &


Deductions-------------------------------------------

SELECT ppx.EMPLOYEE_NUMBER,
ppx.FULL_NAME,
-- pet.CLASSIFICATION_ID,
'������' CLASSIFICATION,
'������' element_name,
pay.payroll_name payroll,
DECODE (pet.CLASSIFICATION_ID,
105, TO_NUMBER (prv1.result_value),
101, TO_NUMBER (prv1.result_value) * -1,
0)
result_value--, XXX_HR_PACKAGE4.XXX_PERSON_INFO
( ppx.PERSON_ID, 0, to_date('20-MAR-2015','dd-MON-yyyy') , 'GRADE_STEP', 'US' )
STEP_NO

pax.EMPLOYMENT_CATEGORY,
lk.meaning lk_emp_class,
DECODE (pax.EMPLOYMENT_CATEGORY,
'01', '������',
'02', '������',
'10', '�������',
'11', '�������',
'20', '�������',
'30', '�������',
'31', '�������',
'51', '����������',
'52', '����������',
lk.meaning)
emp_class
--,XXX_HR_PACKAGE1.GET_GRADE_INFO( Pax.GRADE_ID , 'RANK' )
RANK_CODE

FROM pay_element_types_f pet,


pay_input_values_f piv1 /* Pay Value */
,
pay_assignment_actions rpaa /* run assignment action */
,
pay_payroll_actions rppa /* run payroll action */
,
pay_run_result_values prv1 /* Pay Value */
,
pay_run_results prr,
per_all_assignments_f pax,
per_people_x ppx,
pay_payrolls_f pay,
pay_payrolls_f pay1,
fnd_common_lookups lk
WHERE rppa.action_type IN ('R', 'Q')
-- and rppa.action_status = 'C'
-- and ppx.employee_number='200022786'
AND rppa.payroll_action_id = rpaa.payroll_action_id
AND rpaa.assignment_action_id = prr.assignment_action_id
AND rpaa.assignment_id = pax.assignment_id
AND SYSDATE BETWEEN pay.effective_start_date
AND pay.effective_end_date
AND SYSDATE BETWEEN pet.effective_start_date
AND pet.effective_end_date
AND rppa.EFFECTIVE_DATE BETWEEN pax.effective_start_date
AND pax.effective_end_date
-- and grstep.assignment_id(+) = pax.assignment_id

AND pet.element_type_id = piv1.element_type_id


AND piv1.name = 'Pay Value'
AND piv1.input_value_id = prv1.input_value_id
AND prv1.run_result_id = prr.run_result_id
AND prv1.result_value IS NOT NULL
AND ppx.person_id = pax.person_id
AND pay.payroll_id = pax.payroll_id
AND pay1.payroll_id = pax.payroll_id
AND lk.lookup_type = 'EMP_CAT'
AND lookup_code = pax.EMPLOYMENT_CATEGORY
--and rppa.ELEMENT_SET_ID = 2078

AND RPPA.CONSOLIDATION_SET_ID = 1
--AND pet.CLASSIFICATION_ID IN (105,101,109,104,100)

-- and payroll_name = '��� ����� ����� ������ ������'

and employee_number = '200022786'

AND rppa.EFFECTIVE_DATE BETWEEN TO_DATE ('05-09-2016',


'dd-mm-yyyy')
AND TO_DATE ('05-09-2016',
'dd-mm-yyyy')

...................................................................................
...........................OR
SELECT ppx.EMPLOYEE_NUMBER , ppx.FULL_NAME,pet.ELEMENT_NAME--,pet.CLASSIFICATION_ID
, element_name ,prr.RUN_RESULT_ID,prr.ASSIGNMENT_ACTION_ID
-- , payroll_name payroll,to_number(prv1.result_value) , rppa.EFFECTIVE_DATE ,
hr_sa_hijrah_functions.gregorian_to_hijrah( rppa.EFFECTIVE_DATE )
--, DECODE(pax.EMPLOYMENT_CATEGORY,'01','??????'
-- ,'02','??????'
-- ,'10','???????'
-- ,'11','???????'
-- ,'20','???????'
-- ,'30','???????'
-- ,'31','???????'
-- ,'51','??????????'
-- ,'52','??????????'
-- ,lk.meaning
-- ) emp_class
,sum(prv1.result_value)
FROM pay_element_types_f pet
,pay_input_values_f piv1 /* Pay Value */
,pay_assignment_actions rpaa /* run assignment action */
,pay_payroll_actions rppa /* run payroll action */
,pay_run_result_values prv1 /* Pay Value */
,pay_run_results prr
,per_all_assignments_f pax
, per_people_x ppx
,pay_payrolls_f pay
,fnd_common_lookups lk
WHERE
rppa.action_type in ('R')
and rppa.action_status = 'C'
and rppa.payroll_action_id=rpaa.payroll_action_id
and rpaa.assignment_action_id=prr.assignment_action_id
and rpaa.assignment_id = pax.assignment_id
and sysdate between pay.effective_start_date and pay.effective_end_date
and sysdate between pet.effective_start_date and pet.effective_end_date
and rppa.EFFECTIVE_DATE between pax.effective_start_date and
pax.effective_end_date
-- and grstep.assignment_id(+) = pax.assignment_id
and pet.element_type_id=piv1.element_type_id
and piv1.name='Pay Value'
and piv1.input_value_id=prv1.input_value_id
and prv1.run_result_id=prr.run_result_id
and prv1.result_value is not null
and ppx.person_id = pax.person_id
and pay.payroll_id = pax.payroll_id
and lk.lookup_type = 'EMP_CAT'
and lookup_code = pax.EMPLOYMENT_CATEGORY
and ppx.person_id= (select person_id from per_people_x where EMPLOYEE_NUMBER =
'300325857')
-- and rppa.ELEMENT_SET_ID = 2078
-- AND pet.CLASSIFICATION_ID IN (105,101,109,104,100)
-- and rppa.CONSOLIDATION_SET_ID = 26078
-- and :p_date between TO_DATE('12-05-2016','DD-MM-YYYY') and to_date('12-05-
2016','dd-MM-yyyy')
and rppa.EFFECTIVE_DATE between TO_DATE('01-01-2016','DD-MM-YYYY') and
to_date('01-02-2016','dd-MM-yyyy')
-- and pet.element_name like 'Qualifying Award'
and rownum <=10
group by ppx.EMPLOYEE_NUMBER , ppx.FULL_NAME,pet.ELEMENT_NAME
-----------------------------------------------------------------------------------
--------------------------------

<< last query: to list all employees and using case statement>>
select salgroup,count(salgroup)

from
(SELECT employee_number,

full_name,
payroll,
cnt,
(CASE
WHEN (result_value BETWEEN 5000 AND 10000) THEN 1
WHEN (result_value BETWEEN 10001 AND 15000) THEN 2
WHEN (result_value > 15000) THEN 3 ELSE 0
END)salgroup

FROM (

SELECT ppx.EMPLOYEE_NUMBER,
ppx.FULL_NAME,
pay.payroll_name payroll,
COUNT (*) cnt,
SUM (
DECODE (pet.CLASSIFICATION_ID,
105, TO_NUMBER (prv1.result_value),
101, TO_NUMBER (prv1.result_value) * -1,
0))
result_value,
pax.EMPLOYMENT_CATEGORY,
lk.meaning lk_emp_class,
DECODE (pax.EMPLOYMENT_CATEGORY,
'01', '������',
'02', '������',
'10', '�������',
'11', '�������',
'20', '�������',
'30', '�������',
'31', '�������',
'51', '����������',
'52', '����������',
lk.meaning)
emp_class
FROM pay_element_types_f pet,
pay_input_values_f piv1 /* Pay Value */
,
pay_assignment_actions rpaa /* run assignment action */
,
pay_payroll_actions rppa /* run payroll action */
,
pay_run_result_values prv1 /* Pay Value */
,
pay_run_results prr,
per_all_assignments_f pax,
per_people_x ppx,
pay_payrolls_f pay,
pay_payrolls_f pay1,
fnd_common_lookups lk
WHERE rppa.action_type IN ('R', 'Q')
AND rppa.payroll_action_id = rpaa.payroll_action_id
AND rpaa.assignment_action_id = prr.assignment_action_id
AND rpaa.assignment_id = pax.assignment_id
AND SYSDATE BETWEEN pay.effective_start_date
AND pay.effective_end_date
AND SYSDATE BETWEEN pet.effective_start_date
AND pet.effective_end_date
AND rppa.EFFECTIVE_DATE BETWEEN pax.effective_start_date
AND pax.effective_end_date
AND pet.element_type_id = piv1.element_type_id
AND piv1.name = 'Pay Value'
AND piv1.input_value_id = prv1.input_value_id
AND prv1.run_result_id = prr.run_result_id
AND prv1.result_value IS NOT NULL
AND ppx.person_id = pax.person_id
AND pay.payroll_id = pax.payroll_id
AND pay1.payroll_id = pax.payroll_id
AND lk.lookup_type = 'EMP_CAT'
AND lookup_code = pax.EMPLOYMENT_CATEGORY
AND RPPA.CONSOLIDATION_SET_ID = 1
AND rppa.EFFECTIVE_DATE BETWEEN TO_DATE ('05-09-2016',
'dd-mm-yyyy')
AND TO_DATE ('05-09-2016',
'dd-mm-yyyy')
-- AND
ppx.employee_number in ('200030134','200030135','200030136','200030137')

AND pay.payroll_id = 81

GROUP BY ppx.EMPLOYEE_NUMBER,
ppx.FULL_NAME,
pay.payroll_name,
pax.EMPLOYMENT_CATEGORY,
lk.meaning,
DECODE (pax.EMPLOYMENT_CATEGORY,
'01', '������',
'02', '������',
'10', '�������',
'11', '�������',
'20', '�������',
'30', '�������',
'31', '�������',
'51', '����������',
'52', '����������',
lk.meaning)

))
group by salgroup;
...................................................TO LIST ALL PEOPLE HAVE A
CERTAIN ELEMENT IN A CERTAIN DATE................

SELECT ppx.EMPLOYEE_NUMBER , ppx.FULL_NAME,pet.ELEMENT_NAME--,pet.CLASSIFICATION_ID


, element_name ,prr.RUN_RESULT_ID,prr.ASSIGNMENT_ACTION_ID
-- , payroll_name payroll,to_number(prv1.result_value) , rppa.EFFECTIVE_DATE ,
hr_sa_hijrah_functions.gregorian_to_hijrah( rppa.EFFECTIVE_DATE )
--, DECODE(pax.EMPLOYMENT_CATEGORY,'01','??????'
-- ,'02','??????'
-- ,'10','???????'
-- ,'11','???????'
-- ,'20','???????'
-- ,'30','???????'
-- ,'31','???????'
-- ,'51','??????????'
-- ,'52','??????????'
-- ,lk.meaning
-- ) emp_class
,sum(prv1.result_value)
FROM pay_element_types_f pet
,pay_input_values_f piv1 /* Pay Value */
,pay_assignment_actions rpaa /* run assignment action */
,pay_payroll_actions rppa /* run payroll action */
,pay_run_result_values prv1 /* Pay Value */
,pay_run_results prr
,per_all_assignments_f pax
, per_people_x ppx
,pay_payrolls_f pay
,fnd_common_lookups lk
WHERE
rppa.action_type in ('R')
and rppa.action_status = 'C'
and rppa.payroll_action_id=rpaa.payroll_action_id
and rpaa.assignment_action_id=prr.assignment_action_id
and rpaa.assignment_id = pax.assignment_id
and sysdate between pay.effective_start_date and pay.effective_end_date
and sysdate between pet.effective_start_date and pet.effective_end_date
and rppa.EFFECTIVE_DATE between pax.effective_start_date and
pax.effective_end_date
-- and grstep.assignment_id(+) = pax.assignment_id
and pet.element_type_id=piv1.element_type_id
and piv1.name='Pay Value'
and piv1.input_value_id=prv1.input_value_id
and prv1.run_result_id=prr.run_result_id
and prv1.result_value is not null
and ppx.person_id = pax.person_id
and pay.payroll_id = pax.payroll_id
and lk.lookup_type = 'EMP_CAT'
and lookup_code = pax.EMPLOYMENT_CATEGORY
--and ppx.person_id= (select person_id from per_people_x where EMPLOYEE_NUMBER
= '100027554')
and pet.ELEMENT_NAME ='Scholarship Luggage Allowance Adjustment'
-- and PPX.EMPLOYEE_NUMBER='100027554'
-- and rppa.ELEMENT_SET_ID = 2078
-- AND pet.CLASSIFICATION_ID IN (105,101,109,104,100)
-- and rppa.CONSOLIDATION_SET_ID = 26078
-- and :p_date between TO_DATE('12-05-2016','DD-MM-YYYY') and to_date('12-05-
2016','dd-MM-yyyy')
and rppa.EFFECTIVE_DATE between TO_DATE('01-12-2016','DD-MM-YYYY') and
to_date('31-12-2016','dd-MM-yyyy')
-- and pet.element_name like 'Qualifying Award'
-- and rownum <=10
group by ppx.EMPLOYEE_NUMBER , ppx.FULL_NAME,pet.ELEMENT_NAME
-----------------------------------------------------------------------------------
---------------------------------------------

%%%%%���� ���� ��� ��� ������� �� ���� ��� ����� ��� ���� ����� ��� ���� ���� ���
������%%%%%%%

1-���� ���� �� ��� ��� ����� ���� ��� �� ���� ������� ��� �� ���
2-���� ������� ����� �� ���� ������ ������:
System Administrator>> Define profile option
----------
SQL="SELECT PUC_TL.USER_COLUMN_NAME \"XXX_HR_BUSINESS_MISSION_TYPES\",
PUC.USER_COLUMN_NAME
into :visible_option_value, :profile_option_value
FROM PAY_USER_TABLES PUT
,PAY_USER_COLUMNS PUC
,PAY_USER_COLUMNS_TL PUC_TL
WHERE PUT.USER_TABLE_NAME = 'XXX_BUSINESS_MISSION_RESTRICT'
AND PUT.USER_TABLE_ID = PUC.USER_TABLE_ID
AND PUC.USER_COLUMN_ID = PUC_TL.USER_COLUMN_ID
AND PUC_TL.LANGUAGE = USERENV('LANG')"
COLUMN="\"XXX_HR_BUSINESS_MISSION_TYPES\"(*)"'
����� ��� ������ ���� �� ��� ���� �� ��
�3- ���� ����� ��� ������� �� ���� ��� ���� ���� ������ ��� ������� ��������
�������� ������::
AND ( 'Y' = XXX_HR_PACKAGE2.XXX_GET_TABLE_VALUE (0
,'XXX_EMP_CERTIFICATE_LIST
'
,FND_PROFILE.VALUE('XXX_EM
P_CERTIFICATE_LIST')
,DFVV.FLEX_VALUE
,TRUNC(sysdate)
)
)
-----------------------------------------------------------------------------------
----------------------------
<<XXX_SCH_DELETE_DECREE>>

��� ��� ����� ������ ������ ����� ��� ���� ��� ��� �� ��� ������� ��������� ���
����� ����� ������ ������� ������ �������
���� ���� �������:
���� ����� ������� ���� ����� ����� ������� ������ �������
Enrollment End Date
������ ���� ���� ������ �� ����� �������� ���� ������
-----------------------------------------------------------------------------------
-----------------------------

important packages>>

L_EMP_CATEGORY :=
XXX_HR_PACKAGE1.GET_GRADE_INFO(MY_ASSIGNMENT_INFO_DETAILS.GRADE_ID,'CLASS');

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

<<Value set depend on another value set we use:


:$FLEX$.
ex:
WHERE ATTR.ABSENCE_ATTENDANCE_TYPE_ID = :$FLEX$.XXX_HR_ABSENCE_TYPES
-----------------------------------------------------------------------------------
-----------------------------
<<COMMON VALUE SETS>>

EX:-Comments WE USE THE VALUE SET WHICH NAME IS :120 Characters


-Decree Number WE USE THE VALUE SET WHICH NAME IS :30 Characters
-Decree Date WE USE THE VALUE SET WHICH NAME IS :FND_STANDARD_DATE
-Admin Comm. Integration? WE USE THE VALUE SET WHICH NAME IS :Yes_No

-----------------------------------------------------------------------------------
--------------------
to get the rank of the grade

SELECT XXX_HR_PACKAGE1.GET_GRADE_INFO (1255, 'RANK')X FROM DUAL;

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

������ ���� ��� ������� ������


������ ���� �� �� �������:
��� ������� ���� ��� ����� ���� ������ �������� ����� ���� ����:
ICX: Numeric characters

########################################

update FND_PROFILE_OPTION_VALUES

set PROFILE_OPTION_VALUE = null

where PROFILE_OPTION_ID = 3532

and LEVEL_VALUE in

select LEVEL_VALUE

from fnd_user uu , FND_PROFILE_OPTION_VALUES PV

where uu.end_date is null

--AND UU.USER_ID = UR.USER_ID

--AND UR.END_DATE IS NULL

--AND RR.RESPONSIBILITY_ID =52516

AND PV.LEVEL_ID IN ('10004')

AND PROFILE_OPTION_ID = 3532 -- XXX_HR_DISABLE_VALIDATION

AND LEVEL_VALUE = Uu.USER_ID

--and FND_PROFILE.VALUE_WNPS(NAME => 'XXX_HR_DISABLE_VALIDATION',


RESPONSIBILITY_ID=> RR.RESPONSIBILITY_ID) = 'Y'

--and UU.USER_NAME = '440007654'

AND PROFILE_OPTION_VALUE is not null

and PROFILE_OPTION_VALUE <> '.,')

-----------------------------------------------------------
<<< Request Name>>>>

Regenerate Position Names>>> request name from saudi HRMS Res. To regenerate
position names.

----------------------------------------------------------------
������� ���� ���� ����� ����� ���� ��� �����,,

SELECT pp.EMPLOYEE_NUMBER , full_name,


pp.person_id,paaf.PERIOD_OF_SERVICE_ID,ppei1.pei_information3 , ppei1.*

FROM per_people_extra_info ppei1 , per_all_people_f


pp,per_all_assignments_f paaf

WHERE ppei1.information_type = 'XXX_TERMINATION'

AND ppei1.person_id = pp.person_id

and pp.person_id=paaf.person_id

AND pp.CURRENT_EMPLOYEE_FLAG = 'Y'

and paaf.primary_flag='Y'

-- and employee_number = '4131979' -- '4131979'

AND sysdate between pp.EFFECTIVE_START_DATE and pp.EFFECTIVE_END_DATE

AND sysdate between paaf.EFFECTIVE_START_DATE and


paaf.EFFECTIVE_END_DATE

AND PPEI1.PEI_INFORMATION15 is not null

AND PPEI1.PEI_INFORMATION16 is not null

and not exists ( SELECT 1 FROM

per_people_extra_info ppei2

where ppei2.information_type = 'XXX_CANCEL_TERMINATION'

and ppei2.PEI_INFORMATION25 = ppei1.PERSON_EXTRA_INFO_ID


and ppei2.person_id = ppei1.person_id )

and not exists ( SELECT PPOS.PERIOD_OF_SERVICE_ID

FROM
PER_PERIODS_OF_SERVICE PPOS

where
ppos.ACTUAL_TERMINATION_DATE=FND_DATE.CANONICAL_TO_DATE(PPEI1.PEI_INFORMATION3)-1

and PPOS.person_id
=paaf.person_id )

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

<<API 2 UPDATE POSITIONS NAMES >>>


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

DECLARE
V_ERROR VARCHAR2 (2000);
V_DUMMY VARCHAR2 (100);
LV_USER_ID NUMBER;
LV_RESP_ID NUMBER;
LV_RESP_APPL_ID NUMBER;
-- l_count number;

CURSOR C1 IS
SELECT PAPF.FULL_NAME,
PAPF.EMPLOYEE_NUMBER,PA.POSITION_ID,HR_GENERAL.DECODE_POSITION_LATEST_NAME
(PA.POSITION_ID) POSITION_NAME
FROM PER_ALL_ASSIGNMENTS_F PA , PER_ALL_PEOPLE_F
PAPF,PER_PEOPLE_EXTRA_INFO PPEI
WHERE PAPF.PERSON_ID = PA.PERSON_ID
AND PPEI.PERSON_ID=PAPF.PERSON_ID
AND PPEI.INFORMATION_TYPE='XXX_SPECIALTY'
AND PPEI.PEI_INFORMATION3=678
AND PA.PRIMARY_FLAG = 'Y'
--AND PAPF.EMPLOYEE_NUMBER in('200030702','200029924','200029972')
AND PAPF.CURRENT_EMPLOYEE_FLAG = 'Y'
AND HR_GENERAL.DECODE_POSITION_LATEST_NAME (PA.POSITION_ID) LIKE
'%���� ��� �����%'
AND SYSDATE BETWEEN PAPF.EFFECTIVE_START_DATE
AND PAPF.EFFECTIVE_END_DATE
AND SYSDATE BETWEEN PA.EFFECTIVE_START_DATE
AND PA.EFFECTIVE_END_DATE;

BEGIN

SELECT FND.USER_ID, FRESP.RESPONSIBILITY_ID, FRESP.APPLICATION_ID


INTO LV_USER_ID, LV_RESP_ID, LV_RESP_APPL_ID
FROM FND_USER FND, FND_RESPONSIBILITY_TL FRESP
WHERE FND.USER_NAME = 'REQUESTER'
AND FRESP.RESPONSIBILITY_NAME = 'Saudi HRMS Manager';
FND_GLOBAL.APPS_INITIALIZE (USER_ID => LV_USER_ID,
RESP_ID => LV_RESP_ID,
RESP_APPL_ID => LV_RESP_APPL_ID);

FOR I IN C1 LOOP
BEGIN

HR_POSITION_API.REGENERATE_POSITION_NAME(I.POSITION_ID);
DBMS_OUTPUT.PUT_LINE('The Position : '||I.POSITION_ID||' ' ||'Updated
PASS');

--DBMS_OUTPUT.PUT_LINE('l_count : '||l_count);

EXCEPTION

WHEN OTHERS THEN


V_ERROR := NULL;
V_ERROR := SUBSTR (SQLERRM, 1, 2000);
DBMS_OUTPUT.PUT_LINE(I.POSITION_ID||' '||V_ERROR);

END;

END LOOP;

EXCEPTION
WHEN OTHERS
THEN
V_ERROR := SUBSTR (SQLERRM, 1, 2000);
DBMS_OUTPUT.PUT_LINE(V_ERROR);

END ;

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

<<< INSERT SESSION>>>>

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

INSERT INTO FND_SESSIONS(SESSION_ID,EFFECTIVE_DATE)


SELECT USERENV('SESSIONID'),TRUNC(SYSDATE)
FROM DUAL
WHERE NOT EXISTS(SELECT 1 FROM FND_SESSIONS FS
WHERE FS.SESSION_ID=USERENV('SESSIONID'));

-----------------------------------------------------------------------------------
------------------------------
<< error in arabic session and not appera in english session>>>
����� ���� ��� :
�� ��� ���� ������ ������� ��� ������ ������� ������
��� ���� ��� ����� ������� ��������� ���� ���� �� :
���� ����� �� ��� �� ���� ��� ����� �� ����� ��� ��� 100 ���� 150 �� 200 �����
�������

-----------------------------------------------------------------------------------
-------------------------------
<<���� ����� >>
select * from all_source where text like'%XXX_DELEGATION_DECREE%'
-----------------------------------------------------------------------------------
-------------------------------
<<������ ������� ��������>>
CREATE OR REPLACE FUNCTION XXX_HR_SCH_PRA_CER(P_PERSON_EXTRA_INFO_ID IN
NUMBER)RETURN VARCHAR2 AS

CURSOR SCH_PRA_CER(P_PERSON_EXTRA_INFO_ID IN NUMBER) IS


SELECT 'Y'
FROM PER_PEOPLE_EXTRA_INFO PPEI
WHERE INFORMATION_TYPE='XXX_SCH_CREATE_DECREE'
AND EXISTS(SELECT 'Y'
FROM PER_PEOPLE_EXTRA_INFO PPEII
WHERE PPEII.INFORMATION_TYPE='XXX_HR_SCH_PRACTICING_CER'
AND PPEII.PEI_INFORMATION25=P_PERSON_EXTRA_INFO_ID);
V_FLAG VARCHAR2(100);

BEGIN

OPEN SCH_PRA_CER (P_PERSON_EXTRA_INFO_ID) ;


FETCH SCH_PRA_CER INTO V_FLAG;
CLOSE SCH_PRA_CER;

IF V_FLAG='Y' THEN
RETURN 'WITH_PRACTICE_CERTIFICATE';
ELSE
RETURN 'WITHOUT_PRACTICE_CERTIFICATE';
END IF;
END;
-----------------------------------------------------------------------------------
--------------------

oracle cloud login:


user name:[email protected]
password:yazeedawwad1990#

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

<<< Registration for user hooks>>>


1) three tables important in regestration :

A)HR_API_MODULES

B)HR_API_HOOKS
C)HR_API_HOOK_CALLS

2) you need to get :api hook id ; to use it in


hr_api_hook_call_api.create_api_hook_call.... (api)
you can get the api hook id from : HR_API_HOOKS
you can get the name of the module which match your needs,such as :UPDATE_PERSON
make the filter on the table (A) as:MODULE_NAME LIKE '%UPDATE_PERSON%' depend on
your case.
get the API_MODULE_ID for the MODULE_NAME which get it,

3)GO th the table(B)AND PUT THE API_MODULE_ID IN FILTER ,EX:API_MODULE_ID = 1212


TAKE THE HOOK PACKAGE AND HOOK PROCEDURE ,EX: HR_PERSON_BK1(HOOK PACKAGE)
UPDATE_PERSON_B(HOOK PROCUDER)

4)HOOK PACKAGE.HOOK PROCUDER>> F4>> AND GET THE PROCEDURE OVERALL


5)OPEN XXX_HR_USER_HOOKS(CUSTOM CODE)
CREATE THE PREVIOUS PROCEDURE IN SPECIFICATION AND HEADER.
6) USE THIS API:
set serverout on;
-- Procedure to Create API Hook

declare
l_api_hook_call_id number;
l_object_version_number number;
l_sequence number;
begin
select HR_API_HOOKS_S.NEXTVAL
into l_sequence
from dual;
hr_api_hook_call_api.create_api_hook_call
(p_validate => false,
p_effective_date => to_date('01-01-2014','dd-mm-yyyy'),
p_api_hook_id => 3876, ------------------------------------
p_api_hook_call_type => 'PP',
p_sequence => l_sequence,
p_enabled_flag => 'Y',
p_call_package => 'XXX_HR_USER_HOOKS', --------------
p_call_procedure => 'AFTER_INSERT',
-----------------
p_api_hook_call_id => l_api_hook_call_id,
p_object_version_number => l_object_version_number);
dbms_output.put_line('l_api_hook_call_id:'||l_api_hook_call_id);
dbms_output.put_line('l_object_version_number:'||l_object_version_number);
end;
/
TABLE(A)ABOVE.

___________________________________________________________________________________
_____________________________

HR_API_MODULES

HR_API_HOOKS
HR_API_HOOK_CALLS
--------------------------------------------------------------
select * from hr_api_modules where module_name = 'CREATE_PERSON_EXTRA_INFO'
-----------------
select ahk.api_hook_id,ahk.api_hook_type,

ahk.hook_package,

ahk.hook_procedure from hr_api_hooks ahk where

api_module_id = 1226
---------------------------------
select * from hr_api_hook_calls where api_hook_id = 2758 -- After Proccess
------------------------------
select ahk.api_hook_id,ahk.api_hook_type,

ahk.hook_package,

ahk.hook_procedure

from hr_api_hooks ahk,

hr_api_modules ahm

where ahm.module_name='CREATE_PERSON_EXTRA_INFO'

and ahk.api_module_id=ahm.api_module_id
-------------------------------------------

declare

l_api_hook_call_id number;

l_object_version_number number;

begin

hr_api_hook_call_api.create_api_hook_call

(p_validate => false,

p_effective_date => to_date('01-JAN-1900','DD-MON-YYYY'),

p_api_hook_id => 2758,-- API HOOK ID

p_api_hook_call_type => 'PP',

p_sequence => 3100,-- SEQ NO

p_enabled_flag => 'Y',

p_call_package => 'XXX_HR_USER_HOOKS', -- Package Name

p_call_procedure => 'CREATE_PERSON_EXTRA_INFO_B', -- Procedure Name


p_api_hook_call_id => l_api_hook_call_id,

p_object_version_number => l_object_version_number);


dbms_output.put_line('Procedure Successfully Registered');
exception when others then
dbms_output.put_line(sqlerrm);
end;
----------------------------------
DECLARE

BEGIN

hr_api_user_hooks_utility.create_hooks_one_module(1226); -- Module ID

dbms_output.put_line('Pre-Preocessor Run Successfully');

exception

when others then

dbms_output.put_line(sqlerrm);
END;

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

<<<<XXX_TERMINATION ���� ��� ����� �� ����� ���� ����� ����

SELECT PP.EMPLOYEE_NUMBER , FULL_NAME,


PP.PERSON_ID,PAAF.PERIOD_OF_SERVICE_ID,PPEI1.PEI_INFORMATION3 END_EMPLOYMENT ,
PPEI1.INFORMATION_TYPE,PAAF.ASSIGNMENT_NUMBER
FROM PER_PEOPLE_EXTRA_INFO PPEI1 , PER_ALL_PEOPLE_F
PP,PER_ALL_ASSIGNMENTS_F PAAF
WHERE PPEI1.INFORMATION_TYPE = 'XXX_TERMINATION'
AND PPEI1.PERSON_ID = PP.PERSON_ID
AND PP.PERSON_ID=PAAF.PERSON_ID
AND PP.CURRENT_EMPLOYEE_FLAG = 'Y'
AND PAAF.PRIMARY_FLAG='Y'
AND SYSDATE BETWEEN PP.EFFECTIVE_START_DATE AND PP.EFFECTIVE_END_DATE
AND SYSDATE BETWEEN PAAF.EFFECTIVE_START_DATE AND
PAAF.EFFECTIVE_END_DATE
AND PPEI1.PEI_INFORMATION15 IS NOT NULL
AND PPEI1.PEI_INFORMATION16 IS NOT NULL
AND NOT EXISTS ( SELECT 1 FROM

PER_PEOPLE_EXTRA_INFO PPEI2

WHERE PPEI2.INFORMATION_TYPE = 'XXX_CANCEL_TERMINATION'

AND PPEI2.PEI_INFORMATION25 = PPEI1.PERSON_EXTRA_INFO_ID


AND PPEI2.PERSON_ID = PPEI1.PERSON_ID )
AND NOT EXISTS ( SELECT PPOS.PERIOD_OF_SERVICE_ID
FROM
PER_PERIODS_OF_SERVICE PPOS
WHERE
PPOS.ACTUAL_TERMINATION_DATE=FND_DATE.CANONICAL_TO_DATE(PPEI1.PEI_INFORMATION3)-1
AND PPOS.PERSON_ID
=PAAF.PERSON_ID )

UNION
SELECT PP.EMPLOYEE_NUMBER , FULL_NAME,
PP.PERSON_ID,PAAF.PERIOD_OF_SERVICE_ID,PPEI1.PEI_INFORMATION3 END_EMPLOYMENT ,
PPEI1.INFORMATION_TYPE,PAAF.ASSIGNMENT_NUMBER
FROM per_people_extra_info ppei1 , per_all_people_f
pp,per_all_assignments_f paaf
WHERE ppei1.information_type = 'XXX_EARLY_RETIREMENT'
AND ppei1.person_id = pp.person_id
and pp.person_id=paaf.person_id
AND pp.CURRENT_EMPLOYEE_FLAG = 'Y'
and paaf.primary_flag='Y'
-- and employee_number = '4131979' -- '4131979'
AND sysdate between pp.EFFECTIVE_START_DATE and pp.EFFECTIVE_END_DATE
AND sysdate between paaf.EFFECTIVE_START_DATE and
paaf.EFFECTIVE_END_DATE
AND PPEI1.PEI_INFORMATION15 is not null
AND PPEI1.PEI_INFORMATION16 is not null
-- and not exists ( SELECT 1 FROM
--
per_people_extra_info ppei2
--
where ppei2.information_type = 'XXX_CANCEL_TERMINATION'
--
and ppei2.PEI_INFORMATION25 = ppei1.PERSON_EXTRA_INFO_ID
--
and ppei2.person_id = ppei1.person_id )
and not exists ( SELECT PPOS.PERIOD_OF_SERVICE_ID
FROM
PER_PERIODS_OF_SERVICE PPOS
where
ppos.ACTUAL_TERMINATION_DATE=FND_DATE.CANONICAL_TO_DATE(PPEI1.PEI_INFORMATION3)-1
and PPOS.person_id
=paaf.person_id )

UNION
SELECT PP.EMPLOYEE_NUMBER , FULL_NAME,
PP.PERSON_ID,PAAF.PERIOD_OF_SERVICE_ID,PPEI1.PEI_INFORMATION3 END_EMPLOYMENT ,
PPEI1.INFORMATION_TYPE,PAAF.ASSIGNMENT_NUMBER
FROM per_people_extra_info ppei1 , per_all_people_f
pp,per_all_assignments_f paaf
WHERE ppei1.information_type = 'XXX_RESIGNATION'
AND ppei1.person_id = pp.person_id
and pp.person_id=paaf.person_id
AND pp.CURRENT_EMPLOYEE_FLAG = 'Y'
and paaf.primary_flag='Y'
-- and employee_number = '4131979' -- '4131979'
AND sysdate between pp.EFFECTIVE_START_DATE and pp.EFFECTIVE_END_DATE
AND sysdate between paaf.EFFECTIVE_START_DATE and
paaf.EFFECTIVE_END_DATE
AND PPEI1.PEI_INFORMATION15 is not null
AND PPEI1.PEI_INFORMATION16 is not null
-- and not exists ( SELECT 1 FROM
--
per_people_extra_info ppei2
--
where ppei2.information_type = 'XXX_CANCEL_TERMINATION'
--
and ppei2.PEI_INFORMATION25 = ppei1.PERSON_EXTRA_INFO_ID
--
and ppei2.person_id = ppei1.person_id )
and not exists ( SELECT PPOS.PERIOD_OF_SERVICE_ID
FROM
PER_PERIODS_OF_SERVICE PPOS
where
ppos.ACTUAL_TERMINATION_DATE=FND_DATE.CANONICAL_TO_DATE(PPEI1.PEI_INFORMATION3)-1
and PPOS.person_id
=paaf.person_id )

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

<<�� ���� ����� ����� ������ >>


##to get the person that create a reverese take the number from crreated by ang go
to fnd_user table and put it there:

select employee_number ,full_name ,EVT.ASSIGNMENT_ID,pax.assignment_number

,EVT.EFFECTIVE_DATE

,HR_SA_HIJRAH_FUNCTIONS.GREGORIAN_TO_HIJRAH( EVT.EFFECTIVE_DATE) h_eff_date

,EVT.DESCRIPTION

,EVT.CREATION_DATE

,HR_SA_HIJRAH_FUNCTIONS.GREGORIAN_TO_HIJRAH( EVT.CREATION_DATE) h_creation_date

,EVT.CREATED_BY

,EVT.STATUS

,EVT.SURROGATE_KEY

,EVU.TABLE_NAME

,EVU.CHANGE_TYPE

,EVU.COLUMN_NAME
,EVU.EVENT_TYPE

from

per_ALL_people_F ppx

,per_all_assignments_f pax

,PAY_PROCESS_EVENTS evt

,PAY_EVENT_UPDATES evu

where ppx.person_id = pax.person_id

and pax.ASSIGNMENT_ID = EVT.ASSIGNMENT_ID

and EVU.EVENT_UPDATE_ID = EVT.EVENT_UPDATE_ID

--and employee_number = '100013530'

and ppx.person_id = 7208

--and pax.assignment_number = '850122507'

--and EVT.SURROGATE_KEY = 3093340

AND EVT.EFFECTIVE_DATE BETWEEN PAX.EFFECTIVE_START_DATE AND PAX.EFFECTIVE_END_DATE

AND EVT.EFFECTIVE_DATE BETWEEN PPX.EFFECTIVE_START_DATE AND PPX.EFFECTIVE_END_DATE

and table_name like '%PERIOD%'

order by EVT.CREATION_DATE desc


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

������� ����� ����� ����� ��� ����� ��� ���� ��� ��� ��� �������� ��������

SELECT PPEI.INFORMATION_TYPE,PPEI.PERSON_ID
FROM PER_PEOPLE_EXTRA_INFO PPEI
WHERE PPEI.INFORMATION_TYPE ='XXX_TRANSFER_DECREE'
AND EXISTS(SELECT 1
FROM PER_PEOPLE_EXTRA_INFO PPEI2
WHERE PPEI2.PERSON_ID=PPEI.PERSON_ID
AND PPEI2.INFORMATION_TYPE='XXX_TRANSFER_RESUME'
AND PPEI2.PEI_INFORMATION25=PPEI.PERSON_EXTRA_INFO_ID)
AND FND_DATE.CANONICAL_TO_DATE (PPEI.PEI_INFORMATION6)!=(SELECT
EFFECTIVE_START_DATE
FROM
PER_ALL_ASSIGNMENTS_F PAAF1
WHERE
PAAF1.PERSON_ID=PPEI.PERSON_ID
AND
PAAF1.PRIMARY_FLAG='Y'
AND
EFFECTIVE_START_DATE =FND_DATE.CANONICAL_TO_DATE (PPEI.PEI_INFORMATION6))
-----------------------------------------------------------------------------------
--------------------------------------------------
<<Example of the condition to build a value set in D.F.F Segments>>
WHERE PERSON_ID IN ( 0 , FND_PROFILE.VALUE ('PER_PERSON_ID') )
AND TRANS_TYPE LIKE '%' || :$FLEX$.XXX_HR_TICKETING_REASONS || '%'
AND ( NOT EXISTS ( SELECT 'X'
FROM PER_PEOPLE_EXTRA_INFO PPEI_IN
WHERE PPEI_IN.INFORMATION_TYPE =
'XXX_TICKETING_ORDERS'
AND TO_NUMBER (PPEI_IN.PEI_INFORMATION6) = DECODE
(TRANS_ID,0, NULL,TRANS_ID)
AND NOT EXISTS ( SELECT 'X'
FROM PER_PEOPLE_EXTRA_INFO PPEI
WHERE PPEI.INFORMATION_TYPE =
'XXX_TICKETING_CANCEL'
AND PPEI.PEI_INFORMATION25 =
PPEI_IN.PERSON_EXTRA_INFO_ID
)
)
OR
EXISTS ( SELECT 'X'
FROM PER_PEOPLE_EXTRA_INFO
WHERE INFORMATION_TYPE = 'XXX_TICKETING_ORDERS'
AND PEI_INFORMATION28 = :$FLEX$.XXX_HR_DUMMY
)
)

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

�����: ��� ������ ��� ��������� �������� ��


��� ��� ������ ���� ���� ��� ����� ���� ����� ���� �� 60 ��� ��� �� ���� ��� ���
��� ����� �� ��� ��� ������ ���� ���� ����
������� ������ ����� �� ��� ���:
-�� ��� ������.
-���� ���� �� ������.
-���� ��� ����� �������.
���� ��� ��� �����.
-���� ���������.
-��� ��� ����� ���� �������.
-���� ������ ��������.

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

<<TO LIST ALL PEOPLE THAT HAVE AN BANK ACCOUNT>>>

SELECT PEA.SEGMENT4 IBAN_NUMBER, PAPF.FULL_NAME,PAPF.EMPLOYEE_NUMBER


FROM PER_ALL_ASSIGNMENTS_F PAAF,
PAY_PERSONAL_PAYMENT_METHODS_F PPM,
PAY_EXTERNAL_ACCOUNTS PEA,
PER_ALL_PEOPLE_F PAPF
WHERE SYSDATE BETWEEN PPM.EFFECTIVE_START_DATE AND PPM.EFFECTIVE_END_DATE
AND SYSDATE BETWEEN PAAF.EFFECTIVE_START_DATE
AND PAAF.EFFECTIVE_END_DATE
AND SYSDATE BETWEEN PAPF.EFFECTIVE_START_DATE
AND PAPF.EFFECTIVE_END_DATE
AND PAPF.PERSON_ID = PAAF.PERSON_ID
AND PPM.EXTERNAL_ACCOUNT_ID = PEA.EXTERNAL_ACCOUNT_ID(+)
AND PPM.ASSIGNMENT_ID IS NOT NULL
AND PPM.ASSIGNMENT_ID = PAAF.ASSIGNMENT_ID
AND PEA.SEGMENT4 IN('SA8510000005472646000104','SA1510000005472635000109')

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

<<<To list all employees that have more than one record in national
identification>>>

select count(*),PPEI.person_id,PAPF.EMPLOYEE_NUMBER,PAPF.FULL_NAME
from per_people_extra_info PPEI,PER_ALL_PEOPLE_F PAPF
where information_type='XXX_NATIONAL_ID'
AND PPEI.PERSON_ID=PAPF.PERSON_ID
AND SYSDATE BETWEEN PAPF.EFFECTIVE_START_DATE AND PAPF.EFFECTIVE_END_DATE
having count(*)>1
GROUP BY PPEI.person_id,PAPF.EMPLOYEE_NUMBER,PAPF.FULL_NAME

-----------------------------------------------------------------------------------
---------------------------
>>Teaching Allowance For ���� ����� ����<<

��� ��� ������� ����� �������� �� ���� ����� ���� ��� ������� ������ 07
���� ���� ��� ����� ����� ������ ���� ����� ����� ��� ������� �� ��� ����� �������
������ ���� �� ��� �����:11/07/1437
����� �� �����
"��� ����� ��� ���� ������� ����� ����ӡ ��� ��� �� ���� ����� ����"�
���� ��������� ����� :
������ ���
�������� ������� �� �������������� �������� �� ������� ������
�� ��� ����� �� ������� ������ ��� ���� �� ������� �������
�� �� ��� ����� ����� �� ��� �������
-----------------------------------------------------------------------------------
-------------------------

<<Codes For Organizations Code>>

SELECT NAME,1,2
FROM HR_ORGANIZATION_UNITS_V ORG,HR_ORGANIZATION_INFORMATION_V OI
WHERE ORG.ORGANIZATION_ID=OI.ORGANIZATION_ID
--AND TYPE='FACULTY'
AND INTERNAL_EXTERNAL_FLAG='INT'
AND LENGTH(SUBSTR(NAME,1,INSTR(NAME,';')-1))=2

AND ORG_INFORMATION1='HR_ORG'
-----------------------------------------------------------------------------------
-------------------------

<<APIs Collections>>

-----------------------------------------------------------------------------------
-------------------------
1) To update Start_date In People Enter And Maintain And Assignment:

ELSIF P_INFORMATION_TYPE = 'XXX_HIRING_DECISION' THEN


--

EFFECTIVE_DATE := FND_DATE.CANONICAL_TO_DATE (P_PEI_INFORMATION4);


--
FOR MY_HIRE_DATA IN APPLICANT_HIRE_DATE (EFFECTIVE_DATE) LOOP
--
IF EFFECTIVE_DATE <> MY_HIRE_DATA.DECISION_DATE THEN
--

HR_CHANGE_START_DATE_API.UPDATE_START_DATE ( P_VALIDATE =>


FALSE
,P_PERSON_ID =>
MY_HIRE_DATA.PERSON_ID
,P_OLD_START_DATE =>
MY_HIRE_DATA.ORGINAL_HIRE_DATE
,P_NEW_START_DATE =>
EFFECTIVE_DATE
,P_UPDATE_TYPE =>
'E'
,P_APPLICANT_NUMBER =>
NULL
,P_WARN_EE =>
L_WARN_EE
);

--
END IF;
--
END LOOP;
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
And this is the cursor that get the feneral hiring information about the person:
CURSOR APPLICANT_HIRE_DATE (P_EFFECTIVE_DATE DATE) IS
SELECT PAAF.PERSON_ID, PPOS.DATE_START ORGINAL_HIRE_DATE
,FND_DATE.CANONICAL_TO_DATE(PPEI.PEI_INFORMATION16) DECISION_DATE
,PAAF.ASSIGNMENT_ID
,PAAF.OBJECT_VERSION_NUMBER
,PAAF.SPECIAL_CEILING_STEP_ID
,PAAF.PEOPLE_GROUP_ID
,PAAF.GRADE_ID
,PAAF.ORGANIZATION_ID
FROM PER_ALL_ASSIGNMENTS_F PAAF
,PER_PERIODS_OF_SERVICE PPOS
,PER_PEOPLE_EXTRA_INFO PPEI
WHERE PAAF.PERSON_ID = P_PERSON_ID
AND PAAF.PERIOD_OF_SERVICE_ID = PPOS.PERIOD_OF_SERVICE_ID
AND P_EFFECTIVE_DATE BETWEEN PAAF.EFFECTIVE_START_DATE AND
PAAF.EFFECTIVE_END_DATE
AND PAAF.PRIMARY_FLAG = 'Y'
AND PAAF.PERSON_ID = PPEI.PERSON_ID
AND PPEI.INFORMATION_TYPE = 'XXX_HIRING_DECISION'
AND PPEI.PERSON_EXTRA_INFO_ID = P_PERSON_EXTRA_INFO_ID;

-----------------------------------------------------------------------------------
-------------------------
2) update assignment criteriea API:

FOR MY_HIRE_DATA_ASS IN APPLICANT_HIRE_DATE (EFFECTIVE_DATE) LOOP


--
L_OBJECT_VERSION_NUMBER := MY_HIRE_DATA_ASS.OBJECT_VERSION_NUMBER;
L_SPECIAL_CEILING_STEP_ID := MY_HIRE_DATA_ASS.SPECIAL_CEILING_STEP_ID;
L_PEOPLE_GROUP_ID := MY_HIRE_DATA_ASS.PEOPLE_GROUP_ID;
L_GRADE_ID := MY_HIRE_DATA_ASS.GRADE_ID;
L_EMP_CATEGORY :=
XXX_HR_PACKAGE4.XXX_PERSON_INFO(MY_HIRE_DATA_ASS.PERSON_ID,0,EFFECTIVE_DATE,'PT_NAM
E') ;
--
L_PAYROLL_CALENDAR_TYPE :=
XXX_HR_PACKAGE2.XXX_GET_TABLE_VALUE( NVL(HR_GENERAL.GET_BUSINESS_GROUP_ID,0)
,'XXX_EMPL
OYEE_CLASS_PAYROLL'
,'PAYROLL_
CODE'
,L_EMP_CAT
EGORY
,EFFECTIVE
_DATE
);
--
OPEN ORG_BASE_CODE ( MY_HIRE_DATA_ASS.ORGANIZATION_ID ) ;
FETCH ORG_BASE_CODE INTO L_UMD_NUMBER ;
CLOSE ORG_BASE_CODE ;
--

OPEN MY_PAYROLL_INFO ( L_PAYROLL_CALENDAR_TYPE , L_UMD_NUMBER ,


EFFECTIVE_DATE ) ;
FETCH MY_PAYROLL_INFO INTO L_PAYROLL_ID ;
CLOSE MY_PAYROLL_INFO ;
--

HR_ASSIGNMENT_API.UPDATE_EMP_ASG_CRITERIA ( P_EFFECTIVE_DATE
=> EFFECTIVE_DATE
,P_DATETRACK_UPDATE_MODE
=> 'CORRECTION'
,P_ASSIGNMENT_ID
=> MY_HIRE_DATA_ASS.ASSIGNMENT_ID
,P_PAYROLL_ID
=> L_PAYROLL_ID -- DEFAULT PAYROLL ID
,P_PEOPLE_GROUP_ID
=> L_PEOPLE_GROUP_ID
,P_GRADE_ID
=> L_GRADE_ID
,P_OBJECT_VERSION_NUMBER
=> L_OBJECT_VERSION_NUMBER
,P_SPECIAL_CEILING_STEP_ID
=> L_SPECIAL_CEILING_STEP_ID
,P_GROUP_NAME
=> L_GROUP_NAME
,P_EFFECTIVE_START_DATE
=> L_EFFECTIVE_START_DATE
,P_EFFECTIVE_END_DATE
=> L_EFFECTIVE_END_DATE
,P_ORG_NOW_NO_MANAGER_WARNING
=> L_ORG_NOW_NO_MANAGER_WARNING
,P_OTHER_MANAGER_WARNING
=> L_OTHER_MANAGER_WARNING
,P_SPP_DELETE_WARNING
=> L_SPP_DELETE_WARNING
,P_ENTRIES_CHANGED_WARNING
=> L_ENTRIES_CHANGED_WARNING
,P_TAX_DISTRICT_CHANGED_WARNING
=> L_TAX_DISTRICT_CHANGED_WARNING
);

Any variable in the above API that dont't get in the cursor , just :
1-declare it in the variables declarations,
2- use it directly in the api
such as:L_OTHER_MANAGER_WARNING boolean,
L_EFFECTIVE_START_DATE date...........
:::::
NOTE:
::::The Function Below get the employment category of the
employee;i.e:20/30/47/85...etc:

XXX_HR_PACKAGE4.XXX_PERSON_INFO(MY_HIRE_DATA_ASS.PERSON_ID,0,EFFECTIVE_DATE,'PT_NAM
E') ;
><><><><><><><><><><<>>>>><<<>>><<<>>><<<>>>
And this function to determine the payroll type for the current categories based on
UDT:

L_PAYROLL_CALENDAR_TYPE :=
XXX_HR_PACKAGE2.XXX_GET_TABLE_VALUE( NVL(HR_GENERAL.GET_BUSINESS_GROUP_ID,0)
,'XXX_EMPL
OYEE_CLASS_PAYROLL'
,'PAYROLL_
CODE'
,L_EMP_CAT
EGORY
,EFFECTIVE
_DATE

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>

The cursor below give the organization code based on organization_id:

CURSOR ORG_BASE_CODE ( P_ORG_ID NUMBER ) IS


SELECT ORG.ORG_BASE_CODE
FROM XXX_HR_ORG_PARENTS ORG
WHERE ORG.ORG_ID = P_ORG_ID
;
....................................................................

The Cursor Below get the payroll id based on parameters:

CURSOR MY_PAYROLL_INFO ( P_PAYROLL_CALENDAR_TYPE VARCHAR2 , P_PAYROLL_CODE


VARCHAR2, P_EFFECTIVE_DATE DATE ) IS
SELECT PAYROLL_ID
FROM PAY_ALL_PAYROLLS_F PAPF
WHERE PAPF.ATTRIBUTE1 = P_PAYROLL_CALENDAR_TYPE
AND PAPF.ATTRIBUTE2 = P_PAYROLL_CODE
AND P_EFFECTIVE_DATE BETWEEN PAPF.EFFECTIVE_START_DATE AND
PAPF.EFFECTIVE_END_DATE;

.......................................................................
The Function Is Used To Return The Last Payroll Action Date For The Employee :

FUNCTION XXX_LAST_PAYROLL_ACTION_DATE ( P_ASSIGNMENT_ID NUMBER ) RETURN DATE AS

CURSOR LAST_PAYROLL_ACTION_DATE IS
SELECT MAX(PPA.EFFECTIVE_DATE) LAST_ACTION_DATE
FROM PAY_ASSIGNMENT_ACTIONS PAA
,PAY_PAYROLL_ACTIONS PPA
WHERE PAA.ASSIGNMENT_ID = P_ASSIGNMENT_ID
AND PAA.PAYROLL_ACTION_ID = PPA.PAYROLL_ACTION_ID
AND PPA.ACTION_TYPE IN ('R','U','H','P','M','Q','X','L')
;

L_ACTION_DATE DATE ;

BEGIN
--
OPEN LAST_PAYROLL_ACTION_DATE ;
FETCH LAST_PAYROLL_ACTION_DATE INTO L_ACTION_DATE ;
CLOSE LAST_PAYROLL_ACTION_DATE ;
--
RETURN L_ACTION_DATE ;
--
END XXX_LAST_PAYROLL_ACTION_DATE;

...................................................................................
...............

Automatic Allowance Function:

XXX_HR_PACKAGE3.XXX_ADD_HIRE_ALLOWANCES ( P_PERSON_EXTRA_INFO_ID ,
EFFECTIVE_DATE ) ;

...................................................................................
...............
<<������ ������� �������� ����>>

SELECT *
FROM PER_POSITION_EXTRA_INFO PPEIS
WHERE INFORMATION_TYPE ='PER_RESERVED'
-- and POEI_INFORMATION5 =34195
and POEI_INFORMATION5 = 26520

-----------------------------------------------------------------------------------
--------------
����� ������� ����� ��� �����
���� ��� ���� �������� ���� ��������:�� ������ ����� �� �� ��� ��� ��� ����� ���
���� �������� ���� ���� �� ��� ����� ���� ����� ������� ����� ����� ������� ������
�� �����

-----------------------------------------------------------------------------------
--------------------
<<PERSONALIZATION & PROFILE OPTION>>

Utilities:Diagnostics >>>>>>>>>>>>>>>>>> PROFILE OPTION FOR ACTIVE PERSONALIZATION

to make personlaization on field at the function:


���� ��� �������������� ����� ����� �� �������� �������� ������ ������� ��������
���� ������� ���
�� ������� ���� ��� :

1) take the name of the column which name : Competence :block and field and the
value
2)take the block name and field for the Date From And Date To
3)HELP>>DIAGONSTIC>>CUSTOM CODE>>> PERSONALIZE
4)PUT NEW SEQ. AND NAME IT _ANY NAME YOU CHOOSE_ AND AT LEVEL COLUMN
CHOOSE :FUNCTION
5)AT:CONDITION_REGION CHOOSE AT TRIGGER EVENT: WHEN_NEW_ITEM_INSTANCE
AND AT TRIGGER OBJECT >> CHOOSE BLOCK.FIELD FOR THE COMPETENCE NAME
AT THE CONDITION ; :CEL.PER_COMPETENCE_NAME='.English Language'
THE ':' MEANS MAKE PARAMETRE
6)MOVE TO THE ACTION TAB :
OBJECT TYPE:ITEM
TARGET OBJECT:BLOCK.FIELD FOR THE DATE FROM :CEL.PER_EFFECTIVE_DATE_FROM
PROPERTY NAME:UPDATE_ALLOWED
VALUE:FALSE>
7)PRESS : APPLY NOW BUTTON
8)F4
9)RE_ENTER TO THE FUNCTION
------------------------------------------------------------------------

QUERY TO LIST JOB NAME FOR SAUDI TEACHERS

SELECT PAPF.EMPLOYEE_NUMBER,
PAPF.FULL_NAME,
HAPF.POSITION_ID,
HAPF.NAME,
PJ.NAME
,PVG.ATTRIBUTE1 GRADE_CODE
,PG.NAME GRADE_NAME
FROM PER_ALL_PEOPLE_F PAPF,
PER_ALL_ASSIGNMENTS_F PAAF,
HR_ALL_POSITIONS_F HAPF,
PER_JOBS PJ
,PER_VALID_GRADES PVG
, PER_GRADES PG

WHERE PAPF.PERSON_ID=PAAF.PERSON_ID
AND PAAF.POSITION_ID=HAPF.POSITION_ID
AND PJ.JOB_ID=PAAF.JOB_ID
AND PJ.JOB_ID=PVG.JOB_ID
AND PVG.GRADE_ID=PG.GRADE_ID
AND PAPF.CURRENT_EMPLOYEE_FLAG='Y'
AND PAAF.PRIMARY_FLAG='Y'
AND PAAF.EMPLOYMENT_CATEGORY=70
AND SYSDATE BETWEEN PAPF.EFFECTIVE_START_DATE AND PAPF.EFFECTIVE_END_DATE
AND SYSDATE BETWEEN PAAF.EFFECTIVE_START_DATE AND PAAF.EFFECTIVE_END_DATE
AND SYSDATE BETWEEN HAPF.EFFECTIVE_START_DATE AND HAPF.EFFECTIVE_END_DATE
-----------------------------------------------------------------------------------
------------------------

������ ����� ���� �� �� ������� ������ ����

SELECT PAPF.EMPLOYEE_NUMBER,PAPF.FULL_NAME
FROM PER_PEOPLE_EXTRA_INFO PPEI,
PER_ALL_ASSIGNMENTS_F PAAF,
PER_ALL_PEOPLE_F PAPF
WHERE PPEI.PERSON_ID = PAPF.PERSON_ID
AND PAPF.PERSON_ID = PAAF.PERSON_ID
AND PPEI.INFORMATION_TYPE = 'XXX_TEACH_ALW'
--AND PPEI.CREATION_DATE = TO_DATE ('3/03/2017', 'DD/MM/YYYY')
AND PAAF.PAYROLL_ID = 84
AND
FND_DATE.CANONICAL_TO_DATE(PPEI.PEI_INFORMATION16)=TO_DATE('27/07/2016','DD/MM/
YYYY')
AND PAPF.CURRENT_EMPLOYEE_FLAG='Y'
AND PAAF.PRIMARY_FLAG='Y'
AND SYSDATE BETWEEN PAPF.EFFECTIVE_START_DATE AND PAPF.EFFECTIVE_END_DATE
AND SYSDATE BETWEEN PAAF.EFFECTIVE_START_DATE AND PAAF.EFFECTIVE_END_DATE
-----------------------------------------------------------------------------------
------------------------------

<< Function calculate a scholarship superiority>>


CREATE OR REPLACE FUNCTION XXX_HR_SUPAWARD(P_ASSID NUMBER,P_PERSON_EXTRA_INFO_ID
NUMBER)RETURN VARCHAR2
AS

V_SUPAWARD VARCHAR2(100);
V_SUPAMT VARCHAR2(200);
V_SUPAMTVAL VARCHAR2(200);
V_SCHSDATE VARCHAR2(200);
V_SCHEDATE VARCHAR2(200);
CURSOR C_SCHSUP(P_PERSON_EXTRA_INFO_ID NUMBER) IS
SELECT PEI_INFORMATION3,PEI_INFORMATION3
FROM PER_PEOPLE_EXTRA_INFO
WHERE INFORMATION_TYPE ='XXX_SCH_PAYMENT'
AND PERSON_EXTRA_INFO_ID=P_PERSON_EXTRA_INFO_ID;

BEGIN

V_SUPAWARD:=
XXX_HR_PACKAGE1.XXX_GET_EIT_SEGMENT( 'XXX_SCH_PAYMENT',P_PERSON_EXTRA_INFO_ID, '22'
);

OPEN C_SCHSUP(P_PERSON_EXTRA_INFO_ID);
FETCH C_SCHSUP INTO V_SCHSDATE,V_SCHEDATE;
CLOSE C_SCHSUP;

IF V_SUPAWARD LIKE'Y%'THEN
V_SUPAMT:=SUBSTR(V_SUPAWARD,3);
V_SUPAMTVAL:=TRUNC((V_SUPAMT/100)

*XXX_HR_PACKAGE1.XXX_ALLOWANCE_IN_DATE( P_ASSID
,FND_DATE.CANONIC
AL_TO_DATE(V_SCHEDATE)
,'BASIC'
,1
,'ORIGINAL'
,'ONE' ));

END IF;
RETURN V_SUPAMTVAL;
EXCEPTION
WHEN NO_DATA_FOUND THEN RETURN NULL;
END XXX_HR_SUPAWARD ;

-----------------------------------------------------------------------------------
-------------
<<FUNCTION TO GET PRIMARY ASSIGNMENT_ID>>
L_ASSIGNMENT_ID :=
XXX_HR_PACKAGE1.XXX_GET_PRIMARY_ASG (P_PERSON_ID, L_DATE_START);

TO GET :
L_ASSIGNMENT_ID :=
XXX_HR_PACKAGE1.XXX_GET_PRIMARY_ASG (P_PERSON_ID, L_DATE_START);
L_NATIONALITY :=
XXX_HR_PACKAGE3.XXX_PERSON_NATIONALITY (P_PERSON_ID,
L_DATE_START);
L_PERSON_CATEGORY :=
XXX_HR_PACKAGE3.XXX_PERSON_TYPE (L_ASSIGNMENT_ID, L_DATE_START);
L_HIRE_DATE :=
FND_DATE.CANONICAL_TO_DATE (XXX_HR_PACKAGE4.XXX_PERSON_INFO (
P_PERSON_ID,
0,
L_DATE_START,
'CURR_HIR',
'US'));
-----------------------------------------------------------------------------------
-----------
<<������ ����� ���� ������� ��������� �� ��� 1438>>
SELECT PERSON_ID,SUM(ABSENCE_DAYS)
FROM PER_ABSENCE_ATTENDANCES_V
--WHERE PERSON_ID=1208
WHERE PERSON_ID IN('65020',
'249728',
'249654',
'249655'
)

AND C_TYPE_DESC LIKE '%����� �������%'


AND DATE_START BETWEEN TO_DATE('02/10/2016','DD/MM/YYYY')AND
TO_DATE('21/09/2017','DD/MM/YYYY')
AND DATE_END BETWEEN TO_DATE('02/10/2016','DD/MM/YYYY')AND
TO_DATE('21/09/2017','DD/MM/YYYY')
GROUP BY PERSON_ID,ABSENCE_DAYS
--ORDER BY PERSON_ID

OR********
SELECT PERSON_ID, SUM (ABSENCE_DAYS)
FROM PER_ABSENCE_ATTENDANCES_V
WHERE C_TYPE_DESC LIKE '%����� �������%'
AND DATE_START BETWEEN TO_DATE ('02/10/2016', 'DD/MM/YYYY')
AND TO_DATE ('21/09/2017', 'DD/MM/YYYY')
AND DATE_END BETWEEN TO_DATE ('02/10/2016', 'DD/MM/YYYY')
AND TO_DATE ('21/09/2017', 'DD/MM/YYYY')
AND PERSON_ID IN (SELECT PPX.PERSON_ID
FROM per_assignments_x pax, per_people_x ppx
WHERE PAX.PAYROLL_ID = 81
AND ppx.person_id = pax.person_id
AND pax.payroll_id IS NOT NULL
AND ppx.CURRENT_EMPLOYEE_FLAG = 'Y')
GROUP BY PERSON_ID,ABSENCE_DAYS

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

<<FUNCTION IN EXCEL VERY IMPORTANT>>

The Function Is:


=VLOOKUP(A2;'01.01.1438'!A2:B5602;2;FALSE)
explain:

'01.01.1438'!A2:B5602 : �� ����� �� ����������� ���� �� �����

2 :�� ��� ������ ������ ���� �� ������ ���������

FALSE : �����

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

Function to get a similiar FOR INSTANCE (name) in D.B:

select 'yazeed awwad' ,'Yazeed awad',UTL_MATCH.EDIT_DISTANCE_SIMILARITY ('yazeed


awwad' ,'Yazeed awad') PERCENT_X

from dual

where UTL_MATCH.EDIT_DISTANCE_SIMILARITY ('yazeed awwad' ,'Yazeed awad') > 80

order by 3
-----------------------------------------------------------------------------------
--------------------------------
<<����� ���� ��� ����� ����� ���� ��� ���� ��� ���� ��� ����� ����� �� ���� �����
������ ���� ����� ���� ���� ������ ����� ���� ���� �� ��� ��� ������� ������
������� �������
����� ������� ������� ���� ����� ����� ���� ��� ���� ���� ���� ��� ���� ����� �����
�� �� �� ����� ���� ���� >>
CREATE OR REPLACE procedure APPS.XXX_CREATE_PAY_METH ( P_RETCODE OUT VARCHAR2
,P_ERRBUFF OUT VARCHAR2
)
IS

V_PERSONAL_PAYMENT_METHOD_ID NUMBER;
V_PERSON_EXTRA_INFO_ID NUMBER;
V_EXTERNAL_ACCOUNT_ID NUMBER;
V_OBJECT_VERSION_NUMBER NUMBER;
V_EFFECTIVE_START_DATE DATE;
V_EFFECTIVE_END_DATE DATE;
V_COMMENT_ID NUMBER;
V_DUMMY VARCHAR2 (100);
V_ERROR VARCHAR2 (2500);
XX_ERRORS VARCHAR2 (2500);

CURSOR C1 IS

SELECT PAPF1.PERSON_ID,
PAPF1.EMPLOYEE_NUMBER,PAPF2.SEGMENT1,PAPF2.SEGMENT4,PAAF1.ASSIGNMENT_ID
FROM PER_ALL_PEOPLE_F PAPF1
,PER_ALL_ASSIGNMENTS_F PAAF1
,(SELECT DISTINCT PAPF.PERSON_ID,EX.SEGMENT1,EX.SEGMENT4--
papf.person_id ,PAPF.EMPLOYEE_NUMBER
FROM PER_ALL_PEOPLE_F PAPF
,PER_ALL_ASSIGNMENTS_F PAAF
,PAY_PERSONAL_PAYMENT_METHODS_F PPM
, PAY_ORG_PAYMENT_METHODS_F OPM
, PAY_PAYMENT_TYPES PT
, PAY_EXTERNAL_ACCOUNTS EX
WHERE PAPF.PERSON_ID=PAAF.PERSON_ID
AND PAAF.ASSIGNMENT_ID=PPM.ASSIGNMENT_ID
AND PPM.ORG_PAYMENT_METHOD_ID=OPM.ORG_PAYMENT_METHOD_ID
AND OPM.PAYMENT_TYPE_ID=PT.PAYMENT_TYPE_ID
AND
PPM.EXTERNAL_ACCOUNT_ID=EX.EXTERNAL_ACCOUNT_ID
AND TRUNC(SYSDATE) BETWEEN
OPM.EFFECTIVE_START_DATE AND OPM.EFFECTIVE_END_DATE
AND PPM.EFFECTIVE_START_DATE=
(SELECT MAX(PPM2.EFFECTIVE_START_DATE)
FROM PAY_PERSONAL_PAYMENT_METHODS_F PPM2
WHERE
PPM2.PERSONAL_PAYMENT_METHOD_ID=PPM.PERSONAL_PAYMENT_METHOD_ID)
AND PPM.EFFECTIVE_START_DATE BETWEEN PAPF.EFFECTIVE_START_DATE AND
PAPF.EFFECTIVE_END_DATE
AND PPM.EFFECTIVE_START_DATE BETWEEN PAAF.EFFECTIVE_START_DATE AND
PAAF.EFFECTIVE_END_DATE
AND NOT EXISTS(
SELECT *
FROM PER_ALL_PEOPLE_F PAPF2
,PER_ALL_ASSIGNMENTS_F PAAF2
,PAY_PERSONAL_PAYMENT_METHODS_F PPM2
WHERE PAPF2.PERSON_ID=PAAF2.PERSON_ID
AND PAPF2.CURRENT_EMPLOYEE_FLAG='Y'
AND PAAF2.PRIMARY_FLAG='Y'
AND PAAF2.ASSIGNMENT_ID = PPM2.ASSIGNMENT_ID
AND TRUNC(SYSDATE) BETWEEN PAPF2.EFFECTIVE_START_DATE AND
PAPF2.EFFECTIVE_END_DATE
AND TRUNC(SYSDATE) BETWEEN PAAF2.EFFECTIVE_START_DATE AND
PAAF2.EFFECTIVE_END_DATE
AND TRUNC(SYSDATE)BETWEEN PPM2.EFFECTIVE_START_DATE AND
PPM2.EFFECTIVE_END_DATE
AND PAPF2.PERSON_ID=PAPF.PERSON_ID) )PAPF2
WHERE PAPF1.PERSON_ID = PAPF2.PERSON_ID
AND PAPF1.PERSON_ID = PAAF1.PERSON_ID
AND PAAF1.PRIMARY_FLAG = 'Y'
AND PAAF1.PAYROLL_ID IS NOT NULL
-- and papf1.person_id in (209616,
--210731)
AND TRUNC(SYSDATE) BETWEEN PAAF1.EFFECTIVE_START_DATE AND
PAAF1.EFFECTIVE_END_DATE
AND PAPF1.CURRENT_EMPLOYEE_FLAG='Y'
AND TRUNC(SYSDATE) BETWEEN PAPF1.EFFECTIVE_START_DATE AND
PAPF1.EFFECTIVE_END_DATE ;

CURSOR C2 IS

SELECT EX.SEGMENT1
,EX.SEGMENT4
,fnd_date.date_to_canonical( PPM.EFFECTIVE_START_DATE)
EFFECTIVE_START_DATE
,PPM.PERSONAL_PAYMENT_METHOD_ID
,ASG.PERSON_ID
FROM PAY_PERSONAL_PAYMENT_METHODS_F PPM
, PAY_ORG_PAYMENT_METHODS_F OPM
, PAY_PAYMENT_TYPES PT
, PER_ALL_ASSIGNMENTS_F ASG
, PAY_EXTERNAL_ACCOUNTS EX
WHERE PPM.ORG_PAYMENT_METHOD_ID=OPM.ORG_PAYMENT_METHOD_ID
AND OPM.PAYMENT_TYPE_ID=PT.PAYMENT_TYPE_ID
AND PPM.ASSIGNMENT_ID=ASG.ASSIGNMENT_ID
AND PPM.EXTERNAL_ACCOUNT_ID=EX.EXTERNAL_ACCOUNT_ID
AND TRUNC(SYSDATE) BETWEEN OPM.EFFECTIVE_START_DATE AND
OPM.EFFECTIVE_END_DATE
AND TRUNC(SYSDATE) BETWEEN ASG.EFFECTIVE_START_DATE AND
ASG.EFFECTIVE_END_DATE
AND TRUNC(SYSDATE) BETWEEN PPM.EFFECTIVE_START_DATE AND
PPM.EFFECTIVE_END_DATE
AND ASG.PRIMARY_FLAG='Y'
AND PT.PAYMENT_TYPE_NAME='SA Direct Deposit SAR'
-- AND ASG.PERSON_ID in (200082,
--208742)
AND
NOT EXISTS (SELECT *
FROM PER_PEOPLE_EXTRA_INFO PPEI
WHERE
INFORMATION_TYPE='XXX_MANAGE_BANK_REFALAR'
AND PPEI.PERSON_ID=ASG.PERSON_ID

AND
PPEI.PEI_INFORMATION1=PPM.PERSONAL_PAYMENT_METHOD_ID);

BEGIN
fnd_global.apps_initialize(124629, 24178, 800);

FOR I IN C1 LOOP

BEGIN
V_PERSONAL_PAYMENT_METHOD_ID := NULL;
V_EXTERNAL_ACCOUNT_ID := NULL;
V_OBJECT_VERSION_NUMBER := NULL;
V_EFFECTIVE_START_DATE := NULL;
V_EFFECTIVE_END_DATE := NULL;
V_COMMENT_ID := NULL;

HR_PERSONAL_PAY_METHOD_API.CREATE_PERSONAL_PAY_METHOD
(
P_EFFECTIVE_DATE => TRUNC(SYSDATE)--TO_DATE('2016/05/08
00:00:00','rrrr/mm/dd HH24:MI:SS')--effective_start_date-
,P_ASSIGNMENT_ID => I.ASSIGNMENT_ID
,P_ORG_PAYMENT_METHOD_ID => 81
,P_PERCENTAGE => 100
,P_PRIORITY => 1
,P_SEGMENT1 => I.SEGMENT1
,P_SEGMENT4 => I.SEGMENT4
,P_TERRITORY_CODE => 'SA'
,P_PERSONAL_PAYMENT_METHOD_ID => V_PERSONAL_PAYMENT_METHOD_ID
,P_EXTERNAL_ACCOUNT_ID => V_EXTERNAL_ACCOUNT_ID
,P_OBJECT_VERSION_NUMBER => V_OBJECT_VERSION_NUMBER
,P_EFFECTIVE_START_DATE => V_EFFECTIVE_START_DATE
,P_EFFECTIVE_END_DATE => V_EFFECTIVE_END_DATE
,P_COMMENT_ID => V_COMMENT_ID
);

commit;
EXCEPTION
WHEN OTHERS THEN
V_ERROR := NULL;
V_ERROR := SUBSTR (SQLERRM, 1, 2000);
xx_errors := apps.xx_debug (' Error in Create Payment by Schduled Request for
Assignment_id = '|| I.ASSIGNMENT_ID|| ' While the Error is : '||V_ERROR);
END;

END LOOP;

FOR I IN C2
LOOP

BEGIN
FND_PROFILE.PUT ('PER_PERSON_ID', to_char( I.PERSON_ID));
V_DUMMY := TO_CHAR(trunc(sysdate),'yyyymmdd')||TO_CHAR(SYSDATE,'hh24miss')||
FND_PROFILE.VALUE('PER_PERSON_ID');

HR_PERSON_EXTRA_INFO_API.create_person_extra_info (
p_validate => FALSE,
p_person_id =>to_char( I.PERSON_ID),
p_information_type => 'XXX_MANAGE_BANK_REFALAR',
p_pei_information_category => 'XXX_MANAGE_BANK_REFALAR',
p_pei_information1 => I.PERSONAL_PAYMENT_METHOD_ID,
p_pei_information2 => I.EFFECTIVE_START_DATE,
P_PEI_INFORMATION27 => 'N',
P_PEI_INFORMATION28 => V_DUMMY,
p_person_extra_info_id => V_PERSON_EXTRA_INFO_ID,
p_object_version_number => V_OBJECT_VERSION_NUMBER);

EXCEPTION
WHEN OTHERS THEN
V_ERROR := NULL;
V_ERROR := SUBSTR (SQLERRM, 1, 2000);
xx_errors := apps.xx_debug (' Error in Create BANK REFALAR by Schduled Request for
Person_id = '|| I.PERSON_ID|| ' While the Error is : '||V_ERROR);
END;
END LOOP;

EXCEPTION WHEN OTHERS THEN


V_ERROR := SUBSTR (SQLERRM, 1, 2000);
xx_errors := apps.xx_debug ('Error in Create PAYMENT and BANK REFALAR by Schduled
Request, While the Error is '||V_ERROR);
END;
/
-----------------------------------------------------------------------------------
---------------
������� ���� �� ���� �� ������ ������� :
�������
������� ������ ������� ������� ����
���������
������� ����� ������� ��������

-----------------------------------------------------------------------------------
-----------------
���� ������� �� �� �� :
����� : �� ��� ������� ���� ��� ��� ���� : ����� ����� ���� �������
���� ��11 ����� ����� �� payroll action id
�� ����� ���� �� ������ ���������
�� ��� �� ��������
���� ���� ��� ���� ��� ����� ����� �������� �������
��� ��� �������� ��� ��� �������ʿ�
��� ��� �� ������� ���� �� �� ��� ���� ��� ����� ������ ���� ���� ��� ���� ��� ����
: ����� ����� ���� ������� ���� ����� ����� ��� �� ��� ��� ������ ���� �� ��
�������� �����
������ �� ���� ����� ����� ���� �������
��� ��� ��� ������� ��� ���� �� ���� ��� ����� ����� �������� ������

You might also like