DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGI_EXP_APPRV_PROFILES_PKG

Source


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