DBA Data[Home] [Help]

PACKAGE BODY: APPS.GHR_PER_SUM

Source


1 PACKAGE BODY ghr_per_sum AS
2 /* $Header: ghpersum.pkb 120.2.12020000.2 2012/07/06 09:48:45 vmididho ship $ */
3 --
4 PROCEDURE fetch_peopleei(
5     p_person_id         IN     NUMBER
6    ,p_information_type  IN     VARCHAR2
7    ,p_date_effective    IN     DATE
8    ,p_information1      IN OUT NOCOPY VARCHAR2
9    ,p_information2      IN OUT NOCOPY VARCHAR2
10    ,p_information3      IN OUT NOCOPY VARCHAR2
11    ,p_information4      IN OUT NOCOPY VARCHAR2
12    ,p_information5      IN OUT NOCOPY VARCHAR2
13    ,p_information6      IN OUT NOCOPY VARCHAR2
14    ,p_information7      IN OUT NOCOPY VARCHAR2
15    ,p_information8      IN OUT NOCOPY VARCHAR2
16    ,p_information9      IN OUT NOCOPY VARCHAR2
17    ,p_information10     IN OUT NOCOPY VARCHAR2
18    ,p_information11     IN OUT NOCOPY VARCHAR2
19    ,p_information12     IN OUT NOCOPY VARCHAR2
20    ,p_information13     IN OUT NOCOPY VARCHAR2
21    ,p_information14     IN OUT NOCOPY VARCHAR2
22    ,p_information15     IN OUT NOCOPY VARCHAR2
23    ,p_information16     IN OUT NOCOPY VARCHAR2
24    ,p_information17     IN OUT NOCOPY VARCHAR2
25    ,p_information18     IN OUT NOCOPY VARCHAR2
26    ,p_information19     IN OUT NOCOPY VARCHAR2
27    ,p_information20     IN OUT NOCOPY VARCHAR2
28    ,p_information21     IN OUT NOCOPY VARCHAR2
29    ,p_information22     IN OUT NOCOPY VARCHAR2
30    ,p_information23     IN OUT NOCOPY VARCHAR2
31    ,p_information24     IN OUT NOCOPY VARCHAR2
32    ,p_information25     IN OUT NOCOPY VARCHAR2
33    ,p_information26     IN OUT NOCOPY VARCHAR2
34    ,p_information27     IN OUT NOCOPY VARCHAR2
35    ,p_information28     IN OUT NOCOPY VARCHAR2
36    ,p_information29     IN OUT NOCOPY VARCHAR2
37    ,p_information30     IN OUT NOCOPY VARCHAR2) IS
38 
39 l_per_ei_data      per_people_extra_info%rowtype;
40 BEGIN
41   ghr_history_fetch.fetch_peopleei(
42     p_person_id         => p_person_id
43    ,p_information_type  => p_information_type
44    ,p_date_effective    => p_date_effective
45    ,p_per_ei_data       => l_per_ei_data);
46 
47   p_information1  := l_per_ei_data.pei_information1;
48   p_information2  := l_per_ei_data.pei_information2;
49   p_information3  := l_per_ei_data.pei_information3;
50   p_information4  := l_per_ei_data.pei_information4;
51   p_information5  := l_per_ei_data.pei_information5;
52   p_information6  := l_per_ei_data.pei_information6;
53   p_information7  := l_per_ei_data.pei_information7;
54   p_information8  := l_per_ei_data.pei_information8;
55   p_information9  := l_per_ei_data.pei_information9;
56   p_information10 := l_per_ei_data.pei_information10;
57   p_information11 := l_per_ei_data.pei_information11;
58   p_information12 := l_per_ei_data.pei_information12;
59   p_information13 := l_per_ei_data.pei_information13;
60   p_information14 := l_per_ei_data.pei_information14;
61   p_information15 := l_per_ei_data.pei_information15;
62   p_information16 := l_per_ei_data.pei_information16;
63   p_information17 := l_per_ei_data.pei_information17;
64   p_information18 := l_per_ei_data.pei_information18;
65   p_information19 := l_per_ei_data.pei_information19;
66   p_information20 := l_per_ei_data.pei_information20;
67   p_information21 := l_per_ei_data.pei_information21;
68   p_information22 := l_per_ei_data.pei_information22;
69   p_information23 := l_per_ei_data.pei_information23;
70   p_information24 := l_per_ei_data.pei_information24;
71   p_information25 := l_per_ei_data.pei_information25;
72   p_information26 := l_per_ei_data.pei_information26;
73   p_information27 := l_per_ei_data.pei_information27;
74   p_information28 := l_per_ei_data.pei_information28;
75   p_information29 := l_per_ei_data.pei_information29;
76   p_information30 := l_per_ei_data.pei_information30;
77 
78 END fetch_peopleei;
79 
80 PROCEDURE fetch_asgei(
81     p_assignment_id     IN     NUMBER
82    ,p_information_type  IN     VARCHAR2
83    ,p_date_effective    IN     DATE
84    ,p_information1      IN OUT NOCOPY VARCHAR2
85    ,p_information2      IN OUT NOCOPY VARCHAR2
86    ,p_information3      IN OUT NOCOPY VARCHAR2
87    ,p_information4      IN OUT NOCOPY VARCHAR2
88    ,p_information5      IN OUT NOCOPY VARCHAR2
89    ,p_information6      IN OUT NOCOPY VARCHAR2
90    ,p_information7      IN OUT NOCOPY VARCHAR2
91    ,p_information8      IN OUT NOCOPY VARCHAR2
92    ,p_information9      IN OUT NOCOPY VARCHAR2
93    ,p_information10     IN OUT NOCOPY VARCHAR2
94    ,p_information11     IN OUT NOCOPY VARCHAR2
95    ,p_information12     IN OUT NOCOPY VARCHAR2
96    ,p_information13     IN OUT NOCOPY VARCHAR2
97    ,p_information14     IN OUT NOCOPY VARCHAR2
98    ,p_information15     IN OUT NOCOPY VARCHAR2
99    ,p_information16     IN OUT NOCOPY VARCHAR2
100    ,p_information17     IN OUT NOCOPY VARCHAR2
101    ,p_information18     IN OUT NOCOPY VARCHAR2
102    ,p_information19     IN OUT NOCOPY VARCHAR2
103    ,p_information20     IN OUT NOCOPY VARCHAR2
104    ,p_information21     IN OUT NOCOPY VARCHAR2
105    ,p_information22     IN OUT NOCOPY VARCHAR2
106    ,p_information23     IN OUT NOCOPY VARCHAR2
107    ,p_information24     IN OUT NOCOPY VARCHAR2
108    ,p_information25     IN OUT NOCOPY VARCHAR2
109    ,p_information26     IN OUT NOCOPY VARCHAR2
110    ,p_information27     IN OUT NOCOPY VARCHAR2
111    ,p_information28     IN OUT NOCOPY VARCHAR2
112    ,p_information29     IN OUT NOCOPY VARCHAR2
113    ,p_information30     IN OUT NOCOPY VARCHAR2) IS
114 
115 l_asg_ei_data      per_assignment_extra_info%rowtype;
116 BEGIN
117   ghr_history_fetch.fetch_asgei(
118     p_assignment_id     => p_assignment_id
119    ,p_information_type  => p_information_type
120    ,p_date_effective    => p_date_effective
121    ,p_asg_ei_data       => l_asg_ei_data);
122 
123   p_information1  := l_asg_ei_data.aei_information1;
124   p_information2  := l_asg_ei_data.aei_information2;
125   p_information3  := l_asg_ei_data.aei_information3;
126   p_information4  := l_asg_ei_data.aei_information4;
127   p_information5  := l_asg_ei_data.aei_information5;
128   p_information6  := l_asg_ei_data.aei_information6;
129   p_information7  := l_asg_ei_data.aei_information7;
130   p_information8  := l_asg_ei_data.aei_information8;
131   p_information9  := l_asg_ei_data.aei_information9;
132   p_information10 := l_asg_ei_data.aei_information10;
133   p_information11 := l_asg_ei_data.aei_information11;
134   p_information12 := l_asg_ei_data.aei_information12;
135   p_information13 := l_asg_ei_data.aei_information13;
136   p_information14 := l_asg_ei_data.aei_information14;
137   p_information15 := l_asg_ei_data.aei_information15;
138   p_information16 := l_asg_ei_data.aei_information16;
139   p_information17 := l_asg_ei_data.aei_information17;
140   p_information18 := l_asg_ei_data.aei_information18;
141   p_information19 := l_asg_ei_data.aei_information19;
142   p_information20 := l_asg_ei_data.aei_information20;
143   p_information21 := l_asg_ei_data.aei_information21;
144   p_information22 := l_asg_ei_data.aei_information22;
145   p_information23 := l_asg_ei_data.aei_information23;
146   p_information24 := l_asg_ei_data.aei_information24;
147   p_information25 := l_asg_ei_data.aei_information25;
148   p_information26 := l_asg_ei_data.aei_information26;
149   p_information27 := l_asg_ei_data.aei_information27;
150   p_information28 := l_asg_ei_data.aei_information28;
151   p_information29 := l_asg_ei_data.aei_information29;
152   p_information30 := l_asg_ei_data.aei_information30;
153 
154 END fetch_asgei;
155 
156 PROCEDURE fetch_positionei(
157     p_position_id       IN     NUMBER
158    ,p_information_type  IN     VARCHAR2
159    ,p_date_effective    IN     DATE
160    ,p_information1      IN OUT NOCOPY VARCHAR2
161    ,p_information2      IN OUT NOCOPY VARCHAR2
162    ,p_information3      IN OUT NOCOPY VARCHAR2
163    ,p_information4      IN OUT NOCOPY VARCHAR2
164    ,p_information5      IN OUT NOCOPY VARCHAR2
165    ,p_information6      IN OUT NOCOPY VARCHAR2
166    ,p_information7      IN OUT NOCOPY VARCHAR2
167    ,p_information8      IN OUT NOCOPY VARCHAR2
168    ,p_information9      IN OUT NOCOPY VARCHAR2
169    ,p_information10     IN OUT NOCOPY VARCHAR2
170    ,p_information11     IN OUT NOCOPY VARCHAR2
171    ,p_information12     IN OUT NOCOPY VARCHAR2
172    ,p_information13     IN OUT NOCOPY VARCHAR2
173    ,p_information14     IN OUT NOCOPY VARCHAR2
174    ,p_information15     IN OUT NOCOPY VARCHAR2
175    ,p_information16     IN OUT NOCOPY VARCHAR2
176    ,p_information17     IN OUT NOCOPY VARCHAR2
177    ,p_information18     IN OUT NOCOPY VARCHAR2
178    ,p_information19     IN OUT NOCOPY VARCHAR2
179    ,p_information20     IN OUT NOCOPY VARCHAR2
180    ,p_information21     IN OUT NOCOPY VARCHAR2
181    ,p_information22     IN OUT NOCOPY VARCHAR2
182    ,p_information23     IN OUT NOCOPY VARCHAR2
183    ,p_information24     IN OUT NOCOPY VARCHAR2
184    ,p_information25     IN OUT NOCOPY VARCHAR2
185    ,p_information26     IN OUT NOCOPY VARCHAR2
186    ,p_information27     IN OUT NOCOPY VARCHAR2
187    ,p_information28     IN OUT NOCOPY VARCHAR2
188    ,p_information29     IN OUT NOCOPY VARCHAR2
189    ,p_information30     IN OUT NOCOPY VARCHAR2) IS
190 
191 l_pos_ei_data      per_position_extra_info%rowtype;
192 BEGIN
193   ghr_history_fetch.fetch_positionei(
194     p_position_id       => p_position_id
195    ,p_information_type  => p_information_type
196    ,p_date_effective    => p_date_effective
197    ,p_pos_ei_data       => l_pos_ei_data);
198 
199   p_information1  := l_pos_ei_data.poei_information1;
200   p_information2  := l_pos_ei_data.poei_information2;
201   p_information3  := l_pos_ei_data.poei_information3;
202   p_information4  := l_pos_ei_data.poei_information4;
203   p_information5  := l_pos_ei_data.poei_information5;
204   p_information6  := l_pos_ei_data.poei_information6;
205   p_information7  := l_pos_ei_data.poei_information7;
206   p_information8  := l_pos_ei_data.poei_information8;
207   p_information9  := l_pos_ei_data.poei_information9;
208   p_information10 := l_pos_ei_data.poei_information10;
209   p_information11 := l_pos_ei_data.poei_information11;
210   p_information12 := l_pos_ei_data.poei_information12;
211   p_information13 := l_pos_ei_data.poei_information13;
212   p_information14 := l_pos_ei_data.poei_information14;
213   p_information15 := l_pos_ei_data.poei_information15;
214   p_information16 := l_pos_ei_data.poei_information16;
215   p_information17 := l_pos_ei_data.poei_information17;
216   p_information18 := l_pos_ei_data.poei_information18;
217   p_information19 := l_pos_ei_data.poei_information19;
218   p_information20 := l_pos_ei_data.poei_information20;
219   p_information21 := l_pos_ei_data.poei_information21;
220   p_information22 := l_pos_ei_data.poei_information22;
221   p_information23 := l_pos_ei_data.poei_information23;
222   p_information24 := l_pos_ei_data.poei_information24;
223   p_information25 := l_pos_ei_data.poei_information25;
224   p_information26 := l_pos_ei_data.poei_information26;
225   p_information27 := l_pos_ei_data.poei_information27;
226   p_information28 := l_pos_ei_data.poei_information28;
227   p_information29 := l_pos_ei_data.poei_information29;
228   p_information30 := l_pos_ei_data.poei_information30;
229 
230 END fetch_positionei;
231 --
232 PROCEDURE return_special_information(
233     p_person_id         IN     NUMBER
234    ,p_structure_name    IN     VARCHAR2
235    ,p_effective_date    IN     DATE
236    ,p_segment1          IN OUT NOCOPY VARCHAR2
237    ,p_segment2          IN OUT NOCOPY VARCHAR2
238    ,p_segment3          IN OUT NOCOPY VARCHAR2
239    ,p_segment4          IN OUT NOCOPY VARCHAR2
240    ,p_segment5          IN OUT NOCOPY VARCHAR2
241    ,p_segment6          IN OUT NOCOPY VARCHAR2
242    ,p_segment7          IN OUT NOCOPY VARCHAR2
243    ,p_segment8          IN OUT NOCOPY VARCHAR2
244    ,p_segment9          IN OUT NOCOPY VARCHAR2
245    ,p_segment10         IN OUT NOCOPY VARCHAR2
246    ,p_segment11         IN OUT NOCOPY VARCHAR2
247    ,p_segment12         IN OUT NOCOPY VARCHAR2
248    ,p_segment13         IN OUT NOCOPY VARCHAR2
249    ,p_segment14         IN OUT NOCOPY VARCHAR2
250    ,p_segment15         IN OUT NOCOPY VARCHAR2
251    ,p_segment16         IN OUT NOCOPY VARCHAR2
252    ,p_segment17         IN OUT NOCOPY VARCHAR2
253    ,p_segment18         IN OUT NOCOPY VARCHAR2
254    ,p_segment19         IN OUT NOCOPY VARCHAR2
255    ,p_segment20         IN OUT NOCOPY VARCHAR2
256    ,p_segment21         IN OUT NOCOPY VARCHAR2
257    ,p_segment22         IN OUT NOCOPY VARCHAR2
258    ,p_segment23         IN OUT NOCOPY VARCHAR2
259    ,p_segment24         IN OUT NOCOPY VARCHAR2
260    ,p_segment25         IN OUT NOCOPY VARCHAR2
261    ,p_segment26         IN OUT NOCOPY VARCHAR2
262    ,p_segment27         IN OUT NOCOPY VARCHAR2
263    ,p_segment28         IN OUT NOCOPY VARCHAR2
264    ,p_segment29         IN OUT NOCOPY VARCHAR2
265    ,p_segment30         IN OUT NOCOPY VARCHAR2
266    ,p_person_analysis_id    IN OUT NOCOPY NUMBER
267    ,p_object_version_number IN OUT NOCOPY NUMBER) IS
268 
269 l_special_information_type ghr_api.special_information_type;
270 BEGIN
271   ghr_api.return_special_information(p_person_id
272                                     ,p_structure_name
273                                     ,p_effective_date
274                                     ,l_special_information_type);
275   --
276   p_segment1              := l_special_information_type.segment1;
277   p_segment2              := l_special_information_type.segment2;
278   p_segment3              := l_special_information_type.segment3;
279   p_segment4              := l_special_information_type.segment4;
280   p_segment5              := l_special_information_type.segment5;
281   p_segment6              := l_special_information_type.segment6;
282   p_segment7              := l_special_information_type.segment7;
283   p_segment8              := l_special_information_type.segment8;
284   p_segment9              := l_special_information_type.segment9;
285   p_segment10             := l_special_information_type.segment10;
286   p_segment11             := l_special_information_type.segment11;
287   p_segment12             := l_special_information_type.segment12;
288   p_segment13             := l_special_information_type.segment13;
289   p_segment14             := l_special_information_type.segment14;
290   p_segment15             := l_special_information_type.segment15;
291   p_segment16             := l_special_information_type.segment16;
292   p_segment17             := l_special_information_type.segment17;
293   p_segment18             := l_special_information_type.segment18;
294   p_segment19             := l_special_information_type.segment19;
295   p_segment20             := l_special_information_type.segment20;
296   p_segment21             := l_special_information_type.segment21;
297   p_segment22             := l_special_information_type.segment22;
298   p_segment23             := l_special_information_type.segment23;
299   p_segment24             := l_special_information_type.segment24;
300   p_segment25             := l_special_information_type.segment25;
301   p_segment26             := l_special_information_type.segment26;
302   p_segment27             := l_special_information_type.segment27;
303   p_segment28             := l_special_information_type.segment28;
304   p_segment29             := l_special_information_type.segment29;
305   p_segment30             := l_special_information_type.segment30;
306   p_person_analysis_id    := l_special_information_type.person_analysis_id;
307   p_object_version_number := l_special_information_type.object_version_number;
308 
309 END return_special_information;
310 --
311 PROCEDURE get_grade_details (p_grade_id       IN  NUMBER
312                             ,p_grade_name     IN OUT NOCOPY VARCHAR2
313                             ,p_pay_plan       IN OUT NOCOPY VARCHAR2
314                             ,p_grade_or_level IN OUT NOCOPY VARCHAR2) IS
315 --
316 CURSOR cur_grd IS
317   SELECT gdf.segment1 pay_plan
318         ,gdf.segment2 grade_or_level
319         ,grd.name     grade_name
320   FROM  per_grade_definitions gdf
321        ,per_grades            grd
322   WHERE grd.grade_id = p_grade_id
323   AND   grd.grade_definition_id = gdf.grade_definition_id;
324 --
325 BEGIN
326 
327   FOR cur_grd_rec IN cur_grd LOOP
328     p_grade_name     := cur_grd_rec.grade_name;
329     p_pay_plan       := cur_grd_rec.pay_plan;
330     p_grade_or_level := cur_grd_rec.grade_or_level;
331   END LOOP;
332 
333 END get_grade_details;
334 --
335 PROCEDURE get_retained_grade_details (p_person_id            IN     NUMBER
336                                      ,p_effective_date       IN     DATE
337                                      ,p_person_extra_info_id IN OUT NOCOPY NUMBER
338                                      ,p_date_from            IN OUT NOCOPY DATE
339                                      ,p_date_to              IN OUT NOCOPY DATE
340                                      ,p_grade_or_level       IN OUT NOCOPY VARCHAR2
341                                      ,p_step_or_rate         IN OUT NOCOPY VARCHAR2
342                                      ,p_pay_plan             IN OUT NOCOPY VARCHAR2
343                                      ,p_pay_table_id         IN OUT NOCOPY VARCHAR2
344                                      ,p_pay_basis            IN OUT NOCOPY VARCHAR2
345                                      ,p_temp_step            IN OUT NOCOPY VARCHAR2
346                                       ) IS
347 CURSOR cur_pei IS
348   SELECT pei.pei_information1 date_from
349         ,pei.pei_information2 date_to
350   FROM   per_people_extra_info pei
351   WHERE  pei.person_extra_info_id = p_person_extra_info_id;
352 
353 l_retained_grade_rec ghr_pay_calc.retained_grade_rec_type;
354 
355 BEGIN
356   l_retained_grade_rec := ghr_pc_basic_pay.get_retained_grade_details
357                                              (p_person_id      => p_person_id
358                                              ,p_effective_date => p_effective_date);
359 
360   IF l_retained_grade_rec.person_extra_info_id IS NOT NULL THEN
361     p_person_extra_info_id := l_retained_grade_rec.person_extra_info_id;
362     FOR cur_pei_rec IN cur_pei LOOP
363       p_date_from := fnd_date.canonical_to_date(cur_pei_rec.date_from);
364       p_date_to   := fnd_date.canonical_to_date(cur_pei_rec.date_to);
365     END LOOP;
366     p_grade_or_level       := l_retained_grade_rec.grade_or_level;
367     p_step_or_rate         := l_retained_grade_rec.step_or_rate;
368     p_pay_plan             := l_retained_grade_rec.pay_plan;
369     p_pay_table_id         := SUBSTR(ghr_pay_calc.get_user_table_name(l_retained_grade_rec.user_table_id),1,4);
370     p_pay_basis            := l_retained_grade_rec.pay_basis;
371     p_temp_step            := l_retained_grade_rec.temp_step;
372   END IF;
373 EXCEPTION
374   WHEN ghr_pay_calc.pay_calc_message THEN
375     -- This just means nothing was returned, no need to worry about this!
376     NULL;
377 END ;
378 --
379 FUNCTION further_retained_details_exist(p_person_id            IN NUMBER
380                                        ,p_person_extra_info_id IN NUMBER)
381   RETURN BOOLEAN IS
382 --
383 CURSOR cur_pei IS
384   SELECT 1
385   FROM   per_people_extra_info pei
386   WHERE  pei.person_id             = p_person_id
387   AND    pei.information_type      = 'GHR_US_RETAINED_GRADE'
388   AND    pei.person_extra_info_id <> NVL(p_person_extra_info_id,-999);
389 --
390 BEGIN
391   FOR cur_pei_rec IN cur_pei LOOP
392     RETURN(TRUE);
393   END LOOP;
394   --
395   RETURN(FALSE);
396   --
397 END further_retained_details_exist;
398 --
399 FUNCTION get_poi_desc (p_personnel_office_id IN NUMBER)
400   RETURN VARCHAR2 IS
401 --
402 CURSOR cur_poi IS
403   SELECT poi.description
404   FROM   ghr_pois poi
405   WHERE  poi.personnel_office_id = p_personnel_office_id;
406 
407 BEGIN
408   FOR cur_poi_rec IN cur_poi LOOP
409     RETURN(cur_poi_rec.description);
410   END LOOP;
411   --
412   RETURN(NULL);
413   --
414 END get_poi_desc;
415 --
416 PROCEDURE get_duty_station_details (p_location_id                  IN     NUMBER
417                                    ,p_effective_date               IN     DATE
418                                    ,p_duty_sation_code             IN OUT NOCOPY VARCHAR2
419                                    ,p_duty_station_desc            IN OUT NOCOPY VARCHAR2
420                                    ,p_locality_pay_area            IN OUT NOCOPY VARCHAR2
421                                    ,p_locality_pay_area_percentage IN OUT NOCOPY NUMBER
422                                     ) IS
423 CURSOR cur_ds IS
424   SELECT dst.duty_station_code
425         ,dstv.duty_station_desc
426         ,lpa.short_name
427         ,lpa.adjustment_percentage
428   FROM   ghr_locality_pay_areas_f lpa
429         ,ghr_duty_stations_v      dstv
430         ,ghr_duty_stations_f      dst
431         ,hr_location_extra_info   lei
432   WHERE lei.location_id = p_location_id
433   AND   lei.information_type = 'GHR_US_LOC_INFORMATION'
434   AND   dst.duty_station_id = lei.lei_information3
435   AND   NVL(p_effective_date,TRUNC(sysdate)) BETWEEN dst.effective_start_date AND dst.effective_end_date
436   AND   dstv.duty_station_id = dst.duty_station_id
437   AND   NVL(p_effective_date,TRUNC(sysdate)) BETWEEN dstv.effective_start_date AND dstv.effective_end_date
438   AND   dst.locality_pay_area_id = lpa.locality_pay_area_id
439   AND   NVL(p_effective_date,TRUNC(sysdate)) BETWEEN lpa.effective_start_date AND lpa.effective_end_date;
440 
441 BEGIN
442   FOR cur_ds_rec IN cur_ds LOOP
443     p_duty_sation_code             := cur_ds_rec.duty_station_code;
444     p_duty_station_desc            := cur_ds_rec.duty_station_desc;
445     p_locality_pay_area            := cur_ds_rec.short_name;
446     p_locality_pay_area_percentage := cur_ds_rec.adjustment_percentage;
447   END LOOP;
448 --
449 END get_duty_station_details;
450 --
451 PROCEDURE get_org_details (p_org_id    IN     NUMBER
452                           ,p_org_name  IN OUT NOCOPY VARCHAR2
453                           ,p_org_line1 IN OUT NOCOPY VARCHAR2
454                           ,p_org_line2 IN OUT NOCOPY VARCHAR2
455                           ,p_org_line3 IN OUT NOCOPY VARCHAR2
456                           ,p_org_line4 IN OUT NOCOPY VARCHAR2
457                           ,p_org_line5 IN OUT NOCOPY VARCHAR2
458                           ,p_org_line6 IN OUT NOCOPY VARCHAR2) IS
459 --
460 CURSOR cur_org IS
461   SELECT org.name
462   FROM   hr_organization_units org
463   WHERE  org.organization_id = p_org_id;
464 
465 CURSOR cur_oi IS
466   SELECT oi.org_information5  org_line1
467         ,oi.org_information6  org_line2
468         ,oi.org_information7  org_line3
469         ,oi.org_information8  org_line4
470         ,oi.org_information9  org_line5
471         ,oi.org_information10 org_line6
472   FROM  hr_organization_information oi
473   WHERE oi.organization_id = p_org_id
474   AND   oi.org_information_context = 'GHR_US_ORG_REPORTING_INFO';
475 --
476 BEGIN
477   FOR cur_org_rec IN cur_org LOOP
478     p_org_name := cur_org_rec.name;
479   END LOOP;
480   --
481   FOR cur_oi_rec IN cur_oi LOOP
482     p_org_line1 := cur_oi_rec.org_line1;
483     p_org_line2 := cur_oi_rec.org_line2;
484     p_org_line3 := cur_oi_rec.org_line3;
485     p_org_line4 := cur_oi_rec.org_line4;
486     p_org_line5 := cur_oi_rec.org_line5;
487     p_org_line6 := cur_oi_rec.org_line6;
488   END LOOP;
489 --
490 END get_org_details;
491 --
492 PROCEDURE get_element_details (p_element_name         IN     VARCHAR2
493                               ,p_input_value_name     IN     VARCHAR2
494                               ,p_assignment_id        IN     NUMBER
495                               ,p_effective_date       IN     DATE
496                               ,p_value                IN OUT NOCOPY VARCHAR2
497                               ,p_effective_start_date IN OUT NOCOPY DATE
498 			      ,p_business_group_id    IN     NUMBER) IS
499 --
500 -- NOTE: The effective date we get is that of the individual input value not the effective
501 -- date of the whole element as seen in the element screen.
502 --
503 CURSOR cur_ele(p_element_name IN VARCHAR2,
504                p_bg_id        IN NUMBER)
505  IS
506   SELECT  eev.screen_entry_value
507          ,eev.effective_start_date
508   FROM    pay_element_types_f        elt
509          ,pay_input_values_f         ipv
510          ,pay_element_entries_f      ele
511          ,pay_element_entry_values_f eev
512   WHERE  p_effective_date BETWEEN elt.effective_start_date AND elt.effective_end_date
513   AND    p_effective_date BETWEEN ipv.effective_start_date AND ipv.effective_end_date
514   AND    p_effective_date BETWEEN ele.effective_start_date AND ele.effective_end_date
515   AND    p_effective_date BETWEEN eev.effective_start_date AND eev.effective_end_date
516   AND    elt.element_type_id    = ipv.element_type_id
517   AND    upper(elt.element_name)= upper(p_element_name)
518   AND    ipv.input_value_id     = eev.input_value_id
519   AND    ele.assignment_id      = p_assignment_id
520   AND    ele.element_entry_id+0 = eev.element_entry_id
521   AND    upper(ipv.name )       = upper(p_input_value_name)
522 --  AND    NVL(elt.business_group_id,0)  = NVL(ipv.business_group_id,0)
523   AND    (elt.business_group_id is NULL or elt.business_group_id  = p_bg_id);
524   --
525 
526 -- Commented the below cursor as a part of bug 4016362
527 /*Cursor Cur_bg(p_assignment_id NUMBER,p_eff_date DATE) is
528        Select distinct business_group_id bg
529        from per_assignments_f
530        where assignment_id = p_assignment_id
531        and   p_eff_date between effective_start_date
532              and effective_end_date;
533 --
534  ll_bg_id                    NUMBER; */
535 
536  ll_pay_basis                VARCHAR2(80);
537  ll_effective_date           DATE;
538  l_new_element_name          VARCHAR2(80);
539  l_session                  ghr_history_api.g_session_var_type;
540 --
541 BEGIN
542 --
543 --
544   -- Initialization
545   -- Pick the business group id and also pay basis for later use
546   ll_effective_date := p_effective_Date;
547 
548 -- Commented this code as a part of Bug 4016362
549 /*  For BG_rec in Cur_BG(p_assignment_id,ll_effective_date)
550   Loop
551    ll_bg_id:=BG_rec.bg;
552   End Loop;*/
553 
554 ----
555 ---- The New Changes after 08/22 patch
556 ---- For all elements in HR User old function will fetch the same name.
557 ----     because of is_script will be FALSE
558 ----
559 ---- For all elements (except BSR) in Payroll user old function.
560 ----     for BSR a new function which will fetch from assignmnet id.
561 ----
562 
563 IF (p_element_name = 'Basic Salary Rate'
564     and (fnd_profile.value('HR_USER_TYPE') = 'INT')) THEN
565     hr_utility.set_location('PAYROLL User -- BSR -- from asgid-- ', 1);
566            l_new_element_name :=
567 	           pqp_fedhr_uspay_int_utils.return_new_element_name(
568                                            p_assignment_id      => p_assignment_id,
569                                            p_business_group_id  => p_business_group_id,  -- Bug 4016362
570 	                                   p_effective_date     => ll_effective_date);
571 	   --Begin Bug# 12711574
572 	   IF l_new_element_name IS NULL THEN
573 		l_new_element_name :=
574                             pqp_fedhr_uspay_int_utils.return_new_element_name(
575                                           p_fedhr_element_name => p_element_name,
576                                            p_business_group_id  => p_business_group_id,
577 	                                   p_effective_date     => ll_effective_date,
578 	                                   p_pay_basis          => NULL);
579 	   END IF;
580 	   --End Bug# 12711574
581 -- Bug 4016362 : Commented this ELSEIF condition as the condition in IF and ELSIF clauses are mutually exclusive.
582 
583 /* ELSIF (fnd_profile.value('HR_USER_TYPE') <> 'INT'
584    or (p_element_name <> 'Basic Salary Rate' and (fnd_profile.value('HR_USER_TYPE') = 'INT'))) THEN*/
585  ELSE                                                                                -- Bug 4016362
586     hr_utility.set_location('HR USER or PAYROLL User without BSR element -- from elt name -- ', 1);
587            l_new_element_name :=
588                             pqp_fedhr_uspay_int_utils.return_new_element_name(
589                                           p_fedhr_element_name => p_element_name,
590                                            p_business_group_id  => p_business_group_id,  -- Bug 4016362
591 	                                   p_effective_date     => ll_effective_date,
592 	                                   p_pay_basis          => NULL);
593 
594  END IF;
595 
596 --
597 --
598   FOR cur_ele_rec IN cur_ele(l_new_element_name,p_business_group_id) LOOP   -- Bug 4016362
599     p_value                := cur_ele_rec.screen_entry_value;
600     p_effective_start_date := cur_ele_rec.effective_start_date;
601     Exit;                                                                   -- Bug 4016362
602   END LOOP;
603   --
604 END get_element_details;
605 --
606 PROCEDURE get_status_code (p_status         IN   VARCHAR2
607                           ,p_status_code    OUT NOCOPY  VARCHAR2) IS
608 
609   CURSOR cur_status IS
610     SELECT fcl.lookup_code
611     FROM   fnd_common_lookups fcl
612     WHERE  fcl.APPLICATION_ID = 800
613     AND fcl.LOOKUP_TYPE = 'GHR_US_TSP_STATUS'
614     AND fcl.meaning = p_status;
615 
616   BEGIN
617   --
618 
619   FOR cur_status_rec IN cur_status LOOP
620       p_status_code := cur_status_rec.lookup_code;
621   END LOOP;
622 
623 END get_status_code;
624 --
625 PROCEDURE get_element_entry_values (p_element_entry_id     IN     NUMBER
626                                    ,p_input_value_name     IN     VARCHAR2
627                                    ,p_effective_date       IN     DATE
628                                    ,p_value                IN OUT NOCOPY VARCHAR2
629                                    ,p_effective_start_date IN OUT NOCOPY DATE) IS
630 --
631 -- NOTE: The effective date we get is that of the individual input value not the effective
632 -- date of the whole element as seen in the element screen.
633 --
634 CURSOR cur_ele_values IS
635   SELECT  eev.screen_entry_value
636          ,eev.effective_start_date
637   FROM   pay_element_entry_values_f eev
638          ,pay_input_values_f ipv
639   WHERE  p_input_value_name = ipv.name
640   AND    p_effective_date BETWEEN ipv.effective_start_date AND ipv.effective_end_date
641   AND    ipv.input_value_id = eev.input_value_id
642   AND    p_element_entry_id = eev.element_entry_id
643   AND    p_effective_date BETWEEN eev.effective_start_date AND eev.effective_end_date;
644 
645 BEGIN
646   --
647   FOR cur_ele_values_rec IN cur_ele_values LOOP
648     p_value                := cur_ele_values_rec.screen_entry_value;
649     p_effective_start_date := cur_ele_values_rec.effective_start_date;
650   END LOOP;
651   --
652 END get_element_entry_values;
653 --
654 --
655 FUNCTION info_type_is_valid (p_application_id       IN NUMBER
656                             ,p_responsibility_id    IN NUMBER
657                             ,p_info_type_table_name IN VARCHAR2
658                             ,p_information_type     IN VARCHAR2)
659   RETURN BOOLEAN IS
660 --
661 CURSOR cur_its IS
662   SELECT 1
663   FROM   per_info_type_security its
664   WHERE  its.application_id       = p_application_id
665   AND    its.responsibility_id    = p_responsibility_id
666   AND    its.info_type_table_name = p_info_type_table_name
667   AND    its.information_type     = p_information_type;
668 --
669 BEGIN
670 --
671   FOR cur_its_rec IN cur_its LOOP
672     RETURN(TRUE);
673   END LOOP;
674   --
675   RETURN(FALSE);
676 END info_type_is_valid;
677 --
678 FUNCTION get_workflow_id(p_workflow_name IN VARCHAR2)
679   RETURN NUMBER IS
680 
681   CURSOR cur_workflow_id IS
682     SELECT hrw.workflow_id
683     FROM   hr_workflows hrw
684     WHERE  hrw.workflow_name = p_workflow_name;
685 
686   BEGIN
687   --
688 
689   FOR cur_workflow_id_rec IN cur_workflow_id LOOP
690       RETURN(cur_workflow_id_rec.workflow_id);
691   END LOOP;
692 
693 END get_workflow_id;
694 --
695 PROCEDURE get_noa_code (p_pa_request_id  IN   NUMBER
696                        ,p_noa_code       OUT NOCOPY  VARCHAR2) IS
697 
698   CURSOR cur_noa_code IS
699     SELECT rpa.first_noa_code
700     FROM   ghr_pa_requests rpa
701     WHERE  rpa.pa_request_id = p_pa_request_id;
702 
703   BEGIN
704   --
705 
706   FOR cur_noa_code_rec IN cur_noa_code LOOP
707       p_noa_code := cur_noa_code_rec.first_noa_code;
708   END LOOP;
709 
710 END get_noa_code;
711 
712 --Begin Bug# 6850492
713 PROCEDURE get_second_noa_code (p_pa_request_id  IN   NUMBER
714                        ,p_second_noa_code       OUT NOCOPY  VARCHAR2) IS
715 
716   CURSOR cur_second_noa_code IS
717     SELECT rpa.second_noa_code
718     FROM   ghr_pa_requests rpa
719     WHERE  rpa.pa_request_id = p_pa_request_id;
720 
721   BEGIN
722   --
723 
724   FOR cur_second_noa_code_rec IN cur_second_noa_code LOOP
725       p_second_noa_code := cur_second_noa_code_rec.second_noa_code;
726   END LOOP;
727 
728 END get_second_noa_code;
729 --End Bug# 6850492
730 --
731 PROCEDURE get_dob_asgstat(p_assignment_id    IN     NUMBER
732                           ,p_effective_date  IN     DATE
733                           ,p_dob             OUT NOCOPY    DATE
734                           ,p_system_status   OUT NOCOPY    VARCHAR2) IS
735 
736 CURSOR cur_dob_asgstat IS
737  SELECT per.date_of_birth
738 ,ast.per_system_status
739 FROM per_assignment_status_types ast
740 ,per_assignments_f           asg
741 ,per_people_f                per
742 WHERE asg.assignment_id = p_assignment_id
743 AND asg.person_id = per.person_id
744 AND p_effective_date BETWEEN asg.effective_start_date AND asg.effective_end_date
745 AND ast.assignment_status_type_id = asg.assignment_status_type_id
746 AND asg.primary_flag = 'Y'
747 AND asg.assignment_type = 'E';
748 
749 BEGIN
750   --
751   FOR cur_dob_asgstat_rec IN cur_dob_asgstat LOOP
752     p_dob                := cur_dob_asgstat_rec.date_of_birth;
753     p_system_status      := cur_dob_asgstat_rec.per_system_status;
754   END LOOP;
755 
756 null;
757 END get_dob_asgstat;
758 --
759 PROCEDURE get_current_emp_flag (p_effective_date     IN         DATE
760                                ,p_person_id          IN         NUMBER
761                                ,p_current_emp_flag   OUT NOCOPY VARCHAR2) IS
762 
763 CURSOR cur_emp_flag IS
764  select current_employee_flag from per_all_people_f
765  where person_id = p_person_id
766  and p_effective_date
767   between effective_start_date and effective_end_date;
768 
769 BEGIN
770   --
771   FOR cur_emp_flag_rec IN cur_emp_flag LOOP
772     p_current_emp_flag := cur_emp_flag_rec.current_employee_flag;
773   END LOOP;
774 
775 null;
776 END get_current_emp_flag;
777 --
778 
779 PROCEDURE get_assignment_id(p_effective_date     IN         DATE
780                            ,p_person_id          IN         NUMBER
781                            ,p_assignment_id      OUT NOCOPY NUMBER) IS
782 
783 CURSOR cur_emp_assignment IS
784  select assignment_id from per_all_assignments_f paf
785  where paf.person_id = p_person_id
786  and p_effective_date
787   between paf.effective_start_date and paf.effective_end_date;
788 
789 BEGIN
790   --
791   FOR cur_emp_assignment_rec IN cur_emp_assignment LOOP
792     p_assignment_id := cur_emp_assignment_rec.assignment_id;
793   END LOOP;
794 
795 null;
796 END get_assignment_id;
797 --
798 
799 FUNCTION get_payroll_period_start_date (p_assignment_id IN NUMBER
800                                        ,p_effective_date IN DATE)
801   RETURN DATE IS
802 
803 CURSOR cur_payroll_start IS
804  select start_date
805  from per_time_periods ptp
806  where payroll_id in (select payroll_id
807                       from per_assignments_f
808                       where assignment_id = p_assignment_id
809                       and trunc(p_effective_date) between effective_start_date
810                                                   and     effective_end_date)
811  and trunc(p_effective_date) between start_date and end_date;
812 
813 BEGIN
814 --
815   FOR cur_payroll_start_rec IN cur_payroll_start LOOP
816     RETURN(cur_payroll_start_rec.start_date);
817   END LOOP;
818 
819 END get_payroll_period_start_date;
820 --
821 
822 END ghr_per_sum;