DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGF_DB_PAYS_PRG_T_PKG

Source


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