[Home] [Help]
PACKAGE BODY: APPS.IGS_EN_ELGB_OVR_STEP_PKG
Source
1 PACKAGE BODY igs_en_elgb_ovr_step_pkg AS
2 /* $Header: IGSEI52B.pls 115.27 2003/06/03 12:58:28 savenkat ship $ */
3
4 l_rowid VARCHAR2(25);
5 old_references igs_en_elgb_ovr_step%ROWTYPE;
6 new_references igs_en_elgb_ovr_step%ROWTYPE;
7
8 PROCEDURE set_column_values (
9 p_action IN VARCHAR2,
10 x_rowid IN VARCHAR2 ,
11 x_elgb_ovr_step_id IN NUMBER ,
12 x_elgb_override_id IN NUMBER ,
13 x_step_override_type IN VARCHAR2 ,
14 x_step_override_dt IN DATE ,
15 x_step_override_limit IN NUMBER ,
16 x_creation_date IN DATE ,
17 x_created_by IN NUMBER ,
18 x_last_update_date IN DATE ,
19 x_last_updated_by IN NUMBER ,
20 x_last_update_login IN NUMBER
21 ) AS
22 /*
23 || Created By : [email protected]
24 || Created On : 29-JUN-2001
25 || Purpose : Initialises the Old and New references for the columns of the table.
26 || Known limitations, enhancements or remarks :
27 || Change History :
28 || Who When What
29 || (reverse chronological order - newest change first)
30 */
31
32 CURSOR cur_old_ref_values IS
33 SELECT *
34 FROM IGS_EN_ELGB_OVR_STEP
35 WHERE rowid = x_rowid;
36
37 BEGIN
38
39 l_rowid := x_rowid;
40
41 -- Code for setting the Old and New Reference Values.
42 -- Populate Old Values.
43 OPEN cur_old_ref_values;
44 FETCH cur_old_ref_values INTO old_references;
45 IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
46 CLOSE cur_old_ref_values;
47 fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
48 igs_ge_msg_stack.add;
49 app_exception.raise_exception;
50 RETURN;
51 END IF;
52 CLOSE cur_old_ref_values;
53
54 -- Populate New Values.
55 new_references.elgb_ovr_step_id := x_elgb_ovr_step_id;
56 new_references.elgb_override_id := x_elgb_override_id;
57 new_references.step_override_type := x_step_override_type;
58 new_references.step_override_dt := x_step_override_dt;
59 new_references.step_override_limit := x_step_override_limit;
60
61 IF (p_action = 'UPDATE') THEN
62 new_references.creation_date := old_references.creation_date;
63 new_references.created_by := old_references.created_by;
64 ELSE
65 new_references.creation_date := x_creation_date;
66 new_references.created_by := x_created_by;
67 END IF;
68
69 new_references.last_update_date := x_last_update_date;
70 new_references.last_updated_by := x_last_updated_by;
71 new_references.last_update_login := x_last_update_login;
72
73 END set_column_values;
74
75
76 PROCEDURE check_uniqueness AS
77 /*
78 || Created By : [email protected]
79 || Created On : 29-JUN-2001
80 || Purpose : Handles the Unique Constraint logic defined for the columns.
81 || Known limitations, enhancements or remarks :
82 || Change History :
83 || Who When What
84 || (reverse chronological order - newest change first)
85 */
86 BEGIN
87
88 IF ( get_uk_for_validation (
89 new_references.step_override_type,
90 new_references.elgb_override_id
91 )
92 ) THEN
93 fnd_message.set_name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
94 igs_ge_msg_stack.add;
95 app_exception.raise_exception;
96 END IF;
97
98 END check_uniqueness;
99
100
101 PROCEDURE check_parent_existance AS
102 /*
103 || Created By : [email protected]
104 || Created On : 29-JUN-2001
105 || Purpose : Checks for the existance of Parent records.
106 || Known limitations, enhancements or remarks :
107 || Change History :
108 || Who When What
109 || (reverse chronological order - newest change first)
110 */
111 BEGIN
112
113 IF (((old_references.elgb_override_id = new_references.elgb_override_id)) OR
114 ((new_references.elgb_override_id IS NULL))) THEN
115 NULL;
116 ELSIF NOT igs_en_elgb_ovr_pkg.get_pk_for_validation (
117 new_references.elgb_override_id
118 ) THEN
119 fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
120 igs_ge_msg_stack.add;
121 app_exception.raise_exception;
122 END IF;
123
124 END check_parent_existance;
125
126 PROCEDURE Check_Child_Existance AS
127 BEGIN
128
129 IGS_EN_ELGB_OVR_UOO_PKG.GET_FK_IGS_EN_ELGB_OVR_STEP(
130 old_references.elgb_ovr_step_id );
131
132 END Check_Child_Existance;
133
134 FUNCTION get_pk_for_validation (
135 x_elgb_ovr_step_id IN NUMBER
136 ) RETURN BOOLEAN AS
137 /*
138 || Created By : [email protected]
139 || Created On : 29-JUN-2001
140 || Purpose : Validates the Primary Key of the table.
141 || Known limitations, enhancements or remarks :
142 || Change History :
143 || Who When What
144 || (reverse chronological order - newest change first)
145 */
146 CURSOR cur_rowid IS
147 SELECT rowid
148 FROM igs_en_elgb_ovr_step
149 WHERE elgb_ovr_step_id = x_elgb_ovr_step_id
150 FOR UPDATE NOWAIT;
151
152 lv_rowid cur_rowid%RowType;
153
154 BEGIN
155
156 OPEN cur_rowid;
157 FETCH cur_rowid INTO lv_rowid;
158 IF (cur_rowid%FOUND) THEN
159 CLOSE cur_rowid;
160 RETURN(TRUE);
161 ELSE
162 CLOSE cur_rowid;
163 RETURN(FALSE);
164 END IF;
165
166 END get_pk_for_validation;
167
168
169 FUNCTION get_uk_for_validation (
170 x_step_override_type IN VARCHAR2,
171 x_elgb_override_id IN NUMBER
172 ) RETURN BOOLEAN AS
173 /*
174 || Created By : [email protected]
175 || Created On : 29-JUN-2001
176 || Purpose : Validates the Unique Keys of the table.
177 || Known limitations, enhancements or remarks :
178 || Change History :
179 || Who When What
180 || smadathi 06-JUL-2001 Handled Null columns which is a part of unique index
181 || (reverse chronological order - newest change first)
182 */
183 CURSOR cur_rowid IS
184 SELECT rowid
185 FROM igs_en_elgb_ovr_step
186 WHERE step_override_type = x_step_override_type
187 AND elgb_override_id = x_elgb_override_id
188 AND ((l_rowid IS NULL) OR (rowid <> l_rowid));
189
190 lv_rowid cur_rowid%RowType;
191
192 BEGIN
193
194 OPEN cur_rowid;
195 FETCH cur_rowid INTO lv_rowid;
196 IF (cur_rowid%FOUND) THEN
197 CLOSE cur_rowid;
198 RETURN (true);
199 ELSE
200 CLOSE cur_rowid;
201 RETURN(FALSE);
202 END IF;
203
204 END get_uk_for_validation ;
205
206
207 PROCEDURE get_fk_igs_en_elgb_ovr (
208 x_elgb_override_id IN NUMBER
209 ) AS
210 /*
211 || Created By : [email protected]
212 || Created On : 29-JUN-2001
213 || Purpose : Validates the Foreign Keys for the table.
214 || Known limitations, enhancements or remarks :
215 || Change History :
216 || Who When What
217 || (reverse chronological order - newest change first)
218 */
219 CURSOR cur_rowid IS
220 SELECT rowid
221 FROM igs_en_elgb_ovr_step
222 WHERE ((elgb_override_id = x_elgb_override_id));
223
224 lv_rowid cur_rowid%RowType;
225
226 BEGIN
227
228 OPEN cur_rowid;
229 FETCH cur_rowid INTO lv_rowid;
230 IF (cur_rowid%FOUND) THEN
231 CLOSE cur_rowid;
232 fnd_message.set_name ('IGS', 'IGS_EN_EOS_EOA_FK');
233 igs_ge_msg_stack.add;
234 app_exception.raise_exception;
235 RETURN;
236 END IF;
237 CLOSE cur_rowid;
238
239 END get_fk_igs_en_elgb_ovr;
240
241
242 PROCEDURE before_dml (
243 p_action IN VARCHAR2,
244 x_rowid IN VARCHAR2 ,
245 x_elgb_ovr_step_id IN NUMBER ,
246 x_elgb_override_id IN NUMBER ,
247 x_step_override_type IN VARCHAR2 ,
248 x_step_override_dt IN DATE ,
249 x_step_override_limit IN NUMBER ,
250 x_creation_date IN DATE ,
251 x_created_by IN NUMBER ,
252 x_last_update_date IN DATE ,
253 x_last_updated_by IN NUMBER ,
254 x_last_update_login IN NUMBER
255 ) AS
256 /*
257 || Created By : [email protected]
258 || Created On : 29-JUN-2001
259 || Purpose : Initialises the columns, Checks Constraints, Calls the
260 || Trigger Handlers for the table, before any DML operation.
261 || Known limitations, enhancements or remarks :
262 || Change History :
263 || Who When What
264 || (reverse chronological order - newest change first)
265 */
266 BEGIN
267
268 set_column_values (
269 p_action,
270 x_rowid,
271 x_elgb_ovr_step_id,
272 x_elgb_override_id,
273 x_step_override_type,
274 x_step_override_dt,
275 x_step_override_limit,
276 x_creation_date,
277 x_created_by,
278 x_last_update_date,
279 x_last_updated_by,
280 x_last_update_login
281 );
282
283 IF (p_action = 'INSERT') THEN
284 -- Call all the procedures related to Before Insert.
285 IF ( get_pk_for_validation(
286 new_references.elgb_ovr_step_id
287 )
288 ) THEN
289 fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
290 igs_ge_msg_stack.add;
291 app_exception.raise_exception;
292 END IF;
293 check_uniqueness;
294 check_parent_existance;
295 Check_Child_Existance;
296 ELSIF (p_action = 'UPDATE') THEN
297 -- Call all the procedures related to Before Update.
298 check_uniqueness;
299 check_parent_existance;
300 Check_Child_Existance ;
301 ELSIF (p_action = 'VALIDATE_INSERT') THEN
302 -- Call all the procedures related to Before Insert.
303 IF ( get_pk_for_validation (
304 new_references.elgb_ovr_step_id
305 )
306 ) THEN
307 fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
308 igs_ge_msg_stack.add;
309 app_exception.raise_exception;
310 END IF;
311 check_uniqueness;
312 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
313 check_uniqueness;
314 ELSIF (p_action = 'DELETE') THEN
315 Check_Child_Existance;
316 ELSIF (p_action = 'VALIDATE_DELETE') THEN
317 Check_Child_Existance;
318 END IF;
319
320 END before_dml;
321
322
323 PROCEDURE insert_row (
324 x_rowid IN OUT NOCOPY VARCHAR2,
325 x_elgb_ovr_step_id IN OUT NOCOPY NUMBER,
326 x_elgb_override_id IN NUMBER,
327 x_step_override_type IN VARCHAR2,
328 x_step_override_dt IN DATE,
329 x_step_override_limit IN NUMBER,
330 x_mode IN VARCHAR2
331 ) AS
332 /*
333 || Created By : [email protected]
334 || Created On : 29-JUN-2001
335 || Purpose : Handles the INSERT DML logic for the table.
336 || Known limitations, enhancements or remarks :
337 || Change History :
338 || Who When What
339 || (reverse chronological order - newest change first)
340 */
341 CURSOR c IS
342 SELECT rowid
343 FROM igs_en_elgb_ovr_step
344 WHERE elgb_ovr_step_id = x_elgb_ovr_step_id;
345
346 x_last_update_date DATE;
347 x_last_updated_by NUMBER;
348 x_last_update_login NUMBER;
349 x_request_id NUMBER;
350 x_program_id NUMBER;
351 x_program_application_id NUMBER;
352 x_program_update_date DATE;
353
354 BEGIN
355
356 x_last_update_date := SYSDATE;
357 IF (x_mode = 'I') THEN
358 x_last_updated_by := 1;
359 x_last_update_login := 0;
360 ELSIF (x_mode = 'R') THEN
361 x_last_updated_by := fnd_global.user_id;
365 x_last_update_login := fnd_global.login_id;
362 IF (x_last_updated_by IS NULL) THEN
363 x_last_updated_by := -1;
364 END IF;
366 IF (x_last_update_login IS NULL) THEN
367 x_last_update_login := -1;
368 END IF;
369 x_request_id := fnd_global.conc_request_id;
370 x_program_id := fnd_global.conc_program_id;
371 x_program_application_id := fnd_global.prog_appl_id;
372
373 IF (x_request_id = -1) THEN
374 x_request_id := NULL;
375 x_program_id := NULL;
376 x_program_application_id := NULL;
377 x_program_update_date := NULL;
378 ELSE
379 x_program_update_date := SYSDATE;
380 END IF;
381 ELSE
382 fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
383 igs_ge_msg_stack.add;
384 app_exception.raise_exception;
385 END IF;
386
387 SELECT igs_en_elgb_ovr_step_s.NEXTVAL
388 INTO x_elgb_ovr_step_id
389 FROM dual;
390
391 before_dml(
392 p_action => 'INSERT',
393 x_rowid => x_rowid,
394 x_elgb_ovr_step_id => x_elgb_ovr_step_id,
395 x_elgb_override_id => x_elgb_override_id,
396 x_step_override_type => x_step_override_type,
397 x_step_override_dt => x_step_override_dt,
398 x_step_override_limit => x_step_override_limit,
399 x_creation_date => x_last_update_date,
400 x_created_by => x_last_updated_by,
401 x_last_update_date => x_last_update_date,
402 x_last_updated_by => x_last_updated_by,
403 x_last_update_login => x_last_update_login
404 );
405
406 INSERT INTO igs_en_elgb_ovr_step (
407 elgb_ovr_step_id,
408 elgb_override_id,
409 step_override_type,
410 step_override_dt,
411 step_override_limit,
412 creation_date,
413 created_by,
414 last_update_date,
415 last_updated_by,
416 last_update_login,
417 request_id,
418 program_id,
419 program_application_id,
420 program_update_date
421 ) VALUES (
422 new_references.elgb_ovr_step_id,
423 new_references.elgb_override_id,
424 new_references.step_override_type,
425 new_references.step_override_dt,
426 new_references.step_override_limit,
427 x_last_update_date,
428 x_last_updated_by,
429 x_last_update_date,
430 x_last_updated_by,
431 x_last_update_login ,
432 x_request_id,
433 x_program_id,
434 x_program_application_id,
435 x_program_update_date
436 );
437
438 OPEN c;
439 FETCH c INTO x_rowid;
440 IF (c%NOTFOUND) THEN
441 CLOSE c;
442 RAISE NO_DATA_FOUND;
443 END IF;
444 CLOSE c;
445
446 END insert_row;
447
448
449 PROCEDURE lock_row (
450 x_rowid IN VARCHAR2,
451 x_elgb_ovr_step_id IN NUMBER,
452 x_elgb_override_id IN NUMBER,
453 x_step_override_type IN VARCHAR2,
454 x_step_override_dt IN DATE,
455 x_step_override_limit IN NUMBER
456 ) AS
457 /*
458 || Created By : [email protected]
459 || Created On : 29-JUN-2001
460 || Purpose : Handles the LOCK mechanism for the table.
461 || Known limitations, enhancements or remarks :
462 || Change History :
463 || Who When What
464 || (reverse chronological order - newest change first)
465 */
466 CURSOR c1 IS
467 SELECT
468 elgb_override_id,
469 step_override_type,
470 step_override_dt,
471 step_override_limit
472 FROM igs_en_elgb_ovr_step
473 WHERE rowid = x_rowid
474 FOR UPDATE NOWAIT;
475
476 tlinfo c1%ROWTYPE;
477
478 BEGIN
479
480 OPEN c1;
481 FETCH c1 INTO tlinfo;
482 IF (c1%notfound) THEN
483 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
484 igs_ge_msg_stack.add;
485 CLOSE c1;
486 app_exception.raise_exception;
487 RETURN;
488 END IF;
489 CLOSE c1;
490
491 IF (
492 (tlinfo.elgb_override_id = x_elgb_override_id)
493 AND (tlinfo.step_override_type = x_step_override_type)
494 AND (tlinfo.step_override_dt = x_step_override_dt)
495 AND ((tlinfo.step_override_limit = x_step_override_limit)
496 OR ((tlinfo.step_override_limit IS NULL) AND (X_step_override_limit IS NULL)))
497 ) THEN
498 NULL;
499 ELSE
500 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
501 igs_ge_msg_stack.add;
502 app_exception.raise_exception;
503 END IF;
504
505 RETURN;
506
507 END lock_row;
508
509
510 PROCEDURE update_row (
514 x_step_override_type IN VARCHAR2,
511 x_rowid IN VARCHAR2,
512 x_elgb_ovr_step_id IN NUMBER,
513 x_elgb_override_id IN NUMBER,
515 x_step_override_dt IN DATE,
516 x_step_override_limit IN NUMBER,
517 x_mode IN VARCHAR2
518 ) AS
519 /*
520 || Created By : [email protected]
521 || Created On : 29-JUN-2001
522 || Purpose : Handles the UPDATE DML logic for the table.
523 || Known limitations, enhancements or remarks :
524 || Change History :
525 || Who When What
526 || (reverse chronological order - newest change first)
527 */
528 x_last_update_date DATE ;
529 x_last_updated_by NUMBER;
530 x_last_update_login NUMBER;
531 x_request_id NUMBER;
532 x_program_id NUMBER;
533 x_program_application_id NUMBER;
534 x_program_update_date DATE;
535
536 BEGIN
537
538 x_last_update_date := SYSDATE;
539 IF (X_MODE = 'I') THEN
540 x_last_updated_by := 1;
541 x_last_update_login := 0;
542 ELSIF (x_mode = 'R') THEN
543 x_last_updated_by := fnd_global.user_id;
544 IF x_last_updated_by IS NULL THEN
545 x_last_updated_by := -1;
546 END IF;
547 x_last_update_login := fnd_global.login_id;
548 IF (x_last_update_login IS NULL) THEN
549 x_last_update_login := -1;
550 END IF;
551 ELSE
552 fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
553 igs_ge_msg_stack.add;
554 app_exception.raise_exception;
555 END IF;
556
557 before_dml(
558 p_action => 'UPDATE',
559 x_rowid => x_rowid,
560 x_elgb_ovr_step_id => x_elgb_ovr_step_id,
561 x_elgb_override_id => x_elgb_override_id,
562 x_step_override_type => x_step_override_type,
563 x_step_override_dt => x_step_override_dt,
564 x_step_override_limit => x_step_override_limit,
565 x_creation_date => x_last_update_date,
566 x_created_by => x_last_updated_by,
567 x_last_update_date => x_last_update_date,
568 x_last_updated_by => x_last_updated_by,
569 x_last_update_login => x_last_update_login
570 );
571
572 IF (x_mode = 'R') THEN
573 x_request_id := fnd_global.conc_request_id;
574 x_program_id := fnd_global.conc_program_id;
575 x_program_application_id := fnd_global.prog_appl_id;
576 IF (x_request_id = -1) THEN
577 x_request_id := old_references.request_id;
578 x_program_id := old_references.program_id;
579 x_program_application_id := old_references.program_application_id;
580 x_program_update_date := old_references.program_update_date;
581 ELSE
582 x_program_update_date := SYSDATE;
583 END IF;
584 END IF;
585
586 UPDATE igs_en_elgb_ovr_step
587 SET
588 elgb_override_id = new_references.elgb_override_id,
589 step_override_type = new_references.step_override_type,
590 step_override_dt = new_references.step_override_dt,
591 step_override_limit = new_references.step_override_limit,
592 last_update_date = x_last_update_date,
593 last_updated_by = x_last_updated_by,
594 last_update_login = x_last_update_login ,
595 request_id = x_request_id,
596 program_id = x_program_id,
597 program_application_id = x_program_application_id,
598 program_update_date = x_program_update_date
599 WHERE rowid = x_rowid;
600
601 IF (SQL%NOTFOUND) THEN
602 RAISE NO_DATA_FOUND;
603 END IF;
604
605 END update_row;
606
607 PROCEDURE add_row (
608 x_rowid IN OUT NOCOPY VARCHAR2,
609 x_elgb_ovr_step_id IN OUT NOCOPY NUMBER,
610 x_elgb_override_id IN NUMBER,
611 x_step_override_type IN VARCHAR2,
612 x_step_override_dt IN DATE,
613 x_step_override_limit IN NUMBER,
614 x_mode IN VARCHAR2
615 ) AS
616 /*
617 || Created By : [email protected]
618 || Created On : 29-JUN-2001
619 || Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
620 || Known limitations, enhancements or remarks :
621 || Change History :
622 || Who When What
623 || (reverse chronological order - newest change first)
624 */
625 CURSOR c1 IS
626 SELECT rowid
627 FROM igs_en_elgb_ovr_step
628 WHERE elgb_ovr_step_id = x_elgb_ovr_step_id;
629
630 BEGIN
631
632 OPEN c1;
633 FETCH c1 INTO x_rowid;
637 insert_row (
634 IF (c1%NOTFOUND) THEN
635 CLOSE c1;
636
638 x_rowid,
639 x_elgb_ovr_step_id,
640 x_elgb_override_id,
641 x_step_override_type,
642 x_step_override_dt,
643 x_step_override_limit,
644 x_mode
645 );
646 RETURN;
647 END IF;
648 CLOSE c1;
649
650 update_row (
651 x_rowid,
652 x_elgb_ovr_step_id,
653 x_elgb_override_id,
654 x_step_override_type,
655 x_step_override_dt,
656 x_step_override_limit,
657 x_mode
658 );
659
660 END add_row;
661
662
663 PROCEDURE delete_row (
664 x_rowid IN VARCHAR2
665 ) AS
666 /*
667 || Created By : [email protected]
668 || Created On : 29-JUN-2001
669 || Purpose : Handles the DELETE DML logic for the table.
670 || Known limitations, enhancements or remarks :
671 || Change History :
672 || Who When What
673 || (reverse chronological order - newest change first)
674 */
675 BEGIN
676
677 before_dml (
678 p_action => 'DELETE',
679 x_rowid => x_rowid
680 );
681
682 DELETE FROM igs_en_elgb_ovr_step
683 WHERE rowid = x_rowid;
684
685 IF (SQL%NOTFOUND) THEN
686 RAISE NO_DATA_FOUND;
687 END IF;
688
689 END delete_row;
690
691
692 END igs_en_elgb_ovr_step_pkg;