[Home] [Help]
PACKAGE BODY: APPS.PER_PYP_INS
Source
1 Package Body per_pyp_ins as
2 /* $Header: pepyprhi.pkb 120.24 2011/09/28 10:47:13 akaranam ship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- | Private Global Definitions |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package varchar2(33) := ' per_pyp_ins.'; -- Global package name
9 --
10 -- the following global variables are only to be used by
11 -- the set_base_key_value and pre_insert procedures.
12 --
13 g_pay_proposal_id_i number default null;
14 --
15 -- ----------------------------------------------------------------------------
16 -- |------------------------< set_base_key_value >----------------------------|
17 -- ----------------------------------------------------------------------------
18 procedure set_base_key_value
19 (p_pay_proposal_id in number) is
20 --
21 l_proc varchar2(72) := g_package||'set_base_key_value';
22 --
23 begin
24 hr_utility.set_location('entering:'||l_proc, 10);
25 --
26 per_pyp_ins.g_pay_proposal_id_i := p_pay_proposal_id;
27 --
28 hr_utility.set_location(' leaving:'||l_proc, 20);
29 end set_base_key_value;
30 --
31 -- ----------------------------------------------------------------------------
32 -- |------------------------------< insert_dml >------------------------------|
33 -- ----------------------------------------------------------------------------
34 -- {Start Of Comments}
35 --
36 -- Description:
37 -- This procedure controls the actual dml insert logic. The processing of
38 -- this procedure are as follows:
39 -- 1) Initialise the object_version_number to 1 if the object_version_number
40 -- is defined as an attribute for this entity.
41 -- 2) To set and unset the g_api_dml status as required (as we are about to
42 -- perform dml).
43 -- 3) To insert the row into the schema.
44 -- 4) To trap any constraint violations that may have occurred.
45 -- 5) To raise any other errors.
46 --
47 -- Pre Conditions:
48 -- This is an internal private procedure which must be called from the ins
49 -- procedure and must have all mandatory attributes set (except the
50 -- object_version_number which is initialised within this procedure).
51 --
52 -- In Parameters:
53 -- A Pl/Sql record structre.
54 --
55 -- Post Success:
56 -- The specified row will be inserted into the schema.
57 --
58 -- Post Failure:
59 -- On the insert dml failure it is important to note that we always reset the
60 -- g_api_dml status to false.
61 -- If a check, unique or parent integrity constraint violation is raised the
62 -- constraint_error procedure will be called.
63 -- If any other error is reported, the error will be raised after the
64 -- g_api_dml status is reset.
65 --
66 -- Developer Implementation Notes:
67 -- None.
68 --
69 -- Access Status:
70 -- Internal Table Handler Use Only.
71 --
72 -- {End Of Comments}
73 -- ----------------------------------------------------------------------------
74 Procedure insert_dml(p_rec in out nocopy per_pyp_shd.g_rec_type) is
75 --
76 l_proc varchar2(72) := g_package||'insert_dml';
77 --
78 Begin
79 hr_utility.set_location('Entering:'||l_proc, 5);
80 p_rec.object_version_number := 1; -- Initialise the object version
81 --
82 per_pyp_shd.g_api_dml := true; -- Set the api dml status
83 --
84 -- Insert the row into: per_pay_proposals
85 --
86 insert into per_pay_proposals
87 ( pay_proposal_id,
88 assignment_id,
89 event_id,
90 business_group_id,
91 change_date,
92 comments,
93 last_change_date,
94 next_perf_review_date,
95 next_sal_review_date,
96 performance_rating,
97 proposal_reason,
98 proposed_salary_n,
99 review_date,
100 forced_ranking,
101 date_to,
102 performance_review_id,
103 attribute_category,
104 attribute1,
105 attribute2,
106 attribute3,
107 attribute4,
108 attribute5,
109 attribute6,
110 attribute7,
111 attribute8,
112 attribute9,
113 attribute10,
114 attribute11,
115 attribute12,
116 attribute13,
117 attribute14,
118 attribute15,
119 attribute16,
120 attribute17,
121 attribute18,
122 attribute19,
123 attribute20,
124 object_version_number,
125 multiple_components,
126 approved
127 )
128 Values
129 ( p_rec.pay_proposal_id,
130 p_rec.assignment_id,
131 null,
132 p_rec.business_group_id,
133 p_rec.change_date,
134 p_rec.comments,
135 p_rec.last_change_date,
136 null,
137 p_rec.next_sal_review_date,
138 null,
139 p_rec.proposal_reason,
140 p_rec.proposed_salary_n,
141 null,
142 p_rec.forced_ranking,
143 p_rec.date_to,
144 p_rec.performance_review_id,
145 p_rec.attribute_category,
146 p_rec.attribute1,
147 p_rec.attribute2,
148 p_rec.attribute3,
149 p_rec.attribute4,
150 p_rec.attribute5,
151 p_rec.attribute6,
152 p_rec.attribute7,
153 p_rec.attribute8,
154 p_rec.attribute9,
155 p_rec.attribute10,
156 p_rec.attribute11,
157 p_rec.attribute12,
158 p_rec.attribute13,
159 p_rec.attribute14,
160 p_rec.attribute15,
161 p_rec.attribute16,
162 p_rec.attribute17,
163 p_rec.attribute18,
164 p_rec.attribute19,
165 p_rec.attribute20,
166 p_rec.object_version_number,
167 p_rec.multiple_components,
168 p_rec.approved
169 );
170 --
171 per_pyp_shd.g_api_dml := false; -- Unset the api dml status
172 --
173 hr_utility.set_location(' Leaving:'||l_proc, 10);
174 Exception
175 When hr_api.check_integrity_violated Then
176 -- A check constraint has been violated
177 per_pyp_shd.g_api_dml := false; -- Unset the api dml status
178 per_pyp_shd.constraint_error
179 (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
180 When hr_api.parent_integrity_violated Then
181 -- Parent integrity has been violated
182 per_pyp_shd.g_api_dml := false; -- Unset the api dml status
183 per_pyp_shd.constraint_error
184 (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
185 When hr_api.unique_integrity_violated Then
186 -- Unique integrity has been violated
187 per_pyp_shd.g_api_dml := false; -- Unset the api dml status
188 per_pyp_shd.constraint_error
189 (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
190 When Others Then
191 per_pyp_shd.g_api_dml := false; -- Unset the api dml status
192 Raise;
193 End insert_dml;
194 --
195 -- ----------------------------------------------------------------------------
196 -- |------------------------------< pre_insert >------------------------------|
197 -- ----------------------------------------------------------------------------
198 -- {Start Of Comments}
199 --
200 -- Description:
201 -- This private procedure contains any processing which is required before
202 -- the insert dml. Presently, if the entity has a corresponding primary
203 -- key which is maintained by an associating sequence, the primary key for
204 -- the entity will be populated with the next sequence value in
205 -- preparation for the insert dml.
206 --
207 -- Pre Conditions:
208 -- This is an internal procedure which is called from the ins procedure.
209 --
210 -- In Parameters:
211 -- A Pl/Sql record structre.
212 --
213 -- Post Success:
214 -- Processing continues.
215 --
216 -- Post Failure:
217 -- If an error has occurred, an error message and exception will be raised
218 -- but not handled.
219 --
220 -- Developer Implementation Notes:
221 -- Any pre-processing required before the insert dml is issued should be
222 -- coded within this procedure. As stated above, a good example is the
223 -- generation of a primary key number via a corresponding sequence.
224 -- It is important to note that any 3rd party maintenance should be reviewed
225 -- before placing in this procedure.
226 --
227 -- Access Status:
228 -- Internal Table Handler Use Only.
229 --
230 -- {End Of Comments}
231 -- ----------------------------------------------------------------------------
232 Procedure pre_insert(p_rec in out nocopy per_pyp_shd.g_rec_type) is
233 --
234 l_proc varchar2(72) := g_package||'pre_insert';
235 --
236 Cursor C_Sel1 is select per_pay_proposals_s.nextval from sys.dual;
237 --
238 --
239 cursor c_sel2 is
240 select null
241 from per_pay_proposals
242 where pay_proposal_id =
243 per_pyp_ins.g_pay_proposal_id_i;
244 --
245 l_exists varchar2(1);
246 --
247 Begin
248 hr_utility.set_location('entering:'||l_proc, 5);
249 --
250 if (per_pyp_ins.g_pay_proposal_id_i is not null) then
251 --
252 -- verify registered primary key values not already in use
253 --
254 open c_sel2;
255 fetch c_sel2 into l_exists;
256 if c_sel2%found then
257 close c_sel2;
258 --
259 -- the primary key values are already in use.
260 --
261 fnd_message.set_name('per','per_289391_key_already_used');
262 fnd_message.set_token('table_name','per_pay_proposals');
263 fnd_message.raise_error;
264 end if;
265 close c_sel2;
266 --
267 -- use registered key values and clear globals
268 --
269 p_rec.pay_proposal_id := per_pyp_ins.g_pay_proposal_id_i;
270 --
271 per_pyp_ins.g_pay_proposal_id_i := null;
272 else
273 --
274 -- no registerd key values, so select the next sequence number
275 --
276 --
277 -- select the next sequence number
278 --
279 Open C_Sel1;
280 Fetch C_Sel1 Into p_rec.pay_proposal_id;
281 Close C_Sel1;
282 end if;
283 --
284 -- Added by ggnanagu
285 -- To fix last_change_date being null issue
286 --
287 per_pyp_bus.gen_last_change_date(p_rec);
288 --
289 hr_utility.set_location(' leaving:'||l_proc, 10);
290 End pre_insert;
291 --
292 -- ----------------------------------------------------------------------------
293 -- |-----------------------------< post_insert >------------------------------|
294 -- ----------------------------------------------------------------------------
295 -- {Start Of Comments}
296 --
297 -- Description:
298 -- This private procedure contains any processing which is required after the
299 -- insert dml.
300 --
301 -- Pre Conditions:
302 -- This is an internal procedure which is called from the ins procedure.
303 --
304 -- In Parameters:
305 -- A Pl/Sql record structre.
306 --
307 -- Post Success:
308 -- Processing continues.
309 --
310 -- Post Failure:
311 -- If an error has occurred, an error message and exception will be raised
312 -- but not handled.
313 --
314 -- Developer Implementation Notes:
315 -- Any post-processing required after the insert dml is issued should be
316 -- coded within this procedure. It is important to note that any 3rd party
317 -- maintenance should be reviewed before placing in this procedure.
318 --
319 -- Access Status:
320 -- Internal Table Handler Use Only.
321 --
322 -- {End Of Comments}
323 -- ----------------------------------------------------------------------------
324 Procedure post_insert
325 (p_rec in per_pyp_shd.g_rec_type,
326 p_inv_next_sal_date_warning in boolean,
327 p_proposed_salary_warning in boolean,
328 p_approved_warning in boolean,
329 p_payroll_warning in boolean
330 ) is
331 --
332 l_proc varchar2(72) := g_package||'post_insert';
333 --
334 l_old_rec ben_pro_ler.g_pro_ler_rec ;
335 l_new_rec ben_pro_ler.g_pro_ler_rec ;
336 --
337 -- extract change events
338 l_ext_old_rec ben_ext_chlg.g_per_pay_rec_type;
339 l_ext_new_rec ben_ext_chlg.g_per_pay_rec_type;
340 l_event varchar2(20) ;
341 --
342
343 Begin
344 hr_utility.set_location('Entering:'||l_proc, 5);
345 --
346 -- Call to user hook for post_insert.
347 --
348 begin
349 --
350 -- Bug 5203589 - Set old values of PER_PAY_PROPOSAL record
351 --
352 l_old_rec.BUSINESS_GROUP_ID := per_pyp_shd.g_old_rec.BUSINESS_GROUP_ID;
353 l_old_rec.PAY_PROPOSAL_ID := per_pyp_shd.g_old_rec.PAY_PROPOSAL_ID;
354 l_old_rec.ASSIGNMENT_ID := per_pyp_shd.g_old_rec.ASSIGNMENT_ID;
355 l_old_rec.EVENT_ID := null; -- 9999 per_pyp_shd.g_old_rec.EVENT_ID;
356 l_old_rec.CHANGE_DATE := per_pyp_shd.g_old_rec.CHANGE_DATE;
357 l_old_rec.LAST_CHANGE_DATE := per_pyp_shd.g_old_rec.LAST_CHANGE_DATE;
358 l_old_rec.NEXT_PERF_REVIEW_DATE := null; -- 9999 per_pyp_shd.g_old_rec.NEXT_PERF_REVIEW_DATE;
359 l_old_rec.NEXT_SAL_REVIEW_DATE := per_pyp_shd.g_old_rec.NEXT_SAL_REVIEW_DATE;
360 l_old_rec.PERFORMANCE_RATING := null; -- 9999 per_pyp_shd.g_old_rec.PERFORMANCE_RATING;
361 l_old_rec.PROPOSAL_REASON := per_pyp_shd.g_old_rec.PROPOSAL_REASON;
362 l_old_rec.PROPOSED_SALARY_N := per_pyp_shd.g_old_rec.PROPOSED_SALARY_N;
363 l_old_rec.REVIEW_DATE := null; -- 9999 per_pyp_shd.g_old_rec.REVIEW_DATE;
364 l_old_rec.APPROVED := per_pyp_shd.g_old_rec.APPROVED;
365 l_old_rec.MULTIPLE_COMPONENTS := per_pyp_shd.g_old_rec.MULTIPLE_COMPONENTS;
366 l_old_rec.FORCED_RANKING := per_pyp_shd.g_old_rec.FORCED_RANKING;
367 l_old_rec.DATE_TO := per_pyp_shd.g_old_rec.DATE_TO;
368 l_old_rec.PERFORMANCE_REVIEW_ID := per_pyp_shd.g_old_rec.PERFORMANCE_REVIEW_ID;
369 l_old_rec.ATTRIBUTE1 := per_pyp_shd.g_old_rec.ATTRIBUTE1;
370 l_old_rec.ATTRIBUTE2 := per_pyp_shd.g_old_rec.ATTRIBUTE2;
371 l_old_rec.ATTRIBUTE3 := per_pyp_shd.g_old_rec.ATTRIBUTE3;
372 l_old_rec.ATTRIBUTE4 := per_pyp_shd.g_old_rec.ATTRIBUTE4;
373 l_old_rec.ATTRIBUTE5 := per_pyp_shd.g_old_rec.ATTRIBUTE5;
374 l_old_rec.ATTRIBUTE6 := per_pyp_shd.g_old_rec.ATTRIBUTE6;
375 l_old_rec.ATTRIBUTE7 := per_pyp_shd.g_old_rec.ATTRIBUTE7;
376 l_old_rec.ATTRIBUTE8 := per_pyp_shd.g_old_rec.ATTRIBUTE8;
377 l_old_rec.ATTRIBUTE9 := per_pyp_shd.g_old_rec.ATTRIBUTE9;
378 l_old_rec.ATTRIBUTE10 := per_pyp_shd.g_old_rec.ATTRIBUTE10;
379 l_old_rec.ATTRIBUTE11 := per_pyp_shd.g_old_rec.ATTRIBUTE11;
380 l_old_rec.ATTRIBUTE12 := per_pyp_shd.g_old_rec.ATTRIBUTE12;
381 l_old_rec.ATTRIBUTE13 := per_pyp_shd.g_old_rec.ATTRIBUTE13;
382 l_old_rec.ATTRIBUTE14 := per_pyp_shd.g_old_rec.ATTRIBUTE14;
383 l_old_rec.ATTRIBUTE15 := per_pyp_shd.g_old_rec.ATTRIBUTE15;
384 l_old_rec.ATTRIBUTE16 := per_pyp_shd.g_old_rec.ATTRIBUTE16;
385 l_old_rec.ATTRIBUTE17 := per_pyp_shd.g_old_rec.ATTRIBUTE17;
386 l_old_rec.ATTRIBUTE18 := per_pyp_shd.g_old_rec.ATTRIBUTE18;
387 l_old_rec.ATTRIBUTE19 := per_pyp_shd.g_old_rec.ATTRIBUTE19;
388 l_old_rec.ATTRIBUTE20 := per_pyp_shd.g_old_rec.ATTRIBUTE20;
389 l_old_rec.PROPOSED_SALARY := null; -- 9999 ben_pro_shd.g_old_rec.PROPOSED_SALARY;
390
391 --
392 -- OAB Bug 1863413 : Detect potential life events when salary
393 -- information changes
394 --
395 -- intialising variable for calling ler_check
396 l_new_rec.BUSINESS_GROUP_ID := p_rec.BUSINESS_GROUP_ID;
397 l_new_rec.PAY_PROPOSAL_ID := p_rec.PAY_PROPOSAL_ID;
398 l_new_rec.ASSIGNMENT_ID := p_rec.ASSIGNMENT_ID;
399 l_new_rec.EVENT_ID := null; -- 9999 p_rec.EVENT_ID;
400 l_new_rec.CHANGE_DATE := p_rec.CHANGE_DATE;
401 l_new_rec.LAST_CHANGE_DATE := p_rec.LAST_CHANGE_DATE;
402 l_new_rec.NEXT_PERF_REVIEW_DATE := null; -- 9999 p_rec.NEXT_PERF_REVIEW_DATE;
403 l_new_rec.NEXT_SAL_REVIEW_DATE := null; -- 9999 p_rec.NEXT_SAL_REVIEW_DATE;
404 l_new_rec.PERFORMANCE_RATING := null; -- 9999 p_rec.PERFORMANCE_RATING;
405 l_new_rec.PROPOSAL_REASON := p_rec.PROPOSAL_REASON;
406 l_new_rec.PROPOSED_SALARY_N := p_rec.PROPOSED_SALARY_N;
407 l_new_rec.REVIEW_DATE := null; -- 9999 p_rec.REVIEW_DATE;
408 l_new_rec.APPROVED := p_rec.APPROVED;
409 l_new_rec.MULTIPLE_COMPONENTS := p_rec.MULTIPLE_COMPONENTS;
410 l_new_rec.FORCED_RANKING := p_rec.FORCED_RANKING;
411 l_new_rec.DATE_TO := p_rec.DATE_TO;
412 l_new_rec.PERFORMANCE_REVIEW_ID := p_rec.PERFORMANCE_REVIEW_ID;
413 l_new_rec.ATTRIBUTE1 := p_rec.ATTRIBUTE1;
414 l_new_rec.ATTRIBUTE2 := p_rec.ATTRIBUTE2;
415 l_new_rec.ATTRIBUTE3 := p_rec.ATTRIBUTE3;
416 l_new_rec.ATTRIBUTE4 := p_rec.ATTRIBUTE4;
417 l_new_rec.ATTRIBUTE5 := p_rec.ATTRIBUTE5;
418 l_new_rec.ATTRIBUTE6 := p_rec.ATTRIBUTE6;
419 l_new_rec.ATTRIBUTE7 := p_rec.ATTRIBUTE7;
420 l_new_rec.ATTRIBUTE8 := p_rec.ATTRIBUTE8;
421 l_new_rec.ATTRIBUTE9 := p_rec.ATTRIBUTE9;
422 l_new_rec.ATTRIBUTE10 := p_rec.ATTRIBUTE10;
423 l_new_rec.ATTRIBUTE11 := p_rec.ATTRIBUTE11;
424 l_new_rec.ATTRIBUTE12 := p_rec.ATTRIBUTE12;
425 l_new_rec.ATTRIBUTE13 := p_rec.ATTRIBUTE13;
426 l_new_rec.ATTRIBUTE14 := p_rec.ATTRIBUTE14;
427 l_new_rec.ATTRIBUTE15 := p_rec.ATTRIBUTE15;
428 l_new_rec.ATTRIBUTE16 := p_rec.ATTRIBUTE16;
429 l_new_rec.ATTRIBUTE17 := p_rec.ATTRIBUTE17;
430 l_new_rec.ATTRIBUTE18 := p_rec.ATTRIBUTE18;
431 l_new_rec.ATTRIBUTE19 := p_rec.ATTRIBUTE19;
432 l_new_rec.ATTRIBUTE20 := p_rec.ATTRIBUTE20;
433 l_new_rec.PROPOSED_SALARY := null; -- 9999 p_rec.PROPOSED_SALARY;
434 --
435 -- extract change events
436 l_ext_new_rec.BUSINESS_GROUP_ID := p_rec.BUSINESS_GROUP_ID;
437 l_ext_new_rec.PAY_PROPOSAL_ID := p_rec.PAY_PROPOSAL_ID;
438 l_ext_new_rec.ASSIGNMENT_ID := p_rec.ASSIGNMENT_ID;
439 --l_ext_new_rec.EVENT_ID := p_rec.EVENT_ID;
440 l_ext_new_rec.CHANGE_DATE := p_rec.CHANGE_DATE;
441 l_ext_new_rec.LAST_CHANGE_DATE := p_rec.LAST_CHANGE_DATE;
442 --l_ext_new_rec.NEXT_PERF_REVIEW_DATE := p_rec.NEXT_PERF_REVIEW_DATE;
443 l_ext_new_rec.NEXT_SAL_REVIEW_DATE := p_rec.NEXT_SAL_REVIEW_DATE;
444 -- l_ext_new_rec.PERFORMANCE_RATING := p_rec.PERFORMANCE_RATING;
445 l_ext_new_rec.PROPOSAL_REASON := p_rec.PROPOSAL_REASON;
446 l_ext_new_rec.PROPOSED_SALARY_N := p_rec.PROPOSED_SALARY_N;
447 -- l_ext_new_rec.REVIEW_DATE := p_rec.REVIEW_DATE;
448 l_ext_new_rec.APPROVED := p_rec.APPROVED;
449 l_ext_new_rec.MULTIPLE_COMPONENTS := p_rec.MULTIPLE_COMPONENTS;
450 l_ext_new_rec.FORCED_RANKING := p_rec.FORCED_RANKING;
451 l_ext_new_rec.PERFORMANCE_REVIEW_ID := p_rec.PERFORMANCE_REVIEW_ID;
452 l_ext_new_rec.ATTRIBUTE1 := p_rec.ATTRIBUTE1;
453 l_ext_new_rec.ATTRIBUTE2 := p_rec.ATTRIBUTE2;
454 l_ext_new_rec.ATTRIBUTE3 := p_rec.ATTRIBUTE3;
455 l_ext_new_rec.ATTRIBUTE4 := p_rec.ATTRIBUTE4;
456 l_ext_new_rec.ATTRIBUTE5 := p_rec.ATTRIBUTE5;
457 l_ext_new_rec.ATTRIBUTE6 := p_rec.ATTRIBUTE6;
458 l_ext_new_rec.ATTRIBUTE7 := p_rec.ATTRIBUTE7;
459 l_ext_new_rec.ATTRIBUTE8 := p_rec.ATTRIBUTE8;
460 l_ext_new_rec.ATTRIBUTE9 := p_rec.ATTRIBUTE9;
461 l_ext_new_rec.ATTRIBUTE10 := p_rec.ATTRIBUTE10;
462 l_ext_new_rec.ATTRIBUTE11 := p_rec.ATTRIBUTE11;
463 l_ext_new_rec.ATTRIBUTE12 := p_rec.ATTRIBUTE12;
464 l_ext_new_rec.ATTRIBUTE13 := p_rec.ATTRIBUTE13;
465 l_ext_new_rec.ATTRIBUTE14 := p_rec.ATTRIBUTE14;
466 l_ext_new_rec.ATTRIBUTE15 := p_rec.ATTRIBUTE15;
467 l_ext_new_rec.ATTRIBUTE16 := p_rec.ATTRIBUTE16;
468 l_ext_new_rec.ATTRIBUTE17 := p_rec.ATTRIBUTE17;
469 l_ext_new_rec.ATTRIBUTE18 := p_rec.ATTRIBUTE18;
470 l_ext_new_rec.ATTRIBUTE19 := p_rec.ATTRIBUTE19;
471 l_ext_new_rec.ATTRIBUTE20 := p_rec.ATTRIBUTE20;
472 --l_ext_new_rec.PROPOSED_SALARY := p_rec.PROPOSED_SALARY;
473 l_ext_new_rec.date_to := p_rec.date_to;
474 l_ext_new_rec.update_mode := 'UPDATE';
475 l_event := 'INSERT' ;
476
477 per_pyp_rki.after_insert
478 (
479 p_pay_proposal_id => p_rec.pay_proposal_id,
480 p_assignment_id => p_rec.assignment_id,
481 p_business_group_id => p_rec.business_group_id,
482 p_change_date => p_rec.change_date,
483 p_comments => p_rec.comments,
484 p_next_sal_review_date => p_rec.next_sal_review_date,
485 p_proposal_reason => p_rec.proposal_reason,
486 p_proposed_salary_n => p_rec.proposed_salary_n,
487 p_forced_ranking => p_rec.forced_ranking,
488 p_date_to => p_rec.date_to,
489 p_performance_review_id => p_rec.performance_review_id,
490 p_attribute_category => p_rec.attribute_category,
491 p_attribute1 => p_rec.attribute1,
492 p_attribute2 => p_rec.attribute2,
493 p_attribute3 => p_rec.attribute3,
494 p_attribute4 => p_rec.attribute4,
495 p_attribute5 => p_rec.attribute5,
496 p_attribute6 => p_rec.attribute6,
497 p_attribute7 => p_rec.attribute7,
498 p_attribute8 => p_rec.attribute8,
499 p_attribute9 => p_rec.attribute9,
500 p_attribute10 => p_rec.attribute10,
501 p_attribute11 => p_rec.attribute11,
502 p_attribute12 => p_rec.attribute12,
503 p_attribute13 => p_rec.attribute13,
504 p_attribute14 => p_rec.attribute14,
505 p_attribute15 => p_rec.attribute15,
506 p_attribute16 => p_rec.attribute16,
507 p_attribute17 => p_rec.attribute17,
508 p_attribute18 => p_rec.attribute18,
509 p_attribute19 => p_rec.attribute19,
510 p_attribute20 => p_rec.attribute20,
511 p_object_version_number => p_rec.object_version_number,
512 p_multiple_components => p_rec.multiple_components,
513 p_approved => p_rec.approved,
514 p_inv_next_sal_date_warning => p_inv_next_sal_date_warning,
515 p_proposed_salary_warning => p_proposed_salary_warning,
516 p_approved_warning => p_approved_warning,
517 p_payroll_warning => p_payroll_warning
518 );
519 --
520 hr_utility.set_location('DM Mode pro ' ||hr_general.g_data_migrator_mode ,379);
521 --
522 -- OAB Bug 1863413 : Detect potential life events when salary
523 -- information changes
524 --
525 if hr_general.g_data_migrator_mode not in ( 'Y','P') then
526 ben_pro_ler.ler_chk(p_old => l_old_rec
527 ,p_new => l_new_rec
528 ,p_effective_date => p_rec.change_date );
529 End if ;
530 --
531 -- extract change event log call
532 if hr_general.g_data_migrator_mode <> 'Y' then
533 hr_utility.set_location('Extract event logged called for pay proposal',99) ;
534 ben_ext_chlg.log_per_pay_chg
535 (p_event => l_event
536 ,p_old_rec => l_ext_old_rec
537 ,p_new_rec => l_ext_new_rec
538 );
539 hr_utility.set_location('Extract event logged out ',99) ;
540 end if ;
541
542
543 exception
544 when hr_api.cannot_find_prog_unit then
545 hr_api.cannot_find_prog_unit_error
546 (p_module_name => 'PER_PAY_PROPOSALS'
547 ,p_hook_type => 'AI'
548 );
549 end;
550 -- End of API User Hook for post_insert.
551 hr_utility.set_location(' Leaving:'||l_proc, 10);
552 End post_insert;
553 --
554 --
555 -- ----------------------------------------------------------------------------
556 -- |---------------------------------< ins >----------------------------------|
557 -- ----------------------------------------------------------------------------
558 Procedure ins
559 (
560 p_rec in out nocopy per_pyp_shd.g_rec_type,
561 p_validate in boolean ,
562 p_inv_next_sal_date_warning out nocopy boolean ,
563 p_proposed_salary_warning out nocopy boolean ,
564 p_approved_warning out nocopy boolean ,
565 p_payroll_warning out nocopy boolean
566 ) is
567 --
568 l_proc varchar2(72) := g_package||'ins';
569 l_inv_next_sal_date_warning boolean;
570 l_proposed_salary_warning boolean;
571 l_approved_warning boolean;
572 l_payroll_warning boolean;
573
574 --
575 Begin
576 hr_utility.set_location('Entering:'||l_proc, 5);
577 --
578 -- Determine if the business process is to be validated.
579 --
580 If p_validate then
581 --
582 -- Issue the savepoint.
583 --
584 SAVEPOINT ins_per_pyp;
585 End If;
586 --
587 -- Call the supporting insert validate operations
588 --
589 per_pyp_bus.insert_validate
590 (p_rec => p_rec
591 ,p_inv_next_sal_date_warning => l_inv_next_sal_date_warning
592 ,p_proposed_salary_warning => l_proposed_salary_warning
593 ,p_approved_warning => l_approved_warning
594 ,p_payroll_warning => l_payroll_warning
595 );
596 --
597 -- Call the supporting pre-insert operation
598 --
599 pre_insert(p_rec);
600 --
601 -- Insert the row
602 --
603 insert_dml(p_rec);
604 --
605 -- Call the supporting post-insert operation
606 --
607 post_insert(p_rec => p_rec
608 ,p_inv_next_sal_date_warning => l_inv_next_sal_date_warning
609 ,p_proposed_salary_warning => l_proposed_salary_warning
610 ,p_approved_warning => l_approved_warning
611 ,p_payroll_warning => l_payroll_warning
612 );
613 --
614 -- If we are validating then raise the Validate_Enabled exception
615 --
616 If p_validate then
617 Raise HR_Api.Validate_Enabled;
618 End If;
619 --
620 -- Set the out arguments
621 --
622 p_inv_next_sal_date_warning := l_inv_next_sal_date_warning;
623 p_proposed_salary_warning := l_proposed_salary_warning;
624 p_approved_warning := l_approved_warning;
625 p_payroll_warning := l_payroll_warning;
626 --
627 hr_utility.set_location(' Leaving:'||l_proc, 10);
628 Exception
629 When HR_Api.Validate_Enabled Then
630 --
631 -- As the Validate_Enabled exception has been raised
632 -- we must rollback to the savepoint
633 --
634 ROLLBACK TO ins_per_pyp;
635 end ins;
636 --
637 -- ----------------------------------------------------------------------------
638 -- |---------------------------------< ins >----------------------------------|
639 -- ----------------------------------------------------------------------------
640 Procedure ins
641 (
642 p_pay_proposal_id out nocopy number,
643 p_assignment_id in number,
644 p_business_group_id in number,
645 p_change_date in date,
646 p_comments in varchar2,
647 p_next_sal_review_date in date,
648 p_proposal_reason in varchar2,
649 p_proposed_salary_n in number,
650 p_forced_ranking in number,
651 p_date_to in date,
652 p_performance_review_id in number,
653 p_attribute_category in varchar2,
654 p_attribute1 in varchar2,
655 p_attribute2 in varchar2,
656 p_attribute3 in varchar2,
657 p_attribute4 in varchar2,
658 p_attribute5 in varchar2,
659 p_attribute6 in varchar2,
660 p_attribute7 in varchar2,
661 p_attribute8 in varchar2,
662 p_attribute9 in varchar2,
663 p_attribute10 in varchar2,
664 p_attribute11 in varchar2,
665 p_attribute12 in varchar2,
666 p_attribute13 in varchar2,
667 p_attribute14 in varchar2,
668 p_attribute15 in varchar2,
669 p_attribute16 in varchar2,
670 p_attribute17 in varchar2,
671 p_attribute18 in varchar2,
672 p_attribute19 in varchar2,
673 p_attribute20 in varchar2,
674 p_object_version_number out nocopy number,
675 p_multiple_components in varchar2,
676 p_approved in varchar2,
677 p_validate in boolean,
678 p_inv_next_sal_date_warning out nocopy boolean,
679 p_proposed_salary_warning out nocopy boolean,
680 p_approved_warning out nocopy boolean,
681 p_payroll_warning out nocopy boolean
682 ) is
683 --
684 l_rec per_pyp_shd.g_rec_type;
685 l_proc varchar2(72) := g_package||'ins';
686 --
687 Begin
688 hr_utility.set_location('Entering:'||l_proc, 5);
689 --
690 -- Call conversion function to turn arguments into the
691 -- p_rec structure.
692 --
693 l_rec :=
694 per_pyp_shd.convert_args
695 (
696 null,
697 p_assignment_id,
698 p_business_group_id,
699 p_change_date,
700 p_comments,
701 null,
702 p_next_sal_review_date,
703 p_proposal_reason,
704 p_proposed_salary_n,
705 p_forced_ranking,
706 p_date_to,
707 p_performance_review_id,
708 p_attribute_category,
709 p_attribute1,
710 p_attribute2,
711 p_attribute3,
712 p_attribute4,
713 p_attribute5,
714 p_attribute6,
715 p_attribute7,
716 p_attribute8,
717 p_attribute9,
718 p_attribute10,
719 p_attribute11,
720 p_attribute12,
721 p_attribute13,
722 p_attribute14,
723 p_attribute15,
724 p_attribute16,
725 p_attribute17,
726 p_attribute18,
727 p_attribute19,
728 p_attribute20,
729 null,
730 p_multiple_components,
731 p_approved
732 );
733 --
734 -- Having converted the arguments into the per_pyp_rec
735 -- plsql record structure we call the corresponding record business process.
736 --
737 ins(p_rec => l_rec
738 ,p_validate => p_validate
739 ,p_inv_next_sal_date_warning => p_inv_next_sal_date_warning
740 ,p_proposed_salary_warning => p_proposed_salary_warning
741 ,p_approved_warning => p_approved_warning
742 ,p_payroll_warning => p_payroll_warning
743 );
744 --
745 -- As the primary key argument(s)
746 -- are specified as an OUT's we must set these values.
747 --
748 p_pay_proposal_id := l_rec.pay_proposal_id;
749 p_object_version_number := l_rec.object_version_number;
750 --
751 hr_utility.set_location(' Leaving:'||l_proc, 10);
752 End ins;
753 --
754 end per_pyp_ins;