[Home] [Help]
PACKAGE BODY: APPS.PER_PYP_UPD
Source
1 Package Body per_pyp_upd as
2 /* $Header: pepyprhi.pkb 120.17.12010000.3 2008/09/23 08:15:15 schowdhu ship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- | Private Global Definitions |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package varchar2(33) := ' per_pyp_upd.'; -- Global package name
9 --
10 -- ----------------------------------------------------------------------------
11 -- |------------------------------< update_dml >------------------------------|
12 -- ----------------------------------------------------------------------------
13 -- {Start Of Comments}
14 --
15 -- Description:
16 -- This procedure controls the actual dml update logic. The processing of
17 -- this procedure is:
18 -- 1) Increment the object_version_number by 1 if the object_version_number
19 -- is defined as an attribute for this entity.
20 -- 2) To set and unset the g_api_dml status as required (as we are about to
21 -- perform dml).
22 -- 3) To update the specified row in the schema using the primary key in
23 -- the predicates.
24 -- 4) To trap any constraint violations that may have occurred.
25 -- 5) To raise any other errors.
26 --
27 -- Pre Conditions:
28 -- This is an internal private procedure which must be called from the upd
29 -- procedure.
30 --
31 -- In Parameters:
32 -- A Pl/Sql record structre.
33 --
34 -- Post Success:
35 -- The specified row will be updated in the schema.
36 --
37 -- Post Failure:
38 -- On the update dml failure it is important to note that we always reset the
39 -- g_api_dml status to false.
40 -- If a check, unique or parent integrity constraint violation is raised the
41 -- constraint_error procedure will be called.
42 -- If any other error is reported, the error will be raised after the
43 -- g_api_dml status is reset.
44 --
45 -- Developer Implementation Notes:
46 -- The update 'set' attribute list should be modified if any of your
47 -- attributes are not updateable.
48 --
49 -- Access Status:
50 -- Internal Table Handler Use Only.
51 --
52 -- {End Of Comments}
53 -- ----------------------------------------------------------------------------
54 Procedure update_dml(p_rec in out nocopy per_pyp_shd.g_rec_type) is
55 --
56 l_proc varchar2(72) := g_package||'update_dml';
57 --
58 Begin
59 hr_utility.set_location('Entering:'||l_proc, 5);
60 --
61 -- Increment the object version
62 --
63 p_rec.object_version_number := p_rec.object_version_number + 1;
64 --
65 per_pyp_shd.g_api_dml := true; -- Set the api dml status
66 --
67 -- Update the per_pay_proposals Row
68 --
69 update per_pay_proposals
70 set
71 pay_proposal_id = p_rec.pay_proposal_id,
72 event_id = null,
73 change_date = p_rec.change_date,
74 comments = p_rec.comments,
75 next_perf_review_date = null,
76 next_sal_review_date = p_rec.next_sal_review_date,
77 performance_rating = null,
78 proposal_reason = p_rec.proposal_reason,
79 proposed_salary_n = p_rec.proposed_salary_n,
80 review_date = null,
81 forced_ranking = p_rec.forced_ranking,
82 date_to = p_rec.date_to,
83 performance_review_id = p_rec.performance_review_id,
84 attribute_category = p_rec.attribute_category,
85 attribute1 = p_rec.attribute1,
86 attribute2 = p_rec.attribute2,
87 attribute3 = p_rec.attribute3,
88 attribute4 = p_rec.attribute4,
89 attribute5 = p_rec.attribute5,
90 attribute6 = p_rec.attribute6,
91 attribute7 = p_rec.attribute7,
92 attribute8 = p_rec.attribute8,
93 attribute9 = p_rec.attribute9,
94 attribute10 = p_rec.attribute10,
95 attribute11 = p_rec.attribute11,
96 attribute12 = p_rec.attribute12,
97 attribute13 = p_rec.attribute13,
98 attribute14 = p_rec.attribute14,
99 attribute15 = p_rec.attribute15,
100 attribute16 = p_rec.attribute16,
101 attribute17 = p_rec.attribute17,
102 attribute18 = p_rec.attribute18,
103 attribute19 = p_rec.attribute19,
104 attribute20 = p_rec.attribute20,
105 object_version_number = p_rec.object_version_number,
106 multiple_components = p_rec.multiple_components,
107 approved = p_rec.approved
108 where pay_proposal_id = p_rec.pay_proposal_id;
109 --
110 per_pyp_shd.g_api_dml := false; -- Unset the api dml status
111 --
112 hr_utility.set_location(' Leaving:'||l_proc, 10);
113 --
114 Exception
115 When hr_api.check_integrity_violated Then
116 -- A check constraint has been violated
117 per_pyp_shd.g_api_dml := false; -- Unset the api dml status
118 per_pyp_shd.constraint_error
119 (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
120 When hr_api.parent_integrity_violated Then
121 -- Parent integrity has been violated
122 per_pyp_shd.g_api_dml := false; -- Unset the api dml status
123 per_pyp_shd.constraint_error
124 (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
125 When hr_api.unique_integrity_violated Then
126 -- Unique integrity has been violated
127 per_pyp_shd.g_api_dml := false; -- Unset the api dml status
128 per_pyp_shd.constraint_error
129 (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
130 When Others Then
131 per_pyp_shd.g_api_dml := false; -- Unset the api dml status
132 Raise;
133 End update_dml;
134 --
135 -- ----------------------------------------------------------------------------
136 -- |------------------------------< pre_update >------------------------------|
137 -- ----------------------------------------------------------------------------
138 -- {Start Of Comments}
139 --
140 -- Description:
141 -- This private procedure contains any processing which is required before
142 -- the update dml.
143 --
144 -- Pre Conditions:
145 -- This is an internal procedure which is called from the upd procedure.
146 --
147 -- In Parameters:
148 -- A Pl/Sql record structre.
149 --
150 -- Post Success:
151 -- Processing continues.
152 --
153 -- Post Failure:
154 -- If an error has occurred, an error message and exception will be raised
155 -- but not handled.
156 --
157 -- Developer Implementation Notes:
158 -- Any pre-processing required before the update dml is issued should be
159 -- coded within this procedure. It is important to note that any 3rd party
160 -- maintenance should be reviewed before placing in this procedure.
161 --
162 -- Access Status:
163 -- Internal Table Handler Use Only.
164 --
165 -- {End Of Comments}
166 -- ----------------------------------------------------------------------------
167 Procedure pre_update(p_rec in per_pyp_shd.g_rec_type) is
168 --
169 l_proc varchar2(72) := g_package||'pre_update';
170 --
171 Begin
172 hr_utility.set_location('Entering:'||l_proc, 5);
173 --
174 hr_utility.set_location(' Leaving:'||l_proc, 10);
175 End pre_update;
176 --
177 -- ----------------------------------------------------------------------------
178 -- |-----------------------------< post_update >------------------------------|
179 -- ----------------------------------------------------------------------------
180 -- {Start Of Comments}
181 --
182 -- Description:
183 -- This private procedure contains any processing which is required after the
184 -- update dml.
185 --
186 -- Pre Conditions:
187 -- This is an internal procedure which is called from the upd procedure.
188 --
189 -- In Parameters:
190 -- A Pl/Sql record structre.
191 --
192 -- Post Success:
193 -- Processing continues.
194 --
195 -- Post Failure:
196 -- If an error has occurred, an error message and exception will be raised
197 -- but not handled.
198 --
199 -- Developer Implementation Notes:
200 -- Any post-processing required after the update dml is issued should be
201 -- coded within this procedure. It is important to note that any 3rd party
202 -- maintenance should be reviewed before placing in this procedure.
203 --
204 -- Access Status:
205 -- Internal Table Handler Use Only.
206 --
207 -- {End Of Comments}
208 -- ----------------------------------------------------------------------------
209 Procedure post_update
210 (p_rec in per_pyp_shd.g_rec_type
211 ,p_inv_next_sal_date_warning in boolean
212 ,p_proposed_salary_warning in boolean
213 ,p_approved_warning in boolean
214 ,p_payroll_warning in boolean
215 ) is
216 --
217 l_proc varchar2(72) := g_package||'post_update';
218 l_old_rec ben_pro_ler.g_pro_ler_rec ;
219 l_new_rec ben_pro_ler.g_pro_ler_rec ;
220 --
221 -- extract change events
222 l_ext_old_rec ben_ext_chlg.g_per_pay_rec_type;
223 l_ext_new_rec ben_ext_chlg.g_per_pay_rec_type;
224 l_event varchar2(20) ;
225 --vkodedal 6785012 EXTRACT BUG -old salary needs to be retrieved when proposal is approved
226 l_old_salary number;
227 --
228
229 Begin
230 hr_utility.set_location('Entering:'||l_proc, 5);
231 --
232 -- Call to user hook for post_update.
233 --
234 --
235 -- OAB Bug 1863413 : Detect potential life events when salary
236 -- information changes
237 --
238 l_old_rec.BUSINESS_GROUP_ID := per_pyp_shd.g_old_rec.BUSINESS_GROUP_ID;
239 l_old_rec.PAY_PROPOSAL_ID := per_pyp_shd.g_old_rec.PAY_PROPOSAL_ID;
240 l_old_rec.ASSIGNMENT_ID := per_pyp_shd.g_old_rec.ASSIGNMENT_ID;
241 l_old_rec.EVENT_ID := null; -- 9999 per_pyp_shd.g_old_rec.EVENT_ID;
242 l_old_rec.CHANGE_DATE := per_pyp_shd.g_old_rec.CHANGE_DATE;
243 l_old_rec.LAST_CHANGE_DATE := per_pyp_shd.g_old_rec.LAST_CHANGE_DATE;
244 l_old_rec.NEXT_PERF_REVIEW_DATE := null; -- 9999 per_pyp_shd.g_old_rec.NEXT_PERF_REVIEW_DATE;
245 l_old_rec.NEXT_SAL_REVIEW_DATE := per_pyp_shd.g_old_rec.NEXT_SAL_REVIEW_DATE;
246 l_old_rec.PERFORMANCE_RATING := null; -- 9999 per_pyp_shd.g_old_rec.PERFORMANCE_RATING;
247 l_old_rec.PROPOSAL_REASON := per_pyp_shd.g_old_rec.PROPOSAL_REASON;
248 l_old_rec.PROPOSED_SALARY_N := per_pyp_shd.g_old_rec.PROPOSED_SALARY_N;
249 l_old_rec.REVIEW_DATE := null; -- 9999 per_pyp_shd.g_old_rec.REVIEW_DATE;
250 l_old_rec.APPROVED := per_pyp_shd.g_old_rec.APPROVED;
251 l_old_rec.MULTIPLE_COMPONENTS := per_pyp_shd.g_old_rec.MULTIPLE_COMPONENTS;
252 l_old_rec.FORCED_RANKING := per_pyp_shd.g_old_rec.FORCED_RANKING;
253 l_old_rec.DATE_TO := per_pyp_shd.g_old_rec.DATE_TO;
254 l_old_rec.PERFORMANCE_REVIEW_ID := per_pyp_shd.g_old_rec.PERFORMANCE_REVIEW_ID;
255 l_old_rec.ATTRIBUTE1 := per_pyp_shd.g_old_rec.ATTRIBUTE1;
256 l_old_rec.ATTRIBUTE2 := per_pyp_shd.g_old_rec.ATTRIBUTE2;
257 l_old_rec.ATTRIBUTE3 := per_pyp_shd.g_old_rec.ATTRIBUTE3;
258 l_old_rec.ATTRIBUTE4 := per_pyp_shd.g_old_rec.ATTRIBUTE4;
259 l_old_rec.ATTRIBUTE5 := per_pyp_shd.g_old_rec.ATTRIBUTE5;
260 l_old_rec.ATTRIBUTE6 := per_pyp_shd.g_old_rec.ATTRIBUTE6;
261 l_old_rec.ATTRIBUTE7 := per_pyp_shd.g_old_rec.ATTRIBUTE7;
262 l_old_rec.ATTRIBUTE8 := per_pyp_shd.g_old_rec.ATTRIBUTE8;
263 l_old_rec.ATTRIBUTE9 := per_pyp_shd.g_old_rec.ATTRIBUTE9;
264 l_old_rec.ATTRIBUTE10 := per_pyp_shd.g_old_rec.ATTRIBUTE10;
265 l_old_rec.ATTRIBUTE11 := per_pyp_shd.g_old_rec.ATTRIBUTE11;
266 l_old_rec.ATTRIBUTE12 := per_pyp_shd.g_old_rec.ATTRIBUTE12;
267 l_old_rec.ATTRIBUTE13 := per_pyp_shd.g_old_rec.ATTRIBUTE13;
268 l_old_rec.ATTRIBUTE14 := per_pyp_shd.g_old_rec.ATTRIBUTE14;
269 l_old_rec.ATTRIBUTE15 := per_pyp_shd.g_old_rec.ATTRIBUTE15;
270 l_old_rec.ATTRIBUTE16 := per_pyp_shd.g_old_rec.ATTRIBUTE16;
271 l_old_rec.ATTRIBUTE17 := per_pyp_shd.g_old_rec.ATTRIBUTE17;
272 l_old_rec.ATTRIBUTE18 := per_pyp_shd.g_old_rec.ATTRIBUTE18;
273 l_old_rec.ATTRIBUTE19 := per_pyp_shd.g_old_rec.ATTRIBUTE19;
274 l_old_rec.ATTRIBUTE20 := per_pyp_shd.g_old_rec.ATTRIBUTE20;
275 l_old_rec.PROPOSED_SALARY := null; -- 9999 ben_pro_shd.g_old_rec.PROPOSED_SALARY;
276 --
277 l_new_rec.BUSINESS_GROUP_ID := p_rec.BUSINESS_GROUP_ID;
278 l_new_rec.PAY_PROPOSAL_ID := p_rec.PAY_PROPOSAL_ID;
279 l_new_rec.ASSIGNMENT_ID := p_rec.ASSIGNMENT_ID;
280 l_new_rec.EVENT_ID := null; -- 9999 p_rec.EVENT_ID;
281 l_new_rec.CHANGE_DATE := p_rec.CHANGE_DATE;
282 l_new_rec.LAST_CHANGE_DATE := p_rec.LAST_CHANGE_DATE;
283 l_new_rec.NEXT_PERF_REVIEW_DATE := null; -- 9999 p_rec.NEXT_PERF_REVIEW_DATE;
284 l_new_rec.NEXT_SAL_REVIEW_DATE := p_rec.NEXT_SAL_REVIEW_DATE;
285 l_new_rec.PERFORMANCE_RATING := null; -- 9999 p_rec.PERFORMANCE_RATING;
286 l_new_rec.PROPOSAL_REASON := p_rec.PROPOSAL_REASON;
287 l_new_rec.PROPOSED_SALARY_N := p_rec.PROPOSED_SALARY_N;
288 l_new_rec.REVIEW_DATE := null; -- 9999 p_rec.REVIEW_DATE;
289 l_new_rec.APPROVED := p_rec.APPROVED;
290 l_new_rec.MULTIPLE_COMPONENTS := p_rec.MULTIPLE_COMPONENTS;
291 l_new_rec.FORCED_RANKING := p_rec.FORCED_RANKING;
292 l_new_rec.DATE_TO := p_rec.DATE_TO;
293 l_new_rec.PERFORMANCE_REVIEW_ID := p_rec.PERFORMANCE_REVIEW_ID;
294 l_new_rec.ATTRIBUTE1 := p_rec.ATTRIBUTE1;
295 l_new_rec.ATTRIBUTE2 := p_rec.ATTRIBUTE2;
296 l_new_rec.ATTRIBUTE3 := p_rec.ATTRIBUTE3;
297 l_new_rec.ATTRIBUTE4 := p_rec.ATTRIBUTE4;
298 l_new_rec.ATTRIBUTE5 := p_rec.ATTRIBUTE5;
299 l_new_rec.ATTRIBUTE6 := p_rec.ATTRIBUTE6;
300 l_new_rec.ATTRIBUTE7 := p_rec.ATTRIBUTE7;
301 l_new_rec.ATTRIBUTE8 := p_rec.ATTRIBUTE8;
302 l_new_rec.ATTRIBUTE9 := p_rec.ATTRIBUTE9;
303 l_new_rec.ATTRIBUTE10 := p_rec.ATTRIBUTE10;
304 l_new_rec.ATTRIBUTE11 := p_rec.ATTRIBUTE11;
305 l_new_rec.ATTRIBUTE12 := p_rec.ATTRIBUTE12;
306 l_new_rec.ATTRIBUTE13 := p_rec.ATTRIBUTE13;
307 l_new_rec.ATTRIBUTE14 := p_rec.ATTRIBUTE14;
308 l_new_rec.ATTRIBUTE15 := p_rec.ATTRIBUTE15;
309 l_new_rec.ATTRIBUTE16 := p_rec.ATTRIBUTE16;
310 l_new_rec.ATTRIBUTE17 := p_rec.ATTRIBUTE17;
311 l_new_rec.ATTRIBUTE18 := p_rec.ATTRIBUTE18;
312 l_new_rec.ATTRIBUTE19 := p_rec.ATTRIBUTE19;
313 l_new_rec.ATTRIBUTE20 := p_rec.ATTRIBUTE20;
314 l_new_rec.PROPOSED_SALARY := null; -- 9999 p_rec.PROPOSED_SALARY;
315 --
316 -- extract change events
317 l_ext_old_rec.BUSINESS_GROUP_ID := per_pyp_shd.g_old_rec.BUSINESS_GROUP_ID;
318 l_ext_old_rec.PAY_PROPOSAL_ID := per_pyp_shd.g_old_rec.PAY_PROPOSAL_ID;
319 l_ext_old_rec.ASSIGNMENT_ID := per_pyp_shd.g_old_rec.ASSIGNMENT_ID;
320 --l_ext_old_rec.EVENT_ID := per_pyp_shd.g_old_rec.EVENT_ID;
321 l_ext_old_rec.CHANGE_DATE := per_pyp_shd.g_old_rec.CHANGE_DATE;
322 l_ext_old_rec.LAST_CHANGE_DATE := per_pyp_shd.g_old_rec.LAST_CHANGE_DATE;
323 --l_ext_old_rec.NEXT_PERF_REVIEW_DATE := per_pyp_shd.g_old_rec.NEXT_PERF_REVIEW_DATE;
324 l_ext_old_rec.NEXT_SAL_REVIEW_DATE := per_pyp_shd.g_old_rec.NEXT_SAL_REVIEW_DATE;
325 --l_ext_old_rec.PERFORMANCE_RATING := per_pyp_shd.g_old_rec.PERFORMANCE_RATING;
326 l_ext_old_rec.PROPOSAL_REASON := per_pyp_shd.g_old_rec.PROPOSAL_REASON;
327
328 --vkodedal 6785012 EXTRACT BUG -old salary needs to be retrieved when proposal is approved
329 if(l_old_rec.proposed_salary_n = p_rec.proposed_salary_n and
330 l_old_rec.approved = 'N' and p_rec.approved = 'Y' and
331 l_old_rec.change_date = p_rec.change_date)
332 then
333 begin
334 select proposed_salary_n into l_old_salary from per_pay_proposals
335 where assignment_id = p_rec.ASSIGNMENT_ID and
336 change_date = (select max(change_date) from per_pay_proposals where
337 change_date < p_rec.change_date and assignment_id = p_rec.ASSIGNMENT_ID );
338 l_ext_old_rec.PROPOSED_SALARY_N := l_old_salary;
339 exception
340 when no_data_found
341 then
342 l_ext_old_rec.PROPOSED_SALARY_N :=null;
343 end;
344 else
345 l_ext_old_rec.PROPOSED_SALARY_N := per_pyp_shd.g_old_rec.PROPOSED_SALARY_N;
346 end if;
347
348 --l_ext_old_rec.REVIEW_DATE := per_pyp_shd.g_old_rec.REVIEW_DATE;
349 l_ext_old_rec.APPROVED := per_pyp_shd.g_old_rec.APPROVED;
350 l_ext_old_rec.MULTIPLE_COMPONENTS := per_pyp_shd.g_old_rec.MULTIPLE_COMPONENTS;
351 l_ext_old_rec.FORCED_RANKING := per_pyp_shd.g_old_rec.FORCED_RANKING;
352 l_ext_old_rec.DATE_TO := per_pyp_shd.g_old_rec.DATE_TO;
353 l_ext_old_rec.PERFORMANCE_REVIEW_ID := per_pyp_shd.g_old_rec.PERFORMANCE_REVIEW_ID;
354 l_ext_old_rec.ATTRIBUTE1 := per_pyp_shd.g_old_rec.ATTRIBUTE1;
355 l_ext_old_rec.ATTRIBUTE2 := per_pyp_shd.g_old_rec.ATTRIBUTE2;
356 l_ext_old_rec.ATTRIBUTE3 := per_pyp_shd.g_old_rec.ATTRIBUTE3;
357 l_ext_old_rec.ATTRIBUTE4 := per_pyp_shd.g_old_rec.ATTRIBUTE4;
358 l_ext_old_rec.ATTRIBUTE5 := per_pyp_shd.g_old_rec.ATTRIBUTE5;
359 l_ext_old_rec.ATTRIBUTE6 := per_pyp_shd.g_old_rec.ATTRIBUTE6;
360 l_ext_old_rec.ATTRIBUTE7 := per_pyp_shd.g_old_rec.ATTRIBUTE7;
361 l_ext_old_rec.ATTRIBUTE8 := per_pyp_shd.g_old_rec.ATTRIBUTE8;
362 l_ext_old_rec.ATTRIBUTE9 := per_pyp_shd.g_old_rec.ATTRIBUTE9;
363 l_ext_old_rec.ATTRIBUTE10 := per_pyp_shd.g_old_rec.ATTRIBUTE10;
364 l_ext_old_rec.ATTRIBUTE11 := per_pyp_shd.g_old_rec.ATTRIBUTE11;
365 l_ext_old_rec.ATTRIBUTE12 := per_pyp_shd.g_old_rec.ATTRIBUTE12;
366 l_ext_old_rec.ATTRIBUTE13 := per_pyp_shd.g_old_rec.ATTRIBUTE13;
367 l_ext_old_rec.ATTRIBUTE14 := per_pyp_shd.g_old_rec.ATTRIBUTE14;
368 l_ext_old_rec.ATTRIBUTE15 := per_pyp_shd.g_old_rec.ATTRIBUTE15;
369 l_ext_old_rec.ATTRIBUTE16 := per_pyp_shd.g_old_rec.ATTRIBUTE16;
370 l_ext_old_rec.ATTRIBUTE17 := per_pyp_shd.g_old_rec.ATTRIBUTE17;
371 l_ext_old_rec.ATTRIBUTE18 := per_pyp_shd.g_old_rec.ATTRIBUTE18;
372 l_ext_old_rec.ATTRIBUTE19 := per_pyp_shd.g_old_rec.ATTRIBUTE19;
373 l_ext_old_rec.ATTRIBUTE20 := per_pyp_shd.g_old_rec.ATTRIBUTE20;
374 --l_ext_old_rec.PROPOSED_SALARY := per_pro_shd.g_old_rec.PROPOSED_SALARY;
375
376 l_ext_new_rec.BUSINESS_GROUP_ID := p_rec.BUSINESS_GROUP_ID;
377 l_ext_new_rec.PAY_PROPOSAL_ID := p_rec.PAY_PROPOSAL_ID;
378 l_ext_new_rec.ASSIGNMENT_ID := p_rec.ASSIGNMENT_ID;
379 --l_ext_new_rec.EVENT_ID := p_rec.EVENT_ID;
380 l_ext_new_rec.CHANGE_DATE := p_rec.CHANGE_DATE;
381 l_ext_new_rec.LAST_CHANGE_DATE := p_rec.LAST_CHANGE_DATE;
382 -- l_ext_new_rec.NEXT_PERF_REVIEW_DATE := p_rec.NEXT_PERF_REVIEW_DATE;
383 l_ext_new_rec.NEXT_SAL_REVIEW_DATE := p_rec.NEXT_SAL_REVIEW_DATE;
384 -- l_ext_new_rec.PERFORMANCE_RATING := p_rec.PERFORMANCE_RATING;
385 l_ext_new_rec.PROPOSAL_REASON := p_rec.PROPOSAL_REASON;
386 l_ext_new_rec.PROPOSED_SALARY_N := p_rec.PROPOSED_SALARY_N;
387 --l_ext_new_rec.REVIEW_DATE := p_rec.REVIEW_DATE;
388 l_ext_new_rec.APPROVED := p_rec.APPROVED;
389 l_ext_new_rec.MULTIPLE_COMPONENTS := p_rec.MULTIPLE_COMPONENTS;
390 l_ext_new_rec.FORCED_RANKING := p_rec.FORCED_RANKING;
391 l_ext_new_rec.PERFORMANCE_REVIEW_ID := p_rec.PERFORMANCE_REVIEW_ID;
392 l_ext_new_rec.ATTRIBUTE1 := p_rec.ATTRIBUTE1;
393 l_ext_new_rec.ATTRIBUTE2 := p_rec.ATTRIBUTE2;
394 l_ext_new_rec.ATTRIBUTE3 := p_rec.ATTRIBUTE3;
395 l_ext_new_rec.ATTRIBUTE4 := p_rec.ATTRIBUTE4;
396 l_ext_new_rec.ATTRIBUTE5 := p_rec.ATTRIBUTE5;
397 l_ext_new_rec.ATTRIBUTE6 := p_rec.ATTRIBUTE6;
398 l_ext_new_rec.ATTRIBUTE7 := p_rec.ATTRIBUTE7;
399 l_ext_new_rec.ATTRIBUTE8 := p_rec.ATTRIBUTE8;
400 l_ext_new_rec.ATTRIBUTE9 := p_rec.ATTRIBUTE9;
401 l_ext_new_rec.ATTRIBUTE10 := p_rec.ATTRIBUTE10;
402 l_ext_new_rec.ATTRIBUTE11 := p_rec.ATTRIBUTE11;
403 l_ext_new_rec.ATTRIBUTE12 := p_rec.ATTRIBUTE12;
404 l_ext_new_rec.ATTRIBUTE13 := p_rec.ATTRIBUTE13;
405 l_ext_new_rec.ATTRIBUTE14 := p_rec.ATTRIBUTE14;
406 l_ext_new_rec.ATTRIBUTE15 := p_rec.ATTRIBUTE15;
407 l_ext_new_rec.ATTRIBUTE16 := p_rec.ATTRIBUTE16;
408 l_ext_new_rec.ATTRIBUTE17 := p_rec.ATTRIBUTE17;
409 l_ext_new_rec.ATTRIBUTE18 := p_rec.ATTRIBUTE18;
410 l_ext_new_rec.ATTRIBUTE19 := p_rec.ATTRIBUTE19;
411 l_ext_new_rec.ATTRIBUTE20 := p_rec.ATTRIBUTE20;
412 -- l_ext_new_rec.PROPOSED_SALARY := p_rec.PROPOSED_SALARY;
413 l_ext_new_rec.date_to := p_rec.date_to;
414 l_event := 'UPDATE' ;
415 if l_ext_new_rec.last_change_date = l_ext_old_rec.last_change_date then
416 l_ext_new_rec.update_mode := 'CORRECTION';
417 l_ext_old_rec.update_mode := 'CORRECTION';
418 else
419 l_ext_new_rec.update_mode := 'UPDATE';
420 l_ext_old_rec.update_mode := 'UPDATE';
421 end if;
422
423 begin
424 --
425 per_pyp_rku.after_update
426 (
427 p_pay_proposal_id => p_rec.pay_proposal_id,
428 p_change_date => p_rec.change_date,
429 p_comments => p_rec.comments,
430 p_next_sal_review_date => p_rec.next_sal_review_date,
431 p_proposal_reason => p_rec.proposal_reason,
432 p_proposed_salary_n => p_rec.proposed_salary_n,
433 p_forced_ranking => p_rec.forced_ranking,
434 p_date_to => p_rec.date_to,
435 p_performance_review_id => p_rec.performance_review_id,
436 p_attribute_category => p_rec.attribute_category,
437 p_attribute1 => p_rec.attribute1,
438 p_attribute2 => p_rec.attribute2,
439 p_attribute3 => p_rec.attribute3,
440 p_attribute4 => p_rec.attribute4,
441 p_attribute5 => p_rec.attribute5,
442 p_attribute6 => p_rec.attribute6,
443 p_attribute7 => p_rec.attribute7,
444 p_attribute8 => p_rec.attribute8,
445 p_attribute9 => p_rec.attribute9,
446 p_attribute10 => p_rec.attribute10,
447 p_attribute11 => p_rec.attribute11,
448 p_attribute12 => p_rec.attribute12,
449 p_attribute13 => p_rec.attribute13,
450 p_attribute14 => p_rec.attribute14,
451 p_attribute15 => p_rec.attribute15,
452 p_attribute16 => p_rec.attribute16,
453 p_attribute17 => p_rec.attribute17,
454 p_attribute18 => p_rec.attribute18,
455 p_attribute19 => p_rec.attribute19,
456 p_attribute20 => p_rec.attribute20,
457 p_object_version_number => p_rec.object_version_number,
458 p_multiple_components => p_rec.multiple_components,
459 p_approved => p_rec.approved,
460 p_inv_next_sal_date_warning => p_inv_next_sal_date_warning,
461 p_proposed_salary_warning => p_proposed_salary_warning,
462 p_approved_warning => p_approved_warning,
463 p_payroll_warning => p_payroll_warning,
464 p_assignment_id_o => per_pyp_shd.g_old_rec.assignment_id,
465 p_business_group_id_o => per_pyp_shd.g_old_rec.business_group_id,
466 p_change_date_o => per_pyp_shd.g_old_rec.change_date,
467 p_comments_o => per_pyp_shd.g_old_rec.comments,
468 p_next_sal_review_date_o => per_pyp_shd.g_old_rec.next_sal_review_date,
469 p_proposal_reason_o => per_pyp_shd.g_old_rec.proposal_reason,
470 p_proposed_salary_n_o => per_pyp_shd.g_old_rec.proposed_salary_n,
471 p_forced_ranking_o => per_pyp_shd.g_old_rec.forced_ranking,
472 p_date_to_o => per_pyp_shd.g_old_rec.date_to,
473 p_performance_review_id_o => per_pyp_shd.g_old_rec.performance_review_id,
474 p_attribute_category_o => per_pyp_shd.g_old_rec.attribute_category,
475 p_attribute1_o => per_pyp_shd.g_old_rec.attribute1,
476 p_attribute2_o => per_pyp_shd.g_old_rec.attribute2,
477 p_attribute3_o => per_pyp_shd.g_old_rec.attribute3,
478 p_attribute4_o => per_pyp_shd.g_old_rec.attribute4,
479 p_attribute5_o => per_pyp_shd.g_old_rec.attribute5,
480 p_attribute6_o => per_pyp_shd.g_old_rec.attribute6,
481 p_attribute7_o => per_pyp_shd.g_old_rec.attribute7,
482 p_attribute8_o => per_pyp_shd.g_old_rec.attribute8,
483 p_attribute9_o => per_pyp_shd.g_old_rec.attribute9,
484 p_attribute10_o => per_pyp_shd.g_old_rec.attribute10,
485 p_attribute11_o => per_pyp_shd.g_old_rec.attribute11,
486 p_attribute12_o => per_pyp_shd.g_old_rec.attribute12,
487 p_attribute13_o => per_pyp_shd.g_old_rec.attribute13,
488 p_attribute14_o => per_pyp_shd.g_old_rec.attribute14,
489 p_attribute15_o => per_pyp_shd.g_old_rec.attribute15,
490 p_attribute16_o => per_pyp_shd.g_old_rec.attribute16,
491 p_attribute17_o => per_pyp_shd.g_old_rec.attribute17,
492 p_attribute18_o => per_pyp_shd.g_old_rec.attribute18,
493 p_attribute19_o => per_pyp_shd.g_old_rec.attribute19,
494 p_attribute20_o => per_pyp_shd.g_old_rec.attribute20,
495 p_object_version_number_o => per_pyp_shd.g_old_rec.object_version_number,
496 p_multiple_components_o => per_pyp_shd.g_old_rec.multiple_components,
497 p_approved_o => per_pyp_shd.g_old_rec.approved
498 );
499 --
500 hr_utility.set_location('DM Mode pro ' ||hr_general.g_data_migrator_mode ,379);
501 --
502 -- OAB Bug 1863413 : Detect potential life events when salary
503 -- information changes
504 --
505 if hr_general.g_data_migrator_mode not in ( 'Y','P') then
506 ben_pro_ler.ler_chk(p_old => l_old_rec
507 ,p_new => l_new_rec
508 ,p_effective_date => p_rec.change_date );
509 end if ;
510
511 -- extract change event log call
512 if hr_general.g_data_migrator_mode <> 'Y' then
513
514 hr_utility.set_location('Extract event logged called for pay proposal',99) ;
515 ben_ext_chlg.log_per_pay_chg
516 (p_event => l_event
517 ,p_old_rec => l_ext_old_rec
518 ,p_new_rec => l_ext_new_rec
519 );
520 hr_utility.set_location('Extract event logged out',99) ;
521 end if ;
522
523
524 exception
525 when hr_api.cannot_find_prog_unit then
526 hr_api.cannot_find_prog_unit_error
527 (p_module_name => 'PER_PAY_PROPOSALS'
528 ,p_hook_type => 'AU'
529 );
530 end;
531 -- End of API User Hook for post_update.
532 hr_utility.set_location(' Leaving:'||l_proc, 10);
533 End post_update;
534 --
535 -- ----------------------------------------------------------------------------
536 -- |-----------------------------< convert_defs >-----------------------------|
537 -- ----------------------------------------------------------------------------
538 -- {Start Of Comments}
539 --
540 -- Description:
541 -- The Convert_Defs procedure has one very important function:
542 -- It must return the record structure for the row with all system defaulted
543 -- values converted into its corresponding parameter value for update. When
544 -- we attempt to update a row through the Upd process , certain
545 -- parameters can be defaulted which enables flexibility in the calling of
546 -- the upd process (e.g. only attributes which need to be updated need to be
547 -- specified). For the upd process to determine which attributes
548 -- have NOT been specified we need to check if the parameter has a reserved
549 -- system default value. Therefore, for all parameters which have a
550 -- corresponding reserved system default mechanism specified we need to
551 -- check if a system default is being used. If a system default is being
552 -- used then we convert the defaulted value into its corresponding attribute
553 -- value held in the g_old_rec data structure.
554 --
555 -- Pre Conditions:
556 -- This private function can only be called from the upd process.
557 --
558 -- In Parameters:
559 -- A Pl/Sql record structre.
560 --
561 -- Post Success:
562 -- The record structure will be returned with all system defaulted parameter
563 -- values converted into its current row attribute value.
564 --
565 -- Post Failure:
566 -- No direct error handling is required within this function. Any possible
567 -- errors within this procedure will be a PL/SQL value error due to conversion
568
569 -- of datatypes or data lengths.
570 --
571 -- Developer Implementation Notes:
572 -- None.
573 --
574 -- Access Status:
575 -- Internal Table Handler Use Only.
576 --
577 -- {End Of Comments}
578 -- ----------------------------------------------------------------------------
579 Procedure convert_defs(p_rec in out nocopy per_pyp_shd.g_rec_type) is
580 --
581 l_proc varchar2(72) := g_package||'convert_defs';
582 --
583 Begin
584 --
585 hr_utility.set_location('Entering:'||l_proc, 5);
586 --
587 -- We must now examine each argument value in the
588 -- p_rec plsql record structure
589 -- to see if a system default is being used. If a system default
590 -- is being used then we must set to the 'current' argument value.
591 --
592 If (p_rec.assignment_id = hr_api.g_number) then
593 p_rec.assignment_id :=
594 per_pyp_shd.g_old_rec.assignment_id;
595 End If;
596 If (p_rec.business_group_id = hr_api.g_number) then
597 p_rec.business_group_id :=
598 per_pyp_shd.g_old_rec.business_group_id;
599 End If;
600 If (p_rec.change_date = hr_api.g_date) then
601 p_rec.change_date :=
602 per_pyp_shd.g_old_rec.change_date;
603 End If;
604 If (p_rec.comments = hr_api.g_varchar2) then
605 p_rec.comments :=
606 per_pyp_shd.g_old_rec.comments;
607 End If;
608 If (p_rec.last_change_date = hr_api.g_date) then
609 p_rec.last_change_date :=
610 per_pyp_shd.g_old_rec.last_change_date;
611 End If;
612 If (p_rec.next_sal_review_date = hr_api.g_date) then
613 p_rec.next_sal_review_date :=
614 per_pyp_shd.g_old_rec.next_sal_review_date;
615 End If;
616 If (p_rec.proposal_reason = hr_api.g_varchar2) then
617 p_rec.proposal_reason :=
618 per_pyp_shd.g_old_rec.proposal_reason;
619 End If;
620 If (p_rec.proposed_salary_n = hr_api.g_number) then
621 p_rec.proposed_salary_n :=
622 per_pyp_shd.g_old_rec.proposed_salary_n;
623 End If;
624 If (p_rec.forced_ranking = hr_api.g_number) then
625 p_rec.forced_ranking :=
626 per_pyp_shd.g_old_rec.forced_ranking;
627 End If;
628 If (p_rec.date_to = hr_api.g_date) then
629 p_rec.date_to :=
630 per_pyp_shd.g_old_rec.date_to;
631 End If;
632 If (p_rec.performance_review_id = hr_api.g_number) then
633 p_rec.performance_review_id :=
634 per_pyp_shd.g_old_rec.performance_review_id;
635 End If;
636 If (p_rec.attribute_category = hr_api.g_varchar2) then
637 p_rec.attribute_category :=
638 per_pyp_shd.g_old_rec.attribute_category;
639 End If;
640 If (p_rec.attribute1 = hr_api.g_varchar2) then
641 p_rec.attribute1 :=
642 per_pyp_shd.g_old_rec.attribute1;
643 End If;
644 If (p_rec.attribute2 = hr_api.g_varchar2) then
645 p_rec.attribute2 :=
646 per_pyp_shd.g_old_rec.attribute2;
647 End If;
648 If (p_rec.attribute3 = hr_api.g_varchar2) then
649 p_rec.attribute3 :=
650 per_pyp_shd.g_old_rec.attribute3;
651 End If;
652 If (p_rec.attribute4 = hr_api.g_varchar2) then
653 p_rec.attribute4 :=
654 per_pyp_shd.g_old_rec.attribute4;
655 End If;
656 If (p_rec.attribute5 = hr_api.g_varchar2) then
657 p_rec.attribute5 :=
658 per_pyp_shd.g_old_rec.attribute5;
659 End If;
660 If (p_rec.attribute6 = hr_api.g_varchar2) then
661 p_rec.attribute6 :=
662 per_pyp_shd.g_old_rec.attribute6;
663 End If;
664 If (p_rec.attribute7 = hr_api.g_varchar2) then
665 p_rec.attribute7 :=
666 per_pyp_shd.g_old_rec.attribute7;
667 End If;
668 If (p_rec.attribute8 = hr_api.g_varchar2) then
669 p_rec.attribute8 :=
670 per_pyp_shd.g_old_rec.attribute8;
671 End If;
672 If (p_rec.attribute9 = hr_api.g_varchar2) then
673 p_rec.attribute9 :=
674 per_pyp_shd.g_old_rec.attribute9;
675 End If;
676 If (p_rec.attribute10 = hr_api.g_varchar2) then
677 p_rec.attribute10 :=
678 per_pyp_shd.g_old_rec.attribute10;
679 End If;
680 If (p_rec.attribute11 = hr_api.g_varchar2) then
681 p_rec.attribute11 :=
682 per_pyp_shd.g_old_rec.attribute11;
683 eND iF;
684 If (p_rec.attribute12 = hr_api.g_varchar2) then
685 p_rec.attribute12 :=
686 per_pyp_shd.g_old_rec.attribute12;
687 End If;
688 If (p_rec.attribute13 = hr_api.g_varchar2) then
689 p_rec.attribute13 :=
690 per_pyp_shd.g_old_rec.attribute13;
691 End If;
692 If (p_rec.attribute14 = hr_api.g_varchar2) then
693 p_rec.attribute14 :=
694 per_pyp_shd.g_old_rec.attribute14;
695 End If;
696 If (p_rec.attribute15 = hr_api.g_varchar2) then
697 p_rec.attribute15 :=
698 per_pyp_shd.g_old_rec.attribute15;
699 End If;
700 If (p_rec.attribute16 = hr_api.g_varchar2) then
701 p_rec.attribute16 :=
702 per_pyp_shd.g_old_rec.attribute16;
703 End If;
704 If (p_rec.attribute17 = hr_api.g_varchar2) then
705 p_rec.attribute17 :=
706 per_pyp_shd.g_old_rec.attribute17;
707 End If;
708 If (p_rec.attribute18 = hr_api.g_varchar2) then
709 p_rec.attribute18 :=
710 per_pyp_shd.g_old_rec.attribute18;
711 End If;
712 If (p_rec.attribute19 = hr_api.g_varchar2) then
713 p_rec.attribute19 :=
714 per_pyp_shd.g_old_rec.attribute19;
715 End If;
716 If (p_rec.attribute20 = hr_api.g_varchar2) then
717 p_rec.attribute20 :=
718 per_pyp_shd.g_old_rec.attribute20;
719 End If;
720 If (p_rec.multiple_components = hr_api.g_varchar2) then
721 p_rec.multiple_components :=
722 per_pyp_shd.g_old_rec.multiple_components;
723 End If;
724 If (p_rec.approved = hr_api.g_varchar2) then
725 p_rec.approved :=
726 per_pyp_shd.g_old_rec.approved;
727 End If;
728 --
729 hr_utility.set_location(' Leaving:'||l_proc, 10);
730 --
731 End convert_defs;
732 --
733 -- ----------------------------------------------------------------------------
734 -- |---------------------------------< upd >----------------------------------|
735 -- ----------------------------------------------------------------------------
736 Procedure upd
737 (
738 p_rec in out nocopy per_pyp_shd.g_rec_type,
739 p_validate in boolean ,
740 p_inv_next_sal_date_warning out nocopy boolean ,
741 p_proposed_salary_warning out nocopy boolean ,
742 p_approved_warning out nocopy boolean ,
743 p_payroll_warning out nocopy boolean
744 ) is
745 --
746 l_proc varchar2(72) := g_package||'upd';
747 l_inv_next_sal_date_warning boolean;
748 l_proposed_salary_warning boolean;
749 l_approved_warning boolean;
750 l_payroll_warning boolean;
751
752 --
753 Begin
754 hr_utility.set_location('Entering:'||l_proc, 5);
755 --
756 -- Determine if the business process is to be validated.
757 --
758 If p_validate then
759 --
760 -- Issue the savepoint.
761 --
762 SAVEPOINT upd_per_pyp;
763 End If;
764 --
765 -- We must lock the row which we need to update.
766 --
767 per_pyp_shd.lck
768 (
769 p_rec.pay_proposal_id,
770 p_rec.object_version_number
771 );
772 --
773 -- 1. During an update system defaults are used to determine if
774 -- arguments have been defaulted or not. We must therefore
775 -- derive the full record structure values to be updated.
776 --
777 -- 2. Call the supporting update validate operations.
778 --
779 convert_defs(p_rec);
780 per_pyp_bus.update_validate
781 (p_rec => p_rec
782 ,p_inv_next_sal_date_warning => l_inv_next_sal_date_warning
783 ,p_proposed_salary_warning => l_proposed_salary_warning
784 ,p_approved_warning => l_approved_warning
785 ,p_payroll_warning => l_payroll_warning
786 );
787 --
788 -- Call the supporting pre-update operation
789 --
790 pre_update(p_rec);
791 --
792 -- Update the row.
793 --
794 update_dml(p_rec);
795 --
796 -- Call the supporting post-update operation
797 --
798 post_update(p_rec => p_rec
799 ,p_inv_next_sal_date_warning => l_inv_next_sal_date_warning
800 ,p_proposed_salary_warning => l_proposed_salary_warning
801 ,p_approved_warning => l_approved_warning
802 ,p_payroll_warning => l_payroll_warning
803 );
804
805 p_inv_next_sal_date_warning := l_inv_next_sal_date_warning;
806 p_proposed_salary_warning := l_proposed_salary_warning;
807 p_approved_warning := l_approved_warning;
808 p_payroll_warning := l_payroll_warning;
809
810 --
811 -- If we are validating then raise the Validate_Enabled exception
812 --
813 If p_validate then
814 Raise HR_Api.Validate_Enabled;
815 End If;
816 --
817 hr_utility.set_location(' Leaving:'||l_proc, 10);
818 Exception
819 When HR_Api.Validate_Enabled Then
820 --
821 -- As the Validate_Enabled exception has been raised
822 -- we must rollback to the savepoint
823 --
824 ROLLBACK TO upd_per_pyp;
825 End upd;
826 --
827 -- ----------------------------------------------------------------------------
828 -- |---------------------------------< upd >----------------------------------|
829 -- ----------------------------------------------------------------------------
830 Procedure upd
831 (
832 p_pay_proposal_id in number,
833 p_change_date in date,
834 p_comments in varchar2,
835 p_next_sal_review_date in date,
836 p_proposal_reason in varchar2,
837 p_proposed_salary_n in number,
838 p_forced_ranking in number,
839 p_date_to in date,
840 p_performance_review_id in number,
841 p_attribute_category in varchar2,
842 p_attribute1 in varchar2,
843 p_attribute2 in varchar2,
844 p_attribute3 in varchar2,
845 p_attribute4 in varchar2,
846 p_attribute5 in varchar2,
847 p_attribute6 in varchar2,
848 p_attribute7 in varchar2,
849 p_attribute8 in varchar2,
850 p_attribute9 in varchar2,
851 p_attribute10 in varchar2,
852 p_attribute11 in varchar2,
853 p_attribute12 in varchar2,
854 p_attribute13 in varchar2,
855 p_attribute14 in varchar2,
856 p_attribute15 in varchar2,
857 p_attribute16 in varchar2,
858 p_attribute17 in varchar2,
859 p_attribute18 in varchar2,
860 p_attribute19 in varchar2,
861 p_attribute20 in varchar2,
862 p_object_version_number in out nocopy number,
863 p_multiple_components in varchar2,
864 p_approved in varchar2,
865 p_validate in boolean,
866 p_inv_next_sal_date_warning out nocopy boolean,
867 p_proposed_salary_warning out nocopy boolean,
868 p_approved_warning out nocopy boolean,
869 p_payroll_warning out nocopy boolean
870
871 ) is
872 --
873 l_rec per_pyp_shd.g_rec_type;
874 l_proc varchar2(72) := g_package||'upd';
875 --
876 Begin
877 hr_utility.set_location('Entering:'||l_proc, 5);
878 hr_utility.set_location('ovn= '||to_char(p_object_version_number)||l_proc, 5);
879 --
880 -- Call conversion function to turn arguments into the
881 -- l_rec structure.
882 --
883 l_rec :=
884 per_pyp_shd.convert_args
885 (
886 p_pay_proposal_id,
887 hr_api.g_number,
888 hr_api.g_number,
889 p_change_date,
890 p_comments,
891 hr_api.g_date,
892 p_next_sal_review_date,
893 p_proposal_reason,
894 p_proposed_salary_n,
895 p_forced_ranking,
896 p_date_to,
897 p_performance_review_id,
898 p_attribute_category,
899 p_attribute1,
900 p_attribute2,
901 p_attribute3,
902 p_attribute4,
903 p_attribute5,
904 p_attribute6,
905 p_attribute7,
906 p_attribute8,
907 p_attribute9,
908 p_attribute10,
909 p_attribute11,
910 p_attribute12,
911 p_attribute13,
912 p_attribute14,
913 p_attribute15,
914 p_attribute16,
915 p_attribute17,
916 p_attribute18,
917 p_attribute19,
918 p_attribute20,
919 p_object_version_number,
920 p_multiple_components,
921 p_approved
922 );
923 --
924 -- Having converted the arguments into the
925 -- plsql record structure we call the corresponding record
926 -- business process.
927 --
928 upd(p_rec => l_rec
929 ,p_validate => p_validate
930 ,p_inv_next_sal_date_warning => p_inv_next_sal_date_warning
931 ,p_proposed_salary_warning => p_proposed_salary_warning
932 ,p_approved_warning => p_approved_warning
933 ,p_payroll_warning => p_payroll_warning
934 );
935 --
936 p_object_version_number := l_rec.object_version_number;
937 --
938 hr_utility.set_location(' Leaving:'||l_proc, 10);
939 End upd;
940 --
941 end per_pyp_upd;