DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_FI_ELM_RNG_ORDS_PKG

Source


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