DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_UC_REF_AWRDBDY_PKG

Source


1 PACKAGE BODY igs_uc_ref_awrdbdy_pkg AS
2 /* $Header: IGSXI25B.pls 115.5 2003/02/28 07:48:41 bayadav noship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_uc_ref_awrdbdy%ROWTYPE;
6   new_references igs_uc_ref_awrdbdy%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2,
11     x_year                              IN     NUMBER  ,
12     x_sitting                           IN     VARCHAR2,
13     x_awarding_body                     IN     VARCHAR2,
14     x_body_name                         IN     VARCHAR2,
15     x_body_abbrev                       IN     VARCHAR2,
16     x_imported                          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 : rgopalan
25   ||  Created On : 01-OCT-2001
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_REF_AWRDBDY
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.year                              := x_year;
57     new_references.sitting                           := x_sitting;
58     new_references.awarding_body                     := x_awarding_body;
59     new_references.body_name                         := x_body_name;
60     new_references.body_abbrev                       := x_body_abbrev;
61     new_references.imported                          := x_imported;
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   PROCEDURE check_child_existance IS
79   /*
80   ||  Created By : rgopalan
81   ||  Created On : 01-OCT-2001
82   ||  Purpose : Checks for the existance of Child records.
83   ||  Known limitations, enhancements or remarks :
84   ||  Change History :
85   ||  Who             When            What
86   ||  (reverse chronological order - newest change first)
87   */
88   BEGIN
89 
90     igs_uc_com_ebl_subj_pkg.get_fk_igs_uc_ref_awrdbdy (
91       old_references.awarding_body,
92       old_references.sitting,
93       old_references.year
94     );
95 
96   END check_child_existance;
97 
98 
99   FUNCTION get_pk_for_validation (
100     x_awarding_body                     IN     VARCHAR2,
101     x_sitting                           IN     VARCHAR2,
102     x_year                              IN     NUMBER
103   ) RETURN BOOLEAN AS
104   /*
105   ||  Created By : rgopalan
106   ||  Created On : 01-OCT-2001
107   ||  Purpose : Validates the Primary Key of the table.
108   ||  Known limitations, enhancements or remarks :
109   ||  Change History :
110   ||  Who             When            What
111   ||  (reverse chronological order - newest change first)
112   */
113     CURSOR cur_rowid IS
114       SELECT   rowid
115       FROM     igs_uc_ref_awrdbdy
116       WHERE    awarding_body = x_awarding_body
117       AND      sitting = x_sitting
118       AND      year = x_year ;
119 
120     lv_rowid cur_rowid%RowType;
121 
122   BEGIN
123 
124     OPEN cur_rowid;
125     FETCH cur_rowid INTO lv_rowid;
126     IF (cur_rowid%FOUND) THEN
127       CLOSE cur_rowid;
128       RETURN(TRUE);
129     ELSE
130       CLOSE cur_rowid;
131       RETURN(FALSE);
132     END IF;
133 
134   END get_pk_for_validation;
135 
136 
137   PROCEDURE before_dml (
138     p_action                            IN     VARCHAR2,
139     x_rowid                             IN     VARCHAR2,
140     x_year                              IN     NUMBER  ,
141     x_sitting                           IN     VARCHAR2,
142     x_awarding_body                     IN     VARCHAR2,
143     x_body_name                         IN     VARCHAR2,
144     x_body_abbrev                       IN     VARCHAR2,
145     x_imported                          IN     VARCHAR2,
146     x_creation_date                     IN     DATE    ,
147     x_created_by                        IN     NUMBER  ,
148     x_last_update_date                  IN     DATE    ,
149     x_last_updated_by                   IN     NUMBER  ,
150     x_last_update_login                 IN     NUMBER
151   ) AS
152   /*
153   ||  Created By : rgopalan
154   ||  Created On : 01-OCT-2001
155   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
156   ||            Trigger Handlers for the table, before any DML operation.
157   ||  Known limitations, enhancements or remarks :
158   ||  Change History :
159   ||  Who             When            What
160   ||  (reverse chronological order - newest change first)
161   */
162   BEGIN
163 
164     set_column_values (
165       p_action,
166       x_rowid,
167       x_year,
168       x_sitting,
169       x_awarding_body,
170       x_body_name,
171       x_body_abbrev,
172       x_imported,
173       x_creation_date,
174       x_created_by,
175       x_last_update_date,
176       x_last_updated_by,
177       x_last_update_login
178     );
179 
180     IF (p_action = 'INSERT') THEN
181       -- Call all the procedures related to Before Insert.
182       IF ( get_pk_for_validation(
183              new_references.awarding_body,
184              new_references.sitting,
185              new_references.year
186            )
187          ) THEN
188         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
189         igs_ge_msg_stack.add;
190         app_exception.raise_exception;
191       END IF;
192     ELSIF (p_action = 'DELETE') THEN
193       -- Call all the procedures related to Before Delete.
194       check_child_existance;
195     ELSIF (p_action = 'VALIDATE_INSERT') THEN
196       -- Call all the procedures related to Before Insert.
197       IF ( get_pk_for_validation (
198              new_references.awarding_body,
199              new_references.sitting,
200              new_references.year
201            )
202          ) THEN
203         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
204         igs_ge_msg_stack.add;
205         app_exception.raise_exception;
206       END IF;
207     ELSIF (p_action = 'VALIDATE_DELETE') THEN
208       check_child_existance;
209     END IF;
210 
211   END before_dml;
212 
213 
214   PROCEDURE insert_row (
215     x_rowid                             IN OUT NOCOPY VARCHAR2,
216     x_year                              IN     NUMBER,
217     x_sitting                           IN     VARCHAR2,
218     x_awarding_body                     IN     VARCHAR2,
219     x_body_name                         IN     VARCHAR2,
220     x_body_abbrev                       IN     VARCHAR2,
221     x_imported                          IN     VARCHAR2,
222     x_mode                              IN     VARCHAR2
223   ) AS
224   /*
225   ||  Created By : rgopalan
226   ||  Created On : 01-OCT-2001
227   ||  Purpose : Handles the INSERT DML logic for the table.
228   ||  Known limitations, enhancements or remarks :
229   ||  Change History :
230   ||  Who             When            What
231   ||  (reverse chronological order - newest change first)
232   */
233     CURSOR c IS
234       SELECT   rowid
235       FROM     igs_uc_ref_awrdbdy
236       WHERE    awarding_body                     = x_awarding_body
237       AND      sitting                           = x_sitting
238       AND      year                              = x_year;
239 
240     x_last_update_date           DATE;
241     x_last_updated_by            NUMBER;
242     x_last_update_login          NUMBER;
243 
244   BEGIN
245 
246     x_last_update_date := SYSDATE;
247     IF (x_mode = 'I') THEN
248       x_last_updated_by := 1;
249       x_last_update_login := 0;
250     ELSIF (x_mode = 'R') THEN
251       x_last_updated_by := fnd_global.user_id;
252       IF (x_last_updated_by IS NULL) THEN
253         x_last_updated_by := -1;
254       END IF;
255       x_last_update_login := fnd_global.login_id;
256       IF (x_last_update_login IS NULL) THEN
257         x_last_update_login := -1;
258       END IF;
259     ELSE
260       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
261       igs_ge_msg_stack.add;
262       app_exception.raise_exception;
263     END IF;
264 
265     before_dml(
266       p_action                            => 'INSERT',
267       x_rowid                             => x_rowid,
268       x_year                              => x_year,
269       x_sitting                           => x_sitting,
270       x_awarding_body                     => x_awarding_body,
271       x_body_name                         => x_body_name,
272       x_body_abbrev                       => x_body_abbrev,
273       x_imported                          => x_imported,
274       x_creation_date                     => x_last_update_date,
275       x_created_by                        => x_last_updated_by,
276       x_last_update_date                  => x_last_update_date,
277       x_last_updated_by                   => x_last_updated_by,
278       x_last_update_login                 => x_last_update_login
279     );
280 
281     INSERT INTO igs_uc_ref_awrdbdy (
282       year,
283       sitting,
284       awarding_body,
285       body_name,
286       body_abbrev,
287       imported,
288       creation_date,
289       created_by,
290       last_update_date,
291       last_updated_by,
292       last_update_login
293     ) VALUES (
294       new_references.year,
295       new_references.sitting,
296       new_references.awarding_body,
297       new_references.body_name,
298       new_references.body_abbrev,
299       new_references.imported,
300       x_last_update_date,
301       x_last_updated_by,
302       x_last_update_date,
303       x_last_updated_by,
304       x_last_update_login
305     );
306 
307     OPEN c;
308     FETCH c INTO x_rowid;
309     IF (c%NOTFOUND) THEN
310       CLOSE c;
311       RAISE NO_DATA_FOUND;
312     END IF;
313     CLOSE c;
314 
315   END insert_row;
316 
317 
318   PROCEDURE lock_row (
319     x_rowid                             IN     VARCHAR2,
320     x_year                              IN     NUMBER,
321     x_sitting                           IN     VARCHAR2,
322     x_awarding_body                     IN     VARCHAR2,
323     x_body_name                         IN     VARCHAR2,
324     x_body_abbrev                       IN     VARCHAR2,
325     x_imported                          IN     VARCHAR2
326   ) AS
327   /*
328   ||  Created By : rgopalan
329   ||  Created On : 01-OCT-2001
330   ||  Purpose : Handles the LOCK mechanism for the table.
331   ||  Known limitations, enhancements or remarks :
332   ||  Change History :
333   ||  Who             When            What
334   ||  (reverse chronological order - newest change first)
335   */
336     CURSOR c1 IS
337       SELECT
338         body_name,
339         body_abbrev,
340         imported
341       FROM  igs_uc_ref_awrdbdy
342       WHERE rowid = x_rowid
343       FOR UPDATE NOWAIT;
344 
345     tlinfo c1%ROWTYPE;
346 
347   BEGIN
348 
349     OPEN c1;
350     FETCH c1 INTO tlinfo;
351     IF (c1%notfound) THEN
352       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
353       igs_ge_msg_stack.add;
354       CLOSE c1;
355       app_exception.raise_exception;
356       RETURN;
357     END IF;
358     CLOSE c1;
359 
360     IF (
361         ((tlinfo.body_name = x_body_name) OR ((tlinfo.body_name IS NULL) AND (X_body_name IS NULL)))
362         AND ((tlinfo.body_abbrev = x_body_abbrev) OR ((tlinfo.body_abbrev IS NULL) AND (X_body_abbrev IS NULL)))
363         AND (tlinfo.imported = x_imported)
364        ) THEN
365       NULL;
366     ELSE
367       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
368       igs_ge_msg_stack.add;
369       app_exception.raise_exception;
370     END IF;
371 
372     RETURN;
373 
374   END lock_row;
375 
376 
377   PROCEDURE update_row (
378     x_rowid                             IN     VARCHAR2,
379     x_year                              IN     NUMBER,
380     x_sitting                           IN     VARCHAR2,
381     x_awarding_body                     IN     VARCHAR2,
382     x_body_name                         IN     VARCHAR2,
383     x_body_abbrev                       IN     VARCHAR2,
384     x_imported                          IN     VARCHAR2,
385     x_mode                              IN     VARCHAR2
386   ) AS
387   /*
388   ||  Created By : rgopalan
389   ||  Created On : 01-OCT-2001
390   ||  Purpose : Handles the UPDATE DML logic for the table.
391   ||  Known limitations, enhancements or remarks :
392   ||  Change History :
393   ||  Who             When            What
394   ||  (reverse chronological order - newest change first)
395   */
396     x_last_update_date           DATE ;
397     x_last_updated_by            NUMBER;
398     x_last_update_login          NUMBER;
399 
400   BEGIN
401 
402     x_last_update_date := SYSDATE;
403     IF (X_MODE = 'I') THEN
404       x_last_updated_by := 1;
405       x_last_update_login := 0;
406     ELSIF (x_mode = 'R') THEN
407       x_last_updated_by := fnd_global.user_id;
408       IF x_last_updated_by IS NULL THEN
409         x_last_updated_by := -1;
410       END IF;
411       x_last_update_login := fnd_global.login_id;
412       IF (x_last_update_login IS NULL) THEN
413         x_last_update_login := -1;
414       END IF;
415     ELSE
416       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
417       igs_ge_msg_stack.add;
418       app_exception.raise_exception;
419     END IF;
420 
421     before_dml(
422       p_action                            => 'UPDATE',
423       x_rowid                             => x_rowid,
424       x_year                              => x_year,
425       x_sitting                           => x_sitting,
426       x_awarding_body                     => x_awarding_body,
427       x_body_name                         => x_body_name,
428       x_body_abbrev                       => x_body_abbrev,
429       x_imported                          => x_imported,
430       x_creation_date                     => x_last_update_date,
431       x_created_by                        => x_last_updated_by,
432       x_last_update_date                  => x_last_update_date,
433       x_last_updated_by                   => x_last_updated_by,
434       x_last_update_login                 => x_last_update_login
435     );
436 
437     UPDATE igs_uc_ref_awrdbdy
438       SET
439         body_name                         = new_references.body_name,
440         body_abbrev                       = new_references.body_abbrev,
441         imported                          = new_references.imported,
442         last_update_date                  = x_last_update_date,
443         last_updated_by                   = x_last_updated_by,
444         last_update_login                 = x_last_update_login
445       WHERE rowid = x_rowid;
446 
447     IF (SQL%NOTFOUND) THEN
448       RAISE NO_DATA_FOUND;
449     END IF;
450 
451   END update_row;
452 
453 
454   PROCEDURE add_row (
455     x_rowid                             IN OUT NOCOPY VARCHAR2,
456     x_year                              IN     NUMBER,
457     x_sitting                           IN     VARCHAR2,
458     x_awarding_body                     IN     VARCHAR2,
459     x_body_name                         IN     VARCHAR2,
460     x_body_abbrev                       IN     VARCHAR2,
461     x_imported                          IN     VARCHAR2,
462     x_mode                              IN     VARCHAR2
463   ) AS
464   /*
465   ||  Created By : rgopalan
466   ||  Created On : 01-OCT-2001
467   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
468   ||  Known limitations, enhancements or remarks :
469   ||  Change History :
470   ||  Who             When            What
471   ||  (reverse chronological order - newest change first)
472   */
473     CURSOR c1 IS
474       SELECT   rowid
475       FROM     igs_uc_ref_awrdbdy
476       WHERE    awarding_body                     = x_awarding_body
477       AND      sitting                           = x_sitting
478       AND      year                              = x_year;
479 
480   BEGIN
481 
482     OPEN c1;
483     FETCH c1 INTO x_rowid;
484     IF (c1%NOTFOUND) THEN
485       CLOSE c1;
486 
487       insert_row (
488         x_rowid,
489         x_year,
490         x_sitting,
491         x_awarding_body,
492         x_body_name,
493         x_body_abbrev,
494         x_imported,
495         x_mode
496       );
497       RETURN;
498     END IF;
499     CLOSE c1;
500 
501     update_row (
502       x_rowid,
503       x_year,
504       x_sitting,
505       x_awarding_body,
506       x_body_name,
507       x_body_abbrev,
508       x_imported,
509       x_mode
510     );
511 
512   END add_row;
513 
514 
515   PROCEDURE delete_row (
516     x_rowid IN VARCHAR2
517   ) AS
518   /*
519   ||  Created By : rgopalan
520   ||  Created On : 01-OCT-2001
521   ||  Purpose : Handles the DELETE DML logic for the table.
522   ||  Known limitations, enhancements or remarks :
523   ||  Change History :
524   ||  Who             When            What
525   ||  (reverse chronological order - newest change first)
526   */
527   BEGIN
528 
529     before_dml (
530       p_action => 'DELETE',
531       x_rowid => x_rowid
532     );
533 
534     DELETE FROM igs_uc_ref_awrdbdy
535     WHERE rowid = x_rowid;
536 
537     IF (SQL%NOTFOUND) THEN
538       RAISE NO_DATA_FOUND;
539     END IF;
540 
541   END delete_row;
542 
543 
544 END igs_uc_ref_awrdbdy_pkg;