DBA Data[Home] [Help]

PACKAGE BODY: APPS.GHR_SF52_POST_UPDATE

Source


1 PACKAGE BODY GHR_SF52_POST_UPDATE AS
2 /* $Header: gh52poup.pkb 120.3.12010000.3 2009/02/01 11:48:50 vmididho ship $ */
3 
4 --
5 -- ----------------------------------------------------------------------------
6 -- |--------------------------< Post_sf52_process>--------------------------|
7 -- ----------------------------------------------------------------------------
8 
9 
10 Procedure Post_sf52_process
11 (
12  p_pa_request_id                  in     number,
13  p_effective_date                 in     date,
14  p_object_version_number          in out NOCOPY number,
15  p_from_position_id               in     number    default null,
16  p_to_position_id                 in     number    default null,
17  p_agency_code                    in     varchar2  default null,  -- to_agency_code
18  p_sf52_data_result               in ghr_pa_requests%rowtype,
19  p_called_from                    in varchar2 default null
20  )
21 is
22 
23  l_proc                            varchar2(72):= 'Post_sf52_process';
24  l_agency_code                     ghr_pa_requests.agency_code%type;
25  l_from_agency_code                ghr_pa_requests.from_agency_code%type;
26  l_from_agency_desc                ghr_pa_requests.from_agency_desc%type;
27  l_from_symbol                     ghr_pa_requests.from_office_symbol%type;
28  l_personnel_office_id             ghr_pa_requests.personnel_office_id%type;
29  l_employee_dept_or_agency         ghr_pa_requests.employee_dept_or_agency%type;
30  l_to_office_symbol                ghr_pa_requests.to_office_symbol%type;
31  l_pa_notification_id              ghr_pa_requests.pa_notification_id%type;
32  l_object_version_number           ghr_pa_requests.object_version_number%type;
33 
34  Cursor C_Sel1 is
35    select ghr_pa_notifications_s.nextval from sys.dual;
36 
37 -- Get all data pertaining to Notifications
38 
39 begin
40  hr_utility.set_location('Entering  ' || l_proc ,5);
41  l_object_version_number := p_object_version_number;
42 
43  hr_utility.set_location(l_proc ,10);
44 
45 -- Just get the notification_id  and update ghr_pa_requests
46 --
47     open C_Sel1;
48     Fetch C_Sel1 Into l_pa_notification_id;
49     Close C_Sel1;
50 
51  hr_utility.set_location('to_position_id is '||p_sf52_data_result.to_position_id ,10);
52 IF nvl(p_called_from,hr_api.g_varchar2)  = 'CORRECTION_SF52' THEN
53  ghr_par_upd.upd
54  (p_pa_request_id          	     =>  p_pa_request_id
55  ,p_object_version_number  	     =>  l_object_version_number
56  ,p_pa_notification_id             =>  l_pa_notification_id
57  ,p_to_position_id       => p_sf52_data_result.to_position_id
58  ,p_to_position_title    => p_sf52_data_result.to_position_title
59  ,p_to_position_number   => p_sf52_data_result.to_position_number
60  ,p_to_position_seq_no   => p_sf52_data_result.to_position_seq_no
61  ,p_to_pay_plan          => p_sf52_data_result.to_pay_plan
62  ,p_to_occ_code          => p_sf52_data_result.to_occ_code
63  ,p_to_step_or_rate      => p_sf52_data_result.to_step_or_rate
64  ,p_to_grade_or_level    => p_sf52_data_result.to_grade_or_level
65  ,p_to_total_salary      => p_sf52_data_result.to_total_salary
66  ,p_to_pay_basis         => p_sf52_data_result.to_pay_basis
67  ,p_to_basic_pay         => p_sf52_data_result.to_basic_pay
68  ,p_to_locality_adj      => p_sf52_data_result.to_locality_adj
69  ,p_to_adj_basic_pay     => p_sf52_data_result.to_adj_basic_pay
70  ,p_to_other_pay_amount  => p_sf52_data_result.to_other_pay_amount
71  ,p_TO_POSITION_ORG_LINE1  => p_sf52_data_result.TO_POSITION_ORG_LINE1
72  ,p_TO_POSITION_ORG_LINE2  => p_sf52_data_result.TO_POSITION_ORG_LINE2
73  ,p_TO_POSITION_ORG_LINE3  => p_sf52_data_result.TO_POSITION_ORG_LINE3
74  ,p_TO_POSITION_ORG_LINE4  => p_sf52_data_result.TO_POSITION_ORG_LINE4
75  ,p_TO_POSITION_ORG_LINE5  => p_sf52_data_result.TO_POSITION_ORG_LINE5
76  ,p_TO_POSITION_ORG_LINE6  => p_sf52_data_result.TO_POSITION_ORG_LINE6
77  ,p_VETERANS_PREFERENCE  => p_sf52_data_result.VETERANS_PREFERENCE
78  ,p_TENURE  => p_sf52_data_result.TENURE
79  ,p_VETERANS_PREF_FOR_RIF  => p_sf52_data_result.VETERANS_PREF_FOR_RIF
80  ,p_ANNUITANT_INDICATOR  => p_sf52_data_result.ANNUITANT_INDICATOR
81  ,p_ANNUITANT_INDICATOR_DESC  => p_sf52_data_result.ANNUITANT_INDICATOR_DESC
82  ,p_RETIREMENT_PLAN  => p_sf52_data_result.RETIREMENT_PLAN
83  ,p_SERVICE_COMP_DATE  => p_sf52_data_result.SERVICE_COMP_DATE
84  ,p_POSITION_OCCUPIED  => p_sf52_data_result.POSITION_OCCUPIED
85  ,p_FLSA_CATEGORY  => p_sf52_data_result.FLSA_CATEGORY
86  ,p_APPROPRIATION_CODE1  => p_sf52_data_result.APPROPRIATION_CODE1
87  ,p_APPROPRIATION_CODE2  => p_sf52_data_result.APPROPRIATION_CODE2
88  ,p_BARGAINING_UNIT_STATUS  => p_sf52_data_result.BARGAINING_UNIT_STATUS
89  ,p_CITIZENSHIP  => p_sf52_data_result.CITIZENSHIP
90  ,p_DUTY_STATION_CODE  => p_sf52_data_result.DUTY_STATION_CODE
91  ,p_duty_station_desc  => p_sf52_data_result.duty_station_desc
92  ,p_duty_station_id    => p_sf52_data_result.duty_station_id
93  ,p_duty_station_location_id  => p_sf52_data_result.duty_station_location_id
94  ,p_EDUCATION_LEVEL  => p_sf52_data_result.EDUCATION_LEVEL
95  ,p_FEGLI  => p_sf52_data_result.FEGLI
96  ,p_FUNCTIONAL_CLASS  => p_sf52_data_result.FUNCTIONAL_CLASS
97  ,p_work_schedule  => p_sf52_data_result.work_schedule
98  ,p_work_schedule_desc  => p_sf52_data_result.work_schedule_desc
99  ,p_PART_TIME_HOURS  => p_sf52_data_result.PART_TIME_HOURS
100  ,p_PAY_RATE_DETERMINANT  => p_sf52_data_result.PAY_RATE_DETERMINANT
101  --,p_SERVICE_COMP_DATE  => p_sf52_data_result.SERVICE_COMP_DATE
102 
103 -- ,p_RETIREMENT_PLAN  => p_sf52_data_result.RETIREMENT_PLAN
104  ,p_to_organization_id  => p_sf52_data_result.to_organization_id
105  ,p_year_degree_attained => p_sf52_data_result.year_degree_attained
106  ,p_academic_discipline  => p_sf52_data_result.academic_discipline
107  ,p_veterans_status      => p_sf52_data_result.veterans_status
108  ,p_supervisory_status   => p_sf52_data_result.supervisory_status
109 --start of  BUG # 6154523
110  ,p_award_amount         => p_sf52_data_result.award_amount
111  ,p_award_percentage     => p_sf52_data_result.award_percentage
112 --end of  BUG # 6154523
113 --start of BUG # 6983534
114  ,p_to_grade_id          => p_sf52_data_result.to_grade_id
115  --end of  BUG # 6983534
116   );
117 ELSE
118  ghr_par_upd.upd
119  (p_pa_request_id          	     =>  p_pa_request_id,
120   p_object_version_number  	     =>  l_object_version_number,
121   p_pa_notification_id             =>  l_pa_notification_id
122   );
123 END IF;
124 -- Get the Authentication Date for NFC processing
125 
126 ghr_utility.process_nfc_auth_date(
127 p_effective_date => p_effective_date,
128 p_pa_request_id => p_pa_request_id);
129    hr_utility.set_location(l_proc ,20);
130 
131 --
132 --
133 -- Update status of ghr_pa_requests (in pa_routing_history - Action Taken is set to 'UPDATE_HR_COMPLETE'
134 --
135 hr_utility.set_location(l_proc,40);
136 
137 ghr_sf52_api.end_sf52
138 (p_pa_request_id			=>   p_pa_request_id
139 ,p_action_taken			=>   'UPDATE_HR_COMPLETE'
140 ,p_par_object_version_number	=>   l_object_version_number
141 );
142 --
143 hr_utility.set_location('Leaving '||l_proc,45);
144 
145 EXCEPTION
146 WHEN others THEN
147   -- Reset IN OUT parameters and set OUT parameters
148    p_object_version_number := l_object_version_number;
149    raise;
150 
151 end post_sf52_process;
152 
153 --
154 -- ----------------------------------------------------------------------------
155 -- |--------------------------< Post_sf52_cancel>--------------------------|
156 -- ----------------------------------------------------------------------------
157 
158 Procedure post_sf52_cancel
159 (
160  p_pa_request_id                  in     number,
161  p_effective_date                 in     date,
162  p_object_version_number          in out NOCOPY number,
163  p_from_position_id               in     number    default null,
164  p_to_position_id                 in     number    default null,
165  p_agency_code                    in     varchar2  default null  -- to_agency_code
166  )
167 is
168 
169  l_proc                            varchar2(72):= 'Post_sf52_cancel';
170  l_agency_code                     ghr_pa_requests.agency_code%type;
171  l_from_agency_code                ghr_pa_requests.from_agency_code%type;
172  l_from_agency_desc                ghr_pa_requests.from_agency_desc%type;
173  l_from_symbol                     ghr_pa_requests.from_office_symbol%type;
174  l_personnel_office_id             ghr_pa_requests.personnel_office_id%type;
175  l_employee_dept_or_agency         ghr_pa_requests.employee_dept_or_agency%type;
176  l_to_office_symbol                ghr_pa_requests.to_office_symbol%type;
177  l_pa_notification_id              ghr_pa_requests.pa_notification_id%type;
178  l_object_version_number           ghr_pa_requests.object_version_number%type;
179  l_assignment_id                   ghr_pa_requests.employee_assignment_id%type;
180  l_person_id                       ghr_pa_requests.person_id%type;
181  l_exists                          boolean;
182 
183   Cursor C_Sel1 is
184    select ghr_pa_notifications_s.nextval from sys.dual;
185 
186  Cursor C_person is
187     select par.person_id,
188            par.employee_assignment_id
189     from   ghr_pa_requests par
190     where  par.pa_request_id = p_pa_request_id;
191 
192 
193 Cursor C_asg_posn is
194    select  asg1.assignment_id
195    from    per_all_assignments_f asg1,
196            per_all_assignments_f asg
197    where   asg.person_id   = l_person_id
198    and     asg1.person_id <> l_person_id
199    and     p_effective_date
200    between asg.effective_start_date  and asg.effective_end_date
201    and     asg.assignment_type NOT IN ('A','B')
202    and     asg1.assignment_type NOT IN ('A','B')
203    and     asg1.position_id   = asg.position_id
204    and     asg1.effective_start_date
205    between asg.effective_start_date and asg.effective_end_date;
206 
207 -- Get all data pertaining to Notifications
208 
209 begin
210  hr_utility.set_location('Entering  ' || l_proc ,5);
211  l_object_version_number := p_object_version_number;
212 
213  hr_utility.set_location(l_proc ,10);
214   --Check if the position is not already occupied
215   for per_asg_rec in c_person loop
216     l_person_id     := per_asg_rec.person_id;
217     l_assignment_id := per_asg_rec.employee_assignment_id;
218   end loop;
219   If l_assignment_id is not null then
220    l_exists := false;
221    for asg_posn_rec in c_asg_posn loop
222      l_exists := true;
223      exit;
224    end loop;
225    If l_exists  then
226      hr_utility.set_message(8301,'GHR_38620_POS_ASSIGNED');
227      hr_utility.raise_error;
228    End if;
229   End if;
230 
231 
232 -- Update ghr_pa_requests with Notification Details
233 
234     open C_Sel1;
235     Fetch C_Sel1 Into l_pa_notification_id;
236     Close C_Sel1;
237  ghr_par_upd.upd
238  (p_pa_request_id          	     =>  p_pa_request_id,
239   p_object_version_number  	     =>  l_object_version_number,
240   p_pa_notification_id             =>  l_pa_notification_id
241   );
242    hr_utility.set_location(l_proc ,20);
243 
244 
245 --
246 -- Update status of ghr_pa_requests (in pa_routing_history - Action Taken is set to 'CANCELED'
247 --
248 hr_utility.set_location(l_proc,40);
249 
250 ghr_sf52_api.end_sf52
251 (p_pa_request_id			=>   p_pa_request_id
252 ,p_action_taken			=>   'UPDATE_HR_COMPLETE'
253 ,p_par_object_version_number	=>   l_object_version_number
254 );
255 --
256 hr_utility.set_location('Leaving '||l_proc,45);
257 
258 EXCEPTION
259 WHEN others THEN
260   -- Reset IN OUT parameters and set OUT parameters
261    p_object_version_number := l_object_version_number;
262    raise;
263 
264 
265 end post_sf52_cancel;
266 
267 
268 --
269 -- ----------------------------------------------------------------------------
270 -- |--------------------------< post_sf52_future >--------------------------|
271 -- ----------------------------------------------------------------------------
272 -- With the new enhancement to support elec. authentication, the approval date and
273 -- the approver's work title will already be available in the ghr_pa_requests table
274 -- and hence nothing needs to be done in this procedure.
275 --But leaving it as it is, so that , if later we identify any special routines to be
276 -- performed as a part of FUTURE actions, can be included here.
277 
278 Procedure Post_sf52_future
279 (
280  p_pa_request_id                  in     number,
281  p_effective_date                 in     date,
282  p_object_version_number          in out NOCOPY number
283 )
284 is
285 
286  l_proc                            varchar2(72):= 'Post_sf52_future';
287 
288 begin
289 
290   null;
291 
292  End post_sf52_future;
293 
294 
295 --
296 -- ----------------------------------------------------------------------------
297 -- |--------------------------< get_Notification_Details>--------------------------|
298 -- ----------------------------------------------------------------------------
299 
300 Procedure get_notification_details
301 (
302  p_pa_request_id                  in     number,
303  p_effective_date                 in     date,
304  p_from_position_id               in     number    default null,
305  p_to_position_id                 in     number    default null,
306  p_agency_code                    in out NOCOPY varchar2, -- to_agency_code
307  p_from_agency_code               out NOCOPY varchar2,
308  p_from_agency_desc               out NOCOPY varchar2,
309  p_from_office_symbol             out NOCOPY varchar2,
310  p_personnel_office_id            out NOCOPY number,
311  p_employee_dept_or_agency        out NOCOPY varchar2,
312  p_to_office_symbol               out NOCOPY varchar2
313  )
314 is
315 
316  l_proc                   varchar2(72):= 'get_other_data';
317  l_bus_gp                 per_people_f.business_group_id%type;
318  l_from_agency_code       ghr_pa_requests.from_agency_code%type;
319  l_agency_code            ghr_pa_requests.agency_code%type;
320  l_appr_person_id         per_people_f.person_id%type;
321  l_personnel_office_id    ghr_pa_requests.personnel_office_id%type;
322  l_altered_pa_request_id  ghr_pa_requests.pa_request_id%type;
323  l_noa_code			  ghr_pa_requests.first_noa_code%type;
324  l_pos_ei_data            per_position_extra_info%rowtype;
325  -- Bug#4005843
326  l_effective_date         date;
327 
328 
329 cursor     c_bus_gp(p_position_id number) is
330   select pos.business_group_id
331   from   hr_all_positions_f pos  -- Venkat
332   where  pos.position_id = p_position_id
333   and   p_effective_date between pos.effective_start_date and
334                   pos.effective_end_date;
335 
336  cursor c_orig_par is
337    select  par.noa_family_code,
338            par.altered_pa_request_id,
339 	   par.second_noa_code                        --  Bug 3451929
340    from    ghr_pa_requests par
341    where   par.pa_request_id = p_pa_request_id;
342 
343 cursor c_par is
344    select  	par.noa_family_code,
345 		par.first_noa_code,
346 		par.second_noa_code
347    from 	ghr_pa_requests par
348    where	par.pa_request_id = p_pa_request_id;
349 
350 cursor c_par_ei(p_information_type varchar2)  is
351    select	parei.rei_information4,
352                 parei.rei_information5,                 -- Bug 3547836
353 		parei.rei_information6,                 -- Bug 3547836
354 		parei.rei_information10
355    from	ghr_pa_request_extra_info parei
356    where	parei.pa_request_id = p_pa_request_id
357 	and	parei.information_type = p_information_type;
358 
359  cursor  c_agency_det is
360    select par.from_agency_code,
361           par.from_agency_desc,
362           par.agency_code,
363           par.employee_dept_or_agency,
364           par.from_office_symbol,
365           par.to_office_symbol,
366           par.personnel_office_id
367    from   ghr_pa_requests par
368    where  par.pa_request_id = l_altered_pa_request_id;
369 
370 BEGIN
371     hr_utility.set_location('Entering:'||l_proc, 5);
372     --
373     --
374     l_agency_code := p_agency_code;  --NOCOPY Changes
375     hr_utility.set_location(l_proc, 10);
376     -- get the noa code to determine if it is an '800' or '790'.
377     -- If it is, then we need to handle the agency_code as a special case
378     -- and get it from extra information for the pa_request.
379     FOR pa_req in c_par LOOP
380         if (pa_req.noa_family_code = 'CORRECT') then
381             l_noa_code := pa_req.second_noa_code;
382         else
383             l_noa_code := pa_req.first_noa_code;
384         end if;
385     end loop;
386     hr_utility.set_location('PA Req ID : '||p_pa_request_id,10);
387     hr_utility.set_location('l_noa_code is '||l_noa_code,20);
388     -- Agency Desc
389     if nvl(p_to_position_id,hr_api.g_number) <> hr_api.g_number then
390         for bus_gp in c_bus_gp(p_to_position_id) loop
391             l_bus_gp := bus_gp.business_group_id;
392         end loop;
393         hr_utility.set_location(l_proc, 15);
394 
395         if (l_noa_code = '800') then
396             for p_parei in c_par_ei('GHR_US_PAR_CHG_DATA_ELEMENT') LOOP
397                 l_agency_code := p_parei.rei_information4;
398             end LOOP;
399         elsif (l_noa_code = '790') then
400             for p_parei in c_par_ei('GHR_US_PAR_REALIGNMENT') LOOP
401                 l_agency_code := p_parei.rei_information10;
402             end LOOP;
403             -- Bug 3451929
404             IF l_agency_code is NULL then
405                 l_agency_code  :=  ghr_api.get_position_agency_code_pos
406                                     (p_position_id        => p_to_position_id,
407                                      p_business_group_id  => l_bus_gp,
408                                      p_effective_date     => p_effective_date
409                                     );
410             END IF;
411             -- End of bug 3451929
412         else
413             l_agency_code  :=  ghr_api.get_position_agency_code_pos
414                               (p_position_id        => p_to_position_id,
415                                p_business_group_id  => l_bus_gp,
416                                p_effective_date     => p_effective_date
417                                );
418         end if;
419         p_agency_code := l_agency_code;
420         hr_utility.set_location('agency code ' || l_agency_code,1);
421         hr_utility.set_location(l_proc,20);
422 
423      -- Employee_dept_or_agency
424      if p_agency_code is not null then
425        p_employee_dept_or_agency := hr_general.decode_lookup
426                                     (p_lookup_type       => 'GHR_US_AGENCY_CODE',
427                                      p_lookup_code       => p_agency_code
428                                     );
429         hr_utility.set_location(l_proc, 30);
430      end if;
431 
432 
433      -- Personal_office_id and office_symbol
434 
435      l_personnel_office_id  := Null;
436         ghr_history_fetch.fetch_positionei
437         (p_position_id    =>   p_to_position_id,
438          p_information_type => 'GHR_US_POS_GRP1',
439          p_date_effective   =>  nvl(p_effective_date,trunc(sysdate)),
440          p_pos_ei_data       =>  l_pos_ei_data
441         );
442         l_personnel_office_id  :=  l_pos_ei_data.poei_information3;
443         p_to_office_symbol     :=  l_pos_ei_data.poei_information4;
444      l_pos_ei_data := Null;
445 
446    End if;
447 
448    -- personnel_office_id and from_office_symbol
449    if nvl(p_from_position_id,hr_api.g_number) <> hr_api.g_number then
450        -- Bug#4005843 Added the IF condition.
451         IF l_noa_code = '790' THEN
452 	   hr_utility.set_location('NOA Code is 790',20);
453 	     -- Bug#4344353 added the following code to get rid of ora-1841
454 	     IF p_effective_date = hr_api.g_date THEN
455 	        l_effective_date := trunc(sysdate) - 1;
456 	     ELSE
457 	        l_effective_date := p_effective_date - 1;
458 	     END IF;
459 	ELSE
460 	    l_effective_date := nvl(p_effective_date,trunc(sysdate));
461 	END IF;
462         ghr_history_fetch.fetch_positionei
463         (p_position_id      =>  p_from_position_id,
464          p_information_type =>  'GHR_US_POS_GRP1',
465          p_date_effective   =>  l_effective_date,
466          p_pos_ei_data      =>  l_pos_ei_data
467         );
468 	-- Bug#4005843
469         IF l_personnel_office_id IS NULL THEN
470           l_personnel_office_id  :=  l_pos_ei_data.poei_information3;
471         END IF;
472         p_from_office_symbol     :=  l_pos_ei_data.poei_information4;
473 
474      for bus_gp in c_bus_gp(p_from_position_id) loop
475        l_bus_gp := bus_gp.business_group_id;
476      end loop;
477      l_from_agency_code  :=  ghr_api.get_position_agency_code_pos
478                         (p_position_id        => p_from_position_id,
479                          p_business_group_id  => l_bus_gp,
480                          p_effective_date     => p_effective_date
481                         );
482 
483      p_from_agency_code := l_from_agency_code;
484           hr_utility.set_location(l_proc,50);
485 
486      if l_from_agency_code is not null then
487        p_from_agency_desc := hr_general.decode_lookup
488                              (p_lookup_type       => 'GHR_US_AGENCY_CODE',
489                               p_lookup_code       => l_from_agency_code
490                              );
491             hr_utility.set_location(l_proc, 55);
492      end if;
493    end if;
494       p_personnel_office_id      :=  l_personnel_office_id;
495 
496    -- If agency_code or the from_agency_code is null, which is likely to happen
497    -- only on corrections , try to get the agency code
498    -- from the original RPA.
499    If p_to_position_id is null  or p_from_position_id is null then
500      hr_utility.set_location('one of the positions is null',1);
501      for orig_par in  c_orig_par loop
502        If orig_par.noa_family_code = 'CORRECT' then
503          l_altered_pa_request_id   :=  orig_par.altered_pa_request_id;
504          for agency_det_rec in c_agency_det loop
505            If p_to_position_id is null then
506 	     -- Bug 3451929  If second noa code is 790 then agency should be taken from extra information
507 	      IF orig_par.second_noa_code = '790' THEN
508 	        FOR p_parei in c_par_ei('GHR_US_PAR_REALIGNMENT') LOOP
509 			p_agency_code := p_parei.rei_information10;
510 			p_personnel_office_id   :=  p_parei.rei_information5;           -- Bug 3547836
511 			p_to_office_symbol      :=  p_parei.rei_information6;           -- Bug 3547836
512 		END LOOP;
513 	-- Start of Bug 3547836
514 		IF p_agency_code IS NOT NULL THEN
515 		   p_employee_dept_or_agency := hr_general.decode_lookup
516                                     (p_lookup_type       => 'GHR_US_AGENCY_CODE',
517                                      p_lookup_code       => p_agency_code
518                                    );
519                 ELSE
520                    p_agency_code              :=  agency_det_rec.agency_code;
521          	   p_employee_dept_or_agency  :=  agency_det_rec.employee_dept_or_agency;
522                 END IF;
523 
524 	        IF  p_personnel_office_id IS NULL then
525                     p_personnel_office_id     :=  agency_det_rec.personnel_office_id;
526                 END IF;
527 
528                 IF  p_to_office_symbol IS NULL then
529 		    p_to_office_symbol        :=  agency_det_rec.to_office_symbol;
530                 END IF;
531         -- End of Bug 3547836
532 
533 	    ELSE
534 	        p_agency_code              :=  agency_det_rec.agency_code;
535                 p_employee_dept_or_agency  :=  agency_det_rec.employee_dept_or_agency;
536                 p_to_office_symbol         :=  agency_det_rec.to_office_symbol;
537 		--Bug#6356071 Personnel Office id assigned with the altered Pa requests
538 		    -- personnel office id only if it is NULL
539                 IF  p_personnel_office_id IS NULL then
540                     p_personnel_office_id  :=  agency_det_rec.personnel_office_id;
541                 END IF;
542 		--Bug#6356071
543             End if;
544            End if;
545            If p_from_position_id is null then
546              p_from_agency_code      :=  agency_det_rec.from_agency_code;
547              p_from_agency_desc      :=  agency_det_rec.from_agency_desc;
548              p_from_office_symbol    :=  agency_det_rec.from_office_symbol;
549            End if;
550          End Loop;
551        End if;
552      End loop;
553    End if;
554 
555 EXCEPTION
556 WHEN others THEN
557 
558     -- Reset IN OUT parameters and set OUT parameters
559  p_from_agency_code            :=NULL;
560  p_from_agency_desc            :=NULL;
561  p_from_office_symbol          :=NULL;
562  p_personnel_office_id         :=NULL;
563  p_employee_dept_or_agency     :=NULL;
564  p_to_office_symbol            :=NULL;
565  p_agency_code                 :=l_agency_code;
566  raise;
567 
568   end get_notification_details;
569 end ghr_sf52_post_update;
570