DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_HE_UT_PRT_AWARD_PKG

Source


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