DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PR_OU_FND_PKG

Source


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