DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PS_RSV_ORGUN_PRF_PKG

Source


1 PACKAGE BODY igs_ps_rsv_orgun_prf_pkg AS
2 /* $Header: IGSPI1VB.pls 120.1 2005/08/18 07:16:04 appldev ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_ps_rsv_orgun_prf%ROWTYPE;
6   new_references igs_ps_rsv_orgun_prf%ROWTYPE;
7 
8   PROCEDURE set_column_values (
9     p_action                            IN     VARCHAR2,
10     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
11     x_rsv_org_unit_prf_id               IN     NUMBER      DEFAULT NULL,
12     x_rsv_org_unit_pri_id               IN     NUMBER      DEFAULT NULL,
13     x_preference_order                  IN     NUMBER      DEFAULT NULL,
14     x_preference_code                   IN     VARCHAR2    DEFAULT NULL,
15     x_preference_version                IN     NUMBER      DEFAULT NULL,
16     x_percentage_reserved               IN     NUMBER      DEFAULT NULL,
17     x_group_id                          IN     NUMBER      DEFAULT NULL,
18     x_creation_date                     IN     DATE        DEFAULT NULL,
19     x_created_by                        IN     NUMBER      DEFAULT NULL,
20     x_last_update_date                  IN     DATE        DEFAULT NULL,
21     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
22     x_last_update_login                 IN     NUMBER      DEFAULT NULL
23   ) AS
24   /*
25   ||  Created By : apelleti
26   ||  Created On : 04-MAY-2001
27   ||  Purpose : Initialises the Old and New references for the columns of the table.
28   ||  Known limitations, enhancements or remarks :
29   ||  Change History :
30   ||  Who             When            What
31   ||  (reverse chronological order - newest change first)
32   */
33 
34     CURSOR cur_old_ref_values IS
35       SELECT   *
36       FROM     IGS_PS_RSV_ORGUN_PRF
37       WHERE    rowid = x_rowid;
38 
39   BEGIN
40 
41     l_rowid := x_rowid;
42 
43     -- Code for setting the Old and New Reference Values.
44     -- Populate Old Values.
45     OPEN cur_old_ref_values;
46     FETCH cur_old_ref_values INTO old_references;
47     IF ((cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT'))) THEN
48       CLOSE cur_old_ref_values;
49       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
50       igs_ge_msg_stack.add;
51       app_exception.raise_exception;
52       RETURN;
53     END IF;
54     CLOSE cur_old_ref_values;
55 
56     -- Populate New Values.
57     new_references.rsv_org_unit_prf_id               := x_rsv_org_unit_prf_id;
58     new_references.rsv_org_unit_pri_id               := x_rsv_org_unit_pri_id;
59     new_references.preference_order                  := x_preference_order;
60     new_references.preference_code                   := x_preference_code;
61     new_references.preference_version                := x_preference_version;
62     new_references.percentage_reserved               := x_percentage_reserved;
63     new_references.group_id                          := x_group_id;
64 
65     IF (p_action = 'UPDATE') THEN
66       new_references.creation_date                   := old_references.creation_date;
67       new_references.created_by                      := old_references.created_by;
68     ELSE
69       new_references.creation_date                   := x_creation_date;
70       new_references.created_by                      := x_created_by;
71     END IF;
72 
73     new_references.last_update_date                  := x_last_update_date;
74     new_references.last_updated_by                   := x_last_updated_by;
75     new_references.last_update_login                 := x_last_update_login;
76 
77   END set_column_values;
78 
79 
80   PROCEDURE check_uniqueness AS
81   /*
82   ||  Created By : apelleti
83   ||  Created On : 04-MAY-2001
84   ||  Purpose : Handles the Unique Constraint logic defined for the columns.
85   ||  Known limitations, enhancements or remarks :
86   ||  Change History :
87   ||  Who             When            What
88   ||  (reverse chronological order - newest change first)
89   */
90   BEGIN
91 
92     IF ( get_uk_for_validation (
93            new_references.rsv_org_unit_pri_id,
94            new_references.preference_code
95          )
96        ) THEN
97       fnd_message.set_name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
98       igs_ge_msg_stack.add;
99       app_exception.raise_exception;
100     END IF;
101 
102   END check_uniqueness;
103 
104   PROCEDURE BeforeInsertUpdate(p_inserting BOOLEAN , p_updating BOOLEAN) AS
105   p_message_name VARCHAR2(30);
106   BEGIN
107    IF ( p_inserting = TRUE OR (p_updating = TRUE AND new_references.group_id <> old_references.group_id ) ) THEN
108     IF  NOT IGS_PE_PERSID_GROUP_PKG.val_persid_group(new_references.group_id,p_message_name) THEN
109         Fnd_Message.Set_Name('IGS', p_message_name);
110 	IGS_GE_MSG_STACK.ADD;
111         App_Exception.Raise_Exception;
112      END IF;
113    END IF;
114   END BeforeInsertUpdate;
115 
116 
117   PROCEDURE check_parent_existance AS
118   CURSOR c_check_hz_exists IS
119     SELECT 'x' FROM hz_parties hp,igs_pe_hz_parties pe
120   WHERE hp.party_id = pe.party_id
121    AND pe.oss_org_unit_cd = new_references.preference_code;
122   cur_rec_hz_exists c_check_hz_exists%ROWTYPE;
123 
124   CURSOR c_priority is
125    Select priority_value
126    from  IGS_PS_RSV_OGPRI_ALL PRI
127    Where PRI.RSV_ORG_UNIT_PRI_ID = new_references.rsv_org_unit_pri_id;
128    priority_value1 VARCHAR2(30);
129 
130   /*
131   ||  Created By : apelleti
132   ||  Created On : 02-MAY-2001
133   ||  Purpose : Checks for the existance of Parent records.
134   ||  Known limitations, enhancements or remarks :
135   ||  Change History :
136   ||  Who             When            What
137   ||  sommukhe    12-AUG-2005     Bug#4377818,changed the cursor c_check_hz_exists, included table igs_pe_hz_parties in
138   ||                              FROM clause and modified the WHERE clause by joining HZ_PARTIES and IGS_PE_HZ_PARTIES
139   ||                              using party_id and org unit being compared with oss_org_unit_cd of IGS_PE_HZ_PARTIES.
140   ||  (reverse chronological order - newest change first)
141   */
142   BEGIN
143 
144     IF (((old_references.rsv_org_unit_pri_id = new_references.rsv_org_unit_pri_id)) OR
145         ((new_references.rsv_org_unit_pri_id IS NULL))) THEN
146       NULL;
147     ELSIF NOT igs_ps_rsv_ogpri_pkg.get_pk_for_validation (
148                 new_references.rsv_org_unit_pri_id
149               ) THEN
150       fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
151       igs_ge_msg_stack.add;
152       app_exception.raise_exception;
153     ELSE
154        OPEN c_priority;
155        FETCH c_priority into priority_value1;
156        IF (c_priority%found) THEN
157         IF(priority_value1 = 'PROGRAM') THEN
158          IF NOT igs_ps_ver_pkg.get_pk_for_validation(
159                new_references.preference_code,
160                new_references.preference_version ) THEN
161                CLOSE c_priority;
162             fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
163             igs_ge_msg_stack.add;
164             app_exception.raise_exception;
165           ELSE
166              CLOSE c_priority;
167          END IF;
168         ELSIF (priority_value1 = 'PROGRAM_STAGE') THEN
169          IF NOT igs_ps_stage_type_pkg.get_pk_for_validation(
170                new_references.preference_code ) THEN
171                CLOSE c_priority;
172                fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
173             igs_ge_msg_stack.add;
174             app_exception.raise_exception;
175           ELSE
176              CLOSE c_priority;
177          END IF;
178         ELSIF (priority_value1 = 'UNIT_SET') THEN
179          IF NOT igs_en_unit_set_pkg.get_pk_for_validation(
180                new_references.preference_code,
181                new_references.preference_version ) THEN
182                CLOSE c_priority;
183                fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
184             igs_ge_msg_stack.add;
185             app_exception.raise_exception;
186           ELSE
187               CLOSE c_priority;
188          END IF;
189         ELSIF (priority_value1 = 'PERSON_GRP') THEN
190          IF NOT igs_pe_persid_group_pkg.get_pk_for_validation(
191                new_references.group_id ) THEN
192                CLOSE c_priority;
193                fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
194             igs_ge_msg_stack.add;
195             app_exception.raise_exception;
196           ELSE
197              CLOSE c_priority;
198          END IF;
199         ELSIF (priority_value1 = 'ORG_UNIT') THEN
200           OPEN c_check_hz_exists;
201           FETCH c_check_hz_exists into cur_rec_hz_exists;
202           IF c_check_hz_exists%NotFound THEN
203              CLOSE c_check_hz_exists;
204              CLOSE c_priority;
205              fnd_message.set_name ('FND', 'FORM_RECORD_DELETED');
206              igs_ge_msg_stack.add;
207              app_exception.raise_exception;
208            ELSE
209               CLOSE c_check_hz_exists;
210               CLOSE c_priority;
211           END IF;
212          END IF;
213         ELSE
214            CLOSE c_priority;
215    END IF;
216    END IF;
217 
218   END check_parent_existance;
219 
220   FUNCTION get_pk_for_validation (
221     x_rsv_org_unit_prf_id               IN     NUMBER
222   ) RETURN BOOLEAN AS
223   /*
224   ||  Created By : apelleti
225   ||  Created On : 04-MAY-2001
226   ||  Purpose : Validates the Primary Key of the table.
227   ||  Known limitations, enhancements or remarks :
228   ||  Change History :
229   ||  Who             When            What
230   ||  (reverse chronological order - newest change first)
231   */
232     CURSOR cur_rowid IS
233       SELECT   rowid
234       FROM     igs_ps_rsv_orgun_prf
235       WHERE    rsv_org_unit_prf_id = x_rsv_org_unit_prf_id
236       FOR UPDATE NOWAIT;
237 
238     lv_rowid cur_rowid%RowType;
239 
240   BEGIN
241 
242     OPEN cur_rowid;
243     FETCH cur_rowid INTO lv_rowid;
244     IF (cur_rowid%FOUND) THEN
245       CLOSE cur_rowid;
246       RETURN(TRUE);
247     ELSE
248       CLOSE cur_rowid;
249       RETURN(FALSE);
250     END IF;
251 
252   END get_pk_for_validation;
253 
254 
255   FUNCTION get_uk_for_validation (
256     x_rsv_org_unit_pri_id               IN     NUMBER,
257     x_preference_code                   IN     VARCHAR2
258   ) RETURN BOOLEAN AS
259   /*
260   ||  Created By : apelleti
261   ||  Created On : 04-MAY-2001
262   ||  Purpose : Validates the Unique Keys of the table.
263   ||  Known limitations, enhancements or remarks :
264   ||  Change History :
265   ||  Who             When            What
266   ||  (reverse chronological order - newest change first)
267   */
268     CURSOR cur_rowid IS
269       SELECT   rowid
270       FROM     igs_ps_rsv_orgun_prf
271       WHERE    rsv_org_unit_pri_id = x_rsv_org_unit_pri_id
272       AND      preference_code = x_preference_code
273       AND      ((l_rowid IS NULL) OR (rowid <> l_rowid));
274 
275     lv_rowid cur_rowid%RowType;
276 
277   BEGIN
278 
279     OPEN cur_rowid;
280     FETCH cur_rowid INTO lv_rowid;
281     IF (cur_rowid%FOUND) THEN
282       CLOSE cur_rowid;
283         RETURN (true);
284         ELSE
285        CLOSE cur_rowid;
286       RETURN(FALSE);
287     END IF;
288 
289   END get_uk_for_validation ;
290 
291 
292   PROCEDURE get_fk_igs_ps_rsv_ogpri_all (
293     x_rsv_org_unit_pri_id               IN     NUMBER
294   ) AS
295   /*
296   ||  Created By : apelleti
297   ||  Created On : 04-MAY-2001
298   ||  Purpose : Validates the Foreign Keys for the table.
299   ||  Known limitations, enhancements or remarks :
300   ||  Change History :
301   ||  Who             When            What
302   ||  (reverse chronological order - newest change first)
303   */
304     CURSOR cur_rowid IS
305       SELECT   rowid
306       FROM     igs_ps_rsv_orgun_prf
307       WHERE   ((rsv_org_unit_pri_id = x_rsv_org_unit_pri_id));
308 
309     lv_rowid cur_rowid%RowType;
310 
311   BEGIN
312 
313     OPEN cur_rowid;
314     FETCH cur_rowid INTO lv_rowid;
315     IF (cur_rowid%FOUND) THEN
316       CLOSE cur_rowid;
317       fnd_message.set_name ('IGS', 'IGS_PS_USPF_USPR_FK');
318       igs_ge_msg_stack.add;
319       app_exception.raise_exception;
320       RETURN;
321     END IF;
322     CLOSE cur_rowid;
323 
324   END get_fk_igs_ps_rsv_ogpri_all;
325    PROCEDURE get_fk_igs_ps_ver_all (
326     x_preference_code               IN     VARCHAR2,
327     x_preference_version          IN     NUMBER
328   ) AS
329   /*
330   ||  Created By : apelleti
331   ||  Created On : 02-MAY-2001
332   ||  Purpose : Validates the Foreign Keys for the table.
333   ||  Known limitations, enhancements or remarks :
334   ||  Change History :
335   ||  Who             When            What
336   ||  (reverse chronological order - newest change first)
337   */
338     CURSOR cur_rowid IS
339       SELECT   rowid
340       FROM     igs_ps_rsv_orgun_prf
341       WHERE   ((preference_code = x_preference_code) AND (preference_version = x_preference_version) );
342 
343     lv_rowid cur_rowid%RowType;
344 
345   BEGIN
346 
347     OPEN cur_rowid;
348     FETCH cur_rowid INTO lv_rowid;
349     IF (cur_rowid%FOUND) THEN
350       CLOSE cur_rowid;
351       fnd_message.set_name ('IGS', 'IGS_PS_ROPF_CRV_FK');
352       igs_ge_msg_stack.add;
353       app_exception.raise_exception;
354       RETURN;
355     END IF;
356     CLOSE cur_rowid;
357 
358   END get_fk_igs_ps_ver_all;
359 
360   PROCEDURE get_fk_igs_ps_stage_type (
361     x_preference_code               IN     VARCHAR2
362   ) AS
363   /*
364   ||  Created By : apelleti
365   ||  Created On : 02-MAY-2001
366   ||  Purpose : Validates the Foreign Keys for the table.
367   ||  Known limitations, enhancements or remarks :
368   ||  Change History :
369   ||  Who             When            What
370   ||  (reverse chronological order - newest change first)
371   */
372     CURSOR cur_rowid IS
373       SELECT   rowid
374       FROM     igs_ps_rsv_orgun_prf
375       WHERE   ((preference_code = x_preference_code));
376 
377     lv_rowid cur_rowid%RowType;
378 
379   BEGIN
380 
381     OPEN cur_rowid;
382     FETCH cur_rowid INTO lv_rowid;
383     IF (cur_rowid%FOUND) THEN
384       CLOSE cur_rowid;
385       fnd_message.set_name ('IGS', 'IGS_PS_ROPF_CSTT_FK');
386       igs_ge_msg_stack.add;
387       app_exception.raise_exception;
388       RETURN;
389     END IF;
390     CLOSE cur_rowid;
391 
392   END get_fk_igs_ps_stage_type;
393 
394   PROCEDURE get_fk_igs_en_unit_set_all (
395     x_preference_code               IN     VARCHAR2,
396     x_preference_version            IN     NUMBER
397   ) AS
398   /*
399   ||  Created By : apelleti
400   ||  Created On : 02-MAY-2001
401   ||  Purpose : Validates the Foreign Keys for the table.
402   ||  Known limitations, enhancements or remarks :
403   ||  Change History :
404   ||  Who             When            What
405   ||  (reverse chronological order - newest change first)
406   */
407     CURSOR cur_rowid IS
408       SELECT   rowid
409       FROM     igs_ps_rsv_orgun_prf
410       WHERE   ((preference_code = x_preference_code) AND (preference_version = x_preference_version));
411 
412     lv_rowid cur_rowid%RowType;
413 
414   BEGIN
415 
416     OPEN cur_rowid;
417     FETCH cur_rowid INTO lv_rowid;
418     IF (cur_rowid%FOUND) THEN
419       CLOSE cur_rowid;
420       fnd_message.set_name ('IGS', 'IGS_PS_ROPF_US_FK');
421       igs_ge_msg_stack.add;
422       app_exception.raise_exception;
423       RETURN;
424     END IF;
425     CLOSE cur_rowid;
426 
427   END get_fk_igs_en_unit_set_all;
428 
429   PROCEDURE get_fk_hz_parties (
430     x_preference_code               IN     VARCHAR2
431   ) AS
432   /*
433   ||  Created By : apelleti
434   ||  Created On : 02-MAY-2001
435   ||  Purpose : Validates the Foreign Keys for the table.
436   ||  Known limitations, enhancements or remarks :
437   ||  Change History :
438   ||  Who             When            What
439   ||  (reverse chronological order - newest change first)
440   */
441     CURSOR cur_rowid IS
442       SELECT   rowid
443       FROM     igs_ps_rsv_orgun_prf
444       WHERE   ((preference_code = x_preference_code));
445 
446     lv_rowid cur_rowid%RowType;
447 
448   BEGIN
449 
450     OPEN cur_rowid;
451     FETCH cur_rowid INTO lv_rowid;
452     IF (cur_rowid%FOUND) THEN
453       CLOSE cur_rowid;
454       fnd_message.set_name ('IGS', 'IGS_PS_ROPF_HZ_PARTIES_FK');
455       igs_ge_msg_stack.add;
456       app_exception.raise_exception;
457       RETURN;
458     END IF;
459     CLOSE cur_rowid;
460 
461   END get_fk_hz_parties;
462 
463 
464 
465   PROCEDURE before_dml (
466     p_action                            IN     VARCHAR2,
467     x_rowid                             IN     VARCHAR2    DEFAULT NULL,
468     x_rsv_org_unit_prf_id               IN     NUMBER      DEFAULT NULL,
469     x_rsv_org_unit_pri_id               IN     NUMBER      DEFAULT NULL,
470     x_preference_order                  IN     NUMBER      DEFAULT NULL,
471     x_preference_code                   IN     VARCHAR2    DEFAULT NULL,
472     x_preference_version                IN     NUMBER      DEFAULT NULL,
473     x_percentage_reserved               IN     NUMBER      DEFAULT NULL,
474     x_group_id                          IN     NUMBER      DEFAULT NULL,
475     x_creation_date                     IN     DATE        DEFAULT NULL,
476     x_created_by                        IN     NUMBER      DEFAULT NULL,
477     x_last_update_date                  IN     DATE        DEFAULT NULL,
478     x_last_updated_by                   IN     NUMBER      DEFAULT NULL,
479     x_last_update_login                 IN     NUMBER      DEFAULT NULL
480   ) AS
481   /*
482   ||  Created By : apelleti
483   ||  Created On : 04-MAY-2001
484   ||  Purpose : Initialises the columns, Checks Constraints, Calls the
485   ||            Trigger Handlers for the table, before any DML operation.
486   ||  Known limitations, enhancements or remarks :
487   ||  Change History :
488   ||  Who             When            What
489   ||  (reverse chronological order - newest change first)
490   */
491   BEGIN
492 
493     set_column_values (
494       p_action,
495       x_rowid,
496       x_rsv_org_unit_prf_id,
497       x_rsv_org_unit_pri_id,
498       x_preference_order,
499       x_preference_code,
500       x_preference_version,
501       x_percentage_reserved,
502       x_group_id,
503       x_creation_date,
504       x_created_by,
505       x_last_update_date,
506       x_last_updated_by,
507       x_last_update_login
508     );
509 
510     IF (p_action = 'INSERT') THEN
511       -- Call all the procedures related to Before Insert.
512       BeforeInsertUpdate(TRUE,FALSE);
513       IF ( get_pk_for_validation(
514              new_references.rsv_org_unit_prf_id
515            )
516          ) THEN
517         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
518         igs_ge_msg_stack.add;
519         app_exception.raise_exception;
520       END IF;
521       check_uniqueness;
522       check_parent_existance;
523     ELSIF (p_action = 'UPDATE') THEN
524       -- Call all the procedures related to Before Update.
525       BeforeInsertUpdate(FALSE,TRUE);
526       check_uniqueness;
527       check_parent_existance;
528     ELSIF (p_action = 'VALIDATE_INSERT') THEN
529       -- Call all the procedures related to Before Insert.
530       IF ( get_pk_for_validation (
531              new_references.rsv_org_unit_prf_id
532            )
533          ) THEN
534         fnd_message.set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
535         igs_ge_msg_stack.add;
536         app_exception.raise_exception;
537       END IF;
538       check_uniqueness;
539     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
540       check_uniqueness;
541     END IF;
542 
543     l_rowid:=NULL;
544 
545   END before_dml;
546 
547 
548   PROCEDURE insert_row (
549     x_rowid                             IN OUT NOCOPY VARCHAR2,
550     x_rsv_org_unit_prf_id               IN OUT NOCOPY NUMBER,
551     x_rsv_org_unit_pri_id               IN     NUMBER,
552     x_preference_order                  IN     NUMBER,
553     x_preference_code                   IN     VARCHAR2,
554     x_preference_version                IN     NUMBER,
555     x_percentage_reserved               IN     NUMBER,
556     x_group_id                          IN     NUMBER,
557     x_mode                              IN     VARCHAR2 DEFAULT 'R'
558   ) AS
559   /*
560   ||  Created By : apelleti
561   ||  Created On : 04-MAY-2001
562   ||  Purpose : Handles the INSERT DML logic for the table.
563   ||  Known limitations, enhancements or remarks :
564   ||  Change History :
565   ||  Who             When            What
566   ||  (reverse chronological order - newest change first)
567   */
568     CURSOR c IS
569       SELECT   rowid
570       FROM     igs_ps_rsv_orgun_prf
571       WHERE    rsv_org_unit_prf_id               = x_rsv_org_unit_prf_id;
572 
573     x_last_update_date           DATE;
574     x_last_updated_by            NUMBER;
575     x_last_update_login          NUMBER;
576 
577   BEGIN
578 
579     x_last_update_date := SYSDATE;
580     IF (x_mode = 'I') THEN
581       x_last_updated_by := 1;
582       x_last_update_login := 0;
583     ELSIF (x_mode = 'R') THEN
584       x_last_updated_by := fnd_global.user_id;
585       IF (x_last_updated_by IS NULL) THEN
586         x_last_updated_by := -1;
587       END IF;
588       x_last_update_login := fnd_global.login_id;
589       IF (x_last_update_login IS NULL) THEN
590         x_last_update_login := -1;
591       END IF;
592     ELSE
593       fnd_message.set_name ('FND', 'SYSTEM-INVALID ARGS');
594       igs_ge_msg_stack.add;
595       app_exception.raise_exception;
596     END IF;
597 
598     SELECT    igs_ps_rsv_orgun_prf_s.NEXTVAL
599     INTO      x_rsv_org_unit_prf_id
600     FROM      dual;
601 
602     before_dml(
603       p_action                            => 'INSERT',
604       x_rowid                             => x_rowid,
605       x_rsv_org_unit_prf_id               => x_rsv_org_unit_prf_id,
606       x_rsv_org_unit_pri_id               => x_rsv_org_unit_pri_id,
607       x_preference_order                  => x_preference_order,
608       x_preference_code                   => x_preference_code,
609       x_preference_version                => x_preference_version,
610       x_percentage_reserved               => x_percentage_reserved,
611       x_group_id                          => x_group_id,
612       x_creation_date                     => x_last_update_date,
613       x_created_by                        => x_last_updated_by,
614       x_last_update_date                  => x_last_update_date,
615       x_last_updated_by                   => x_last_updated_by,
616       x_last_update_login                 => x_last_update_login
617     );
618 
619     INSERT INTO igs_ps_rsv_orgun_prf (
620       rsv_org_unit_prf_id,
621       rsv_org_unit_pri_id,
622       preference_order,
623       preference_code,
624       preference_version,
625       percentage_reserved,
626       group_id,
627       creation_date,
628       created_by,
629       last_update_date,
630       last_updated_by,
631       last_update_login
632     ) VALUES (
633       new_references.rsv_org_unit_prf_id,
634       new_references.rsv_org_unit_pri_id,
635       new_references.preference_order,
636       new_references.preference_code,
637       new_references.preference_version,
638       new_references.percentage_reserved,
639       new_references.group_id,
640       x_last_update_date,
641       x_last_updated_by,
642       x_last_update_date,
643       x_last_updated_by,
644       x_last_update_login
645     );
646 
647     OPEN c;
648     FETCH c INTO x_rowid;
649     IF (c%NOTFOUND) THEN
650       CLOSE c;
651       RAISE NO_DATA_FOUND;
652     END IF;
653     CLOSE c;
654 
655   END insert_row;
656 
657 
658   PROCEDURE lock_row (
659     x_rowid                             IN     VARCHAR2,
660     x_rsv_org_unit_prf_id               IN     NUMBER,
661     x_rsv_org_unit_pri_id               IN     NUMBER,
662     x_preference_order                  IN     NUMBER,
663     x_preference_code                   IN     VARCHAR2,
664     x_preference_version                IN     NUMBER,
665     x_percentage_reserved               IN     NUMBER,
666     x_group_id                          IN     NUMBER
667   ) AS
668   /*
669   ||  Created By : apelleti
670   ||  Created On : 04-MAY-2001
671   ||  Purpose : Handles the LOCK mechanism for the table.
672   ||  Known limitations, enhancements or remarks :
673   ||  Change History :
674   ||  Who             When            What
675   ||  (reverse chronological order - newest change first)
676   */
677     CURSOR c1 IS
678       SELECT
679         rsv_org_unit_pri_id,
680         preference_order,
681         preference_code,
682         preference_version,
683         percentage_reserved,
684         group_id
685       FROM  igs_ps_rsv_orgun_prf
686       WHERE rowid = x_rowid
687       FOR UPDATE NOWAIT;
688 
689     tlinfo c1%ROWTYPE;
690 
691   BEGIN
692 
693     OPEN c1;
694     FETCH c1 INTO tlinfo;
695     IF (c1%notfound) THEN
696       fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
697       igs_ge_msg_stack.add;
698       CLOSE c1;
699       app_exception.raise_exception;
700       RETURN;
701     END IF;
702     CLOSE c1;
703 
704     IF (
705         (tlinfo.rsv_org_unit_pri_id = x_rsv_org_unit_pri_id)
706         AND (tlinfo.preference_order = x_preference_order)
707         AND (tlinfo.preference_code = x_preference_code)
708         AND ((tlinfo.preference_version = x_preference_version) OR ((tlinfo.preference_version IS NULL) AND (X_preference_version IS NULL)))
709         AND (tlinfo.percentage_reserved = x_percentage_reserved)
710         AND ((tlinfo.group_id = x_group_id) OR ((tlinfo.group_id IS NULL) AND (X_group_id IS NULL)))
711        ) THEN
712       NULL;
713     ELSE
714       fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
715       igs_ge_msg_stack.add;
716       app_exception.raise_exception;
717     END IF;
718 
719     RETURN;
720 
721   END lock_row;
722 
723 
724   PROCEDURE update_row (
725     x_rowid                             IN     VARCHAR2,
726     x_rsv_org_unit_prf_id               IN     NUMBER,
727     x_rsv_org_unit_pri_id               IN     NUMBER,
728     x_preference_order                  IN     NUMBER,
729     x_preference_code                   IN     VARCHAR2,
730     x_preference_version                IN     NUMBER,
731     x_percentage_reserved               IN     NUMBER,
732     x_group_id                          IN     NUMBER,
733     x_mode                              IN     VARCHAR2 DEFAULT 'R'
734   ) AS
735   /*
736   ||  Created By : apelleti
737   ||  Created On : 04-MAY-2001
738   ||  Purpose : Handles the UPDATE DML logic for the table.
739   ||  Known limitations, enhancements or remarks :
740   ||  Change History :
741   ||  Who             When            What
742   ||  (reverse chronological order - newest change first)
743   */
744     x_last_update_date           DATE ;
745     x_last_updated_by            NUMBER;
746     x_last_update_login          NUMBER;
747 
748   BEGIN
749 
750     x_last_update_date := SYSDATE;
751     IF (X_MODE = 'I') THEN
752       x_last_updated_by := 1;
753       x_last_update_login := 0;
754     ELSIF (x_mode = 'R') THEN
755       x_last_updated_by := fnd_global.user_id;
756       IF x_last_updated_by IS NULL THEN
757         x_last_updated_by := -1;
758       END IF;
759       x_last_update_login := fnd_global.login_id;
760       IF (x_last_update_login IS NULL) THEN
761         x_last_update_login := -1;
762       END IF;
763     ELSE
764       fnd_message.set_name( 'FND', 'SYSTEM-INVALID ARGS');
765       igs_ge_msg_stack.add;
766       app_exception.raise_exception;
767     END IF;
768 
769     before_dml(
770       p_action                            => 'UPDATE',
771       x_rowid                             => x_rowid,
772       x_rsv_org_unit_prf_id               => x_rsv_org_unit_prf_id,
773       x_rsv_org_unit_pri_id               => x_rsv_org_unit_pri_id,
774       x_preference_order                  => x_preference_order,
775       x_preference_code                   => x_preference_code,
776       x_preference_version                => x_preference_version,
777       x_percentage_reserved               => x_percentage_reserved,
778       x_group_id                          => x_group_id,
779       x_creation_date                     => x_last_update_date,
780       x_created_by                        => x_last_updated_by,
781       x_last_update_date                  => x_last_update_date,
782       x_last_updated_by                   => x_last_updated_by,
783       x_last_update_login                 => x_last_update_login
784     );
785 
786     UPDATE igs_ps_rsv_orgun_prf
787       SET
788         rsv_org_unit_pri_id               = new_references.rsv_org_unit_pri_id,
789         preference_order                  = new_references.preference_order,
790         preference_code                   = new_references.preference_code,
791         preference_version                = new_references.preference_version,
792         percentage_reserved               = new_references.percentage_reserved,
793         group_id                          = new_references.group_id,
794         last_update_date                  = x_last_update_date,
795         last_updated_by                   = x_last_updated_by,
796         last_update_login                 = x_last_update_login
797       WHERE rowid = x_rowid;
798 
799     IF (SQL%NOTFOUND) THEN
800       RAISE NO_DATA_FOUND;
801     END IF;
802 
803   END update_row;
804 
805 
806   PROCEDURE add_row (
807     x_rowid                             IN OUT NOCOPY VARCHAR2,
808     x_rsv_org_unit_prf_id               IN OUT NOCOPY NUMBER,
809     x_rsv_org_unit_pri_id               IN     NUMBER,
810     x_preference_order                  IN     NUMBER,
811     x_preference_code                   IN     VARCHAR2,
812     x_preference_version                IN     NUMBER,
813     x_percentage_reserved               IN     NUMBER,
814     x_group_id                          IN     NUMBER,
815     x_mode                              IN     VARCHAR2 DEFAULT 'R'
816   ) AS
817   /*
818   ||  Created By : apelleti
819   ||  Created On : 04-MAY-2001
820   ||  Purpose : Adds a row if there is no existing row, otherwise updates existing row in the table.
821   ||  Known limitations, enhancements or remarks :
822   ||  Change History :
823   ||  Who             When            What
824   ||  (reverse chronological order - newest change first)
825   */
826     CURSOR c1 IS
827       SELECT   rowid
828       FROM     igs_ps_rsv_orgun_prf
829       WHERE    rsv_org_unit_prf_id               = x_rsv_org_unit_prf_id;
830 
831   BEGIN
832 
833     OPEN c1;
834     FETCH c1 INTO x_rowid;
835     IF (c1%NOTFOUND) THEN
836       CLOSE c1;
837 
838       insert_row (
839         x_rowid,
840         x_rsv_org_unit_prf_id,
841         x_rsv_org_unit_pri_id,
842         x_preference_order,
843         x_preference_code,
844         x_preference_version,
845         x_percentage_reserved,
846         x_group_id,
847         x_mode
848       );
849       RETURN;
850     END IF;
851     CLOSE c1;
852 
853     update_row (
854       x_rowid,
855       x_rsv_org_unit_prf_id,
856       x_rsv_org_unit_pri_id,
857       x_preference_order,
858       x_preference_code,
859       x_preference_version,
860       x_percentage_reserved,
861       x_group_id,
862       x_mode
863     );
864 
865   END add_row;
866 
867 
868   PROCEDURE delete_row (
869     x_rowid IN VARCHAR2
870   ) AS
871   /*
872   ||  Created By : apelleti
873   ||  Created On : 04-MAY-2001
874   ||  Purpose : Handles the DELETE DML logic for the table.
875   ||  Known limitations, enhancements or remarks :
876   ||  Change History :
877   ||  Who             When            What
878   ||  (reverse chronological order - newest change first)
879   */
880   BEGIN
881 
882     before_dml (
883       p_action => 'DELETE',
884       x_rowid => x_rowid
885     );
886 
887     DELETE FROM igs_ps_rsv_orgun_prf
888     WHERE rowid = x_rowid;
889 
890     IF (SQL%NOTFOUND) THEN
891       RAISE NO_DATA_FOUND;
892     END IF;
893 
894   END delete_row;
895 
896 
897 END igs_ps_rsv_orgun_prf_pkg;