DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_TERM_UNITDTLS_PKG

Source


1 PACKAGE BODY igs_ad_term_unitdtls_pkg AS
2 /* $Header: IGSAI84B.pls 120.2 2005/10/01 21:47:44 appldev ship $ */
3   PROCEDURE update_term_tab(x_term_id IN NUMBER);
4   l_rowid VARCHAR2(25);
5   old_references igs_ad_term_unitdtls%RowType;
6   new_references igs_ad_term_unitdtls%RowType;
7 
8 
9   PROCEDURE Check_Status
10   AS
11   /*************************************************************
12   Created By : jchin
13   Date Created By : 29-Sep-2005
14   Purpose : Check if associated academic record is INACTIVE and throw
15    an error if it is
16   Know limitations, enhancements or remarks
17   Change History
18   Who             When            What
19   (reverse chronological order - newest change first)
20   ***************************************************************/
21 
22   CURSOR check_status(cp_term_details_id IN NUMBER) IS
23     SELECT DISTINCT 1
24     FROM igs_ad_acad_history_v hist, igs_ad_transcript_v trans, igs_ad_term_details_v term
25     WHERE hist.education_id = trans.education_id
26     AND trans.transcript_id = term.transcript_id
27     AND term.term_details_id = cp_term_details_id
28     AND hist.status = 'I';
29 
30   l_temp NUMBER;
31 
32   BEGIN
33 
34     l_temp := null;
35 
36     OPEN check_status(new_references.term_details_id);
37     FETCH check_status INTO l_temp;
38     CLOSE check_status;
39 
40     IF l_temp IS NOT NULL THEN
41 
42       Fnd_message.Set_Name('IGS', 'IGS_AD_INACTIVE_ACAD_HIST');
43       IGS_GE_MSG_STACK.ADD;
44       app_exception.Raise_Exception;
45 
46     END IF;
47 
48   END Check_Status;
49 
50 
51   PROCEDURE Set_Column_Values (
52     p_action IN VARCHAR2,
53     x_rowid IN VARCHAR2 DEFAULT NULL,
54     x_unit_details_id IN NUMBER DEFAULT NULL,
55     x_term_details_id IN NUMBER DEFAULT NULL,
56     x_unit IN VARCHAR2 DEFAULT NULL,
57     x_unit_difficulty IN NUMBER DEFAULT NULL,
58     x_unit_name IN VARCHAR2 DEFAULT NULL,
59     x_cp_attempted IN NUMBER DEFAULT NULL,
60     x_cp_earned IN NUMBER DEFAULT NULL,
61     x_grade IN VARCHAR2 DEFAULT NULL,
62     x_unit_grade_points IN NUMBER DEFAULT NULL,
63     x_deg_aud_detail_id  IN NUMBER DEFAULT NULL,
64     x_creation_date IN DATE DEFAULT NULL,
65     x_created_by IN NUMBER DEFAULT NULL,
66     x_last_update_date IN DATE DEFAULT NULL,
67     x_last_updated_by IN NUMBER DEFAULT NULL,
68     x_last_update_login IN NUMBER DEFAULT NULL
69   ) AS
70 
71   /*************************************************************
72   Created By : Kamalakar N.
73   Date Created By : 15/May/2000
74   Purpose :
75   Know limitations, enhancements or remarks
76   Change History
77   Who             When            What
78 
79   (reverse chronological order - newest change first)
80   ***************************************************************/
81 
82     CURSOR cur_old_ref_values IS
83       SELECT   *
84       FROM     IGS_AD_TERM_UNITDTLS
85       WHERE    rowid = x_rowid;
86 
87   BEGIN
88 
89     l_rowid := x_rowid;
90 
91     -- Code for setting the Old and New Reference Values.
92     -- Populate Old Values.
93     Open cur_old_ref_values;
94     Fetch cur_old_ref_values INTO old_references;
95     IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT','VALIDATE_INSERT')) THEN
96       Close cur_old_ref_values;
97       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
98       IGS_GE_MSG_STACK.ADD;
99       App_Exception.Raise_Exception;
100       Return;
101     END IF;
102     Close cur_old_ref_values;
103 
104     -- Populate New Values.
105     new_references.unit_details_id := x_unit_details_id;
106     new_references.term_details_id := x_term_details_id;
107     new_references.unit := x_unit;
108     new_references.unit_difficulty := x_unit_difficulty;
109     new_references.unit_name := x_unit_name;
110     new_references.cp_attempted := x_cp_attempted;
111     new_references.cp_earned := x_cp_earned;
112     new_references.grade := x_grade;
113     new_references.unit_grade_points := x_unit_grade_points;
114     new_references.deg_aud_detail_id := x_deg_aud_detail_id;
115     IF (p_action = 'UPDATE') THEN
116       new_references.creation_date := old_references.creation_date;
117       new_references.created_by := old_references.created_by;
118     ELSE
119       new_references.creation_date := x_creation_date;
120       new_references.created_by := x_created_by;
121     END IF;
122     new_references.last_update_date := x_last_update_date;
123     new_references.last_updated_by := x_last_updated_by;
124     new_references.last_update_login := x_last_update_login;
125 
126   END Set_Column_Values;
127 
128   PROCEDURE Check_Constraints (
129 		 Column_Name IN VARCHAR2  DEFAULT NULL,
130 		 Column_Value IN VARCHAR2  DEFAULT NULL ) AS
131   /*************************************************************
132   Created By : Kamalakar N.
133   Date Created By : 15/May/2000
134   Purpose :
135   Know limitations, enhancements or remarks
136   Change History
137   Who             When            What
138   rboddu          10-DEC-2002     modified for bug 2623180
139   (reverse chronological order - newest change first)
140   ***************************************************************/
141 
142   BEGIN
143 
144       IF column_name IS NULL THEN
145         NULL;
146       ELSIF  UPPER(column_name) = 'CP_ATTEMPTED'  THEN
147         new_references.cp_attempted := IGS_GE_NUMBER.TO_NUM(column_value);
148       ELSIF  UPPER(column_name) = 'CP_EARNED'  THEN
149         new_references.cp_earned := IGS_GE_NUMBER.TO_NUM(column_value);
150       ELSIF  UPPER(column_name) = 'UNIT_GRADE_POINTS'  THEN
151         new_references.unit_grade_points := IGS_GE_NUMBER.TO_NUM(column_value);
152         NULL;
153       END IF;
154 
155 
156 
157     -- The following code checks for check constraints on the Columns.
158 
159     -- Bug: 2623180. changed >0 to >=0 in the following credit point comparison checks
160       IF Upper(Column_Name) = 'CP_ATTEMPTED' OR
161       	Column_Name IS NULL THEN
162         IF NOT (new_references.cp_attempted >= 0)  THEN
163          FND_MESSAGE.SET_NAME('IGS','IGS_GE_INVALID_VALUE_WITH_CTXT');
164          FND_MESSAGE.SET_TOKEN('ATTRIBUTE',FND_MESSAGE.GET_STRING('IGS','IGS_AD_CP_ATTEMPTED'));
165          IGS_GE_MSG_STACK.ADD;
166          App_Exception.Raise_Exception;
167         END IF;
168       END IF;
169 
170     -- The following code checks for check constraints on the Columns.
171       IF Upper(Column_Name) = 'CP_EARNED' OR
172       	Column_Name IS NULL THEN
173         IF NOT (new_references.cp_earned >= 0)  THEN
174          FND_MESSAGE.SET_NAME('IGS','IGS_GE_INVALID_VALUE_WITH_CTXT');
175          FND_MESSAGE.SET_TOKEN('ATTRIBUTE',FND_MESSAGE.GET_STRING('IGS','IGS_AD_CP_EARNED'));
176          IGS_GE_MSG_STACK.ADD;
177          App_Exception.Raise_Exception;
178         END IF;
179       END IF;
180 
181     -- The following code checks for check constraints on the Columns.
182       IF Upper(Column_Name) = 'UNIT_GRADE_POINTS' OR
183       	Column_Name IS NULL THEN
184         IF NOT (new_references.unit_grade_points >= 0)  THEN
185          FND_MESSAGE.SET_NAME('IGS','IGS_GE_INVALID_VALUE_WITH_CTXT');
186          FND_MESSAGE.SET_TOKEN('ATTRIBUTE',FND_MESSAGE.GET_STRING('IGS','IGS_AD_GRADE_POINT'));
187          IGS_GE_MSG_STACK.ADD;
188          App_Exception.Raise_Exception;
189         END IF;
190       END IF;
191   END Check_Constraints;
192 
193 
194 
195   PROCEDURE Check_Uniqueness AS
196   /*************************************************************
197   Created By : amuthu
198   Date Created On : 16-May-2000
199   Purpose :
200   Know limitations, enhancements or remarks
201   Change History
202   Who             When            What
203 
204   (reverse chronological order - newest change first)
205   ***************************************************************/
206    Begin
207   	IF Get_Uk_for_Validation(
208   	  new_references.term_details_id,
209   	  new_references.unit
210   	  ) THEN
211  	  Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
212 	  IGS_GE_MSG_STACK.ADD;
213 	  app_exception.raise_exception;
214     	END IF;
215 
216    END Check_Uniqueness ;
217 
218   PROCEDURE Check_Parent_Existance AS
219   /*************************************************************
220   Created By : Kamalakar N.
221   Date Created By : 15/May/2000
222   Purpose :
223   Know limitations, enhancements or remarks
224   Change History
225   Who             When            What
226 
227   (reverse chronological order - newest change first)
228   ***************************************************************/
229 
230   BEGIN
231 
232     IF (((old_references.unit_difficulty = new_references.unit_difficulty)) OR
233         ((new_references.unit_difficulty IS NULL))) THEN
234       NULL;
235     ELSIF NOT Igs_Ad_Code_Classes_Pkg.Get_uk2_For_Validation (
236         		new_references.unit_difficulty ,
237                         'UNIT_DIFFICULTY',
238             'N'
239         )  THEN
240          FND_MESSAGE.SET_NAME('IGS','IGS_GE_PK_UK_NOT_FOUND_CLOSED');
241          FND_MESSAGE.SET_TOKEN('ATTRIBUTE',FND_MESSAGE.GET_STRING('IGS','IGS_AD_UNIT_DIFFICULTY'));
242          IGS_GE_MSG_STACK.ADD;
243          App_Exception.Raise_Exception;
244     END IF;
245 
246     IF (((old_references.term_details_id = new_references.term_details_id)) OR
247         ((new_references.term_details_id IS NULL))) THEN
248       NULL;
249     ELSIF NOT Igs_Ad_Term_Details_Pkg.Get_PK_For_Validation (
250         		new_references.term_details_id
251         )  THEN
252          FND_MESSAGE.SET_NAME('IGS','IGS_GE_PK_UK_NOT_FOUND');
253          FND_MESSAGE.SET_TOKEN('ATTRIBUTE',FND_MESSAGE.GET_STRING('IGS','IGS_AD_TERM_DETAILS'));
254          IGS_GE_MSG_STACK.ADD;
255          App_Exception.Raise_Exception;
256     END IF;
257 
258   END Check_Parent_Existance;
259 
260   FUNCTION Get_PK_For_Validation (
261     x_unit_details_id IN NUMBER
262     ) RETURN BOOLEAN AS
263 
264  /*************************************************************
265   Created By : Kamalakar N.
266   Date Created By : 15/May/2000
267   Purpose :
268   Know limitations, enhancements or remarks
269   Change History
270   Who             When            What
271 
272   (reverse chronological order - newest change first)
273   ***************************************************************/
274 
275     CURSOR cur_rowid IS
276       SELECT   rowid
277       FROM     igs_ad_term_unitdtls
278       WHERE    unit_details_id = x_unit_details_id
279       FOR UPDATE NOWAIT;
280 
281     lv_rowid cur_rowid%RowType;
282 
283   BEGIN
284 
285     Open cur_rowid;
286     Fetch cur_rowid INTO lv_rowid;
287     IF (cur_rowid%FOUND) THEN
288       Close cur_rowid;
289       Return(TRUE);
290     ELSE
291       Close cur_rowid;
292       Return(FALSE);
293     END IF;
294   END Get_PK_For_Validation;
295 
296   FUNCTION Get_UK_For_Validation (
297     x_term_details_id IN NUMBER,
298     x_unit IN VARCHAR2
299     ) RETURN BOOLEAN AS
300 
301   /*************************************************************
302   Created By : amuthu
303   Date Created On : 16-May-2000
304   Purpose :
305   Know limitations, enhancements or remarks
306   Change History
307   Who             When            What
308 
309   (reverse chronological order - newest change first)
310   ***************************************************************/
311 
312     CURSOR cur_rowid IS
313       SELECT   rowid
314       FROM     igs_ad_term_unitdtls
315       WHERE    unit = x_unit
316         AND	term_details_id = x_term_details_id and      ((l_rowid is null) or (rowid <> l_rowid))
317 
318       ;
319     lv_rowid cur_rowid%RowType;
320 
321   BEGIN
322 
323     Open cur_rowid;
324     Fetch cur_rowid INTO lv_rowid;
325     IF (cur_rowid%FOUND) THEN
326       Close cur_rowid;
327         return (true);
328         ELSE
329        close cur_rowid;
330       return(false);
331     END IF;
332   END Get_UK_For_Validation ;
333 
334   PROCEDURE Get_FK_Igs_Ad_Code_Classes (
335     x_code_id IN NUMBER
336     ) AS
337 
338   /*************************************************************
339   Created By : Kamalakar N.
340   Date Created By : 15/May/2000
341   Purpose :
342   Know limitations, enhancements or remarks
343   Change History
344   Who             When            What
345 
346   (reverse chronological order - newest change first)
347   ***************************************************************/
348 
349     CURSOR cur_rowid IS
350       SELECT   rowid
351       FROM     igs_ad_term_unitdtls
352       WHERE    unit_difficulty = x_code_id ;
353 
354     lv_rowid cur_rowid%RowType;
355 
356   BEGIN
357 
358     Open cur_rowid;
359     Fetch cur_rowid INTO lv_rowid;
360     IF (cur_rowid%FOUND) THEN
361       Close cur_rowid;
362       Fnd_Message.Set_Name ('IGS', 'IGS_AD_ATUD_ACDC_FK');
363       IGS_GE_MSG_STACK.ADD;
364       App_Exception.Raise_Exception;
365       Return;
366     END IF;
367     Close cur_rowid;
368 
369   END Get_FK_Igs_Ad_Code_Classes;
370 
371   PROCEDURE Get_FK_Igs_Ad_Term_Details (
372     x_term_details_id IN NUMBER
373     ) AS
374 
375   /*************************************************************
376   Created By : Kamalakar N.
377   Date Created By : 15/May/2000
378   Purpose :
379   Know limitations, enhancements or remarks
380   Change History
381   Who             When            What
382 
383   (reverse chronological order - newest change first)
384   ***************************************************************/
385 
386     CURSOR cur_rowid IS
387       SELECT   rowid
388       FROM     igs_ad_term_unitdtls
389       WHERE    term_details_id = x_term_details_id ;
390 
391     lv_rowid cur_rowid%RowType;
392 
393   BEGIN
394 
395     Open cur_rowid;
396     Fetch cur_rowid INTO lv_rowid;
397     IF (cur_rowid%FOUND) THEN
398       Close cur_rowid;
399       Fnd_Message.Set_Name ('IGS', 'IGS_AD_ATUD_ATD_FK');
400       IGS_GE_MSG_STACK.ADD;
401       App_Exception.Raise_Exception;
402       Return;
403     END IF;
404     Close cur_rowid;
405 
406   END Get_FK_Igs_Ad_Term_Details;
407 
408   PROCEDURE Check_Child_Existance AS
409   BEGIN
410     -- Next part of code has been added as per bug# 2401170
411     -- Start of new code.
412     IGS_AV_STND_UNIT_PKG.GET_FK_IGS_AD_TERM_UNITDTLS (
413       old_references.unit_details_id
414       );
415     IGS_AV_STND_UNIT_LVL_PKG.GET_FK_IGS_AD_TERM_UNITDTLS (
416       old_references.unit_details_id
417       );
418     -- End of new code. Bug# 2401170
419   END Check_Child_Existance;
420 
421 
422   PROCEDURE Before_DML (
423     p_action IN VARCHAR2,
424     x_rowid IN VARCHAR2 DEFAULT NULL,
425     x_unit_details_id IN NUMBER DEFAULT NULL,
426     x_term_details_id IN NUMBER DEFAULT NULL,
427     x_unit IN VARCHAR2 DEFAULT NULL,
428     x_unit_difficulty IN NUMBER DEFAULT NULL,
429     x_unit_name IN VARCHAR2 DEFAULT NULL,
430     x_cp_attempted IN NUMBER DEFAULT NULL,
431     x_cp_earned IN NUMBER DEFAULT NULL,
432     x_grade IN VARCHAR2 DEFAULT NULL,
433     x_unit_grade_points IN NUMBER DEFAULT NULL,
434     x_deg_aud_detail_id IN NUMBER DEFAULT NULL,
435     x_creation_date IN DATE DEFAULT NULL,
436     x_created_by IN NUMBER DEFAULT NULL,
437     x_last_update_date IN DATE DEFAULT NULL,
438     x_last_updated_by IN NUMBER DEFAULT NULL,
439     x_last_update_login IN NUMBER DEFAULT NULL
440   ) AS
441   /*************************************************************
442   Created By : Kamalakar N.
443   Date Created By : 15/May/2000
444   Purpose :
445   Know limitations, enhancements or remarks
446   Change History
447   Who             When            What
448 
449   (reverse chronological order - newest change first)
450   ***************************************************************/
451 
452   BEGIN
453 
454     Set_Column_Values (
455       p_action,
456       x_rowid,
457       x_unit_details_id,
458       x_term_details_id,
459       x_unit,
460       x_unit_difficulty,
461       x_unit_name,
462       x_cp_attempted,
463       x_cp_earned,
464       x_grade,
465       x_unit_grade_points,
466       x_deg_aud_detail_id,
467       x_creation_date,
468       x_created_by,
469       x_last_update_date,
470       x_last_updated_by,
471       x_last_update_login
472     );
473 
474     IF (p_action = 'INSERT') THEN
475       -- Call all the procedures related to Before Insert.
476       Null;
477 	     IF Get_Pk_For_Validation(
478     		new_references.unit_details_id)  THEN
479 	       Fnd_Message.Set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
480       IGS_GE_MSG_STACK.ADD;
481 	       App_Exception.Raise_Exception;
482 	     END IF;
483       Check_Constraints;
484       Check_Uniqueness;
485       Check_Parent_Existance;
486       Check_Status;  --jchin Bug 4629226
487     ELSIF (p_action = 'UPDATE') THEN
488       -- Call all the procedures related to Before Update.
489       Null;
490       Check_Constraints;
491       Check_Uniqueness;
492       Check_Parent_Existance;
493       Check_Status;  --jchin Bug 4629226
494     ELSIF (p_action = 'DELETE') THEN
495       -- Call all the procedures related to Before Delete.
496       Check_Child_Existance;
497 
498 
499     ELSIF (p_action = 'VALIDATE_INSERT') THEN
500 	 -- Call all the procedures related to Before Insert.
501       IF Get_PK_For_Validation (
502     		new_references.unit_details_id)  THEN
503 	       Fnd_Message.Set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
504       IGS_GE_MSG_STACK.ADD;
505 	       App_Exception.Raise_Exception;
506 	     END IF;
507       Check_Constraints;
508       Check_Uniqueness;
509     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
510       Check_Constraints;
511       Check_Uniqueness;
512     ELSIF (p_action = 'VALIDATE_DELETE') THEN
513       Check_Child_Existance;
514 
515     END IF;
516 
517   END Before_DML;
518 
519   PROCEDURE After_DML (
520     p_action IN VARCHAR2,
521     x_rowid IN VARCHAR2
522     ) IS
523   /*************************************************************
524   Created By : Kamalakar N.
525   Date Created By : 15/May/2000
526   Purpose :
527   Know limitations, enhancements or remarks
528   Change History
529   Who             When            What
530 
531   (reverse chronological order - newest change first)
532   ***************************************************************/
533 
534   BEGIN
535 
536     l_rowid := x_rowid;
537 
538     IF (p_action = 'INSERT') THEN
539       -- Call all the procedures related to After Insert.
540       update_term_tab( x_term_id => NEW_REFERENCES.TERM_DETAILS_ID );
541     ELSIF (p_action = 'UPDATE') THEN
542       -- Call all the procedures related to After Update.
543       update_term_tab( x_term_id => NEW_REFERENCES.TERM_DETAILS_ID );
544     ELSIF (p_action = 'DELETE') THEN
545       -- Call all the procedures related to After Delete.
546       update_term_tab( x_term_id => OLD_REFERENCES.TERM_DETAILS_ID );
547     END IF;
548 
549   l_rowid:=NULL;
550   END After_DML;
551 
552  procedure INSERT_ROW (
553       X_ROWID in out NOCOPY VARCHAR2,
554        x_UNIT_DETAILS_ID IN OUT NOCOPY NUMBER,
555        x_TERM_DETAILS_ID IN NUMBER,
556        x_UNIT IN VARCHAR2,
557        x_UNIT_DIFFICULTY IN NUMBER,
558        x_UNIT_NAME IN VARCHAR2,
559        x_CP_ATTEMPTED IN NUMBER,
560        x_CP_EARNED IN NUMBER,
561        x_GRADE IN VARCHAR2,
562        x_UNIT_GRADE_POINTS IN NUMBER,
563        x_DEG_AUD_DETAIL_ID IN NUMBER DEFAULT NULL,
564       X_MODE in VARCHAR2 default 'R'
565   ) AS
566   /*************************************************************
567   Created By : Kamalakar N.
568   Date Created By : 15/May/2000
569   Purpose :
570   Know limitations, enhancements or remarks
571   Change History
572   Who             When            What
573 
574   (reverse chronological order - newest change first)
575   ***************************************************************/
576 
577     cursor C is select ROWID from IGS_AD_TERM_UNITDTLS
578              where                 UNIT_DETAILS_ID= X_UNIT_DETAILS_ID
579 ;
580      X_LAST_UPDATE_DATE DATE ;
581      X_LAST_UPDATED_BY NUMBER ;
582      X_LAST_UPDATE_LOGIN NUMBER ;
583      X_REQUEST_ID NUMBER;
584      X_PROGRAM_ID NUMBER;
585      X_PROGRAM_APPLICATION_ID NUMBER;
586      X_PROGRAM_UPDATE_DATE DATE;
587  begin
588     X_LAST_UPDATE_DATE := SYSDATE;
589     if(X_MODE = 'I') then
590       X_LAST_UPDATED_BY := 1;
591       X_LAST_UPDATE_LOGIN := 0;
592     elsif (X_MODE IN ('R', 'S')) then
593       X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
594       if X_LAST_UPDATED_BY is NULL then
595         X_LAST_UPDATED_BY := -1;
596       end if;
597       X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
598       if X_LAST_UPDATE_LOGIN is NULL then
599         X_LAST_UPDATE_LOGIN := -1;
600       end if;
601       X_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
602       X_PROGRAM_ID := FND_GLOBAL.CONC_PROGRAM_ID;
603       X_PROGRAM_APPLICATION_ID := FND_GLOBAL.PROG_APPL_ID;
604       if (X_REQUEST_ID =  -1) then
605         X_REQUEST_ID := NULL;
606         X_PROGRAM_ID := NULL;
607         X_PROGRAM_APPLICATION_ID := NULL;
608         X_PROGRAM_UPDATE_DATE := NULL;
609       else
610         X_PROGRAM_UPDATE_DATE := SYSDATE;
611       end if;
612     else
613       FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
614       IGS_GE_MSG_STACK.ADD;
615       app_exception.raise_exception;
616     end if;
617 
618    X_UNIT_DETAILS_ID := -1;
619    Before_DML(
620  		p_action=>'INSERT',
621  		x_rowid=>X_ROWID,
622  	       x_unit_details_id=>X_UNIT_DETAILS_ID,
623  	       x_term_details_id=>X_TERM_DETAILS_ID,
624  	       x_unit=>X_UNIT,
625  	       x_unit_difficulty=>X_UNIT_DIFFICULTY,
626  	       x_unit_name=>X_UNIT_NAME,
627  	       x_cp_attempted=>X_CP_ATTEMPTED,
628  	       x_cp_earned=>X_CP_EARNED,
629  	       x_grade=>X_GRADE,
630  	       x_unit_grade_points=>X_UNIT_GRADE_POINTS,
631 	       x_deg_aud_detail_id => X_DEG_AUD_DETAIL_ID,
632 	       x_creation_date=>X_LAST_UPDATE_DATE,
633 	       x_created_by=>X_LAST_UPDATED_BY,
634 	       x_last_update_date=>X_LAST_UPDATE_DATE,
635 	       x_last_updated_by=>X_LAST_UPDATED_BY,
636 	       x_last_update_login=>X_LAST_UPDATE_LOGIN);
637 
638       IF (x_mode = 'S') THEN
639     igs_sc_gen_001.set_ctx('R');
640   END IF;
641  insert into IGS_AD_TERM_UNITDTLS (
642 		UNIT_DETAILS_ID
643 		,TERM_DETAILS_ID
644 		,UNIT
645 		,UNIT_DIFFICULTY
646 		,UNIT_NAME
647 		,CP_ATTEMPTED
648 		,CP_EARNED
649 		,GRADE
650 		,UNIT_GRADE_POINTS
651 		,DEG_AUD_DETAIL_ID
652 	        ,CREATION_DATE
653 		,CREATED_BY
654 		,LAST_UPDATE_DATE
655 		,LAST_UPDATED_BY
656 		,LAST_UPDATE_LOGIN
657 		,REQUEST_ID
658 		,PROGRAM_ID
659 		,PROGRAM_APPLICATION_ID
660 		,PROGRAM_UPDATE_DATE
661         ) values  (
662 	         IGS_AD_TERM_UNITDTLS_S.NEXTVAL
663 	        ,NEW_REFERENCES.TERM_DETAILS_ID
664 	        ,NEW_REFERENCES.UNIT
665 	        ,NEW_REFERENCES.UNIT_DIFFICULTY
666 	        ,NEW_REFERENCES.UNIT_NAME
667 	        ,NEW_REFERENCES.CP_ATTEMPTED
668 	        ,NEW_REFERENCES.CP_EARNED
669 	        ,NEW_REFERENCES.GRADE
670 	        ,NEW_REFERENCES.UNIT_GRADE_POINTS
671 		,NEW_REFERENCES.DEG_AUD_DETAIL_ID
672 	        ,X_LAST_UPDATE_DATE
673 		,X_LAST_UPDATED_BY
674 		,X_LAST_UPDATE_DATE
675 		,X_LAST_UPDATED_BY
676 		,X_LAST_UPDATE_LOGIN
677 		,X_REQUEST_ID
678 		,X_PROGRAM_ID
679 		,X_PROGRAM_APPLICATION_ID
680 		,X_PROGRAM_UPDATE_DATE
681 )RETURNING UNIT_DETAILS_ID INTO X_UNIT_DETAILS_ID ;
682  IF (x_mode = 'S') THEN
683     igs_sc_gen_001.unset_ctx('R');
684   END IF;
685 
686 		open c;
687 		 fetch c into X_ROWID;
688  		if (c%notfound) then
689 		close c;
690  	     raise no_data_found;
691 		end if;
692  		close c;
693     After_DML (
694 		p_action => 'INSERT' ,
695 		x_rowid => X_ROWID );
696 EXCEPTION
697   WHEN OTHERS THEN
698     IF (SQLCODE IN (-28115, -28113, -28111)) THEN
699       fnd_message.set_name ('IGS', 'IGS_SC_POLICY_EXCEPTION');
700       fnd_message.set_token ('ERR_CD', SQLCODE);
701       igs_ge_msg_stack.add;
702       igs_sc_gen_001.unset_ctx('R');
703       app_exception.raise_exception;
704     ELSE
705       igs_sc_gen_001.unset_ctx('R');
706       RAISE;
707     END IF;
708 
709 end INSERT_ROW;
710  procedure LOCK_ROW (
711       X_ROWID in  VARCHAR2,
712        x_UNIT_DETAILS_ID IN NUMBER,
713        x_TERM_DETAILS_ID IN NUMBER,
714        x_UNIT IN VARCHAR2,
715        x_UNIT_DIFFICULTY IN NUMBER,
716        x_UNIT_NAME IN VARCHAR2,
717        x_CP_ATTEMPTED IN NUMBER,
718        x_CP_EARNED IN NUMBER,
719        x_GRADE IN VARCHAR2,
720        x_UNIT_GRADE_POINTS IN NUMBER,
721        x_DEG_AUD_DETAIL_ID IN NUMBER DEFAULT NULL) AS
722   /*************************************************************
723   Created By : Kamalakar N.
724   Date Created By : 15/May/2000
725   Purpose :
726   Know limitations, enhancements or remarks
727   Change History
728   Who             When            What
729 
730   (reverse chronological order - newest change first)
731   ***************************************************************/
732 
733    cursor c1 is select
734       TERM_DETAILS_ID
735 ,      UNIT
736 ,      UNIT_DIFFICULTY
737 ,      UNIT_NAME
738 ,      CP_ATTEMPTED
739 ,      CP_EARNED
740 ,      GRADE
741 ,      UNIT_GRADE_POINTS
742 ,      DEG_AUD_DETAIL_ID
743     from IGS_AD_TERM_UNITDTLS
744     where ROWID = X_ROWID
745     for update nowait;
746      tlinfo c1%rowtype;
747 begin
748   open c1;
749   fetch c1 into tlinfo;
750   if (c1%notfound) then
751     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
752       IGS_GE_MSG_STACK.ADD;
753     close c1;
754     app_exception.raise_exception;
755     return;
756   end if;
757   close c1;
758 if ( (  tlinfo.TERM_DETAILS_ID = X_TERM_DETAILS_ID)
759   AND (tlinfo.UNIT = X_UNIT)
760   AND (tlinfo.UNIT_DIFFICULTY = X_UNIT_DIFFICULTY)
761   AND (tlinfo.UNIT_NAME = X_UNIT_NAME)
762   AND ((tlinfo.CP_ATTEMPTED = X_CP_ATTEMPTED)
763  	    OR ((tlinfo.CP_ATTEMPTED is null)
764 		AND (X_CP_ATTEMPTED is null)))
765   AND ((tlinfo.CP_EARNED = X_CP_EARNED)
766  	    OR ((tlinfo.CP_EARNED is null)
767 		AND (X_CP_EARNED is null)))
768   AND ((tlinfo.GRADE = X_GRADE)
769  	    OR ((tlinfo.GRADE is null)
770 		AND (X_GRADE is null)))
771   AND ((tlinfo.UNIT_GRADE_POINTS = X_UNIT_GRADE_POINTS)
772  	    OR ((tlinfo.UNIT_GRADE_POINTS is null)
773 		AND (X_UNIT_GRADE_POINTS is null)))
774   AND ((tlinfo.DEG_AUD_DETAIL_ID = X_DEG_AUD_DETAIL_ID)
775  	    OR ((tlinfo.DEG_AUD_DETAIL_ID is null)
776 		AND (X_DEG_AUD_DETAIL_ID is null)))
777   ) then
778     null;
779   else
780     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
781       IGS_GE_MSG_STACK.ADD;
782     app_exception.raise_exception;
783   end if;
784   return;
785 end LOCK_ROW;
786  Procedure UPDATE_ROW (
787       X_ROWID in  VARCHAR2,
788        x_UNIT_DETAILS_ID IN NUMBER,
789        x_TERM_DETAILS_ID IN NUMBER,
790        x_UNIT IN VARCHAR2,
791        x_UNIT_DIFFICULTY IN NUMBER,
792        x_UNIT_NAME IN VARCHAR2,
793        x_CP_ATTEMPTED IN NUMBER,
794        x_CP_EARNED IN NUMBER,
795        x_GRADE IN VARCHAR2,
796        x_UNIT_GRADE_POINTS IN NUMBER,
797        x_DEG_AUD_DETAIL_ID IN NUMBER DEFAULT NULL,
798        X_MODE in VARCHAR2 default 'R'
799   ) AS
800   /*************************************************************
801   Created By : Kamalakar N.
802   Date Created By : 15/May/2000
803   Purpose :
804   Know limitations, enhancements or remarks
805   Change History
806   Who             When            What
807 
808   (reverse chronological order - newest change first)
809   ***************************************************************/
810 
811      X_LAST_UPDATE_DATE DATE ;
812      X_LAST_UPDATED_BY NUMBER ;
813      X_LAST_UPDATE_LOGIN NUMBER ;
814      X_REQUEST_ID NUMBER;
815      X_PROGRAM_ID NUMBER;
816      X_PROGRAM_APPLICATION_ID NUMBER;
817      X_PROGRAM_UPDATE_DATE DATE;
818  begin
819     X_LAST_UPDATE_DATE := SYSDATE;
820     if(X_MODE = 'I') then
821       X_LAST_UPDATED_BY := 1;
822       X_LAST_UPDATE_LOGIN := 0;
823     elsif (X_MODE IN ('R', 'S')) then
824       X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
825       if X_LAST_UPDATED_BY is NULL then
826         X_LAST_UPDATED_BY := -1;
827       end if;
828       X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
829       if X_LAST_UPDATE_LOGIN is NULL then
830         X_LAST_UPDATE_LOGIN := -1;
831       end if;
832     else
833       FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
834       IGS_GE_MSG_STACK.ADD;
835       app_exception.raise_exception;
836     end if;
837    Before_DML(
838  		p_action=>'UPDATE',
839  		x_rowid=>X_ROWID,
840  	       x_unit_details_id=>X_UNIT_DETAILS_ID,
841  	       x_term_details_id=>X_TERM_DETAILS_ID,
842  	       x_unit=>X_UNIT,
843  	       x_unit_difficulty=>X_UNIT_DIFFICULTY,
844  	       x_unit_name=>X_UNIT_NAME,
845  	       x_cp_attempted=>X_CP_ATTEMPTED,
846  	       x_cp_earned=>X_CP_EARNED,
847  	       x_grade=>X_GRADE,
848  	       x_unit_grade_points=>X_UNIT_GRADE_POINTS,
849       	       x_deg_aud_detail_id => X_DEG_AUD_DETAIL_ID,
850 	       x_creation_date=>X_LAST_UPDATE_DATE,
851 	       x_created_by=>X_LAST_UPDATED_BY,
852 	       x_last_update_date=>X_LAST_UPDATE_DATE,
853 	       x_last_updated_by=>X_LAST_UPDATED_BY,
854 	       x_last_update_login=>X_LAST_UPDATE_LOGIN);
855 
856     if (X_MODE IN ('R', 'S')) then
857       X_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
858       X_PROGRAM_ID := FND_GLOBAL.CONC_PROGRAM_ID;
859       X_PROGRAM_APPLICATION_ID := FND_GLOBAL.PROG_APPL_ID;
860       if (X_REQUEST_ID = -1) then
861         X_REQUEST_ID := OLD_REFERENCES.REQUEST_ID;
862         X_PROGRAM_ID := OLD_REFERENCES. PROGRAM_ID;
863         X_PROGRAM_APPLICATION_ID := OLD_REFERENCES.PROGRAM_APPLICATION_ID;
864         X_PROGRAM_UPDATE_DATE := OLD_REFERENCES.PROGRAM_UPDATE_DATE;
865       else
866         X_PROGRAM_UPDATE_DATE := SYSDATE;
867       end if;
868     end if;
869 
870     IF (x_mode = 'S') THEN
871     igs_sc_gen_001.set_ctx('R');
872   END IF;
873  UPDATE IGS_AD_TERM_UNITDTLS SET
874       TERM_DETAILS_ID	 =  NEW_REFERENCES.TERM_DETAILS_ID,
875       UNIT		 =  NEW_REFERENCES.UNIT,
876       UNIT_DIFFICULTY	 =  NEW_REFERENCES.UNIT_DIFFICULTY,
877       UNIT_NAME		 =  NEW_REFERENCES.UNIT_NAME,
878       CP_ATTEMPTED	 =  NEW_REFERENCES.CP_ATTEMPTED,
879       CP_EARNED		 =  NEW_REFERENCES.CP_EARNED,
880       GRADE		 =  NEW_REFERENCES.GRADE,
881       UNIT_GRADE_POINTS  =  NEW_REFERENCES.UNIT_GRADE_POINTS,
882       DEG_AUD_DETAIL_ID = NEW_REFERENCES.DEG_AUD_DETAIL_ID,
883       LAST_UPDATE_DATE	 = X_LAST_UPDATE_DATE,
884       LAST_UPDATED_BY	 = X_LAST_UPDATED_BY,
885       LAST_UPDATE_LOGIN  = X_LAST_UPDATE_LOGIN,
886       REQUEST_ID	 = X_REQUEST_ID,
887       PROGRAM_ID	 = X_PROGRAM_ID,
888       PROGRAM_APPLICATION_ID = PROGRAM_APPLICATION_ID,
889       PROGRAM_UPDATE_DATE = X_PROGRAM_UPDATE_DATE
890 	  where ROWID = X_ROWID;
891 	if (sql%notfound) then
892      fnd_message.set_name ('IGS', 'IGS_SC_POLICY_UPD_DEL_EXCEP');
893      igs_ge_msg_stack.add;
894      igs_sc_gen_001.unset_ctx('R');
895      app_exception.raise_exception;
896 	end if;
897  IF (x_mode = 'S') THEN
898     igs_sc_gen_001.unset_ctx('R');
899   END IF;
900 
901  After_DML (
902 	p_action => 'UPDATE' ,
903 	x_rowid => X_ROWID
904 	);
905 EXCEPTION
906   WHEN OTHERS THEN
907     IF (SQLCODE = (-28115)) THEN
908       fnd_message.set_name ('IGS', 'IGS_SC_UPD_POLICY_EXCP');
909       fnd_message.set_token ('ERR_CD', SQLCODE);
910       igs_ge_msg_stack.add;
911       igs_sc_gen_001.unset_ctx('R');
912       app_exception.raise_exception;
913     ELSE
914       igs_sc_gen_001.unset_ctx('R');
915       RAISE;
916     END IF;
917 
918 end UPDATE_ROW;
919  procedure ADD_ROW (
920       X_ROWID in out NOCOPY VARCHAR2,
921        x_UNIT_DETAILS_ID IN OUT NOCOPY NUMBER,
922        x_TERM_DETAILS_ID IN NUMBER,
923        x_UNIT IN VARCHAR2,
924        x_UNIT_DIFFICULTY IN NUMBER,
925        x_UNIT_NAME IN VARCHAR2,
926        x_CP_ATTEMPTED IN NUMBER,
927        x_CP_EARNED IN NUMBER,
928        x_GRADE IN VARCHAR2,
929        x_UNIT_GRADE_POINTS IN NUMBER,
930        x_DEG_AUD_DETAIL_ID IN NUMBER DEFAULT NULL,
931       X_MODE in VARCHAR2 default 'R'
932   ) AS
933  /*************************************************************
934   Created By : Kamalakar N.
935   Date Created By : 15/May/2000
936   Purpose :
937   Know limitations, enhancements or remarks
938   Change History
939   Who             When            What
940 
941   (reverse chronological order - newest change first)
942   ***************************************************************/
943 
944     cursor c1 is select ROWID from IGS_AD_TERM_UNITDTLS
945              where     UNIT_DETAILS_ID= X_UNIT_DETAILS_ID
946 ;
947 begin
948 	open c1;
949 		fetch c1 into X_ROWID;
950 	if (c1%notfound) then
951 	close c1;
952     INSERT_ROW (
953       X_ROWID,
954        X_UNIT_DETAILS_ID,
955        X_TERM_DETAILS_ID,
956        X_UNIT,
957        X_UNIT_DIFFICULTY,
958        X_UNIT_NAME,
959        X_CP_ATTEMPTED,
960        X_CP_EARNED,
961        X_GRADE,
962        X_UNIT_GRADE_POINTS,
963        X_DEG_AUD_DETAIL_ID,
964       X_MODE );
965      return;
966 	end if;
967 	   close c1;
968 UPDATE_ROW (
969       X_ROWID,
970        X_UNIT_DETAILS_ID,
971        X_TERM_DETAILS_ID,
972        X_UNIT,
973        X_UNIT_DIFFICULTY,
974        X_UNIT_NAME,
975        X_CP_ATTEMPTED,
976        X_CP_EARNED,
977        X_GRADE,
978        X_UNIT_GRADE_POINTS,
979        X_DEG_AUD_DETAIL_ID,
980       X_MODE );
981 end ADD_ROW;
982 procedure DELETE_ROW (
983   X_ROWID in VARCHAR2,
984   x_mode IN VARCHAR2
985 ) AS
986  /*************************************************************
987   Created By : Kamalakar N.
988   Date Created By : 15/May/2000
989   Purpose :
990   Know limitations, enhancements or remarks
991   Change History
992   Who             When            What
993 
994   (reverse chronological order - newest change first)
995   ***************************************************************/
996 
997 begin
998 Before_DML (
999 p_action => 'DELETE',
1000 x_rowid => X_ROWID
1001 );
1002   IF (x_mode = 'S') THEN
1003     igs_sc_gen_001.set_ctx('R');
1004   END IF;
1005  delete from IGS_AD_TERM_UNITDTLS
1006  where ROWID = X_ROWID;
1007   if (sql%notfound) then
1008      fnd_message.set_name ('IGS', 'IGS_SC_POLICY_UPD_DEL_EXCEP');
1009      igs_ge_msg_stack.add;
1010      igs_sc_gen_001.unset_ctx('R');
1011      app_exception.raise_exception;
1012  end if;
1013  IF (x_mode = 'S') THEN
1014     igs_sc_gen_001.unset_ctx('R');
1015   END IF;
1016 
1017 After_DML (
1018  p_action => 'DELETE',
1019  x_rowid => X_ROWID
1020 );
1021 end DELETE_ROW;
1022 
1023 PROCEDURE update_term_tab(x_term_id IN NUMBER)
1024 AS
1025   /*************************************************************
1026   Created By : TRAY
1027   Date Created By : 18-JUN-2003
1028   Purpose : For updating term details table, build 2864699
1029   Know limitations, enhancements or remarks
1030   Change History
1031   Who             When            What
1032   akadam          31-jul-2003     Bug No:3003149 the calculation in for loop was not checking NULL values
1033   (reverse chronological order - newest change first)
1034   ***************************************************************/
1035  CURSOR c_get_data IS
1036  SELECT SUM(NVL(cp_attempted,0)) tcpa, SUM(NVL(cp_earned,0)) tcpe,SUM(NVL(unit_grade_points,0)) tugp
1037  FROM igs_ad_term_unitdtls
1038  WHERE term_details_id = x_term_id
1039  GROUP BY term_details_id;
1040 
1041   l_cp_attempted_total igs_ad_term_details.total_cp_attempted%TYPE;
1042   l_cp_earned_total igs_ad_term_details.total_cp_earned%TYPE;
1043   l_unit_grade_points_total igs_ad_term_details.total_unit_gp%TYPE;
1044 
1045  BEGIN
1046 
1047   OPEN c_get_data;
1048   FETCH c_get_data INTO l_cp_attempted_total,l_cp_earned_total,l_unit_grade_points_total;
1049   CLOSE c_get_data;
1050 
1051   UPDATE igs_ad_term_details SET total_cp_attempted=l_cp_attempted_total
1052                                  ,total_cp_earned=l_cp_earned_total
1053                                  ,total_unit_gp=l_unit_grade_points_total
1054                               WHERE term_details_id = x_term_id ;
1055  END update_term_tab;
1056 
1057 
1058 
1059 
1060 END igs_ad_term_unitdtls_pkg;