DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AV_STND_UNIT_PKG

Source


1 package body IGS_AV_STND_UNIT_PKG AS
2 /* $Header: IGSBI04B.pls 120.0 2005/07/05 12:12:01 appldev noship $ */
3   --msrinivi    24-AUG-2001     Bug No. 1956374 .Repointed genp_val_prsn_id
4 l_rowid VARCHAR2(25);
5   old_references IGS_AV_STND_UNIT_ALL%RowType;
6   new_references IGS_AV_STND_UNIT_ALL%RowType;
7   PROCEDURE Set_Column_Values (
8     p_action IN VARCHAR2,
9     x_rowid IN VARCHAR2 DEFAULT NULL,
10     x_person_id IN NUMBER DEFAULT NULL,
11     x_as_course_cd IN VARCHAR2 DEFAULT NULL,
12     x_as_version_number IN NUMBER DEFAULT NULL,
13     x_s_adv_stnd_type IN VARCHAR2 DEFAULT NULL,
14     x_unit_cd IN VARCHAR2 DEFAULT NULL,
15     x_version_number IN NUMBER DEFAULT NULL,
16     x_s_adv_stnd_granting_status IN VARCHAR2 DEFAULT NULL,
17     x_credit_percentage IN NUMBER DEFAULT NULL,
18     x_s_adv_stnd_recognition_type IN VARCHAR2 DEFAULT NULL,
19     x_approved_dt IN DATE DEFAULT NULL,
20     x_authorising_person_id IN NUMBER DEFAULT NULL,
21     x_crs_group_ind IN VARCHAR2 DEFAULT NULL,
22     x_exemption_institution_cd IN VARCHAR2 DEFAULT NULL,
23     x_granted_dt IN DATE DEFAULT NULL,
24     x_expiry_dt IN DATE DEFAULT NULL,
25     x_cancelled_dt IN DATE DEFAULT NULL,
26     x_revoked_dt IN DATE DEFAULT NULL,
27     x_comments IN VARCHAR2 DEFAULT NULL,
28     X_AV_STND_UNIT_ID     IN NUMBER DEFAULT NULL,
29     X_CAL_TYPE            IN VARCHAR2 DEFAULT NULL,
30     X_CI_SEQUENCE_NUMBER  IN NUMBER DEFAULT NULL,
31     X_INSTITUTION_CD      IN VARCHAR2 DEFAULT NULL,
32     X_UNIT_DETAILS_ID     in NUMBER DEFAULT NULL,
33     X_TST_RSLT_DTLS_ID    in NUMBER DEFAULT NULL,
34     X_GRADING_SCHEMA_CD   In VARCHAR2 DEFAULT NULL,
35     X_GRD_SCH_VERSION_NUMBER IN NUMBER DEFAULT NULL,
36     X_GRADE               IN VARCHAR2 DEFAULT NULL,
37     X_ACHIEVABLE_CREDIT_POINTS IN  NUMBER DEFAULT NULL,
38     x_creation_date IN DATE DEFAULT NULL,
39     x_created_by IN NUMBER DEFAULT NULL,
40     x_last_update_date IN DATE DEFAULT NULL,
41     x_last_updated_by IN NUMBER DEFAULT NULL,
42     x_last_update_login IN NUMBER DEFAULT NULL ,
43     x_org_id in NUMBER,
44     X_DEG_AUD_DETAIL_ID    IN NUMBER DEFAULT NULL
45   ) AS
46     CURSOR cur_old_ref_values IS
47       SELECT   *
48       FROM     IGS_AV_STND_UNIT_ALL
49       WHERE    rowid = x_rowid;
50   BEGIN
51     l_rowid := x_rowid;
52     -- Code for setting the Old and New Reference Values.
53     -- Populate Old Values.
54     Open cur_old_ref_values;
55     Fetch cur_old_ref_values INTO old_references;
56     IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT','VALIDATE_INSERT')) THEN
57       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
58       Igs_Ge_Msg_Stack.Add;
59       Close cur_old_ref_values;
60       App_Exception.Raise_Exception;
61       Return;
62     END IF;
63     Close cur_old_ref_values;
64     -- Populate New Values.
65     new_references.person_id := x_person_id;
66     new_references.as_course_cd := x_as_course_cd;
67     new_references.as_version_number := x_as_version_number;
68     new_references.s_adv_stnd_type := x_s_adv_stnd_type;
69     new_references.unit_cd := x_unit_cd;
70     new_references.version_number := x_version_number;
71     new_references.s_adv_stnd_granting_status := x_s_adv_stnd_granting_status;
72     new_references.s_adv_stnd_recognition_type := x_s_adv_stnd_recognition_type;
73     new_references.approved_dt := x_approved_dt;
74     new_references.authorising_person_id := x_authorising_person_id;
75     new_references.crs_group_ind := x_crs_group_ind;
76     new_references.exemption_institution_cd := x_exemption_institution_cd;
77     new_references.granted_dt := x_granted_dt;
78     new_references.expiry_dt := x_expiry_dt;
79     new_references.cancelled_dt := x_cancelled_dt;
80     new_references.revoked_dt := x_revoked_dt;
81     new_references.comments := x_comments;
82     new_references.AV_STND_UNIT_ID := X_AV_STND_UNIT_ID;
83     new_references.CAL_TYPE := x_CAL_TYPE;
84     new_references.CI_SEQUENCE_NUMBER := x_CI_SEQUENCE_NUMBER;
85     new_references.INSTITUTION_CD := x_INSTITUTION_CD;
86     new_references.UNIT_DETAILS_ID := x_UNIT_DETAILS_ID;
87     new_references.TST_RSLT_DTLS_ID := x_TST_RSLT_DTLS_ID;
88 
89     new_references.GRADING_SCHEMA_CD := x_GRADING_SCHEMA_CD;
90     new_references.GRD_SCH_VERSION_NUMBER := x_GRD_SCH_VERSION_NUMBER;
91     new_references.GRADE := x_GRADE;
92     new_references.ACHIEVABLE_CREDIT_POINTS := x_ACHIEVABLE_CREDIT_POINTS;
93 
94     IF (p_action = 'UPDATE') THEN
95       new_references.creation_date := old_references.creation_date;
96       new_references.created_by := old_references.created_by;
97     ELSE
98       new_references.creation_date := x_creation_date;
99       new_references.created_by := x_created_by;
100     END IF;
101     new_references.last_update_date := x_last_update_date;
102     new_references.last_updated_by := x_last_updated_by;
103     new_references.last_update_login := x_last_update_login;
104     new_references.org_id := x_org_id;
105     new_references.DEG_AUD_DETAIL_ID    := x_DEG_AUD_DETAIL_ID;
106 
107   END Set_Column_Values;
108 
109   -- Trigger description :-
110   -- "OSS_TST".trg_asu_br_iud
111   -- BEFORE INSERT OR DELETE OR UPDATE
112   -- ON IGS_AV_STND_UNIT_ALL
113   -- FOR EACH ROW
114   PROCEDURE BeforeRowInsertUpdateDelete1(
115     p_inserting IN BOOLEAN DEFAULT FALSE,
116     p_updating IN BOOLEAN DEFAULT FALSE,
117     p_deleting IN BOOLEAN DEFAULT FALSE,
118     p_adv_stnd_trans IN VARCHAR2 DEFAULT 'N'  -- This parameter has been added for Career Impact DLD.
119     ) AS
120   v_message_name    VARCHAR2(30);
121   v_return_val      igs_pe_std_todo.sequence_number%TYPE;
122   v_Person_id       igs_av_stnd_unit_all.person_id%TYPE;
123   v_course_cd       igs_av_stnd_unit_all.as_course_cd%TYPE;
124   v_version_number  igs_av_stnd_unit_all.as_version_number%TYPE;
125   v_exemption_institution_cd igs_av_stnd_unit_all.exemption_institution_cd%TYPE;
126   BEGIN
127   -- Validate conditions on insert (these apply to the trigger only).
128   IF p_inserting THEN
129     IF new_references.s_adv_stnd_type <> 'UNIT' THEN
130       Fnd_Message.Set_Name('IGS','IGS_AV_TYPE_MUSTBE_UNIT');
131       Igs_Ge_Msg_Stack.Add;
132       App_Exception.Raise_Exception;
133     END IF;
134     IF (new_references.s_adv_stnd_granting_status <> 'APPROVED' AND
135         p_adv_stnd_trans = 'N') THEN
136       Fnd_Message.Set_Name('IGS','IGS_AV_STATUS_MUSTBE_APPROVED');
137       Igs_Ge_Msg_Stack.Add;
138       App_Exception.Raise_Exception;
139     END IF;
140   END IF;
141   -- Validate that the advanced standing recognition type is open.
142   IF p_inserting OR
143      (p_updating AND (new_references.s_adv_stnd_recognition_type <>
144       old_references.s_adv_stnd_recognition_type)) THEN
145     IF igs_av_val_asu.advp_val_asrt_closed (
146          new_references.s_adv_stnd_recognition_type,
147          v_message_name
148        ) = FALSE THEN
149       Fnd_Message.Set_Name('IGS', v_message_name);
150       Igs_Ge_Msg_Stack.Add;
151       App_Exception.Raise_Exception;
152     END IF;
153   END IF;
154   -- Validate Advanced Standing Unit Approved Date
155   IF (new_references.approved_dt IS NOT NULL) AND
156     (p_inserting OR
157     (NVL(old_references.approved_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
158       new_references.approved_dt)) THEN
159     IF igs_av_val_asu.advp_val_as_dates (
160          new_references.approved_dt,
161          'APPROVED',
162          v_message_name,
163          p_adv_stnd_trans
164        ) = FALSE THEN
165       Fnd_Message.Set_Name('IGS', v_message_name);
166       Igs_Ge_Msg_Stack.Add;
167       App_Exception.Raise_Exception;
168     END IF;
169   END IF;
170   -- On update, the granting status cannot be set to 'Granted' from anything
171   -- other than 'Approved'/'Transferred'.
172   IF p_updating AND
173      (new_references.s_adv_stnd_granting_status = 'GRANTED') AND
174      (old_references.s_adv_stnd_granting_status <> new_references.s_adv_stnd_granting_status) THEN
175     IF old_references.s_adv_stnd_granting_status = 'REVOKED' THEN
176       Fnd_Message.Set_Name('IGS','IGS_AV_CHG_REVOKED_APPROVED');
177       Igs_Ge_Msg_Stack.Add;
178       App_Exception.Raise_Exception;
179     ELSIF old_references.s_adv_stnd_granting_status = 'CANCELLED' THEN
180       Fnd_Message.Set_Name('IGS', 'IGS_AV_CHG_CANCELLED_APPROVED');
181       Igs_Ge_Msg_Stack.Add;
182       App_Exception.Raise_Exception;
183     ELSIF old_references.s_adv_stnd_granting_status = 'EXPIRED' THEN
184       Fnd_Message.Set_Name('IGS', 'IGS_AV_CHG_EXPIRED_APPROVED');
185       Igs_Ge_Msg_Stack.Add;
186       App_Exception.Raise_Exception;
187     END IF;
188   END IF;
189   -- Validate Advanced Standing Unit Granted Date
190   IF (new_references.granted_dt IS NOT NULL) AND
191      (p_inserting OR
192      (NVL(old_references.granted_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
193       new_references.granted_dt)) THEN
194     IF igs_av_val_asu.advp_val_as_dates (
195          new_references.granted_dt,
196          'GRANTED',
197          v_message_name,
198          p_adv_stnd_trans
199        ) = FALSE THEN
200       Fnd_Message.Set_Name('IGS', v_message_name);
201       Igs_Ge_Msg_Stack.Add;
202       App_Exception.Raise_Exception;
203     END IF;
204   END IF;
205   -- Validate expiry date is greater than current date and approved date.
206   IF (new_references.expiry_dt IS NOT NULL) AND
207      (p_inserting OR
208      (NVL(old_references.expiry_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
209        new_references.expiry_dt)) THEN
210     IF igs_av_val_asu.advp_val_expiry_dt (
211          new_references.expiry_dt,
212          v_message_name,
213          p_adv_stnd_trans
214        ) = FALSE THEN
215       Fnd_Message.Set_Name('IGS', v_message_name);
216       Igs_Ge_Msg_Stack.Add;
217       App_Exception.Raise_Exception;
218     END IF;
219   END IF;
220   -- Validate Advanced Standing Unit Cancelled Date
221   IF (new_references.cancelled_dt IS NOT NULL) AND
222      (p_inserting OR
223      (NVL(old_references.cancelled_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
224       new_references.cancelled_dt)) THEN
225     IF igs_av_val_asu.advp_val_as_dates (
226          new_references.cancelled_dt,
227          'CANCELLED',
228          v_message_name
229        ) = FALSE THEN
230       Fnd_Message.Set_Name('IGS', v_message_name);
231       Igs_Ge_Msg_Stack.Add;
232       App_Exception.Raise_Exception;
233     END IF;
234     IF igs_av_val_asu.advp_val_as_aprvd_dt (
235          new_references.approved_dt,
236          new_references.cancelled_dt,
237          v_message_name
238        ) = FALSE THEN
239       Fnd_Message.Set_Name('IGS', v_message_name);
240       Igs_Ge_Msg_Stack.Add;
241       App_Exception.Raise_Exception;
242     END IF;
243   END IF;
244   -- Validate Advanced Standing Unit Revoked Date
245   IF (new_references.revoked_dt IS NOT NULL) AND
246      (p_inserting OR
247      (NVL(old_references.revoked_dt, IGS_GE_DATE.IGSDATE('1900/01/01')) <>
248       new_references.revoked_dt)) THEN
249     IF igs_av_val_asu.advp_val_as_dates (
250          new_references.revoked_dt,
251          'REVOKED',
252          v_message_name
253        ) = FALSE THEN
254       Fnd_Message.Set_Name('IGS', v_message_name);
255       Igs_Ge_Msg_Stack.Add;
256       App_Exception.Raise_Exception;
257     END IF;
258     IF igs_av_val_asu.advp_val_as_aprvd_dt (
259          new_references.approved_dt,
260          new_references.revoked_dt,
261          v_message_name
262        ) = FALSE THEN
263       Fnd_Message.Set_Name('IGS', v_message_name);
264       Igs_Ge_Msg_Stack.Add;
265       App_Exception.Raise_Exception;
266     END IF;
267   END IF;
268   -- Validate that related date is set for the granting status.
269   IF p_inserting OR (p_updating AND (new_references.s_adv_stnd_granting_status <>
270       old_references.s_adv_stnd_granting_status)) THEN
271     IF new_references.s_adv_stnd_granting_status = 'GRANTED' THEN
272       IF igs_av_val_asu.advp_val_status_dts (
273            'GRANTED',
274            new_references.granted_dt,
275            v_message_name,
276            p_adv_stnd_trans
277          ) = FALSE THEN
278         Fnd_Message.Set_Name('IGS', v_message_name);
279         Igs_Ge_Msg_Stack.Add;
280         App_Exception.Raise_Exception;
281       END IF;
282     ELSIF new_references.s_adv_stnd_granting_status = 'REVOKED' THEN
283       IF igs_av_val_asu.advp_val_status_dts (
284            'REVOKED',
285            new_references.revoked_dt,
286            v_message_name
287          ) = FALSE THEN
288         Fnd_Message.Set_Name('IGS', v_message_name);
289         Igs_Ge_Msg_Stack.Add;
290         App_Exception.Raise_Exception;
291       END IF;
292     ELSIF new_references.s_adv_stnd_granting_status = 'CANCELLED' THEN
293       IF igs_av_val_asu.advp_val_status_dts (
294            'CANCELLED',
295            new_references.cancelled_dt,
296            v_message_name
297          ) = FALSE THEN
298         Fnd_Message.Set_Name('IGS', v_message_name);
299         Igs_Ge_Msg_Stack.Add;
300         App_Exception.Raise_Exception;
301       END IF;
302     ELSIF new_references.s_adv_stnd_granting_status = 'EXPIRED' THEN
303       IF igs_av_val_asu.advp_val_status_dts (
304            'EXPIRED',
305            new_references.expiry_dt,
306            v_message_name
307          ) = FALSE THEN
308         Fnd_Message.Set_Name('IGS', v_message_name);
309         Igs_Ge_Msg_Stack.Add;
310         App_Exception.Raise_Exception;
311       END IF;
312     ELSIF new_references.s_adv_stnd_granting_status = 'APPROVED' THEN
313       IF igs_av_val_asu.advp_val_status_dts (
314            'APPROVED',
315            new_references.approved_dt,
316            v_message_name,
317            p_adv_stnd_trans
318          ) = FALSE THEN
319         Fnd_Message.Set_Name('IGS', v_message_name);
320         Igs_Ge_Msg_Stack.Add;
321         App_Exception.Raise_Exception;
322       END IF;
323     END IF;
324   END IF;
325   -- Validate Advanced Standing Unit Authorising Person Id.
326   -- Validate that the authorising person_id is valid and is a staff member.
327   -- Ignore the validation during Program Transfer
328   IF (p_adv_stnd_trans = 'N') THEN
329     IF p_inserting OR
330        (p_updating AND (new_references.authorising_person_id <> old_references.authorising_person_id)) THEN
331       IF igs_co_val_oc.genp_val_prsn_id (
332            new_references.authorising_person_id,
333            v_message_name) = FALSE THEN
334         Fnd_Message.Set_Name('IGS', v_message_name);
335         Igs_Ge_Msg_Stack.Add;
336         App_Exception.Raise_Exception;
337       END IF;
338       IF igs_ad_val_acai.genp_val_staff_prsn (
339            new_references.authorising_person_id,
340            v_message_name) = FALSE THEN
341         Fnd_Message.Set_Name('IGS', v_message_name);
342         Igs_Ge_Msg_Stack.Add;
343         App_Exception.Raise_Exception;
344       END IF;
345     END IF;
346   END IF;
347   IF p_updating AND ((new_references.s_adv_stnd_granting_status <>
348       old_references.s_adv_stnd_granting_status) and
349       (new_references.s_adv_stnd_granting_status = 'GRANTED'))
350       THEN
351     -- Validate that person is not encumbered when granting.
352     IF igs_en_val_encmb.enrp_val_excld_prsn (
353          new_references.person_id,
354          new_references.as_course_cd,
355          new_references.granted_dt,
356          v_message_name) = FALSE THEN
357       Fnd_Message.Set_Name('IGS', v_message_name);
358       Igs_Ge_Msg_Stack.Add;
359       App_Exception.Raise_Exception;
360     END IF;
361   END IF;
362   -- Validate that exemption institution code is valid.
363   IF p_inserting OR (p_updating AND (new_references.exemption_institution_cd <>
364       old_references.exemption_institution_cd)) THEN
365     IF igs_av_val_asu.advp_val_asu_inst (
366          new_references.exemption_institution_cd,
367          v_message_name) = FALSE THEN
368       Fnd_Message.Set_Name('IGS', v_message_name);
369       Igs_Ge_Msg_Stack.Add;
370       App_Exception.Raise_Exception;
371     END IF;
372   END IF;
373   IF p_inserting OR p_updating THEN
374     v_Person_id     :=  new_references.person_id;
375     v_course_cd     :=  new_references.as_course_cd;
376     v_version_number    :=  new_references.as_version_number;
377   ELSE
378     v_Person_id     :=  old_references.person_id;
379     v_course_cd     :=  old_references.as_course_cd;
380     v_version_number    :=  old_references.as_version_number;
381   END IF;
382   -- Just one call is made to validation as the variables are set appropriately
383   IF igs_av_gen_001.advp_upd_as_totals (
384        v_person_id,
385        v_course_cd,
386        v_version_number,
387        v_message_name,
388        v_exemption_institution_cd) = FALSE THEN
389     Fnd_Message.Set_Name('IGS', v_message_name);
390     Igs_Ge_Msg_Stack.Add;
391     App_Exception.Raise_Exception;
392   END IF;
393   -- Insert todo entry for re-checking of unit rules if a granted unit has has
394   -- been altered in a way which could affect the outcome of a unit rule.
395   --
396   -- If inserting a record which is CREDIT, 100% and GRANTED then insert
397   -- the todo entry.
398   IF p_inserting AND
399       (new_references.s_adv_stnd_recognition_type = 'CREDIT' and
400        new_references.s_adv_stnd_granting_status = 'GRANTED') THEN
401     v_return_val := igs_ge_gen_003.genp_ins_stdnt_todo(
402                       new_references.person_id,
403                       'UNIT-RULES',
404                       NULL);
405   END IF;
406   --
407   -- If updating and either the recognition type, credit or granting status have
408   -- been altered AND either the old or new record is CREDIT, 100% and GRANTED
409   -- the insert the todo entry.
410   IF p_updating AND
411       (old_references.s_adv_stnd_recognition_type <> new_references.s_adv_stnd_recognition_type OR
412        old_references.s_adv_stnd_granting_status <> new_references.s_adv_stnd_granting_status) AND
413       ((old_references.s_adv_stnd_recognition_type = 'CREDIT' AND
414          old_references.s_adv_stnd_granting_status = 'GRANTED') OR
415         (new_references.s_adv_stnd_recognition_type = 'CREDIT' AND
416          new_references.s_adv_stnd_granting_status = 'GRANTED')) THEN
417     v_return_val := igs_ge_gen_003.genp_ins_stdnt_todo (
418                       new_references.person_id,
419                       'UNIT-RULES',
420                       NULL,
421                       'Y');
422   END IF;
423   --
424   -- If deleting a record which is CREDIT, 100% and GRANTED then insert
425   -- the todo entry.
426   IF p_deleting AND
427       (old_references.s_adv_stnd_recognition_type = 'CREDIT' AND
428        old_references.s_adv_stnd_granting_status = 'GRANTED') THEN
429     v_return_val := igs_ge_gen_003.genp_ins_stdnt_todo(old_references.person_id,
430                       'UNIT-RULES',
431                       NULL,
432                       'Y');
433   END IF;
434   -- Process any advanced standing to do records
435   IF p_inserting THEN
436     igs_pr_gen_003.igs_pr_ins_adv_todo (
437       new_references.person_id,
438       new_references.as_course_cd,
439       new_references.as_version_number,
440       new_references.s_adv_stnd_recognition_type,
441       new_references.s_adv_stnd_recognition_type,
442       new_references.s_adv_stnd_granting_status,
443       new_references.s_adv_stnd_granting_status,
444       new_references.achievable_credit_points,
445       new_references.achievable_credit_points,
446       NULL,
447       NULL
448     );
449   ELSIF p_updating THEN
450     igs_pr_gen_003.igs_pr_ins_adv_todo (
451       new_references.person_id,
452       new_references.as_course_cd,
453       new_references.as_version_number,
454       old_references.s_adv_stnd_recognition_type,
455       new_references.s_adv_stnd_recognition_type,
456       old_references.s_adv_stnd_granting_status,
457       new_references.s_adv_stnd_granting_status,
458       old_references.achievable_credit_points,
459       new_references.achievable_credit_points,
460       NULL,
461       NULL
462     );
463   ELSIF p_deleting THEN
464     igs_pr_gen_003.igs_pr_ins_adv_todo (
465       old_references.person_id,
466       old_references.as_course_cd,
467       old_references.as_version_number,
468       old_references.s_adv_stnd_recognition_type,
469       old_references.s_adv_stnd_recognition_type,
470       old_references.s_adv_stnd_granting_status,
471       old_references.s_adv_stnd_granting_status,
472       old_references.achievable_credit_points,
473       old_references.achievable_credit_points,
474       NULL,
475       NULL
476     );
477   END IF;
478   END BeforeRowInsertUpdateDelete1;
479 
480   -- Trigger description :-
481   -- "OSS_TST".trg_asu_ar_iud
482   -- AFTER INSERT OR DELETE OR UPDATE
483   -- ON IGS_AV_STND_UNIT_ALL
484   -- FOR EACH ROW
485   -- Trigger description :-
486   -- "OSS_TST".trg_asu_as_iud
487   -- AFTER INSERT OR DELETE OR UPDATE
488   -- ON IGS_AV_STND_UNIT_ALL
489   PROCEDURE AfterRowInsertUpdateDelete2(
490     p_inserting IN BOOLEAN DEFAULT FALSE,
491     p_updating IN BOOLEAN DEFAULT FALSE,
492     p_deleting IN BOOLEAN DEFAULT FALSE
493     ) AS
494   v_message_name  varchar2(30);
495   BEGIN
496   -- If trigger has not been disabled, perform required processing
497           IF (p_inserting) THEN
498         IF IGS_AV_GEN_001.ADVP_UPD_AS_TOTALS (
499       new_references.person_id,
500       new_references.as_course_cd,
501       new_references.as_version_number,
502       v_message_name,
503       new_references.exemption_institution_cd) = FALSE THEN
504         Fnd_Message.Set_Name('IGS', v_message_name);
505       IGS_GE_MSG_STACK.ADD;
506       App_Exception.Raise_Exception;
507       END IF;
508   ELSE
509         IF IGS_AV_GEN_001.ADVP_UPD_AS_TOTALS (
510       old_references.person_id,
511       old_references.as_course_cd,
512       old_references.as_version_number,
513       v_message_name,
514       old_references.exemption_institution_cd) = FALSE THEN
515         Fnd_Message.Set_Name('IGS', v_message_name);
516       IGS_GE_MSG_STACK.ADD;
517       App_Exception.Raise_Exception;
518       END IF;
519   END IF;
520   END AfterRowInsertUpdateDelete2;
521 
522 
523 PROCEDURE Check_Constraints (
524  Column_Name  IN  VARCHAR2  DEFAULT NULL,
525  Column_Value   IN  VARCHAR2  DEFAULT NULL
526  )
527  AS
528  BEGIN
529   IF  column_name is null then
530      NULL;
531   ELSIF upper(Column_name) = 'CRS_GROUP_IND' then
532      new_references.crs_group_ind := column_value;
533   ELSIF upper(Column_name) = 'AS_COURSE_CD' then
534      new_references.as_course_cd := column_value;
535   ELSIF upper(Column_name) = 'EXEMPTION_INSTITUTION_CD' then
536      new_references.exemption_institution_cd := column_value;
537   ELSIF upper(Column_name) = 'S_ADV_STND_GRANTING_STATUS' then
538      new_references.s_adv_stnd_granting_status := column_value;
539   ELSIF upper(Column_name) = 'S_ADV_STND_RECOGNITION_TYPE' then
540      new_references.s_adv_stnd_recognition_type := column_value;
541   ELSIF upper(Column_name) = 'S_ADV_STND_TYPE' then
542      new_references.s_adv_stnd_type := column_value;
543   ELSIF upper(Column_name) = 'UNIT_CD' then
544      new_references.unit_cd := column_value;
545   ELSIF upper(Column_name) = 'INSTITUTION_CD' then
546      new_references.institution_cd := column_value;
547   ELSIF upper(Column_name) = 'CAL_TYPE' then
548      new_references.cal_type := column_value;
549   ELSIF upper(Column_name) = 'CI_SEQUENCE_NUMBER' then
550      new_references.ci_sequence_number := IGS_GE_NUMBER.TO_NUM(column_value);
551   End if;
552   IF upper(column_name) = 'AS_COURSE_CD' OR
553        column_name is null Then
554        IF new_references.AS_COURSE_CD <>
555     UPPER(new_references.AS_COURSE_CD) Then
556          Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
557          Igs_Ge_Msg_Stack.Add;
558          App_Exception.Raise_Exception;
559        END IF;
560   END IF;
561 
562 IF upper(column_name) = 'S_ADV_STND_GRANTING_STATUS' OR
563      column_name is null Then
564      IF new_references.S_ADV_STND_GRANTING_STATUS <>
565   UPPER(new_references.S_ADV_STND_GRANTING_STATUS) Then
566        Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
567        Igs_Ge_Msg_Stack.Add;
568        App_Exception.Raise_Exception;
569      END IF;
570 END IF;
571 IF upper(column_name) = 'S_ADV_STND_RECOGNITION_TYPE' OR
572      column_name is null Then
573      IF new_references.S_ADV_STND_RECOGNITION_TYPE <>
574   UPPER(new_references.S_ADV_STND_RECOGNITION_TYPE) Then
575        Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
576        Igs_Ge_Msg_Stack.Add;
577        App_Exception.Raise_Exception;
578      END IF;
579 END IF;
580 IF upper(column_name) = 'S_ADV_STND_TYPE' OR
581      column_name is null Then
582      IF new_references.S_ADV_STND_TYPE <>
583   UPPER(new_references.S_ADV_STND_TYPE) Then
584        Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
585        Igs_Ge_Msg_Stack.Add;
586        App_Exception.Raise_Exception;
587      END IF;
588 END IF;
589 IF upper(column_name) = 'UNIT_CD' OR
590      column_name is null Then
591      IF new_references.UNIT_CD <>
592   UPPER(new_references.UNIT_CD) Then
593        Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
594        Igs_Ge_Msg_Stack.Add;
595        App_Exception.Raise_Exception;
596      END IF;
597 END IF;
598 IF upper(column_name) = 'CRS_GROUP_IND' OR
599      column_name is null Then
600      IF new_references.CRS_GROUP_IND <>
601   UPPER(new_references.CRS_GROUP_IND) Then
602        Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
603        Igs_Ge_Msg_Stack.Add;
604        App_Exception.Raise_Exception;
605      END IF;
606 END IF;
607 IF upper(column_name) = 'CRS_GROUP_IND' OR
608      column_name is null Then
609      IF (new_references.crs_group_ind not in ('Y', 'N')) Then
610        Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
611        Igs_Ge_Msg_Stack.Add;
612        App_Exception.Raise_Exception;
613      END IF;
614 END IF;
615 IF upper(column_name) = 'S_ADV_STND_TYPE' OR
616      column_name is null Then
617      IF (new_references.s_adv_stnd_type <> 'UNIT') Then
618        Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
619        Igs_Ge_Msg_Stack.Add;
620        App_Exception.Raise_Exception;
621      END IF;
622 END IF;
623 
624    --Start addition for Bug no. 1960126
625     IF column_name IS NULL THEN
626      IF (new_references.institution_cd IS NOT NULL AND
627            new_references.unit_details_id IS NULL ) THEN
628                Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
629                Igs_Ge_Msg_Stack.Add;
630                App_Exception.Raise_Exception;
631      END IF;
632      IF (new_references.institution_cd IS NULL AND
633               new_references.tst_rslt_dtls_id IS NULL) THEN
634                  Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
635                  Igs_Ge_Msg_Stack.Add;
636                  App_Exception.Raise_Exception;
637      END IF;
638 
639      IF ((new_references.unit_details_id IS NULL AND
640             new_references.tst_rslt_dtls_id IS NULL) OR
641          (new_references.unit_details_id IS NOT NULL AND
642             new_references.tst_rslt_dtls_id IS NOT NULL)) THEN
643                Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
644                Igs_Ge_Msg_Stack.Add;
645                App_Exception.Raise_Exception;
646      END IF;
647    END IF;
648 
649 
650      IF upper(column_name) = 'CAL_TYPE' OR
651          column_name is null THEN
652        IF (new_references.cal_type IS NULL) THEN
653                  Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
654                  Igs_Ge_Msg_Stack.Add;
655                  App_Exception.Raise_Exception;
656        END IF;
657      END IF;
658 
659 
660     IF upper(column_name) = 'CI_SEQUENCE_NUMBER' OR
661        column_name is null THEN
662             IF (new_references.CI_SEQUENCE_NUMBER IS NULL) THEN
663                   Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
664                   Igs_Ge_Msg_Stack.Add;
665                   App_Exception.Raise_Exception;
666             END IF;
667     END IF;
668    --End of addition for Bug no. 1960126
669 
670 END Check_Constraints;
671 --
672 
673 
674 
675   PROCEDURE Check_Parent_Existance AS
676   BEGIN
677     IF (((old_references.s_adv_stnd_recognition_type = new_references.s_adv_stnd_recognition_type)) OR
678         ((new_references.s_adv_stnd_recognition_type IS NULL))) THEN
679       NULL;
680     ELSE
681 --
682       IF NOT IGS_LOOKUPS_VIEW_Pkg.Get_PK_For_Validation ('ADV_STND_RECOGNITION_TYPE',
683          new_references.s_adv_stnd_recognition_type) THEN
684          Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
685          Igs_Ge_Msg_Stack.Add;
686          App_Exception.Raise_Exception;
687       END IF;
688     END IF;
689  IF (((old_references.person_id = new_references.person_id) AND
690          (old_references.as_course_cd = new_references.as_course_cd) AND
691          (old_references.as_version_number = new_references.as_version_number)) OR
692         ((new_references.person_id IS NULL) OR
693          (new_references.as_course_cd IS NULL) OR
694          (new_references.as_version_number IS NULL))) THEN
695       NULL;
696  ELSE
697      IF NOT IGS_AV_ADV_STANDING_PKG.Get_PK_For_Validation (new_references.person_id,
698           new_references.as_course_cd, new_references.as_version_number,
699     new_references.exemption_institution_cd) THEN
700           Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
701           Igs_Ge_Msg_Stack.Add;
702           App_Exception.Raise_Exception;
703       END IF;
704   END IF;
705     IF (((old_references.authorising_person_id = new_references.authorising_person_id)) OR
706         ((new_references.authorising_person_id IS NULL))) THEN
707       NULL;
708     ELSE
709      IF NOT IGS_PE_PERSON_PKG.Get_PK_For_Validation (new_references.authorising_person_id) THEN
710          Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
711          Igs_Ge_Msg_Stack.Add;
712          App_Exception.Raise_Exception;
713       END IF;
714    END IF;
715     IF (((old_references.s_adv_stnd_granting_status = new_references.s_adv_stnd_granting_status)) OR
716         ((new_references.s_adv_stnd_granting_status IS NULL))) THEN
717       NULL;
718     ELSE
719      IF NOT IGS_LOOKUPS_VIEW_Pkg.Get_PK_For_Validation ('ADV_STND_GRANTING_STATUS',
720           new_references.s_adv_stnd_granting_status) THEN
721           Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
722           Igs_Ge_Msg_Stack.Add;
723           App_Exception.Raise_Exception;
724       END IF;
725     END IF;
726     IF (((old_references.unit_cd = new_references.unit_cd) AND
727          (old_references.version_number = new_references.version_number)) OR
728         ((new_references.unit_cd IS NULL) OR
729          (new_references.version_number IS NULL))) THEN
730       NULL;
731     ELSE
732     IF NOT IGS_PS_UNIT_VER_PKG.Get_PK_For_Validation (new_references.unit_cd, new_references.version_number) THEN
733        Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
734        Igs_Ge_Msg_Stack.Add;
735        App_Exception.Raise_Exception;
736     END IF;
737   END IF;
738 
739    --Start of addition for Bug no. 1960126
740 
741     IF (((old_references.cal_type = new_references.cal_type) AND
742          (old_references.ci_sequence_number = new_references.ci_sequence_number)) OR
743         ((new_references.cal_type IS NULL) OR
744          (new_references.ci_sequence_number IS NULL))) THEN
745       NULL;
746     ELSE
747       IF NOT IGS_CA_INST_PKG.Get_PK_For_Validation (new_references.cal_type,
748                                                     new_references.ci_sequence_number) THEN
749        Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
750        Igs_Ge_Msg_Stack.Add;
751        App_Exception.Raise_Exception;
752       END IF;
753     END IF;
754 
755     IF (((old_references.grading_schema_cd = new_references.grading_schema_cd) AND
756          (old_references.grd_sch_version_number = new_references.grd_sch_version_number) AND
757          (old_references.grade = new_references.grade)) OR
758         ((new_references.grading_schema_cd IS NULL) OR
759          (new_references.grd_sch_version_number IS NULL) OR
760          (new_references.grade IS NULL))) THEN
761       NULL;
762     ELSE
763       IF NOT IGS_AS_GRD_SCH_GRADE_PKG.Get_PK_For_Validation (new_references.grading_schema_cd,
764                                                              new_references.grd_sch_version_number,
765                    new_references.grade ) THEN
766          Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
767          Igs_Ge_Msg_Stack.Add;
768          App_Exception.Raise_Exception;
769       END IF;
770     END IF;
771 
772   --End of addition for Bug no. 1960126
773 
774 END Check_Parent_Existance;
775 
776  PROCEDURE check_uniqueness AS
777   /*************************************************************
778   Created By : pkpatel
779   Date Created By : 13-SEP-2001
780   Purpose :
781   Know limitations, enhancements or remarks
782   Change History
783   Who             When            What
784   (reverse chronological order - newest change first)
785   ***************************************************************/
786 
787    BEGIN
788         IF get_uk_for_validation (
789          new_references.person_id,
790                  new_references.exemption_institution_cd,
791                  new_references.unit_details_id,
792                  new_references.tst_rslt_dtls_id,
793                  new_references.unit_cd,
794                  new_references.as_course_cd,
795                  new_references.as_version_number,
796                  new_references.version_number,
797                  new_references.s_adv_stnd_type
798 
799         ) THEN
800     Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
801                                 IGS_GE_MSG_STACK.ADD;
802       app_exception.raise_exception;
803         END IF;
804  END Check_Uniqueness ;
805 
806 PROCEDURE Check_Child_Existance AS
807 BEGIN
808     IGS_AV_STND_ALT_UNIT_PKG.GET_FK_IGS_AV_STND_UNIT (
809       old_references.av_stnd_unit_id
810       );
811     IGS_AV_STD_UNT_BASIS_PKG.GET_FK_IGS_AV_STND_UNIT (
812       old_references.av_stnd_unit_id
813       );
814 END Check_Child_Existance;
815 
816 FUNCTION Get_PK_For_Validation (
817     x_av_stnd_unit_id IN NUMBER
818     ) RETURN BOOLEAN AS
819     CURSOR cur_rowid IS
820       SELECT   rowid
821       FROM     IGS_AV_STND_UNIT_ALL
822       WHERE    av_stnd_unit_id = x_av_stnd_unit_id
823       FOR UPDATE NOWAIT;
824     lv_rowid cur_rowid%RowType;
825   BEGIN
826    Open cur_rowid;
827    Fetch cur_rowid INTO lv_rowid;
828 ---
829    IF (cur_rowid%FOUND) THEN
830        Close cur_rowid;
831        Return (TRUE);
832    ELSE
833        Close cur_rowid;
834        Return (FALSE);
835    END IF;
836 ---
837    END Get_PK_For_Validation;
838 
839   FUNCTION get_uk_for_validation (
840     x_person_id                 IN NUMBER,
841     x_exemption_institution_cd  IN VARCHAR2, /* Modified as per Bug# 2523546 */
842     x_unit_details_id           IN NUMBER,
843     x_tst_rslt_dtls_id          IN NUMBER,
844     x_unit_cd                   IN VARCHAR2,
845     x_as_course_cd              IN VARCHAR2,
846     x_as_version_number         IN NUMBER,
847     x_version_number            IN NUMBER,   /* Added as per Bug# 2523546 */
848     x_s_adv_stnd_type           IN VARCHAR2  /* Added as per Bug# 2523546 */
849     ) RETURN BOOLEAN AS
850 
851   /*************************************************************
852   Created By :pkpatel
853   Date Created By : 13-SEP-2001
854   Purpose :
855   Know limitations, enhancements or remarks
856   Change History
857   Who             When            What
858   Nalin Kumar     02-Jan-2002     Modified the UK definition as per Bug# 2523546
859   (reverse chronological order - newest change first)
860   ***************************************************************/
861 
862     CURSOR cur_rowid IS
863       SELECT   rowid
864       FROM     igs_av_stnd_unit_all
865       WHERE   person_id = x_person_id  AND
866        exemption_institution_cd =  x_exemption_institution_cd   AND
867        ((unit_details_id = x_unit_details_id) OR (unit_details_id IS NULL AND x_unit_details_id IS NULL))   AND
868        ((tst_rslt_dtls_id = x_tst_rslt_dtls_id) OR (tst_rslt_dtls_id IS NULL AND x_tst_rslt_dtls_id IS NULL)) AND
869        unit_cd           = x_unit_cd           AND
870        as_course_cd      = x_as_course_cd      AND
871        as_version_number = x_as_version_number AND
872        version_number    = x_version_number    AND
873        s_adv_stnd_type   = x_s_adv_stnd_type   AND
874        ((l_rowid is null) or (rowid <> l_rowid));
875 
876     lv_rowid cur_rowid%RowType;
877 
878   BEGIN
879 
880     OPEN cur_rowid;
881     FETCH cur_rowid INTO lv_rowid;
882     IF (cur_rowid%FOUND) THEN
883       CLOSE cur_rowid;
884         RETURN (true);
885         ELSE
886        CLOSE cur_rowid;
887       RETURN(false);
888     END IF;
889   END get_uk_for_validation ;
890 
891   PROCEDURE GET_FK_IGS_LOOKUPS_VIEW_1(
892     x_s_adv_stnd_recognition_type IN VARCHAR2
893     ) AS
894     CURSOR cur_rowid IS
895       SELECT   rowid
896       FROM     IGS_AV_STND_UNIT_ALL
897       WHERE    s_adv_stnd_recognition_type = x_s_adv_stnd_recognition_type ;
898     lv_rowid cur_rowid%RowType;
899   BEGIN
900     Open cur_rowid;
901     Fetch cur_rowid INTO lv_rowid;
902     IF (cur_rowid%FOUND) THEN
903       Fnd_Message.Set_Name ('IGS', 'IGS_AV_ASU_SLV_FK');
904       Igs_Ge_Msg_Stack.Add;
905       Close cur_rowid;
906       App_Exception.Raise_Exception;
907       Return;
908     END IF;
909     Close cur_rowid;
910   END GET_FK_IGS_LOOKUPS_VIEW_1;
911 
912  PROCEDURE GET_FK_IGS_AV_ADV_STANDING (
913     x_person_id IN NUMBER,
914     x_course_cd IN VARCHAR2,
915     x_version_number IN NUMBER,
916     x_exemption_institution_cd IN VARCHAR2
917     ) AS
918     CURSOR cur_rowid IS
919       SELECT   rowid
920       FROM     IGS_AV_STND_UNIT_ALL
921       WHERE    person_id = x_person_id
922       AND      as_course_cd = x_course_cd
923       AND      as_version_number = x_version_number
924       AND      exemption_institution_cd=x_exemption_institution_cd;
925     lv_rowid cur_rowid%RowType;
926   BEGIN
927     Open cur_rowid;
928     Fetch cur_rowid INTO lv_rowid;
929     IF (cur_rowid%FOUND) THEN
930       Fnd_Message.Set_Name ('IGS', 'IGS_AV_ASU_AS_FK');
931       Igs_Ge_Msg_Stack.Add;
932       Close cur_rowid;
933       App_Exception.Raise_Exception;
934       Return;
935     END IF;
936     Close cur_rowid;
937   END GET_FK_IGS_AV_ADV_STANDING;
938 
939  --** Added as per Bug# 2401170
940  PROCEDURE get_fk_igs_ad_term_unitdtls (
941     x_unit_details_id IN NUMBER
942     ) AS
943     CURSOR cur_rowid IS
944       SELECT   rowid
945       FROM     IGS_AV_STND_UNIT_ALL
946       WHERE    unit_details_id = x_unit_details_id;
947     l_rowid cur_rowid%RowType;
948   BEGIN
949     Open cur_rowid;
950     Fetch cur_rowid INTO l_rowid;
951     IF (cur_rowid%FOUND) THEN
952       Fnd_Message.Set_Name ('IGS', 'IGS_AV_ASU_TUD_FK');
953       Igs_Ge_Msg_Stack.Add;
954       Close cur_rowid;
955       App_Exception.Raise_Exception;
956       Return;
957     END IF;
958     Close cur_rowid;
959   END get_fk_igs_ad_term_unitdtls;
960 
961  PROCEDURE get_fk_igs_ad_tst_rslt_dtls (
962     x_tst_rslt_dtls_id IN NUMBER
963     ) AS
964     CURSOR cur_rowid IS
965       SELECT   rowid
966       FROM     IGS_AV_STND_UNIT_ALL
967       WHERE    tst_rslt_dtls_id = x_tst_rslt_dtls_id;
968     l_rowid cur_rowid%RowType;
969   BEGIN
970     Open cur_rowid;
971     Fetch cur_rowid INTO l_rowid;
972     IF (cur_rowid%FOUND) THEN
973       Fnd_Message.Set_Name ('IGS', 'IGS_AV_ASU_TRD_FK');
974       Igs_Ge_Msg_Stack.Add;
975       Close cur_rowid;
976       App_Exception.Raise_Exception;
977       Return;
978     END IF;
979     Close cur_rowid;
980   END get_fk_igs_ad_tst_rslt_dtls;
981   --** End of new code as per Bug# 2401170
982 
983   PROCEDURE GET_FK_IGS_PE_PERSON (
984     x_person_id IN NUMBER
985     ) AS
986     CURSOR cur_rowid IS
987       SELECT   rowid
988       FROM     IGS_AV_STND_UNIT_ALL
989       WHERE    authorising_person_id = x_person_id ;
990     lv_rowid cur_rowid%RowType;
991   BEGIN
992     Open cur_rowid;
993     Fetch cur_rowid INTO lv_rowid;
994     IF (cur_rowid%FOUND) THEN
995       Fnd_Message.Set_Name ('IGS', 'IGS_AV_ASU_PE_FK');
996       Igs_Ge_Msg_Stack.Add;
997       Close cur_rowid;
998       App_Exception.Raise_Exception;
999       Return;
1000     END IF;
1001     Close cur_rowid;
1002   END GET_FK_IGS_PE_PERSON;
1003 
1004   PROCEDURE GET_FK_IGS_LOOKUPS_VIEW_2 (
1005     x_s_adv_stnd_granting_status IN VARCHAR2
1006     ) AS
1007     CURSOR cur_rowid IS
1008       SELECT   rowid
1009       FROM     IGS_AV_STND_UNIT_ALL
1010       WHERE    s_adv_stnd_granting_status = x_s_adv_stnd_granting_status ;
1011     lv_rowid cur_rowid%RowType;
1012   BEGIN
1013     Open cur_rowid;
1014     Fetch cur_rowid INTO lv_rowid;
1015     IF (cur_rowid%FOUND) THEN
1016       Fnd_Message.Set_Name ('IGS', 'IGS_AV_ASU_SLV_FK');
1017       Igs_Ge_Msg_Stack.Add;
1018       Close cur_rowid;
1019       App_Exception.Raise_Exception;
1020       Return;
1021     END IF;
1022     Close cur_rowid;
1023   END GET_FK_IGS_LOOKUPS_VIEW_2;
1024 
1025   PROCEDURE GET_FK_IGS_PS_UNIT_VER (
1026     x_unit_cd IN VARCHAR2,
1027     x_version_number IN NUMBER
1028     ) AS
1029     CURSOR cur_rowid IS
1030       SELECT   rowid
1031       FROM     IGS_AV_STND_UNIT_ALL
1032       WHERE    unit_cd = x_unit_cd
1033       AND      version_number = x_version_number ;
1034     lv_rowid cur_rowid%RowType;
1035   BEGIN
1036     Open cur_rowid;
1037     Fetch cur_rowid INTO lv_rowid;
1038     IF (cur_rowid%FOUND) THEN
1039       Fnd_Message.Set_Name ('IGS', 'IGS_AV_ASU_UV_FK');
1040       Igs_Ge_Msg_Stack.Add;
1041       Close cur_rowid;
1042       App_Exception.Raise_Exception;
1043       Return;
1044     END IF;
1045     Close cur_rowid;
1046   END GET_FK_IGS_PS_UNIT_VER;
1047 
1048 --Start of addition for Bug no. 1960126
1049   PROCEDURE GET_FK_IGS_CA_INST (
1050     x_cal_type IN VARCHAR2,
1051     x_ci_sequence_number IN NUMBER
1052     ) AS
1053     CURSOR cur_rowid IS
1054       SELECT   rowid
1055       FROM     IGS_AV_STND_UNIT_ALL
1056       WHERE    cal_type = x_cal_type
1057       AND      ci_sequence_number = x_ci_sequence_number ;
1058     lv_rowid cur_rowid%RowType;
1059   BEGIN
1060     Open cur_rowid;
1061     Fetch cur_rowid INTO lv_rowid;
1062     IF (cur_rowid%FOUND) THEN
1063       Fnd_Message.Set_Name ('IGS', 'IGS_AV_ASU_CI_FK');
1064       Igs_Ge_Msg_Stack.Add;
1065       Close cur_rowid;
1066       App_Exception.Raise_Exception;
1067       Return;
1068     END IF;
1069     Close cur_rowid;
1070   END GET_FK_IGS_CA_INST;
1071 
1072 PROCEDURE GET_FK_IGS_AS_GRD_SCH_GRADE (
1073     x_grading_schema_cd IN VARCHAR2,
1074     x_grd_sch_version_number IN NUMBER,
1075     x_grade IN VARCHAR2
1076     ) AS
1077     CURSOR cur_rowid IS
1078       SELECT   rowid
1079       FROM     IGS_AV_STND_UNIT_ALL
1080       WHERE    grading_schema_cd = x_grading_schema_cd
1081       AND      grd_sch_version_number = x_grd_sch_version_number
1082       AND      grade = x_grade;
1083     lv_rowid cur_rowid%RowType;
1084   BEGIN
1085     Open cur_rowid;
1086     Fetch cur_rowid INTO lv_rowid;
1087     IF (cur_rowid%FOUND) THEN
1088       Fnd_Message.Set_Name ('IGS', 'IGS_AV_ASU_GSG_FK');
1089       Igs_Ge_Msg_Stack.Add;
1090       Close cur_rowid;
1091       App_Exception.Raise_Exception;
1092       Return;
1093     END IF;
1094     Close cur_rowid;
1095   END GET_FK_IGS_AS_GRD_SCH_GRADE;
1096 
1097 --End of addition for Bug no. 1960126
1098   PROCEDURE Before_DML (
1099     p_action IN VARCHAR2,
1100     x_rowid IN  VARCHAR2 DEFAULT NULL,
1101     x_person_id IN NUMBER DEFAULT NULL,
1102     x_as_course_cd IN VARCHAR2 DEFAULT NULL,
1103     x_as_version_number IN NUMBER DEFAULT NULL,
1104     x_s_adv_stnd_type IN VARCHAR2 DEFAULT NULL,
1105     x_unit_cd IN VARCHAR2 DEFAULT NULL,
1106     x_version_number IN NUMBER DEFAULT NULL,
1107     x_s_adv_stnd_granting_status IN VARCHAR2 DEFAULT NULL,
1108     x_credit_percentage IN NUMBER DEFAULT NULL,
1109     x_s_adv_stnd_recognition_type IN VARCHAR2 DEFAULT NULL,
1110     x_approved_dt IN DATE DEFAULT NULL,
1111     x_authorising_person_id IN NUMBER DEFAULT NULL,
1112     x_crs_group_ind IN VARCHAR2 DEFAULT NULL,
1113     x_exemption_institution_cd IN VARCHAR2 DEFAULT NULL,
1114     x_granted_dt IN DATE DEFAULT NULL,
1115     x_expiry_dt IN DATE DEFAULT NULL,
1116     x_cancelled_dt IN DATE DEFAULT NULL,
1117     x_revoked_dt IN DATE DEFAULT NULL,
1118     x_comments IN VARCHAR2 DEFAULT NULL,
1119     X_AV_STND_UNIT_ID  IN NUMBER DEFAULT NULL,
1120     X_CAL_TYPE            IN VARCHAR2 DEFAULT NULL,
1121     X_CI_SEQUENCE_NUMBER  IN NUMBER DEFAULT NULL,
1122     X_INSTITUTION_CD      IN VARCHAR2 DEFAULT NULL,
1123     X_UNIT_DETAILS_ID     in NUMBER DEFAULT NULL,
1124     X_TST_RSLT_DTLS_ID    in NUMBER DEFAULT NULL,
1125     X_GRADING_SCHEMA_CD   In VARCHAR2 DEFAULT NULL,
1126     X_GRD_SCH_VERSION_NUMBER IN NUMBER DEFAULT NULL,
1127     X_GRADE               IN VARCHAR2 DEFAULT NULL,
1128     X_ACHIEVABLE_CREDIT_POINTS IN  NUMBER DEFAULT NULL,
1129     x_creation_date IN DATE DEFAULT NULL,
1130     x_created_by IN NUMBER DEFAULT NULL,
1131     x_last_update_date IN DATE DEFAULT NULL,
1132     x_last_updated_by IN NUMBER DEFAULT NULL,
1133     x_last_update_login IN NUMBER DEFAULT NULL,
1134     x_org_id IN NUMBER DEFAULT NULL,
1135     x_adv_stnd_trans IN VARCHAR2 DEFAULT 'N',  -- This parameter has been added for Career Impact DLD.
1136     X_DEG_AUD_DETAIL_ID    IN NUMBER DEFAULT NULL
1137   ) AS
1138   BEGIN
1139     Set_Column_Values (
1140       p_action,
1141       x_rowid,
1142       x_person_id,
1143       x_as_course_cd,
1144       x_as_version_number,
1145       x_s_adv_stnd_type,
1146       x_unit_cd,
1147       x_version_number,
1148       x_s_adv_stnd_granting_status,
1149       x_credit_percentage,
1150       x_s_adv_stnd_recognition_type,
1151       x_approved_dt,
1152       x_authorising_person_id,
1153       x_crs_group_ind,
1154       x_exemption_institution_cd,
1155       x_granted_dt,
1156       x_expiry_dt,
1157       x_cancelled_dt,
1158       x_revoked_dt,
1159       x_comments,
1160       X_AV_STND_UNIT_ID,
1161       X_CAL_TYPE,
1162       X_CI_SEQUENCE_NUMBER,
1163       X_INSTITUTION_CD,
1164       X_UNIT_DETAILS_ID,
1165       X_TST_RSLT_DTLS_ID,
1166       X_GRADING_SCHEMA_CD,
1167       X_GRD_SCH_VERSION_NUMBER,
1168       X_GRADE,
1169       X_ACHIEVABLE_CREDIT_POINTS,
1170       x_creation_date,
1171       x_created_by,
1172       x_last_update_date,
1173       x_last_updated_by,
1174       x_last_update_login,
1175       x_org_id,
1176       X_DEG_AUD_DETAIL_ID
1177     );
1178     IF (p_action = 'INSERT') THEN
1179       -- Call all the procedures related to Before Insert.
1180       BeforeRowInsertUpdateDelete1 ( p_inserting => TRUE,
1181                                      p_adv_stnd_trans => x_adv_stnd_trans);
1182 ---
1183      IF Get_PK_For_Validation (
1184                 new_references.av_stnd_unit_id
1185                 ) THEN
1186               Fnd_Message.Set_Name ('IGS', 'IGS_GE_MULTI_ORG_DUP_REC');
1187               Igs_Ge_Msg_Stack.Add;
1188               App_Exception.Raise_Exception;
1189       END IF;
1190 ---
1191       check_uniqueness;
1192       Check_Constraints;
1193       Check_Parent_Existance;
1194     ELSIF (p_action = 'UPDATE') THEN
1195       -- Call all the procedures related to Before Update.
1196       BeforeRowInsertUpdateDelete1 ( p_updating => TRUE );
1197       check_uniqueness;
1198       Check_Constraints;
1199       Check_Parent_Existance;
1200     ELSIF (p_action = 'DELETE') THEN
1201       -- Call all the procedures related to Before Delete.
1202       BeforeRowInsertUpdateDelete1 ( p_deleting => TRUE );
1203       Check_Child_Existance;
1204     ELSIF (p_action = 'VALIDATE_INSERT') THEN
1205 ---
1206       IF Get_PK_For_Validation (
1207                 new_references.av_stnd_unit_id
1208                 ) THEN
1209           Fnd_Message.Set_Name ('IGS', 'IGS_GE_MULTI_ORG_DUP_REC');
1210           Igs_Ge_Msg_Stack.Add;
1211           App_Exception.Raise_Exception;
1212       END IF;
1213         check_uniqueness;
1214         Check_Constraints;
1215       ELSIF (p_action = 'VALIDATE_UPDATE') THEN
1216          check_uniqueness;
1217          Check_Constraints;
1218       ELSIF (p_action = 'VALIDATE_DELETE') THEN
1219          Check_Child_Existance;
1220     END IF;
1221 END Before_DML;
1222 
1223  PROCEDURE After_DML (
1224     p_action IN VARCHAR2,
1225     x_rowid IN VARCHAR2
1226   ) AS
1227   BEGIN
1228     l_rowid := x_rowid;
1229     IF (p_action = 'INSERT') THEN
1230       -- Call all the procedures related to After Update.
1231       AfterRowInsertUpdateDelete2 ( p_inserting => TRUE );
1232     ELSIF (p_action = 'UPDATE') THEN
1233       -- Call all the procedures related to After Update.
1234       AfterRowInsertUpdateDelete2 ( p_updating => TRUE );
1235     ELSIF (p_action = 'DELETE') THEN
1236       -- Call all the procedures related to After Delete.
1237       AfterRowInsertUpdateDelete2 ( p_deleting => TRUE );
1238     END IF;
1239   END After_DML;
1240 
1241 
1242 procedure INSERT_ROW (
1243   X_ROWID in out NOCOPY VARCHAR2,
1244   X_PERSON_ID in NUMBER,
1245   X_AS_COURSE_CD in VARCHAR2,
1246   X_AS_VERSION_NUMBER in NUMBER,
1247   X_S_ADV_STND_TYPE in out NOCOPY VARCHAR2,
1248   X_UNIT_CD in VARCHAR2,
1249   X_VERSION_NUMBER in NUMBER,
1250   X_S_ADV_STND_GRANTING_STATUS in VARCHAR2,
1251   X_CREDIT_PERCENTAGE in NUMBER DEFAULT NULL,
1252   X_S_ADV_STND_RECOGNITION_TYPE in VARCHAR2,
1253   X_APPROVED_DT in DATE,
1254   X_AUTHORISING_PERSON_ID in NUMBER,
1255   X_CRS_GROUP_IND in VARCHAR2,
1256   X_EXEMPTION_INSTITUTION_CD in VARCHAR2,
1257   X_GRANTED_DT in DATE,
1258   X_EXPIRY_DT in DATE,
1259   X_CANCELLED_DT in DATE,
1260   X_REVOKED_DT in DATE,
1261   X_COMMENTS in VARCHAR2,
1262   X_AV_STND_UNIT_ID  IN OUT NOCOPY  NUMBER ,
1263   X_CAL_TYPE            IN VARCHAR2 DEFAULT NULL,
1264   X_CI_SEQUENCE_NUMBER  IN NUMBER DEFAULT NULL,
1265   X_INSTITUTION_CD      IN VARCHAR2 DEFAULT NULL,
1266   X_UNIT_DETAILS_ID     in NUMBER DEFAULT NULL,
1267   X_TST_RSLT_DTLS_ID    in NUMBER DEFAULT NULL,
1268   X_GRADING_SCHEMA_CD   In VARCHAR2 DEFAULT NULL,
1269   X_GRD_SCH_VERSION_NUMBER IN NUMBER DEFAULT NULL,
1270   X_GRADE               IN VARCHAR2 DEFAULT NULL,
1271   X_ACHIEVABLE_CREDIT_POINTS IN  NUMBER DEFAULT NULL,
1272   X_MODE in VARCHAR2 default 'R',
1273   X_ORG_ID in NUMBER,
1274   X_ADV_STND_TRANS IN VARCHAR2 DEFAULT 'N',  -- This parameter has been added for Career Impact DLD.
1275   X_DEG_AUD_DETAIL_ID    IN NUMBER DEFAULT NULL
1276   ) AS
1277     cursor C is select ROWID from IGS_AV_STND_UNIT_ALL
1278       where PERSON_ID = new_references.PERSON_ID
1279       and AS_COURSE_CD = new_references.AS_COURSE_CD
1280       and AS_VERSION_NUMBER =new_references.AS_VERSION_NUMBER
1281       and S_ADV_STND_TYPE = new_references.S_ADV_STND_TYPE
1282       and UNIT_CD = new_references.UNIT_CD
1283       and VERSION_NUMBER = new_references.VERSION_NUMBER;
1284     X_LAST_UPDATE_DATE DATE;
1285     X_LAST_UPDATED_BY NUMBER;
1286     X_LAST_UPDATE_LOGIN NUMBER;
1287     X_REQUEST_ID NUMBER ;
1288     X_PROGRAM_ID NUMBER ;
1289     X_PROGRAM_APPLICATION_ID NUMBER;
1290     X_PROGRAM_UPDATE_DATE DATE ;
1291 
1292    cursor c1 is select ROWID from IGS_AV_STND_UNIT_ALL
1293                       WHERE AV_STND_UNIT_ID = X_AV_STND_UNIT_ID;
1294 begin
1295   X_LAST_UPDATE_DATE := SYSDATE;
1296   if(X_MODE = 'I') then
1297     X_LAST_UPDATED_BY := 1;
1298     X_LAST_UPDATE_LOGIN := 0;
1299   elsif (X_MODE IN ('R', 'S')) then
1300     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1301     if X_LAST_UPDATED_BY is NULL then
1302       X_LAST_UPDATED_BY := -1;
1303     end if;
1304     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
1305     if X_LAST_UPDATE_LOGIN is NULL then
1306       X_LAST_UPDATE_LOGIN := -1;
1307     end if;
1308     X_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID ;
1309     X_PROGRAM_ID := FND_GLOBAL.CONC_PROGRAM_ID ;
1310     X_PROGRAM_APPLICATION_ID := FND_GLOBAL.PROG_APPL_ID ;
1311     if (X_REQUEST_ID = -1) then
1312        X_REQUEST_ID := NULL ;
1313        X_PROGRAM_ID := NULL ;
1314        X_PROGRAM_APPLICATION_ID := NULL ;
1315        X_PROGRAM_UPDATE_DATE := NULL ;
1316     else
1317        X_PROGRAM_UPDATE_DATE := SYSDATE ;
1318     end if ;
1319   else
1320     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
1321     Igs_Ge_Msg_Stack.Add;
1322     app_exception.raise_exception;
1323   end if;
1324 
1325   SELECT IGS_AV_STND_UNIT_S.NEXTVAL INTO X_AV_STND_UNIT_ID FROM DUAL;
1326 
1327 Before_DML(
1328  p_action=>'INSERT',
1329  x_rowid=>X_ROWID,
1330  x_approved_dt=>X_APPROVED_DT,
1331  x_as_course_cd=>X_AS_COURSE_CD,
1332  x_as_version_number=>X_AS_VERSION_NUMBER,
1333  x_authorising_person_id=>X_AUTHORISING_PERSON_ID,
1334  x_cancelled_dt=>X_CANCELLED_DT,
1335  x_comments=>X_COMMENTS,
1336  x_credit_percentage=> NULL,
1337  x_crs_group_ind=>NVL(X_CRS_GROUP_IND,'N'),
1338  x_exemption_institution_cd=>X_EXEMPTION_INSTITUTION_CD,
1339  x_expiry_dt=>X_EXPIRY_DT,
1340  x_granted_dt=>X_GRANTED_DT,
1341  x_person_id=>X_PERSON_ID,
1342  x_revoked_dt=>X_REVOKED_DT,
1343  x_s_adv_stnd_granting_status=>X_S_ADV_STND_GRANTING_STATUS,
1344  x_s_adv_stnd_recognition_type=>X_S_ADV_STND_RECOGNITION_TYPE,
1345  x_s_adv_stnd_type=>NVL(X_S_ADV_STND_TYPE,'UNIT'),
1346  x_unit_cd=>X_UNIT_CD,
1347  x_version_number=>X_VERSION_NUMBER,
1348  X_AV_STND_UNIT_ID => X_AV_STND_UNIT_ID,
1349  X_CAL_TYPE =>X_CAL_TYPE,
1350  X_CI_SEQUENCE_NUMBER =>X_CI_SEQUENCE_NUMBER,
1351  X_INSTITUTION_CD =>X_INSTITUTION_CD,
1352  X_UNIT_DETAILS_ID =>X_UNIT_DETAILS_ID,
1353  X_TST_RSLT_DTLS_ID =>X_TST_RSLT_DTLS_ID,
1354  X_GRADING_SCHEMA_CD =>X_GRADING_SCHEMA_CD,
1355  X_GRD_SCH_VERSION_NUMBER =>X_GRD_SCH_VERSION_NUMBER,
1356  X_GRADE =>X_GRADE,
1357  X_ACHIEVABLE_CREDIT_POINTS =>X_ACHIEVABLE_CREDIT_POINTS,
1358  x_creation_date=>X_LAST_UPDATE_DATE,
1359  x_created_by=>X_LAST_UPDATED_BY,
1360  x_last_update_date=>X_LAST_UPDATE_DATE,
1361  x_last_updated_by=>X_LAST_UPDATED_BY,
1362  x_last_update_login=>X_LAST_UPDATE_LOGIN,
1363  x_org_id=>igs_ge_gen_003.get_org_id,
1364  x_adv_stnd_trans=>X_ADV_STND_TRANS,
1365  X_DEG_AUD_DETAIL_ID    => X_DEG_AUD_DETAIL_ID
1366  );
1367 
1368   IF (x_mode = 'S') THEN
1369     igs_sc_gen_001.set_ctx('R');
1370   END IF;
1371   INSERT INTO IGS_AV_STND_UNIT_ALL (
1372     PERSON_ID,
1373     AS_COURSE_CD,
1374     AS_VERSION_NUMBER,
1375     S_ADV_STND_TYPE,
1376     UNIT_CD,
1377     VERSION_NUMBER,
1378     S_ADV_STND_GRANTING_STATUS,
1379     CREDIT_PERCENTAGE,
1380     S_ADV_STND_RECOGNITION_TYPE,
1381     APPROVED_DT,
1382     AUTHORISING_PERSON_ID,
1383     CRS_GROUP_IND,
1384     EXEMPTION_INSTITUTION_CD,
1385     GRANTED_DT,
1386     EXPIRY_DT,
1387     CANCELLED_DT,
1388     REVOKED_DT,
1389     COMMENTS,
1390     AV_STND_UNIT_ID,
1391     CAL_TYPE,
1392     CI_SEQUENCE_NUMBER,
1393     INSTITUTION_CD,
1394     UNIT_DETAILS_ID,
1395     TST_RSLT_DTLS_ID,
1396     GRADING_SCHEMA_CD,
1397     GRD_SCH_VERSION_NUMBER,
1398     GRADE,
1399     ACHIEVABLE_CREDIT_POINTS,
1400     ORG_ID,
1401     CREATION_DATE,
1402     CREATED_BY,
1403     LAST_UPDATE_DATE,
1404     LAST_UPDATED_BY,
1405     LAST_UPDATE_LOGIN,
1406     REQUEST_ID,
1407     PROGRAM_ID,
1408     PROGRAM_APPLICATION_ID,
1409     PROGRAM_UPDATE_DATE,
1410     DEG_AUD_DETAIL_ID
1411   ) values (
1412     NEW_REFERENCES.PERSON_ID,
1413     NEW_REFERENCES.AS_COURSE_CD,
1414     NEW_REFERENCES.AS_VERSION_NUMBER,
1415     NEW_REFERENCES.S_ADV_STND_TYPE,
1416     NEW_REFERENCES.UNIT_CD,
1417     NEW_REFERENCES.VERSION_NUMBER,
1418     NEW_REFERENCES.S_ADV_STND_GRANTING_STATUS,
1419     NULL,
1420     NEW_REFERENCES.S_ADV_STND_RECOGNITION_TYPE,
1421     NEW_REFERENCES.APPROVED_DT,
1422     NEW_REFERENCES.AUTHORISING_PERSON_ID,
1423     NEW_REFERENCES.CRS_GROUP_IND,
1424     NEW_REFERENCES.EXEMPTION_INSTITUTION_CD,
1425     NEW_REFERENCES.GRANTED_DT,
1426     NEW_REFERENCES.EXPIRY_DT,
1427     NEW_REFERENCES.CANCELLED_DT,
1428     NEW_REFERENCES.REVOKED_DT,
1429     NEW_REFERENCES.COMMENTS,
1430     NEW_REFERENCES.AV_STND_UNIT_ID,
1431     NEW_REFERENCES.CAL_TYPE,
1432     NEW_REFERENCES.CI_SEQUENCE_NUMBER,
1433     NEW_REFERENCES.INSTITUTION_CD,
1434     NEW_REFERENCES.UNIT_DETAILS_ID,
1435     NEW_REFERENCES.TST_RSLT_DTLS_ID,
1436     NEW_REFERENCES.GRADING_SCHEMA_CD,
1437     NEW_REFERENCES.GRD_SCH_VERSION_NUMBER,
1438     NEW_REFERENCES.GRADE,
1439     NEW_REFERENCES.ACHIEVABLE_CREDIT_POINTS,
1440     NEW_REFERENCES.ORG_ID,
1441     X_LAST_UPDATE_DATE,
1442     X_LAST_UPDATED_BY,
1443     X_LAST_UPDATE_DATE,
1444     X_LAST_UPDATED_BY,
1445     X_LAST_UPDATE_LOGIN,
1446     X_REQUEST_ID,
1447     X_PROGRAM_ID,
1448     X_PROGRAM_APPLICATION_ID,
1449     X_PROGRAM_UPDATE_DATE,
1450     NEW_REFERENCES.DEG_AUD_DETAIL_ID
1451   );
1452  IF (x_mode = 'S') THEN
1453     igs_sc_gen_001.unset_ctx('R');
1454   END IF;
1455 
1456   open c1;
1457   fetch c1 into X_ROWID;
1458   if (c1%notfound) then
1459     close c1;
1460     raise no_data_found;
1461   end if;
1462   close c1;
1463 
1464  After_DML(
1465   p_action => 'INSERT',
1466   x_rowid => X_ROWID
1467   );
1468 EXCEPTION
1469   WHEN OTHERS THEN
1470     IF (SQLCODE IN (-28115, -28113, -28111)) THEN
1471       fnd_message.set_name ('IGS', 'IGS_SC_POLICY_EXCEPTION');
1472       fnd_message.set_token ('ERR_CD', SQLCODE);
1473       igs_ge_msg_stack.add;
1474       igs_sc_gen_001.unset_ctx('R');
1475       app_exception.raise_exception;
1476     ELSE
1477       igs_sc_gen_001.unset_ctx('R');
1478       RAISE;
1479     END IF;
1480 
1481 end INSERT_ROW;
1482 
1483 
1484 procedure LOCK_ROW (
1485   X_ROWID in VARCHAR2,
1486   X_PERSON_ID in NUMBER,
1487   X_AS_COURSE_CD in VARCHAR2,
1488   X_AS_VERSION_NUMBER in NUMBER,
1489   X_S_ADV_STND_TYPE in VARCHAR2,
1490   X_UNIT_CD in VARCHAR2,
1491   X_VERSION_NUMBER in NUMBER,
1492   X_S_ADV_STND_GRANTING_STATUS in VARCHAR2,
1493   X_CREDIT_PERCENTAGE in NUMBER DEFAULT NULL,
1494   X_S_ADV_STND_RECOGNITION_TYPE in VARCHAR2,
1495   X_APPROVED_DT in DATE,
1496   X_AUTHORISING_PERSON_ID in NUMBER,
1497   X_CRS_GROUP_IND in VARCHAR2,
1498   X_EXEMPTION_INSTITUTION_CD in VARCHAR2,
1499   X_GRANTED_DT in DATE,
1500   X_EXPIRY_DT in DATE,
1501   X_CANCELLED_DT in DATE,
1502   X_REVOKED_DT in DATE,
1503   X_COMMENTS in VARCHAR2,
1504   X_AV_STND_UNIT_ID     IN  NUMBER,
1505   X_CAL_TYPE            IN VARCHAR2 DEFAULT NULL,
1506   X_CI_SEQUENCE_NUMBER  IN NUMBER DEFAULT NULL,
1507   X_INSTITUTION_CD      IN VARCHAR2 DEFAULT NULL,
1508   X_UNIT_DETAILS_ID     in NUMBER DEFAULT NULL,
1509   X_TST_RSLT_DTLS_ID    in NUMBER DEFAULT NULL,
1510   X_GRADING_SCHEMA_CD   In VARCHAR2 DEFAULT NULL,
1511   X_GRD_SCH_VERSION_NUMBER IN NUMBER DEFAULT NULL,
1512   X_GRADE               IN VARCHAR2 DEFAULT NULL,
1513   X_ACHIEVABLE_CREDIT_POINTS IN  NUMBER DEFAULT NULL,
1514   X_DEG_AUD_DETAIL_ID IN NUMBER DEFAULT NULL
1515 ) AS
1516   CURSOR c1 IS SELECT
1517       S_ADV_STND_GRANTING_STATUS,
1518       S_ADV_STND_RECOGNITION_TYPE,
1519       APPROVED_DT,
1520       AUTHORISING_PERSON_ID,
1521       CRS_GROUP_IND,
1522       EXEMPTION_INSTITUTION_CD,
1523       GRANTED_DT,
1524       EXPIRY_DT,
1525       CANCELLED_DT,
1526       REVOKED_DT,
1527       COMMENTS,
1528       AV_STND_UNIT_ID,
1529       CAL_TYPE,
1530       CI_SEQUENCE_NUMBER,
1531       INSTITUTION_CD,
1532       UNIT_DETAILS_ID,
1533       TST_RSLT_DTLS_ID,
1534       GRADING_SCHEMA_CD,
1535       GRD_SCH_VERSION_NUMBER,
1536       GRADE,
1537       ACHIEVABLE_CREDIT_POINTS,
1538       DEG_AUD_DETAIL_ID
1539     from IGS_AV_STND_UNIT_ALL
1540     where ROWID = X_ROWID
1541     for update nowait;
1542   tlinfo c1%rowtype;
1543 begin
1544   open c1;
1545   fetch c1 into tlinfo;
1546   if (c1%notfound) then
1547     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
1548     Igs_Ge_Msg_Stack.Add;
1549     close c1;
1550     app_exception.raise_exception;
1551     return;
1552   end if;
1553   close c1;
1554   if (
1555       (tlinfo.S_ADV_STND_GRANTING_STATUS = X_S_ADV_STND_GRANTING_STATUS)
1556       AND (tlinfo.S_ADV_STND_RECOGNITION_TYPE = X_S_ADV_STND_RECOGNITION_TYPE)
1557       AND (TRUNC(tlinfo.APPROVED_DT) =TRUNC(X_APPROVED_DT))
1558       AND (tlinfo.AUTHORISING_PERSON_ID = X_AUTHORISING_PERSON_ID)
1559       AND (tlinfo.CRS_GROUP_IND = X_CRS_GROUP_IND)
1560       AND (tlinfo.EXEMPTION_INSTITUTION_CD = X_EXEMPTION_INSTITUTION_CD)
1561       AND ((TRUNC(tlinfo.GRANTED_DT) = TRUNC(X_GRANTED_DT))       OR ((tlinfo.GRANTED_DT is null)      AND (X_GRANTED_DT is null)))
1562       AND ((TRUNC(tlinfo.EXPIRY_DT) = TRUNC(X_EXPIRY_DT))         OR ((tlinfo.EXPIRY_DT is null)       AND (X_EXPIRY_DT is null)))
1563       AND ((TRUNC(tlinfo.CANCELLED_DT) = TRUNC(X_CANCELLED_DT))   OR ((tlinfo.CANCELLED_DT is null)    AND (X_CANCELLED_DT is null)))
1564       AND ((TRUNC(tlinfo.REVOKED_DT) = TRUNC(X_REVOKED_DT))       OR ((tlinfo.REVOKED_DT is null)      AND (X_REVOKED_DT is null)))
1565       AND ((tlinfo.COMMENTS = X_COMMENTS)           OR ((tlinfo.COMMENTS is null)        AND (X_COMMENTS is null)))
1566       AND ((tlinfo.CAL_TYPE = X_CAL_TYPE)           OR ((tlinfo.CAL_TYPE is null)        AND (X_CAL_TYPE is null)))
1567       AND ((tlinfo.CI_SEQUENCE_NUMBER = X_CI_SEQUENCE_NUMBER)           OR ((tlinfo.CI_SEQUENCE_NUMBER is null)        AND (X_CI_SEQUENCE_NUMBER is null)))
1568       AND ((tlinfo.INSTITUTION_CD = X_INSTITUTION_CD)                   OR ((tlinfo.INSTITUTION_CD is null)        AND (X_INSTITUTION_CD is null)))
1569       AND ((tlinfo.UNIT_DETAILS_ID = X_UNIT_DETAILS_ID)             OR ((tlinfo.UNIT_DETAILS_ID is null)        AND (X_UNIT_DETAILS_ID is null)))
1570       AND ((tlinfo.TST_RSLT_DTLS_ID = X_TST_RSLT_DTLS_ID)             OR ((tlinfo.TST_RSLT_DTLS_ID is null)        AND (X_TST_RSLT_DTLS_ID is null)))
1571       AND ((tlinfo.GRADING_SCHEMA_CD = X_GRADING_SCHEMA_CD)             OR ((tlinfo.GRADING_SCHEMA_CD is null)        AND (X_GRADING_SCHEMA_CD is null)))
1572       AND ((tlinfo.GRD_SCH_VERSION_NUMBER = X_GRD_SCH_VERSION_NUMBER)   OR ((tlinfo.GRD_SCH_VERSION_NUMBER is null)        AND (X_GRD_SCH_VERSION_NUMBER is null)))
1573       AND ((tlinfo.GRADE = X_GRADE)                                     OR ((tlinfo.GRADE is null)        AND (X_GRADE is null)))
1574       AND ((tlinfo.ACHIEVABLE_CREDIT_POINTS = X_ACHIEVABLE_CREDIT_POINTS)  OR ((tlinfo.ACHIEVABLE_CREDIT_POINTS is null)        AND (X_ACHIEVABLE_CREDIT_POINTS is null)))
1575       AND ((tlinfo.DEG_AUD_DETAIL_ID = X_DEG_AUD_DETAIL_ID)  OR ((tlinfo.DEG_AUD_DETAIL_ID is null)        AND (X_DEG_AUD_DETAIL_ID is null)))
1576   ) then
1577    null;
1578   else
1579     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
1580     Igs_Ge_Msg_Stack.Add;
1581     app_exception.raise_exception;
1582   end if;
1583   return;
1584 end LOCK_ROW;
1585 
1586 
1587 procedure UPDATE_ROW (
1588   X_ROWID in VARCHAR2,
1589   X_PERSON_ID in NUMBER,
1590   X_AS_COURSE_CD in VARCHAR2,
1591   X_AS_VERSION_NUMBER in NUMBER,
1592   X_S_ADV_STND_TYPE in VARCHAR2,
1593   X_UNIT_CD in VARCHAR2,
1594   X_VERSION_NUMBER in NUMBER,
1595   X_S_ADV_STND_GRANTING_STATUS in VARCHAR2,
1596   X_CREDIT_PERCENTAGE in NUMBER DEFAULT NULL,
1597   X_S_ADV_STND_RECOGNITION_TYPE in VARCHAR2,
1598   X_APPROVED_DT in DATE,
1599   X_AUTHORISING_PERSON_ID in NUMBER,
1600   X_CRS_GROUP_IND in VARCHAR2,
1601   X_EXEMPTION_INSTITUTION_CD in VARCHAR2,
1602   X_GRANTED_DT in DATE,
1603   X_EXPIRY_DT in DATE,
1604   X_CANCELLED_DT in DATE,
1605   X_REVOKED_DT in DATE,
1606   X_COMMENTS in VARCHAR2,
1607   X_AV_STND_UNIT_ID     IN  NUMBER ,
1608   X_CAL_TYPE            IN VARCHAR2 DEFAULT NULL,
1609   X_CI_SEQUENCE_NUMBER  IN NUMBER DEFAULT NULL,
1610   X_INSTITUTION_CD      IN VARCHAR2 DEFAULT NULL,
1611   X_UNIT_DETAILS_ID     in NUMBER DEFAULT NULL,
1612   X_TST_RSLT_DTLS_ID    in NUMBER DEFAULT NULL,
1613   X_GRADING_SCHEMA_CD   In VARCHAR2 DEFAULT NULL,
1614   X_GRD_SCH_VERSION_NUMBER IN NUMBER DEFAULT NULL,
1615   X_GRADE               IN VARCHAR2 DEFAULT NULL,
1616   X_ACHIEVABLE_CREDIT_POINTS IN  NUMBER DEFAULT NULL,
1617   X_DEG_AUD_DETAIL_ID IN NUMBER DEFAULT NULL,
1618   X_MODE in VARCHAR2 default 'R'
1619   ) AS
1620     X_LAST_UPDATE_DATE DATE;
1621     X_LAST_UPDATED_BY NUMBER;
1622     X_LAST_UPDATE_LOGIN NUMBER;
1623     X_REQUEST_ID  NUMBER ;
1624     X_PROGRAM_ID  NUMBER ;
1625     X_PROGRAM_APPLICATION_ID  NUMBER;
1626     X_PROGRAM_UPDATE_DATE     DATE ;
1627 begin
1628   X_LAST_UPDATE_DATE := SYSDATE;
1629   if(X_MODE = 'I') then
1630     X_LAST_UPDATED_BY := 1;
1631     X_LAST_UPDATE_LOGIN := 0;
1632   elsif (X_MODE IN ('R', 'S')) then
1633     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1634     if X_LAST_UPDATED_BY is NULL then
1635       X_LAST_UPDATED_BY := -1;
1636     end if;
1637     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
1638     if X_LAST_UPDATE_LOGIN is NULL then
1639       X_LAST_UPDATE_LOGIN := -1;
1640     end if;
1641   else
1642     FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
1643     Igs_Ge_Msg_Stack.Add;
1644     app_exception.raise_exception;
1645   end if;
1646 before_DML(
1647 p_action=>'UPDATE',
1648 x_rowid=>X_ROWID,
1649 x_approved_dt=>X_APPROVED_DT,
1650 x_as_course_cd=>X_AS_COURSE_CD,
1651 x_as_version_number=>X_AS_VERSION_NUMBER,
1652 x_authorising_person_id=>X_AUTHORISING_PERSON_ID,
1653 x_cancelled_dt=>X_CANCELLED_DT,
1654 x_comments=>X_COMMENTS,
1655 x_credit_percentage=>NULL,
1656 x_crs_group_ind=>X_CRS_GROUP_IND,
1657 x_exemption_institution_cd=>X_EXEMPTION_INSTITUTION_CD,
1658 x_expiry_dt=>X_EXPIRY_DT,
1659 x_granted_dt=>X_GRANTED_DT,
1660 x_person_id=>X_PERSON_ID,
1661 x_revoked_dt=>X_REVOKED_DT,
1662 x_s_adv_stnd_granting_status=>X_S_ADV_STND_GRANTING_STATUS,
1663 x_s_adv_stnd_recognition_type=>X_S_ADV_STND_RECOGNITION_TYPE,
1664 x_s_adv_stnd_type=>X_S_ADV_STND_TYPE,
1665 x_unit_cd=>X_UNIT_CD,
1666 x_version_number=>X_VERSION_NUMBER,
1667 X_AV_STND_UNIT_ID=>X_AV_STND_UNIT_ID,
1668 X_CAL_TYPE =>X_CAL_TYPE,
1669 X_CI_SEQUENCE_NUMBER =>X_CI_SEQUENCE_NUMBER,
1670 X_INSTITUTION_CD =>X_INSTITUTION_CD,
1671 X_UNIT_DETAILS_ID =>X_UNIT_DETAILS_ID,
1672 X_TST_RSLT_DTLS_ID =>X_TST_RSLT_DTLS_ID,
1673 X_GRADING_SCHEMA_CD =>X_GRADING_SCHEMA_CD,
1674 X_GRD_SCH_VERSION_NUMBER =>X_GRD_SCH_VERSION_NUMBER,
1675 X_GRADE =>X_GRADE,
1676 X_ACHIEVABLE_CREDIT_POINTS =>X_ACHIEVABLE_CREDIT_POINTS,
1677 X_DEG_AUD_DETAIL_ID  =>   X_DEG_AUD_DETAIL_ID,
1678 x_creation_date=>X_LAST_UPDATE_DATE,
1679 x_created_by=>X_LAST_UPDATED_BY,
1680 x_last_update_date=>X_LAST_UPDATE_DATE,
1681 x_last_updated_by=>X_LAST_UPDATED_BY,
1682 x_last_update_login=>X_LAST_UPDATE_LOGIN
1683 );
1684   if (X_MODE IN ('R', 'S')) then
1685      X_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID ;
1686      X_PROGRAM_ID := FND_GLOBAL.CONC_PROGRAM_ID ;
1687      X_PROGRAM_APPLICATION_ID := FND_GLOBAL.PROG_APPL_ID ;
1688      if (X_REQUEST_ID = -1) then
1689          X_REQUEST_ID := OLD_REFERENCES.REQUEST_ID ;
1690          X_PROGRAM_ID := OLD_REFERENCES.PROGRAM_ID ;
1691          X_PROGRAM_APPLICATION_ID := OLD_REFERENCES.PROGRAM_APPLICATION_ID ;
1692          X_PROGRAM_UPDATE_DATE := OLD_REFERENCES.PROGRAM_UPDATE_DATE ;
1693       else
1694          X_PROGRAM_UPDATE_DATE := SYSDATE ;
1695       end if ;
1696    end if;
1697 
1698   IF (x_mode = 'S') THEN
1699     igs_sc_gen_001.set_ctx('R');
1700   END IF;
1701   UPDATE IGS_AV_STND_UNIT_ALL SET
1702     S_ADV_STND_GRANTING_STATUS = X_S_ADV_STND_GRANTING_STATUS,
1703     CREDIT_PERCENTAGE = NULL,
1704     S_ADV_STND_RECOGNITION_TYPE = X_S_ADV_STND_RECOGNITION_TYPE,
1705     APPROVED_DT = X_APPROVED_DT,
1706     AUTHORISING_PERSON_ID = X_AUTHORISING_PERSON_ID,
1707     CRS_GROUP_IND = X_CRS_GROUP_IND,
1708     EXEMPTION_INSTITUTION_CD = X_EXEMPTION_INSTITUTION_CD,
1709     GRANTED_DT = X_GRANTED_DT,
1710     EXPIRY_DT = X_EXPIRY_DT,
1711     CANCELLED_DT = X_CANCELLED_DT,
1712     REVOKED_DT = X_REVOKED_DT,
1713     COMMENTS = X_COMMENTS,
1714     CAL_TYPE = X_CAL_TYPE,
1715     CI_SEQUENCE_NUMBER = X_CI_SEQUENCE_NUMBER,
1716     INSTITUTION_CD = X_INSTITUTION_CD,
1717     UNIT_DETAILS_ID = X_UNIT_DETAILS_ID,
1718     TST_RSLT_DTLS_ID = X_TST_RSLT_DTLS_ID,
1719     GRADING_SCHEMA_CD = X_GRADING_SCHEMA_CD,
1720     GRD_SCH_VERSION_NUMBER = X_GRD_SCH_VERSION_NUMBER,
1721     GRADE = X_GRADE,
1722     ACHIEVABLE_CREDIT_POINTS = X_ACHIEVABLE_CREDIT_POINTS,
1723     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
1724     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
1725     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
1726     REQUEST_ID = X_REQUEST_ID,
1727     PROGRAM_ID = X_PROGRAM_ID,
1728     PROGRAM_APPLICATION_ID = X_PROGRAM_APPLICATION_ID,
1729     PROGRAM_UPDATE_DATE = X_PROGRAM_UPDATE_DATE,
1730     DEG_AUD_DETAIL_ID = X_DEG_AUD_DETAIL_ID
1731   where ROWID = X_ROWID  ;
1732   if (sql%notfound) then
1733      fnd_message.set_name ('IGS', 'IGS_SC_POLICY_UPD_DEL_EXCEP');
1734      igs_ge_msg_stack.add;
1735      igs_sc_gen_001.unset_ctx('R');
1736      app_exception.raise_exception;
1737  end if;
1738  IF (x_mode = 'S') THEN
1739     igs_sc_gen_001.unset_ctx('R');
1740   END IF;
1741 
1742  After_DML(
1743   p_action => 'UPDATE',
1744   x_rowid => X_ROWID
1745   );
1746 EXCEPTION
1747   WHEN OTHERS THEN
1748     IF (SQLCODE = (-28115)) THEN
1749       fnd_message.set_name ('IGS', 'IGS_SC_UPD_POLICY_EXCP');
1750       fnd_message.set_token ('ERR_CD', SQLCODE);
1751       igs_ge_msg_stack.add;
1752       igs_sc_gen_001.unset_ctx('R');
1753       app_exception.raise_exception;
1754     ELSE
1755       igs_sc_gen_001.unset_ctx('R');
1756       RAISE;
1757     END IF;
1758 
1759 end UPDATE_ROW;
1760 
1761 procedure ADD_ROW (
1762   X_ROWID in out NOCOPY VARCHAR2,
1763   X_PERSON_ID in NUMBER,
1764   X_AS_COURSE_CD in VARCHAR2,
1765   X_AS_VERSION_NUMBER in NUMBER,
1766   X_S_ADV_STND_TYPE in out NOCOPY VARCHAR2,
1767   X_UNIT_CD in VARCHAR2,
1768   X_VERSION_NUMBER in NUMBER,
1769   X_S_ADV_STND_GRANTING_STATUS in VARCHAR2,
1770   X_CREDIT_PERCENTAGE in NUMBER DEFAULT NULL,
1771   X_S_ADV_STND_RECOGNITION_TYPE in VARCHAR2,
1772   X_APPROVED_DT in DATE,
1773   X_AUTHORISING_PERSON_ID in NUMBER,
1774   X_CRS_GROUP_IND in VARCHAR2,
1775   X_EXEMPTION_INSTITUTION_CD in VARCHAR2,
1776   X_GRANTED_DT in DATE,
1777   X_EXPIRY_DT in DATE,
1778   X_CANCELLED_DT in DATE,
1779   X_REVOKED_DT in DATE,
1780   X_COMMENTS in VARCHAR2,
1781   X_AV_STND_UNIT_ID  IN OUT NOCOPY NUMBER ,
1782   X_CAL_TYPE            IN VARCHAR2 DEFAULT NULL,
1783   X_CI_SEQUENCE_NUMBER  IN NUMBER DEFAULT NULL,
1784   X_INSTITUTION_CD      IN VARCHAR2 DEFAULT NULL,
1785   X_UNIT_DETAILS_ID     in NUMBER DEFAULT NULL,
1786   X_TST_RSLT_DTLS_ID    in NUMBER DEFAULT NULL,
1787   X_GRADING_SCHEMA_CD   In VARCHAR2 DEFAULT NULL,
1788   X_GRD_SCH_VERSION_NUMBER IN NUMBER DEFAULT NULL,
1789   X_GRADE               IN VARCHAR2 DEFAULT NULL,
1790   X_ACHIEVABLE_CREDIT_POINTS IN  NUMBER DEFAULT NULL,
1791   X_MODE in VARCHAR2 default 'R',
1792   X_ORG_ID in NUMBER,
1793   X_DEG_AUD_DETAIL_ID IN  NUMBER DEFAULT NULL
1794   ) AS
1795   cursor c1 is select rowid from IGS_AV_STND_UNIT_ALL
1796      where AV_STND_UNIT_ID =X_AV_STND_UNIT_ID
1797   ;
1798 begin
1799   open c1;
1800   fetch c1 into X_ROWID ;
1801   if (c1%notfound) then
1802     close c1;
1803     INSERT_ROW (
1804      X_ROWID,
1805      X_PERSON_ID,
1806      X_AS_COURSE_CD,
1807      X_AS_VERSION_NUMBER,
1808      X_S_ADV_STND_TYPE,
1809      X_UNIT_CD,
1810      X_VERSION_NUMBER,
1811      X_S_ADV_STND_GRANTING_STATUS,
1812      NULL,
1813      X_S_ADV_STND_RECOGNITION_TYPE,
1814      X_APPROVED_DT,
1815      X_AUTHORISING_PERSON_ID,
1816      X_CRS_GROUP_IND,
1817      X_EXEMPTION_INSTITUTION_CD,
1818      X_GRANTED_DT,
1819      X_EXPIRY_DT,
1820      X_CANCELLED_DT,
1821      X_REVOKED_DT,
1822      X_COMMENTS,
1823      X_AV_STND_UNIT_ID,
1824      X_CAL_TYPE,
1825      X_CI_SEQUENCE_NUMBER,
1826      X_INSTITUTION_CD,
1827      X_UNIT_DETAILS_ID,
1828      X_TST_RSLT_DTLS_ID,
1829      X_GRADING_SCHEMA_CD,
1830      X_GRD_SCH_VERSION_NUMBER,
1831      X_GRADE,
1832      X_ACHIEVABLE_CREDIT_POINTS,
1833      X_MODE,
1834      X_ORG_ID,
1835      X_DEG_AUD_DETAIL_ID);
1836     return;
1837   end if;
1838   close c1;
1839   UPDATE_ROW (
1840    X_ROWID ,
1841    X_PERSON_ID,
1842    X_AS_COURSE_CD,
1843    X_AS_VERSION_NUMBER,
1844    X_S_ADV_STND_TYPE,
1845    X_UNIT_CD,
1846    X_VERSION_NUMBER,
1847    X_S_ADV_STND_GRANTING_STATUS,
1848    NULL,
1849    X_S_ADV_STND_RECOGNITION_TYPE,
1850    X_APPROVED_DT,
1851    X_AUTHORISING_PERSON_ID,
1852    X_CRS_GROUP_IND,
1853    X_EXEMPTION_INSTITUTION_CD,
1854    X_GRANTED_DT,
1855    X_EXPIRY_DT,
1856    X_CANCELLED_DT,
1857    X_REVOKED_DT,
1858    X_COMMENTS,
1859    X_AV_STND_UNIT_ID,
1860    X_CAL_TYPE,
1861    X_CI_SEQUENCE_NUMBER,
1862    X_INSTITUTION_CD,
1863    X_UNIT_DETAILS_ID,
1864    X_TST_RSLT_DTLS_ID,
1865    X_GRADING_SCHEMA_CD,
1866    X_GRD_SCH_VERSION_NUMBER,
1867    X_GRADE,
1868    X_ACHIEVABLE_CREDIT_POINTS,
1869    X_MODE,
1870    X_DEG_AUD_DETAIL_ID);
1871 end ADD_ROW;
1872 
1873 procedure DELETE_ROW (
1874 X_ROWID in VARCHAR2,
1875   x_mode IN VARCHAR2  )
1876 AS
1877 begin
1878  Before_DML(
1879   p_action => 'DELETE',
1880   x_rowid => X_ROWID
1881   );
1882   IF (x_mode = 'S') THEN
1883     igs_sc_gen_001.set_ctx('R');
1884   END IF;
1885   delete from IGS_AV_STND_UNIT_ALL
1886   where ROWID = X_ROWID ;
1887   if (sql%notfound) then
1888      fnd_message.set_name ('IGS', 'IGS_SC_POLICY_UPD_DEL_EXCEP');
1889      igs_ge_msg_stack.add;
1890      igs_sc_gen_001.unset_ctx('R');
1891      app_exception.raise_exception;
1892  end if;
1893  IF (x_mode = 'S') THEN
1894     igs_sc_gen_001.unset_ctx('R');
1895   END IF;
1896 
1897  After_DML(
1898   p_action => 'DELETE',
1899   x_rowid => X_ROWID
1900   );
1901 end DELETE_ROW;
1902 end IGS_AV_STND_UNIT_PKG;