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