DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGI_RPI_AUDIT_ITEMS_ALL_PKG

Source


1 PACKAGE BODY igi_rpi_audit_items_all_pkg AS
2 /* $Header: igiraiab.pls 120.4.12000000.1 2007/08/31 05:52:29 mbremkum noship $ */
3 
4   l_debug_level number:=FND_LOG.G_CURRENT_RUNTIME_LEVEL;
5 
6   l_state_level number:=FND_LOG.LEVEL_STATEMENT;
7   l_proc_level number:=FND_LOG.LEVEL_PROCEDURE;
8   l_event_level number:=FND_LOG.LEVEL_EVENT;
9   l_excep_level number:=FND_LOG.LEVEL_EXCEPTION;
10   l_error_level number:=FND_LOG.LEVEL_ERROR;
11   l_unexp_level number:=FND_LOG.LEVEL_UNEXPECTED;
12 
13   l_rowid VARCHAR2(25);
14   old_references igi_rpi_audit_items_all%ROWTYPE;
15   new_references igi_rpi_audit_items_all%ROWTYPE;
16 
17   PROCEDURE set_column_values (
18     p_action                            IN     VARCHAR2,
19     x_rowid                             IN     VARCHAR2,
20     x_item_id                           IN     NUMBER,
21     x_price                             IN     NUMBER,
22     x_effective_date                    IN     DATE,
23     x_revised_effective_date            IN     DATE,
24     x_revised_price                     IN     NUMBER,
25     x_run_id                            IN     NUMBER,
26     x_org_id                            IN     NUMBER,
27     x_creation_date                     IN     DATE,
28     x_created_by                        IN     NUMBER,
29     x_last_update_date                  IN     DATE,
30     x_last_updated_by                   IN     NUMBER,
31     x_last_update_login                 IN     NUMBER ) AS
32   /*
33   ||  Created By : panaraya
34   ||  Created On : 06-MAR-2002
35   ||  Purpose : Initialises the Old and New references for the columns of the table.
36   ||  Known limitations, enhancements or remarks :
37   ||  Change History :
38   ||  Who             When            What
39   ||  (reverse chronological order - newest change first)
40   */
41 
42     CURSOR cur_old_ref_values IS
43       SELECT   *
44       FROM     IGI_RPI_AUDIT_ITEMS_ALL
45       WHERE    rowid = x_rowid;
46 
47   BEGIN
48 
49     l_rowid := x_rowid;
50 
51     -- Code for setting the Old and New Reference Values.
52     -- Populate Old Values.
53     OPEN cur_old_ref_values;
54     FETCH cur_old_ref_values INTO old_references;
55     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
56       CLOSE cur_old_ref_values;
57       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
58 
59       --Bug 3199481 (start)
60       If (l_unexp_level >= l_debug_level) then
61          FND_LOG.MESSAGE(l_unexp_level,'igi.plsql.igi_rpi_audit_items_all_pkg.set_column_values.Msg1',FALSE);
62       End if;
63       --Bug 3199481 (end)
64       app_exception.raise_exception;
65       RETURN;
66     END IF;
67     CLOSE cur_old_ref_values;
68 
69     -- Populate New Values.
70     new_references.item_id                           := x_item_id;
71     new_references.price                             := x_price;
72     new_references.effective_date                    := x_effective_date;
73     new_references.revised_effective_date            := x_revised_effective_date;
74     new_references.revised_price                     := x_revised_price;
75     new_references.run_id                            := x_run_id;
76     new_references.org_id                            := x_org_id;
77 
78     IF (p_action = 'UPDATE') THEN
79       new_references.creation_date                   := old_references.creation_date;
80       new_references.created_by                      := old_references.created_by;
81     ELSE
82       new_references.creation_date                   := x_creation_date;
83       new_references.created_by                      := x_created_by;
84     END IF;
85 
86     new_references.last_update_date                  := x_last_update_date;
87     new_references.last_updated_by                   := x_last_updated_by;
88     new_references.last_update_login                 := x_last_update_login;
89 
90   END set_column_values;
91 
92 
93   PROCEDURE check_parent_existance(x_item_id in number) AS
94   /*
95   ||  Created By : panaraya
96   ||  Created On : 06-MAR-2002
97   ||  Purpose : Checks for the existance of Parent records.
98   ||  Known limitations, enhancements or remarks :
99   ||  Change History :
100   ||  Who             When            What
101   ||  (reverse chronological order - newest change first)
102   */
103 
104   CURSOR c is select 'X' from igi_rpi_items_all where item_id=x_item_id;
105 
106  l c%rowtype;
107   BEGIN
108     open c;
109     fetch c into l;
110 
111     IF (((old_references.item_id = new_references.item_id)) OR
112         ((new_references.item_id IS NULL))) THEN
113       NULL;
114     ELSIF c%NOTFOUND
115               THEN
116       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
117 
118       --Bug 3199481 (start)
119       If (l_unexp_level >= l_debug_level) then
120          FND_LOG.MESSAGE(l_unexp_level,'igi.plsql.igi_rpi_audit_items_all_pkg.check_parent_existence.Msg1',FALSE);
121       End if;
122       --Bug 3199481 (end)
123       app_exception.raise_exception;
124     END IF;
125 
126   END check_parent_existance;
127 
128 
129 
130   PROCEDURE before_dml (
131     p_action                            IN     VARCHAR2,
132     x_rowid                             IN     VARCHAR2,
133     x_item_id                           IN     NUMBER,
134     x_price                             IN     NUMBER,
135     x_effective_date                    IN     DATE,
136     x_revised_effective_date            IN     DATE,
137     x_revised_price                     IN     NUMBER,
138     x_run_id                            IN     NUMBER,
139     x_org_id                            IN     NUMBER,
140     x_creation_date                     IN     DATE,
141     x_created_by                        IN     NUMBER,
142     x_last_update_date                  IN     DATE,
143     x_last_updated_by                   IN     NUMBER,
144     x_last_update_login                 IN     NUMBER ) AS
145   /*
146   ||  Created By : panaraya
147   ||  Created On : 06-MAR-2002
148   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
149   ||            Trigger Handlers for the table, before any DML operation.
150   ||  Known limitations, enhancements or remarks :
151   ||  Change History :
152   ||  Who             When            What
153   ||  (reverse chronological order - newest change first)
154   */
155   BEGIN
156   set_column_values (
157       p_action,
158       x_rowid,
159       x_item_id,
160       x_price,
161       x_effective_date,
162       x_revised_effective_date,
163       x_revised_price,
164       x_run_id,
165       x_org_id,
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       check_parent_existance(x_item_id);
176     ELSIF (p_action = 'UPDATE') THEN
177       -- Call all the procedures related to Before Update.
178       check_parent_existance(x_item_id);
179     ELSIF (p_action = 'VALIDATE_INSERT') THEN
180       -- Call all the procedures related to Before Insert.
181 	null;
182     END IF;
183 
184   END before_dml;
185 
186 
187   PROCEDURE insert_row (
188     x_rowid                             IN OUT NOCOPY VARCHAR2,
189     x_item_id                           IN     NUMBER,
190     x_price                             IN     NUMBER,
191     x_effective_date                    IN     DATE,
192     x_revised_effective_date            IN     DATE,
193     x_revised_price                     IN     NUMBER,
194     x_run_id                            IN     NUMBER,
195     x_org_id                            IN     NUMBER,
196     x_mode                              IN     VARCHAR2 ) AS
197   /*
198   ||  Created By : panaraya
199   ||  Created On : 06-MAR-2002
200   ||  Purpose : Handles the INSERT DML logic for the table.
201   ||  Known limitations, enhancements or remarks :
202   ||  Change History :
203   ||  Who             When            What
204   ||  (reverse chronological order - newest change first)
205   */
206     CURSOR c IS
207       SELECT   rowid
208       FROM     igi_rpi_audit_items_all
209       WHERE    item_id=x_item_id and run_id=x_run_id;
210 
211     x_last_update_date           DATE;
212     x_last_updated_by            NUMBER;
213     x_last_update_login          NUMBER;
214 
215   BEGIN
216     x_last_update_date := SYSDATE;
217     IF (x_mode = 'I') THEN
218       x_last_updated_by := 1;
219       x_last_update_login := 0;
220     ELSIF (x_mode = 'R') THEN
221       x_last_updated_by := fnd_global.user_id;
222       IF (x_last_updated_by IS NULL) THEN
223         x_last_updated_by := -1;
224       END IF;
225       x_last_update_login := fnd_global.login_id;
226       IF (x_last_update_login IS NULL) THEN
227         x_last_update_login := -1;
228       END IF;
229     ELSE
230       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
231 
232       --Bug 3199481 (start)
233       If (l_unexp_level >= l_debug_level) then
234          FND_LOG.MESSAGE(l_unexp_level,'igi.plsql.igi_rpi_audit_items_all_pkg.insert_row.Msg1',FALSE);
235       End if;
236       --Bug 3199481 (end)
237       app_exception.raise_exception;
238     END IF;
239 
240     before_dml(
241       p_action                            => 'INSERT',
242       x_rowid                             => x_rowid,
243       x_item_id                           => x_item_id,
244       x_price                             => x_price,
245       x_effective_date                    => x_effective_date,
246       x_revised_effective_date            => x_revised_effective_date,
247       x_revised_price                     => x_revised_price,
248       x_run_id                            => x_run_id,
249       x_org_id                            => NVL (x_org_id,0),
250       x_creation_date                     => x_last_update_date,
251       x_created_by                        => x_last_updated_by,
252       x_last_update_date                  => x_last_update_date,
253       x_last_updated_by                   => x_last_updated_by,
254       x_last_update_login                 => x_last_update_login
255     );
256     INSERT INTO igi_rpi_audit_items_all (
257       item_id,
258       price,
259       effective_date,
260       revised_effective_date,
261       revised_price,
262       run_id,
263       org_id,
264       creation_date,
265       created_by,
266       last_update_date,
267       last_updated_by,
268       last_update_login
269     ) VALUES (
270       new_references.item_id,
271       new_references.price,
272       new_references.effective_date,
273       new_references.revised_effective_date,
274       new_references.revised_price,
275       new_references.run_id,
276       new_references.org_id,
277       x_last_update_date,
278       x_last_updated_by,
279       x_last_update_date,
280       x_last_updated_by,
281       x_last_update_login
282     );
283 
284     OPEN c;
285     FETCH c INTO x_rowid;
286     IF (c%NOTFOUND) THEN
287       CLOSE c;
288       RAISE NO_DATA_FOUND;
289     END IF;
290     CLOSE c;
291 
292   END insert_row;
293 
294 
295   PROCEDURE lock_row (
296     x_rowid                             IN     VARCHAR2,
297     x_item_id                           IN     NUMBER,
298     x_price                             IN     NUMBER,
299     x_effective_date                    IN     DATE,
300     x_revised_effective_date            IN     DATE,
301     x_revised_price                     IN     NUMBER,
302     x_run_id                            IN     NUMBER,
303     x_org_id                            IN     NUMBER
304   ) AS
305   /*
306   ||  Created By : panaraya
307   ||  Created On : 06-MAR-2002
308   ||  Purpose : Handles the LOCK mechanism for the table.
309   ||  Known limitations, enhancements or remarks :
310   ||  Change History :
311   ||  Who             When            What
312   ||  (reverse chronological order - newest change first)
313   */
314     CURSOR c1 IS
315       SELECT
316         item_id,
317         price,
318         effective_date,
319         revised_effective_date,
320         revised_price,
321         run_id,
322         org_id
323       FROM  igi_rpi_audit_items_all
324       WHERE rowid = x_rowid
325       FOR UPDATE NOWAIT;
326 
327     tlinfo c1%ROWTYPE;
328 
329   BEGIN
330 
331     OPEN c1;
332     FETCH c1 INTO tlinfo;
333     IF (c1%notfound) THEN
334       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
335 
336       --Bug 3199481 (start)
337       If (l_unexp_level >= l_debug_level) then
338          FND_LOG.MESSAGE(l_unexp_level,'igi.plsql.igi_rpi_audit_items_all_pkg.lock_row.Msg1',FALSE);
339       End if;
340       --Bug 3199481 (end)
341 null;
342       CLOSE c1;
343       app_exception.raise_exception;
344       RETURN;
345     END IF;
346     CLOSE c1;
347 
348     IF (
349         (tlinfo.item_id = x_item_id)
350         AND (tlinfo.price = x_price)
351         AND (tlinfo.effective_date = x_effective_date)
352         AND ((tlinfo.revised_effective_date = x_revised_effective_date) OR ((tlinfo.revised_effective_date IS NULL) AND (X_revised_effective_date IS NULL)))
353         AND ((tlinfo.revised_price = x_revised_price) OR ((tlinfo.revised_price IS NULL) AND (X_revised_price IS NULL)))
354         AND ((tlinfo.run_id = x_run_id) OR ((tlinfo.run_id IS NULL) AND (X_run_id IS NULL)))
355         AND ((tlinfo.org_id = x_org_id) OR ((tlinfo.org_id IS NULL) AND (X_org_id IS NULL)))
356        ) THEN
357       NULL;
358     ELSE
359       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
360 
361       --Bug 3199481 (start)
362       If (l_unexp_level >= l_debug_level) then
363          FND_LOG.MESSAGE(l_unexp_level,'igi.plsql.igi_rpi_audit_items_all_pkg.lock_row.Msg2',FALSE);
364       End if;
365       --Bug 3199481 (end)
366       app_exception.raise_exception;
367     END IF;
368 
369     RETURN;
370 
371   END lock_row;
372 
373 
374   PROCEDURE update_row (
375     x_rowid                             IN     VARCHAR2,
376     x_item_id                           IN     NUMBER,
377     x_price                             IN     NUMBER,
378     x_effective_date                    IN     DATE,
379     x_revised_effective_date            IN     DATE,
380     x_revised_price                     IN     NUMBER,
381     x_run_id                            IN     NUMBER,
382     x_org_id                            IN     NUMBER,
383     x_mode                              IN     VARCHAR2 ) AS
384   /*
385   ||  Created By : panaraya
386   ||  Created On : 06-MAR-2002
387   ||  Purpose : Handles the UPDATE DML logic for the table.
388   ||  Known limitations, enhancements or remarks :
389   ||  Change History :
390   ||  Who             When            What
391   ||  (reverse chronological order - newest change first)
392   */
393     x_last_update_date           DATE ;
394     x_last_updated_by            NUMBER;
395     x_last_update_login          NUMBER;
396 
397   BEGIN
398 
399     x_last_update_date := SYSDATE;
400     IF (X_MODE = 'I') THEN
401       x_last_updated_by := 1;
402       x_last_update_login := 0;
403     ELSIF (x_mode = 'R') THEN
404       x_last_updated_by := fnd_global.user_id;
405       IF x_last_updated_by IS NULL THEN
406         x_last_updated_by := -1;
407       END IF;
408       x_last_update_login := fnd_global.login_id;
409       IF (x_last_update_login IS NULL) THEN
410         x_last_update_login := -1;
411       END IF;
412     ELSE
413       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
414 
415       --Bug 3199481 (start)
416       If (l_unexp_level >= l_debug_level) then
417          FND_LOG.MESSAGE(l_unexp_level,'igi.plsql.igi_rpi_audit_items_all_pkg.update_row.Msg1',FALSE);
418       End if;
419       --Bug 3199481 (end)
420       app_exception.raise_exception;
421     END IF;
422 
423     before_dml(
424       p_action                            => 'UPDATE',
425       x_rowid                             => x_rowid,
426       x_item_id                           => x_item_id,
427       x_price                             => x_price,
428       x_effective_date                    => x_effective_date,
429       x_revised_effective_date            => x_revised_effective_date,
430       x_revised_price                     => x_revised_price,
431       x_run_id                            => x_run_id,
432       x_org_id                            => NVL (x_org_id,0),
433       x_creation_date                     => x_last_update_date,
434       x_created_by                        => x_last_updated_by,
435       x_last_update_date                  => x_last_update_date,
436       x_last_updated_by                   => x_last_updated_by,
437       x_last_update_login                 => x_last_update_login
438     );
439 
440     UPDATE igi_rpi_audit_items_all
441       SET
442         item_id                           = new_references.item_id,
443         price                             = new_references.price,
444         effective_date                    = new_references.effective_date,
445         revised_effective_date            = new_references.revised_effective_date,
446         revised_price                     = new_references.revised_price,
447         run_id                            = new_references.run_id,
448         org_id                            = new_references.org_id,
449         last_update_date                  = x_last_update_date,
450         last_updated_by                   = x_last_updated_by,
451         last_update_login                 = x_last_update_login
452       WHERE rowid = x_rowid;
453 
454     IF (SQL%NOTFOUND) THEN
455       RAISE NO_DATA_FOUND;
456     END IF;
457 
458   END update_row;
459 
460 
461   PROCEDURE add_row (
462     x_rowid                             IN OUT NOCOPY VARCHAR2,
463     x_item_id                           IN     NUMBER,
464     x_price                             IN     NUMBER,
465     x_effective_date                    IN     DATE,
466     x_revised_effective_date            IN     DATE,
467     x_revised_price                     IN     NUMBER,
468     x_run_id                            IN     NUMBER,
469     x_org_id                            IN     NUMBER,
470     x_mode                              IN     VARCHAR2 ) AS
471   /*
472   ||  Created By : panaraya
473   ||  Created On : 06-MAR-2002
474   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
475   ||  Known limitations, enhancements or remarks :
476   ||  Change History :
477   ||  Who             When            What
478   ||  (reverse chronological order - newest change first)
479   */
480     CURSOR c1 IS
481       SELECT   rowid
482       FROM     igi_rpi_audit_items_all
483       WHERE    item_id=x_item_id and run_id=x_run_id;
484 
485   BEGIN
486 
487     OPEN c1;
488     FETCH c1 INTO x_rowid;
489     IF (c1%NOTFOUND) THEN
490       CLOSE c1;
491 
492       insert_row (
493         x_rowid,
494         x_item_id,
495         x_price,
496         x_effective_date,
497         x_revised_effective_date,
498         x_revised_price,
499         x_run_id,
500         x_org_id,
501         x_mode
502       );
503       RETURN;
504     END IF;
505     CLOSE c1;
506 
507     update_row (
508       x_rowid,
509       x_item_id,
510       x_price,
511       x_effective_date,
512       x_revised_effective_date,
513       x_revised_price,
514       x_run_id,
515       x_org_id,
516       x_mode
517     );
518 
519   END add_row;
520 
521 
522   PROCEDURE delete_row (
523     x_rowid IN VARCHAR2
524   ) AS
525   /*
529   ||  Known limitations, enhancements or remarks :
526   ||  Created By : panaraya
527   ||  Created On : 06-MAR-2002
528   ||  Purpose : Handles the DELETE DML logic for the table.
530   ||  Change History :
531   ||  Who             When            What
532   ||  (reverse chronological order - newest change first)
533   */
534   BEGIN
535 
536     before_dml (
537       p_action => 'DELETE',
538       x_rowid => x_rowid
539     );
540 
541     DELETE FROM igi_rpi_audit_items_all
542     WHERE rowid = x_rowid;
543 
544     IF (SQL%NOTFOUND) THEN
545       RAISE NO_DATA_FOUND;
546     END IF;
547 
548   END delete_row;
549 
550 
551 END igi_rpi_audit_items_all_pkg;