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