DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_US_HR_UTILITY_PKG

Source


1 PACKAGE BODY per_us_hr_utility_pkg AS
2 /* $Header: peushrutil.pkb 120.1 2011/04/05 12:31:03 nvelaga noship $ */
3 
4 /* *************************************************************************
5  Name        : derive_alien_ethnic_origin
6  Type        : Function
7  Return Type : Number
8  Description : This function derives the ethnic origin of a person including
9                Two or More races.
10                Used in IPEDS, AAP and EEO-1 suite of Reports.
11 ************************************************************************* */
12 FUNCTION derive_alien_ethnic_origin(p_person_id   NUMBER,
13                                     p_report_date DATE DEFAULT SYSDATE,
14                                     p_check_alien VARCHAR2 DEFAULT 'N'
15                                    )
16 RETURN NUMBER
17 IS
18 
19    CURSOR csr_alien(cp_person_id NUMBER, cp_report_date DATE)
20    IS
21    SELECT 0
22    FROM   per_people_extra_info pei
23    WHERE  pei.person_id        = cp_person_id
24    AND    pei.information_type = 'PER_US_VISA_DETAILS'
25    AND    fnd_date.date_to_canonical(cp_report_date) BETWEEN pei_information7 AND pei_information8
26    AND    pei_information9 IN ('04','05','06','07','12');
27 
28    CURSOR csr_ethnic_origin(cp_person_id NUMBER)
29    IS
30    SELECT pei.pei_information1,
31           pei.pei_information2,
32           pei.pei_information3,
33           pei.pei_information4,
34           pei.pei_information5,
35           pei.pei_information6,
36           pei.pei_information7
37    FROM   per_people_extra_info pei
38    WHERE  pei.person_id = cp_person_id
39    AND    pei.information_type = 'US_ETHNIC_ORIGIN';
40 
41    l_ethnic_origin NUMBER;
42    l_extra_info    csr_ethnic_origin%ROWTYPE;
43    l_alien_found   VARCHAR2(1);
44 
45 BEGIN
46 
47    l_ethnic_origin := -1;
48    l_alien_found   := 'N';
49 
50    IF p_check_alien = 'Y' THEN
51 
52       OPEN csr_alien(p_person_id, p_report_date);
53       FETCH csr_alien INTO l_ethnic_origin;  -- Non Resident Alien
54 
55       IF csr_alien%FOUND THEN
56          l_alien_found := 'Y';
57       END IF;
58 
59       CLOSE csr_alien;
60    END IF;
61 
62    IF l_alien_found = 'N' THEN
63 
64       OPEN csr_ethnic_origin(p_person_id);
65       FETCH csr_ethnic_origin into l_extra_info;
66 
67       IF csr_ethnic_origin%FOUND THEN
68 
69          IF l_extra_info.pei_information1 = 'Y' THEN  -- Hispanic or Latino
70             l_ethnic_origin := 3;
71          ELSIF l_extra_info.pei_information7 = 'Y' THEN  -- Two or more Races
72             l_ethnic_origin := 13;
73          ELSIF l_extra_info.pei_information2 = 'Y' THEN  -- American Indian or Alaskan Native
74             l_ethnic_origin := 6;
75          ELSIF l_extra_info.pei_information3 = 'Y' THEN  -- Asian
76             l_ethnic_origin := 4;
77          ELSIF l_extra_info.pei_information4 = 'Y' THEN  -- Black or African American
78             l_ethnic_origin := 2;
79          ELSIF l_extra_info.pei_information5 = 'Y' THEN  -- Native Hawaiian or Other Pacific
80             l_ethnic_origin := 5;
81          ELSIF l_extra_info.pei_information6 = 'Y' THEN  -- White
82             l_ethnic_origin := 1;
83          ELSE
84             l_ethnic_origin := 99; -- Unkonwn Race
85          END IF;
86          CLOSE csr_ethnic_origin;
87 
88       ELSE
89          CLOSE csr_ethnic_origin;
90          l_ethnic_origin := 99; -- Unkonwn Race
91       END IF;
92 
93    END IF;
94 
95    RETURN l_ethnic_origin;
96 END derive_alien_ethnic_origin;
97 
98 /* ************************************************************************
99  Name        : derive_single_race
100  Type        : Function
101  Return Type : Number
102  Description : This function checks if the person belongs to only one race
103                or not and derives the ethnic origin of the person.
104                Used in EEO4 and EEO5 Reports.
105 ************************************************************************ */
106 FUNCTION derive_single_race(p_person_id   NUMBER)
107 RETURN NUMBER
108 IS
109 
110    CURSOR csr_ethnic_origin(cp_person_id NUMBER)
111    IS
112    SELECT pei.pei_information1,
113           pei.pei_information2,
114           pei.pei_information3,
115           pei.pei_information4,
116           pei.pei_information5,
117           pei.pei_information6,
118           pei.pei_information7
119    FROM   per_people_extra_info pei
120    WHERE  pei.person_id = cp_person_id
121    AND    pei.information_type = 'US_ETHNIC_ORIGIN';
122 
123    l_ethnic_origin NUMBER;
124    l_race_count    NUMBER;
125    l_extra_info    csr_ethnic_origin%ROWTYPE;
126 
127 BEGIN
128 
129    l_ethnic_origin := -1;
130    l_race_count    := 0;
131 
132    OPEN csr_ethnic_origin(p_person_id);
133    FETCH csr_ethnic_origin into l_extra_info;
134 
135    IF csr_ethnic_origin%FOUND THEN
136 
137       IF l_extra_info.pei_information1 = 'Y' THEN  -- Hispanic or Latino
138          l_ethnic_origin := 3;
139          l_race_count := l_race_count + 1;
140       END IF;
141 
142       IF l_extra_info.pei_information2 = 'Y' THEN  -- American Indian or Alaskan Native
143          l_ethnic_origin := 6;
144          l_race_count := l_race_count + 1;
145       END IF;
146 
147       IF l_extra_info.pei_information3 = 'Y' THEN  -- Asian
148          l_ethnic_origin := 4;
149          l_race_count := l_race_count + 1;
150       END IF;
151 
152       IF l_extra_info.pei_information4 = 'Y' THEN  -- Black or African American
153          l_ethnic_origin := 2;
154          l_race_count := l_race_count + 1;
155       END IF;
156 
157       IF l_extra_info.pei_information5 = 'Y' THEN  -- Native Hawaiian or Other Pacific
158          l_ethnic_origin := 5;
159          l_race_count := l_race_count + 1;
160       END IF;
161 
162       IF l_extra_info.pei_information6 = 'Y' THEN  -- White
163          l_ethnic_origin := 1;
164          l_race_count := l_race_count + 1;
165       END IF;
166 
167       IF l_race_count = 0 THEN
168          l_ethnic_origin := 99; -- Unkonwn Race
169       ELSIF l_race_count > 1 THEN
170          l_ethnic_origin := 13; -- Two or more Races
171       END IF;
172       CLOSE csr_ethnic_origin;
173 
174    ELSE
175       CLOSE csr_ethnic_origin;
176       l_ethnic_origin := 99; -- Unkonwn Race
177    END IF;
178 
179    RETURN l_ethnic_origin;
180 END derive_single_race;
181 
182 END per_us_hr_utility_pkg;