DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_UC_JNT_ADM_INST_PKG

Source


1 PACKAGE BODY igs_uc_jnt_adm_inst_pkg AS
2 /* $Header: IGSXI40B.pls 115.3 2003/02/28 07:51:23 bayadav noship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_uc_jnt_adm_inst%ROWTYPE;
6   new_references igs_uc_jnt_adm_inst%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2,
11     x_child_inst                        IN     VARCHAR2,
12     x_parent_inst1                      IN     VARCHAR2,
13     x_parent_inst2                      IN     VARCHAR2,
14     x_parent_inst3                      IN     VARCHAR2,
15     x_parent_inst4                      IN     VARCHAR2,
16     x_parent_inst5                      IN     VARCHAR2,
17     x_creation_date                     IN     DATE,
18     x_created_by                        IN     NUMBER,
19     x_last_update_date                  IN     DATE,
20     x_last_updated_by                   IN     NUMBER,
21     x_last_update_login                 IN     NUMBER
22   ) AS
23   /*
24   ||  Created By : [email protected]
25   ||  Created On : 17-SEP-2002
26   ||  Purpose : Initialises the Old and New references for the columns of the table.
27   ||  Known limitations, enhancements or remarks :
28   ||  Change History :
29   ||  Who             When            What
30   ||  (reverse chronological order - newest change first)
31   */
32 
33     CURSOR cur_old_ref_values IS
34       SELECT   *
35       FROM     igs_uc_jnt_adm_inst
36       WHERE    rowid = x_rowid;
37 
38   BEGIN
39 
40     l_rowid := x_rowid;
41 
42     -- Code for setting the Old and New Reference Values.
43     -- Populate Old Values.
44     OPEN cur_old_ref_values;
45     FETCH cur_old_ref_values INTO old_references;
46     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
47       CLOSE cur_old_ref_values;
48       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
49       igs_ge_msg_stack.add;
50       app_exception.raise_exception;
51       RETURN;
52     END IF;
53     CLOSE cur_old_ref_values;
54 
55     -- Populate New Values.
56     new_references.child_inst                        := x_child_inst;
57     new_references.parent_inst1                      := x_parent_inst1;
58     new_references.parent_inst2                      := x_parent_inst2;
59     new_references.parent_inst3                      := x_parent_inst3;
60     new_references.parent_inst4                      := x_parent_inst4;
61     new_references.parent_inst5                      := x_parent_inst5;
62 
63     IF (p_action = 'UPDATE') THEN
64       new_references.creation_date                   := old_references.creation_date;
65       new_references.created_by                      := old_references.created_by;
66     ELSE
67       new_references.creation_date                   := x_creation_date;
68       new_references.created_by                      := x_created_by;
69     END IF;
70 
71     new_references.last_update_date                  := x_last_update_date;
72     new_references.last_updated_by                   := x_last_updated_by;
73     new_references.last_update_login                 := x_last_update_login;
74 
75   END set_column_values;
76 
77 
78   FUNCTION get_pk_for_validation (
79     x_child_inst                        IN     VARCHAR2
80   ) RETURN BOOLEAN AS
81   /*
82   ||  Created By : [email protected]
83   ||  Created On : 17-SEP-2002
84   ||  Purpose : Validates the Primary Key of the table.
85   ||  Known limitations, enhancements or remarks :
86   ||  Change History :
87   ||  Who             When            What
88   ||  (reverse chronological order - newest change first)
89   */
90     CURSOR cur_rowid IS
91       SELECT   rowid
92       FROM     igs_uc_jnt_adm_inst
93       WHERE    child_inst = x_child_inst ;
94 
95     lv_rowid cur_rowid%RowType;
96 
97   BEGIN
98 
99     OPEN cur_rowid;
100     FETCH cur_rowid INTO lv_rowid;
101     IF (cur_rowid%FOUND) THEN
102       CLOSE cur_rowid;
103       RETURN(TRUE);
104     ELSE
105       CLOSE cur_rowid;
106       RETURN(FALSE);
107     END IF;
108 
109   END get_pk_for_validation;
110 
111 
112   PROCEDURE before_dml (
113     p_action                            IN     VARCHAR2,
114     x_rowid                             IN     VARCHAR2,
115     x_child_inst                        IN     VARCHAR2,
116     x_parent_inst1                      IN     VARCHAR2,
117     x_parent_inst2                      IN     VARCHAR2,
118     x_parent_inst3                      IN     VARCHAR2,
119     x_parent_inst4                      IN     VARCHAR2,
120     x_parent_inst5                      IN     VARCHAR2,
121     x_creation_date                     IN     DATE,
122     x_created_by                        IN     NUMBER,
123     x_last_update_date                  IN     DATE,
124     x_last_updated_by                   IN     NUMBER,
125     x_last_update_login                 IN     NUMBER
126   ) AS
127   /*
128   ||  Created By : [email protected]
129   ||  Created On : 17-SEP-2002
130   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
131   ||            Trigger Handlers for the table, before any DML operation.
132   ||  Known limitations, enhancements or remarks :
133   ||  Change History :
134   ||  Who             When            What
135   ||  (reverse chronological order - newest change first)
136   */
137   BEGIN
138 
139     set_column_values (
140       p_action,
141       x_rowid,
142       x_child_inst,
143       x_parent_inst1,
144       x_parent_inst2,
145       x_parent_inst3,
146       x_parent_inst4,
147       x_parent_inst5,
148       x_creation_date,
149       x_created_by,
150       x_last_update_date,
151       x_last_updated_by,
152       x_last_update_login
153     );
154 
155     IF (p_action = 'INSERT') THEN
156       -- Call all the procedures related to Before Insert.
157       IF ( get_pk_for_validation(
158              new_references.child_inst
159            )
160          ) THEN
161         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
162         igs_ge_msg_stack.add;
163         app_exception.raise_exception;
164       END IF;
165     ELSIF (p_action = 'VALIDATE_INSERT') THEN
166       -- Call all the procedures related to Before Insert.
167       IF ( get_pk_for_validation (
168              new_references.child_inst
169            )
170          ) THEN
171         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
172         igs_ge_msg_stack.add;
173         app_exception.raise_exception;
174       END IF;
175     END IF;
176 
177   END before_dml;
178 
179 
180   PROCEDURE insert_row (
181     x_rowid                             IN OUT NOCOPY VARCHAR2,
182     x_child_inst                        IN     VARCHAR2,
183     x_parent_inst1                      IN     VARCHAR2,
184     x_parent_inst2                      IN     VARCHAR2,
185     x_parent_inst3                      IN     VARCHAR2,
186     x_parent_inst4                      IN     VARCHAR2,
187     x_parent_inst5                      IN     VARCHAR2,
188     x_mode                              IN     VARCHAR2
189   ) AS
190   /*
191   ||  Created By : [email protected]
192   ||  Created On : 17-SEP-2002
193   ||  Purpose : Handles the INSERT DML logic for the table.
194   ||  Known limitations, enhancements or remarks :
195   ||  Change History :
196   ||  Who             When            What
197   ||  (reverse chronological order - newest change first)
198   */
199 
200     x_last_update_date           DATE;
201     x_last_updated_by            NUMBER;
202     x_last_update_login          NUMBER;
203 
204   BEGIN
205 
206     x_last_update_date := SYSDATE;
207     IF (x_mode = 'I') THEN
208       x_last_updated_by := 1;
209       x_last_update_login := 0;
210     ELSIF (x_mode = 'R') THEN
211       x_last_updated_by := fnd_global.user_id;
212       IF (x_last_updated_by IS NULL) THEN
213         x_last_updated_by := -1;
214       END IF;
215       x_last_update_login := fnd_global.login_id;
216       IF (x_last_update_login IS NULL) THEN
217         x_last_update_login := -1;
218       END IF;
219     ELSE
220       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
221       igs_ge_msg_stack.add;
222       app_exception.raise_exception;
223     END IF;
224 
225     before_dml(
226       p_action                            => 'INSERT',
227       x_rowid                             => x_rowid,
228       x_child_inst                        => x_child_inst,
229       x_parent_inst1                      => x_parent_inst1,
230       x_parent_inst2                      => x_parent_inst2,
231       x_parent_inst3                      => x_parent_inst3,
232       x_parent_inst4                      => x_parent_inst4,
233       x_parent_inst5                      => x_parent_inst5,
234       x_creation_date                     => x_last_update_date,
235       x_created_by                        => x_last_updated_by,
236       x_last_update_date                  => x_last_update_date,
237       x_last_updated_by                   => x_last_updated_by,
238       x_last_update_login                 => x_last_update_login
239     );
240 
241     INSERT INTO igs_uc_jnt_adm_inst (
242       child_inst,
243       parent_inst1,
244       parent_inst2,
245       parent_inst3,
246       parent_inst4,
247       parent_inst5,
248       creation_date,
249       created_by,
250       last_update_date,
251       last_updated_by,
252       last_update_login
253     ) VALUES (
254       new_references.child_inst,
255       new_references.parent_inst1,
256       new_references.parent_inst2,
257       new_references.parent_inst3,
258       new_references.parent_inst4,
259       new_references.parent_inst5,
260       x_last_update_date,
261       x_last_updated_by,
262       x_last_update_date,
263       x_last_updated_by,
264       x_last_update_login
265     ) RETURNING ROWID INTO x_rowid;
266 
267   END insert_row;
268 
269 
270   PROCEDURE lock_row (
271     x_rowid                             IN     VARCHAR2,
272     x_child_inst                        IN     VARCHAR2,
273     x_parent_inst1                      IN     VARCHAR2,
274     x_parent_inst2                      IN     VARCHAR2,
275     x_parent_inst3                      IN     VARCHAR2,
276     x_parent_inst4                      IN     VARCHAR2,
277     x_parent_inst5                      IN     VARCHAR2
278   ) AS
279   /*
280   ||  Created By : [email protected]
281   ||  Created On : 17-SEP-2002
282   ||  Purpose : Handles the LOCK mechanism for the table.
283   ||  Known limitations, enhancements or remarks :
284   ||  Change History :
285   ||  Who             When            What
286   ||  (reverse chronological order - newest change first)
287   */
288     CURSOR c1 IS
289       SELECT
290         parent_inst1,
291         parent_inst2,
292         parent_inst3,
293         parent_inst4,
294         parent_inst5
295       FROM  igs_uc_jnt_adm_inst
296       WHERE rowid = x_rowid
297       FOR UPDATE NOWAIT;
298 
299     tlinfo c1%ROWTYPE;
300 
301   BEGIN
302 
303     OPEN c1;
304     FETCH c1 INTO tlinfo;
305     IF (c1%notfound) THEN
306       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
307       igs_ge_msg_stack.add;
308       CLOSE c1;
309       app_exception.raise_exception;
310       RETURN;
311     END IF;
312     CLOSE c1;
313 
314     IF (
315         (tlinfo.parent_inst1 = x_parent_inst1)
316         AND ((tlinfo.parent_inst2 = x_parent_inst2) OR ((tlinfo.parent_inst2 IS NULL) AND (X_parent_inst2 IS NULL)))
320        ) THEN
317         AND ((tlinfo.parent_inst3 = x_parent_inst3) OR ((tlinfo.parent_inst3 IS NULL) AND (X_parent_inst3 IS NULL)))
318         AND ((tlinfo.parent_inst4 = x_parent_inst4) OR ((tlinfo.parent_inst4 IS NULL) AND (X_parent_inst4 IS NULL)))
319         AND ((tlinfo.parent_inst5 = x_parent_inst5) OR ((tlinfo.parent_inst5 IS NULL) AND (X_parent_inst5 IS NULL)))
321       NULL;
322     ELSE
323       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
324       igs_ge_msg_stack.add;
325       app_exception.raise_exception;
326     END IF;
327 
328     RETURN;
329 
330   END lock_row;
331 
332 
333   PROCEDURE update_row (
334     x_rowid                             IN     VARCHAR2,
335     x_child_inst                        IN     VARCHAR2,
336     x_parent_inst1                      IN     VARCHAR2,
337     x_parent_inst2                      IN     VARCHAR2,
338     x_parent_inst3                      IN     VARCHAR2,
339     x_parent_inst4                      IN     VARCHAR2,
340     x_parent_inst5                      IN     VARCHAR2,
341     x_mode                              IN     VARCHAR2
342   ) AS
343   /*
344   ||  Created By : [email protected]
345   ||  Created On : 17-SEP-2002
346   ||  Purpose : Handles the UPDATE DML logic for the table.
347   ||  Known limitations, enhancements or remarks :
348   ||  Change History :
349   ||  Who             When            What
350   ||  (reverse chronological order - newest change first)
351   */
352     x_last_update_date           DATE ;
353     x_last_updated_by            NUMBER;
354     x_last_update_login          NUMBER;
355 
356   BEGIN
357 
358     x_last_update_date := SYSDATE;
359     IF (X_MODE = 'I') THEN
360       x_last_updated_by := 1;
361       x_last_update_login := 0;
362     ELSIF (x_mode = 'R') THEN
363       x_last_updated_by := fnd_global.user_id;
364       IF x_last_updated_by IS NULL THEN
365         x_last_updated_by := -1;
366       END IF;
367       x_last_update_login := fnd_global.login_id;
368       IF (x_last_update_login IS NULL) THEN
369         x_last_update_login := -1;
370       END IF;
371     ELSE
372       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
373       igs_ge_msg_stack.add;
374       app_exception.raise_exception;
375     END IF;
376 
377     before_dml(
378       p_action                            => 'UPDATE',
379       x_rowid                             => x_rowid,
380       x_child_inst                        => x_child_inst,
381       x_parent_inst1                      => x_parent_inst1,
382       x_parent_inst2                      => x_parent_inst2,
383       x_parent_inst3                      => x_parent_inst3,
384       x_parent_inst4                      => x_parent_inst4,
385       x_parent_inst5                      => x_parent_inst5,
386       x_creation_date                     => x_last_update_date,
387       x_created_by                        => x_last_updated_by,
388       x_last_update_date                  => x_last_update_date,
389       x_last_updated_by                   => x_last_updated_by,
390       x_last_update_login                 => x_last_update_login
391     );
392 
393     UPDATE igs_uc_jnt_adm_inst
394       SET
395         parent_inst1                      = new_references.parent_inst1,
396         parent_inst2                      = new_references.parent_inst2,
397         parent_inst3                      = new_references.parent_inst3,
398         parent_inst4                      = new_references.parent_inst4,
399         parent_inst5                      = new_references.parent_inst5,
400         last_update_date                  = x_last_update_date,
401         last_updated_by                   = x_last_updated_by,
402         last_update_login                 = x_last_update_login
403       WHERE rowid = x_rowid;
404 
405     IF (SQL%NOTFOUND) THEN
406       RAISE NO_DATA_FOUND;
407     END IF;
408 
409   END update_row;
410 
411 
412   PROCEDURE add_row (
413     x_rowid                             IN OUT NOCOPY VARCHAR2,
414     x_child_inst                        IN     VARCHAR2,
415     x_parent_inst1                      IN     VARCHAR2,
416     x_parent_inst2                      IN     VARCHAR2,
417     x_parent_inst3                      IN     VARCHAR2,
418     x_parent_inst4                      IN     VARCHAR2,
419     x_parent_inst5                      IN     VARCHAR2,
420     x_mode                              IN     VARCHAR2
421   ) AS
422   /*
423   ||  Created By : [email protected]
424   ||  Created On : 17-SEP-2002
425   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
426   ||  Known limitations, enhancements or remarks :
427   ||  Change History :
428   ||  Who             When            What
429   ||  (reverse chronological order - newest change first)
430   */
431     CURSOR c1 IS
432       SELECT   rowid
433       FROM     igs_uc_jnt_adm_inst
434       WHERE    child_inst                        = x_child_inst;
435 
436   BEGIN
437 
438     OPEN c1;
439     FETCH c1 INTO x_rowid;
440     IF (c1%NOTFOUND) THEN
441       CLOSE c1;
442 
443       insert_row (
444         x_rowid,
445         x_child_inst,
446         x_parent_inst1,
447         x_parent_inst2,
448         x_parent_inst3,
449         x_parent_inst4,
450         x_parent_inst5,
451         x_mode
452       );
453       RETURN;
454     END IF;
455     CLOSE c1;
456 
457     update_row (
458       x_rowid,
459       x_child_inst,
460       x_parent_inst1,
461       x_parent_inst2,
462       x_parent_inst3,
463       x_parent_inst4,
464       x_parent_inst5,
465       x_mode
466     );
467 
468   END add_row;
469 
470 
471   PROCEDURE delete_row (
472     x_rowid IN VARCHAR2
473   ) AS
474   /*
475   ||  Created By : [email protected]
476   ||  Created On : 17-SEP-2002
477   ||  Purpose : Handles the DELETE DML logic for the table.
478   ||  Known limitations, enhancements or remarks :
479   ||  Change History :
480   ||  Who             When            What
481   ||  (reverse chronological order - newest change first)
482   */
483   BEGIN
484 
485     before_dml (
486       p_action => 'DELETE',
487       x_rowid => x_rowid
488     );
489 
490     DELETE FROM igs_uc_jnt_adm_inst
491     WHERE rowid = x_rowid;
492 
493     IF (SQL%NOTFOUND) THEN
494       RAISE NO_DATA_FOUND;
495     END IF;
496 
497   END delete_row;
498 
499 
500 END igs_uc_jnt_adm_inst_pkg;