DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_HE_UT_CALC_LVL_PKG

Source


1 PACKAGE BODY igs_he_ut_calc_lvl_pkg AS
2 /* $Header: IGSWI34B.pls 115.1 2003/09/02 15:31:18 smaddali noship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_he_ut_calc_lvl%ROWTYPE;
6   new_references igs_he_ut_calc_lvl%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_tariff_level_cd                   IN     VARCHAR2,
13     x_closed_ind                        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_calc_lvl
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.tariff_level_cd                   := x_tariff_level_cd;
55     new_references.closed_ind                        := x_closed_ind;
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 
72   PROCEDURE check_parent_existance AS
73   /*
74   ||  Created By : [email protected]
75   ||  Created On : 11-FEB-2003
76   ||  Purpose : Checks for the existance of Parent records.
77   ||  Known limitations, enhancements or remarks :
78   ||  Change History :
79   ||  Who             When            What
80   ||  (reverse chronological order - newest change first)
81   */
82   BEGIN
83 
84     IF (((old_references.tariff_calc_type_cd = new_references.tariff_calc_type_cd)) OR
85         ((new_references.tariff_calc_type_cd IS NULL))) THEN
86       NULL;
87     -- smaddali modified call to add new parameter , bug#2717747 hefd202_2 build
88     ELSIF NOT igs_he_ut_calc_type_pkg.get_pk_for_validation (
89                 new_references.tariff_calc_type_cd ,
90                 'N'
91               ) THEN
92       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
93       igs_ge_msg_stack.add;
94       app_exception.raise_exception;
95     END IF;
96 
97   END check_parent_existance;
98 
99 
100   FUNCTION get_pk_for_validation (
101     x_tariff_calc_type_cd               IN     VARCHAR2,
102     x_tariff_level_cd                   IN     VARCHAR2
103   ) RETURN BOOLEAN AS
104   /*
105   ||  Created By : [email protected]
106   ||  Created On : 11-FEB-2003
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_he_ut_calc_lvl
116       WHERE    tariff_calc_type_cd = x_tariff_calc_type_cd
117       AND      tariff_level_cd = x_tariff_level_cd ;
118 
119     lv_rowid cur_rowid%RowType;
120 
121   BEGIN
122 
123     OPEN cur_rowid;
124     FETCH cur_rowid INTO lv_rowid;
125     IF (cur_rowid%FOUND) THEN
126       CLOSE cur_rowid;
127       RETURN(TRUE);
128     ELSE
129       CLOSE cur_rowid;
130       RETURN(FALSE);
131     END IF;
132 
133   END get_pk_for_validation;
134 
135 
136   PROCEDURE before_dml (
137     p_action                            IN     VARCHAR2,
138     x_rowid                             IN     VARCHAR2,
139     x_tariff_calc_type_cd               IN     VARCHAR2,
140     x_tariff_level_cd                   IN     VARCHAR2,
141     x_closed_ind                        IN     VARCHAR2,
142     x_creation_date                     IN     DATE,
143     x_created_by                        IN     NUMBER,
144     x_last_update_date                  IN     DATE,
145     x_last_updated_by                   IN     NUMBER,
146     x_last_update_login                 IN     NUMBER
147   ) AS
148   /*
149   ||  Created By : [email protected]
150   ||  Created On : 11-FEB-2003
151   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
152   ||            Trigger Handlers for the table, before any DML operation.
153   ||  Known limitations, enhancements or remarks :
154   ||  Change History :
155   ||  Who             When            What
156   ||  (reverse chronological order - newest change first)
157   */
158   BEGIN
159 
160     set_column_values (
161       p_action,
162       x_rowid,
163       x_tariff_calc_type_cd,
164       x_tariff_level_cd,
165       x_closed_ind,
166       x_creation_date,
167       x_created_by,
168       x_last_update_date,
169       x_last_updated_by,
170       x_last_update_login
171     );
172 
173     IF (p_action = 'INSERT') THEN
174       -- Call all the procedures related to Before Insert.
175       IF ( get_pk_for_validation(
176              new_references.tariff_calc_type_cd,
177              new_references.tariff_level_cd
178            )
179          ) THEN
180         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
181         igs_ge_msg_stack.add;
182         app_exception.raise_exception;
183       END IF;
184       check_parent_existance;
185     ELSIF (p_action = 'UPDATE') THEN
186       -- Call all the procedures related to Before Update.
187       check_parent_existance;
188     ELSIF (p_action = 'VALIDATE_INSERT') THEN
189       -- Call all the procedures related to Before Insert.
190       IF ( get_pk_for_validation (
191              new_references.tariff_calc_type_cd,
192              new_references.tariff_level_cd
193            )
194          ) THEN
195         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
196         igs_ge_msg_stack.add;
197         app_exception.raise_exception;
198       END IF;
199     END IF;
200 
201   END before_dml;
202 
203 
204   PROCEDURE insert_row (
205     x_rowid                             IN OUT NOCOPY VARCHAR2,
206     x_tariff_calc_type_cd               IN     VARCHAR2,
207     x_tariff_level_cd                   IN     VARCHAR2,
208     x_closed_ind                        IN     VARCHAR2,
209     x_mode                              IN     VARCHAR2
210   ) AS
211   /*
212   ||  Created By : [email protected]
213   ||  Created On : 11-FEB-2003
214   ||  Purpose : Handles the INSERT DML logic for the table.
215   ||  Known limitations, enhancements or remarks :
216   ||  Change History :
217   ||  Who             When            What
218   ||  (reverse chronological order - newest change first)
219   */
220 
221     x_last_update_date           DATE;
222     x_last_updated_by            NUMBER;
223     x_last_update_login          NUMBER;
224 
225   BEGIN
226 
227     x_last_update_date := SYSDATE;
228     IF (x_mode = 'I') THEN
229       x_last_updated_by := 1;
230       x_last_update_login := 0;
231     ELSIF (x_mode = 'R') THEN
232       x_last_updated_by := fnd_global.user_id;
233       IF (x_last_updated_by IS NULL) THEN
234         x_last_updated_by := -1;
235       END IF;
236       x_last_update_login := fnd_global.login_id;
237       IF (x_last_update_login IS NULL) THEN
238         x_last_update_login := -1;
239       END IF;
240     ELSE
241       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
242       fnd_message.set_token ('ROUTINE', 'IGS_HE_UT_CALC_LVL_PKG.INSERT_ROW');
243       igs_ge_msg_stack.add;
244       app_exception.raise_exception;
245     END IF;
246 
247     before_dml(
248       p_action                            => 'INSERT',
249       x_rowid                             => x_rowid,
250       x_tariff_calc_type_cd               => x_tariff_calc_type_cd,
251       x_tariff_level_cd                   => x_tariff_level_cd,
252       x_closed_ind                        => x_closed_ind,
253       x_creation_date                     => x_last_update_date,
254       x_created_by                        => x_last_updated_by,
255       x_last_update_date                  => x_last_update_date,
256       x_last_updated_by                   => x_last_updated_by,
257       x_last_update_login                 => x_last_update_login
258     );
259 
260 
261     INSERT INTO igs_he_ut_calc_lvl (
262       tariff_calc_type_cd,
263       tariff_level_cd,
264       closed_ind,
265       creation_date,
266       created_by,
267       last_update_date,
268       last_updated_by,
269       last_update_login
270     ) VALUES (
271       new_references.tariff_calc_type_cd,
272       new_references.tariff_level_cd,
273       new_references.closed_ind,
274       x_last_update_date,
275       x_last_updated_by,
276       x_last_update_date,
277       x_last_updated_by,
278       x_last_update_login
279     ) RETURNING ROWID INTO x_rowid;
280 
281   END insert_row;
282 
283 
284   PROCEDURE lock_row (
285     x_rowid                             IN     VARCHAR2,
286     x_tariff_calc_type_cd               IN     VARCHAR2,
287     x_tariff_level_cd                   IN     VARCHAR2,
288     x_closed_ind                        IN     VARCHAR2
289   ) AS
290   /*
291   ||  Created By : [email protected]
292   ||  Created On : 11-FEB-2003
293   ||  Purpose : Handles the LOCK mechanism for the table.
294   ||  Known limitations, enhancements or remarks :
295   ||  Change History :
296   ||  Who             When            What
297   ||  (reverse chronological order - newest change first)
298   */
299     CURSOR c1 IS
300       SELECT
301         closed_ind
302       FROM  igs_he_ut_calc_lvl
303       WHERE rowid = x_rowid
304       FOR UPDATE NOWAIT;
305 
306     tlinfo c1%ROWTYPE;
307 
308   BEGIN
309 
310     OPEN c1;
311     FETCH c1 INTO tlinfo;
312     IF (c1%notfound) THEN
313       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
314       igs_ge_msg_stack.add;
315       CLOSE c1;
316       app_exception.raise_exception;
317       RETURN;
318     END IF;
319     CLOSE c1;
320 
321     IF (
322         (tlinfo.closed_ind = x_closed_ind)
323        ) THEN
324       NULL;
325     ELSE
326       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
327       igs_ge_msg_stack.add;
328       app_exception.raise_exception;
329     END IF;
330 
331     RETURN;
332 
333   END lock_row;
334 
335 
336   PROCEDURE update_row (
337     x_rowid                             IN     VARCHAR2,
338     x_tariff_calc_type_cd               IN     VARCHAR2,
339     x_tariff_level_cd                   IN     VARCHAR2,
340     x_closed_ind                        IN     VARCHAR2,
341     x_mode                              IN     VARCHAR2
342   ) AS
343   /*
344   ||  Created By : [email protected]
345   ||  Created On : 11-FEB-2003
346   ||  Purpose : Handles the UPDATE DML logic for the table.
347   ||  Known limitations, enhancements or remarks :
348   ||  Change History :
349   ||  Who             When            What
350   ||  (reverse chronological order - newest change first)
351   */
352     x_last_update_date           DATE ;
353     x_last_updated_by            NUMBER;
354     x_last_update_login          NUMBER;
355 
356   BEGIN
357 
358     x_last_update_date := SYSDATE;
359     IF (X_MODE = 'I') THEN
360       x_last_updated_by := 1;
361       x_last_update_login := 0;
362     ELSIF (x_mode = 'R') THEN
363       x_last_updated_by := fnd_global.user_id;
364       IF x_last_updated_by IS NULL THEN
365         x_last_updated_by := -1;
366       END IF;
367       x_last_update_login := fnd_global.login_id;
368       IF (x_last_update_login IS NULL) THEN
369         x_last_update_login := -1;
370       END IF;
371     ELSE
372       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
373       fnd_message.set_token ('ROUTINE', 'IGS_HE_UT_CALC_LVL_PKG.UPDATE_ROW');
374       igs_ge_msg_stack.add;
375       app_exception.raise_exception;
376     END IF;
377 
378     before_dml(
379       p_action                            => 'UPDATE',
380       x_rowid                             => x_rowid,
381       x_tariff_calc_type_cd               => x_tariff_calc_type_cd,
382       x_tariff_level_cd                   => x_tariff_level_cd,
383       x_closed_ind                        => x_closed_ind,
384       x_creation_date                     => x_last_update_date,
385       x_created_by                        => x_last_updated_by,
386       x_last_update_date                  => x_last_update_date,
387       x_last_updated_by                   => x_last_updated_by,
388       x_last_update_login                 => x_last_update_login
389     );
390 
391     UPDATE igs_he_ut_calc_lvl
392       SET
393         closed_ind                        = new_references.closed_ind,
394         last_update_date                  = x_last_update_date,
395         last_updated_by                   = x_last_updated_by,
396         last_update_login                 = x_last_update_login
397       WHERE rowid = x_rowid;
398 
399     IF (SQL%NOTFOUND) THEN
400       RAISE NO_DATA_FOUND;
401     END IF;
402 
403   END update_row;
404 
405 
406   PROCEDURE add_row (
407     x_rowid                             IN OUT NOCOPY VARCHAR2,
408     x_tariff_calc_type_cd               IN     VARCHAR2,
409     x_tariff_level_cd                   IN     VARCHAR2,
410     x_closed_ind                        IN     VARCHAR2,
411     x_mode                              IN     VARCHAR2
412   ) AS
413   /*
414   ||  Created By : [email protected]
415   ||  Created On : 11-FEB-2003
416   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
417   ||  Known limitations, enhancements or remarks :
418   ||  Change History :
419   ||  Who             When            What
420   ||  (reverse chronological order - newest change first)
421   */
422     CURSOR c1 IS
423       SELECT   rowid
424       FROM     igs_he_ut_calc_lvl
425       WHERE    tariff_calc_type_cd               = x_tariff_calc_type_cd
426       AND      tariff_level_cd                   = x_tariff_level_cd;
427 
428   BEGIN
429 
430     OPEN c1;
431     FETCH c1 INTO x_rowid;
432     IF (c1%NOTFOUND) THEN
433       CLOSE c1;
434 
435       insert_row (
436         x_rowid,
437         x_tariff_calc_type_cd,
438         x_tariff_level_cd,
439         x_closed_ind,
440         x_mode
441       );
442       RETURN;
443     END IF;
444     CLOSE c1;
445 
446     update_row (
447       x_rowid,
448       x_tariff_calc_type_cd,
449       x_tariff_level_cd,
450       x_closed_ind,
451       x_mode
452     );
453 
454   END add_row;
455 
456 
457 
458 
459 
460 END igs_he_ut_calc_lvl_pkg;