1 Package Body per_req_ins as
2 /* $Header: pereqrhi.pkb 120.0.12000000.2 2007/07/10 05:22:20 mkjayara noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- | Private Global Definitions |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package varchar2(33) := ' per_req_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_requisition_id_i number default null;
14 --
15 -- ----------------------------------------------------------------------------
16 -- |------------------------< set_base_key_value >----------------------------|
17 -- ----------------------------------------------------------------------------
18 procedure set_base_key_value
19 (p_requisition_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_req_ins.g_requisition_id_i := p_requisition_id;
27 --
28 hr_utility.set_location(' Leaving:'||l_proc, 20);
29 End set_base_key_value;
30 --
31 --
32 -- ----------------------------------------------------------------------------
33 -- |------------------------------< insert_dml >------------------------------|
34 -- ----------------------------------------------------------------------------
35 -- {Start Of Comments}
36 --
37 -- Description:
38 -- This procedure controls the actual dml insert logic. The processing of
39 -- this procedure are as follows:
40 -- 1) Initialise the object_version_number to 1 if the object_version_number
41 -- is defined as an attribute for this entity.
42 -- 2) To set and unset the g_api_dml status as required (as we are about to
43 -- perform dml).
44 -- 3) To insert the row into the schema.
45 -- 4) To trap any constraint violations that may have occurred.
46 -- 5) To raise any other errors.
47 --
48 -- Prerequisites:
49 -- This is an internal private procedure which must be called from the ins
50 -- procedure and must have all mandatory attributes set (except the
51 -- object_version_number which is initialised within this procedure).
52 --
53 -- In Parameters:
54 -- A Pl/Sql record structre.
55 --
56 -- Post Success:
57 -- The specified row will be inserted into the schema.
58 --
59 -- Post Failure:
60 -- On the insert dml failure it is important to note that we always reset the
61 -- g_api_dml status to false.
62 -- If a check, unique or parent integrity constraint violation is raised the
63 -- constraint_error procedure will be called.
64 -- If any other error is reported, the error will be raised after the
65 -- g_api_dml status is reset.
66 --
67 -- Developer Implementation Notes:
68 -- None.
69 --
70 -- Access Status:
71 -- Internal Row Handler Use Only.
72 --
73 -- {End Of Comments}
74 -- ----------------------------------------------------------------------------
75 Procedure insert_dml
76 (p_rec in out nocopy per_req_shd.g_rec_type
77 ) is
78 --
79 l_proc varchar2(72) := g_package||'insert_dml';
80 --
81 Begin
82 hr_utility.set_location('Entering:'||l_proc, 5);
83 p_rec.object_version_number := 1; -- Initialise the object version
84 --
85 --
86 --
87 -- Insert the row into: per_requisitions
88 --
89 insert into per_requisitions
90 (requisition_id
91 ,business_group_id
92 ,person_id
93 ,date_from
94 ,name
95 ,comments
96 ,date_to
97 ,description
98 ,request_id
99 ,program_application_id
100 ,program_id
101 ,program_update_date
102 ,attribute_category
103 ,attribute1
104 ,attribute2
105 ,attribute3
106 ,attribute4
107 ,attribute5
108 ,attribute6
109 ,attribute7
110 ,attribute8
111 ,attribute9
112 ,attribute10
113 ,attribute11
114 ,attribute12
115 ,attribute13
116 ,attribute14
117 ,attribute15
118 ,attribute16
119 ,attribute17
120 ,attribute18
121 ,attribute19
122 ,attribute20
123 ,object_version_number
124 )
125 Values
126 (p_rec.requisition_id
127 ,p_rec.business_group_id
128 ,p_rec.person_id
129 ,p_rec.date_from
130 ,p_rec.name
131 ,p_rec.comments
132 ,p_rec.date_to
133 ,p_rec.description
134 ,p_rec.request_id
135 ,p_rec.program_application_id
136 ,p_rec.program_id
137 ,p_rec.program_update_date
138 ,p_rec.attribute_category
139 ,p_rec.attribute1
140 ,p_rec.attribute2
141 ,p_rec.attribute3
142 ,p_rec.attribute4
143 ,p_rec.attribute5
144 ,p_rec.attribute6
145 ,p_rec.attribute7
146 ,p_rec.attribute8
147 ,p_rec.attribute9
148 ,p_rec.attribute10
149 ,p_rec.attribute11
150 ,p_rec.attribute12
151 ,p_rec.attribute13
152 ,p_rec.attribute14
153 ,p_rec.attribute15
154 ,p_rec.attribute16
155 ,p_rec.attribute17
156 ,p_rec.attribute18
157 ,p_rec.attribute19
158 ,p_rec.attribute20
159 ,p_rec.object_version_number
160 );
161 --
162 --
163 --
164 hr_utility.set_location(' Leaving:'||l_proc, 10);
165 Exception
166 When hr_api.check_integrity_violated Then
167 -- A check constraint has been violated
168 --
169 per_req_shd.constraint_error
170 (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
171 When hr_api.parent_integrity_violated Then
172 -- Parent integrity has been violated
173 --
174 per_req_shd.constraint_error
175 (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
176 When hr_api.unique_integrity_violated Then
177 -- Unique integrity has been violated
178 --
179 per_req_shd.constraint_error
180 (p_constraint_name => hr_api.strip_constraint_name(SQLERRM));
181 When Others Then
182 --
183 Raise;
184 End insert_dml;
185 --
186 -- ----------------------------------------------------------------------------
187 -- |------------------------------< pre_insert >------------------------------|
188 -- ----------------------------------------------------------------------------
189 -- {Start Of Comments}
190 --
191 -- Description:
192 -- This private procedure contains any processing which is required before
193 -- the insert dml. Presently, if the entity has a corresponding primary
194 -- key which is maintained by an associating sequence, the primary key for
195 -- the entity will be populated with the next sequence value in
196 -- preparation for the insert dml.
197 --
198 -- Prerequisites:
199 -- This is an internal procedure which is called from the ins procedure.
200 --
201 -- In Parameters:
202 -- A Pl/Sql record structure.
203 --
204 -- Post Success:
205 -- Processing continues.
206 --
207 -- Post Failure:
208 -- If an error has occurred, an error message and exception will be raised
209 -- but not handled.
210 --
211 -- Developer Implementation Notes:
212 -- Any pre-processing required before the insert dml is issued should be
213 -- coded within this procedure. As stated above, a good example is the
214 -- generation of a primary key number via a corresponding sequence.
215 -- It is important to note that any 3rd party maintenance should be reviewed
216 -- before placing in this procedure.
217 --
218 -- Access Status:
219 -- Internal Row Handler Use Only.
220 --
221 -- {End Of Comments}
222 -- ----------------------------------------------------------------------------
223 Procedure pre_insert
224 (p_rec in out nocopy per_req_shd.g_rec_type
225 ) is
226 --
227 Cursor C_Sel1 is select per_requisitions_s.nextval from sys.dual;
228 --
229 Cursor C_Sel2 is
230 Select null
231 from per_requisitions
232 where requisition_id =
233 per_req_ins.g_requisition_id_i;
234 --
235 l_proc varchar2(72) := g_package||'pre_insert';
236 l_exists varchar2(1);
237 --
238 Begin
239 hr_utility.set_location('Entering:'||l_proc, 5);
240 --
241 If (per_req_ins.g_requisition_id_i is not null) Then
242 --
243 -- Verify registered primary key values not already in use
244 --
245 Open C_Sel2;
246 Fetch C_Sel2 into l_exists;
247 If C_Sel2%found Then
248 Close C_Sel2;
249 --
250 -- The primary key values are already in use.
251 --
252 fnd_message.set_name('PER','PER_289391_KEY_ALREADY_USED');
253 fnd_message.set_name('TABLE_NAME','per_requisitions');
254 fnd_message.raise_error;
255 End If;
256 Close C_Sel2;
257 --
258 -- Use registered key values and clear globals
259 --
260 p_rec.requisition_id :=
261 per_req_ins.g_requisition_id_i;
262 per_req_ins.g_requisition_id_i := null;
263 Else
264 --
265 -- No registerd key values, so select the next sequence number
266 --
267 --
268 -- Select the next sequence number
269 --
270 Open C_Sel1;
271 Fetch C_Sel1 Into p_rec.requisition_id;
272 Close C_Sel1;
273 End If;
274 --
275 hr_utility.set_location(' Leaving:'||l_proc, 10);
276 End pre_insert;
277 --
278 -- ----------------------------------------------------------------------------
279 -- |-----------------------------< post_insert >------------------------------|
280 -- ----------------------------------------------------------------------------
281 -- {Start Of Comments}
282 --
283 -- Description:
284 -- This private procedure contains any processing which is required after
285 -- the insert dml.
286 --
287 -- Prerequisites:
288 -- This is an internal procedure which is called from the ins procedure.
289 --
290 -- In Parameters:
291 -- A Pl/Sql record structre.
292 --
293 -- Post Success:
294 -- Processing continues.
295 --
296 -- Post Failure:
297 -- If an error has occurred, an error message and exception will be raised
298 -- but not handled.
299 --
300 -- Developer Implementation Notes:
301 -- Any post-processing required after the insert dml is issued should be
302 -- coded within this procedure. It is important to note that any 3rd party
303 -- maintenance should be reviewed before placing in this procedure.
304 --
305 -- Access Status:
306 -- Internal Row Handler Use Only.
307 --
308 -- {End Of Comments}
309 -- ----------------------------------------------------------------------------
310 Procedure post_insert
311 (p_rec in per_req_shd.g_rec_type
312 ) is
313 --
314 l_proc varchar2(72) := g_package||'post_insert';
315 --
316 Begin
317 hr_utility.set_location('Entering:'||l_proc, 5);
318 begin
319 --
320 per_req_rki.after_insert
321 (p_requisition_id
322 => p_rec.requisition_id
323 ,p_business_group_id
324 => p_rec.business_group_id
325 ,p_person_id
326 => p_rec.person_id
327 ,p_date_from
328 => p_rec.date_from
329 ,p_name
330 => p_rec.name
331 ,p_comments
332 => p_rec.comments
333 ,p_date_to
334 => p_rec.date_to
335 ,p_description
336 => p_rec.description
337 ,p_request_id
338 => p_rec.request_id
339 ,p_program_application_id
340 => p_rec.program_application_id
341 ,p_program_id
342 => p_rec.program_id
343 ,p_program_update_date
344 => p_rec.program_update_date
345 ,p_attribute_category
346 => p_rec.attribute_category
347 ,p_attribute1
348 => p_rec.attribute1
349 ,p_attribute2
350 => p_rec.attribute2
351 ,p_attribute3
352 => p_rec.attribute3
353 ,p_attribute4
354 => p_rec.attribute4
355 ,p_attribute5
356 => p_rec.attribute5
357 ,p_attribute6
358 => p_rec.attribute6
359 ,p_attribute7
360 => p_rec.attribute7
361 ,p_attribute8
362 => p_rec.attribute8
363 ,p_attribute9
364 => p_rec.attribute9
365 ,p_attribute10
366 => p_rec.attribute10
367 ,p_attribute11
368 => p_rec.attribute11
369 ,p_attribute12
370 => p_rec.attribute12
371 ,p_attribute13
372 => p_rec.attribute13
373 ,p_attribute14
374 => p_rec.attribute14
375 ,p_attribute15
376 => p_rec.attribute15
377 ,p_attribute16
378 => p_rec.attribute16
379 ,p_attribute17
380 => p_rec.attribute17
381 ,p_attribute18
382 => p_rec.attribute18
383 ,p_attribute19
384 => p_rec.attribute19
385 ,p_attribute20
386 => p_rec.attribute20
387 ,p_object_version_number
388 => p_rec.object_version_number
389 );
390 --
391 exception
392 --
393 when hr_api.cannot_find_prog_unit then
394 --
395 hr_api.cannot_find_prog_unit_error
396 (p_module_name => 'PER_REQUISITIONS'
397 ,p_hook_type => 'AI');
398 --
399 end;
400 --
401 hr_utility.set_location(' Leaving:'||l_proc, 10);
402 End post_insert;
403 --
404 -- ----------------------------------------------------------------------------
405 -- |---------------------------------< ins >----------------------------------|
406 -- ----------------------------------------------------------------------------
407 Procedure ins
408 (p_rec in out nocopy per_req_shd.g_rec_type
409 ) is
410 --
411 l_proc varchar2(72) := g_package||'ins';
412 --
413 Begin
414 hr_utility.set_location('Entering:'||l_proc, 5);
415 --
416 -- Call the supporting insert validate operations
417 --
418 per_req_bus.insert_validate
419 (p_rec
420 );
421 --
422 -- Call the supporting pre-insert operation
423 --
424 per_req_ins.pre_insert(p_rec);
425 --
426 -- Insert the row
427 --
428 per_req_ins.insert_dml(p_rec);
429 --
430 -- Call the supporting post-insert operation
431 --
432 per_req_ins.post_insert
433 (p_rec
434 );
435 --
436 hr_utility.set_location('Leaving:'||l_proc, 20);
437 end ins;
438 --
439 -- ----------------------------------------------------------------------------
440 -- |---------------------------------< ins >----------------------------------|
441 -- ----------------------------------------------------------------------------
442 Procedure ins
443 (p_business_group_id in number
444 ,p_date_from in date
445 ,p_name in varchar2
446 ,p_person_id in number default null
447 ,p_comments in varchar2 default null
448 ,p_date_to in date default null
449 ,p_description in varchar2 default null
450 ,p_request_id in number default null
451 ,p_program_application_id in number default null
452 ,p_program_id in number default null
453 ,p_program_update_date in date default null
454 ,p_attribute_category in varchar2 default null
455 ,p_attribute1 in varchar2 default null
456 ,p_attribute2 in varchar2 default null
457 ,p_attribute3 in varchar2 default null
458 ,p_attribute4 in varchar2 default null
459 ,p_attribute5 in varchar2 default null
460 ,p_attribute6 in varchar2 default null
461 ,p_attribute7 in varchar2 default null
462 ,p_attribute8 in varchar2 default null
463 ,p_attribute9 in varchar2 default null
464 ,p_attribute10 in varchar2 default null
465 ,p_attribute11 in varchar2 default null
466 ,p_attribute12 in varchar2 default null
467 ,p_attribute13 in varchar2 default null
468 ,p_attribute14 in varchar2 default null
469 ,p_attribute15 in varchar2 default null
470 ,p_attribute16 in varchar2 default null
471 ,p_attribute17 in varchar2 default null
472 ,p_attribute18 in varchar2 default null
473 ,p_attribute19 in varchar2 default null
474 ,p_attribute20 in varchar2 default null
475 ,p_requisition_id out nocopy number
476 ,p_object_version_number out nocopy number
477 ) is
478 --
479 l_rec per_req_shd.g_rec_type;
480 l_proc varchar2(72) := g_package||'ins';
481 --
482 Begin
483 hr_utility.set_location('Entering:'||l_proc, 5);
484 --
485 -- Call conversion function to turn arguments into the
486 -- p_rec structure.
487 --
488 l_rec :=
489 per_req_shd.convert_args
490 (null
491 ,p_business_group_id
492 ,p_person_id
493 ,p_date_from
494 ,p_name
495 ,p_comments
496 ,p_date_to
497 ,p_description
498 ,p_request_id
499 ,p_program_application_id
500 ,p_program_id
501 ,p_program_update_date
502 ,p_attribute_category
503 ,p_attribute1
504 ,p_attribute2
505 ,p_attribute3
506 ,p_attribute4
507 ,p_attribute5
508 ,p_attribute6
509 ,p_attribute7
510 ,p_attribute8
511 ,p_attribute9
512 ,p_attribute10
513 ,p_attribute11
514 ,p_attribute12
515 ,p_attribute13
516 ,p_attribute14
517 ,p_attribute15
518 ,p_attribute16
519 ,p_attribute17
520 ,p_attribute18
521 ,p_attribute19
522 ,p_attribute20
523 ,null
524 );
525 --
526 -- Having converted the arguments into the per_req_rec
527 -- plsql record structure we call the corresponding record business process.
528 --
529 per_req_ins.ins
530 (l_rec
531 );
532 --
533 -- As the primary key argument(s)
534 -- are specified as an OUT's we must set these values.
535 --
536 p_requisition_id := l_rec.requisition_id;
537 p_object_version_number := l_rec.object_version_number;
538 --
539 hr_utility.set_location(' Leaving:'||l_proc, 10);
540 End ins;
541 --
542 end per_req_ins;