DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_EN_USEC_STAT_DSP_PKG

Source


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