DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PE_TEACH_PERIODS_PKG

Source


1 PACKAGE BODY igs_pe_teach_periods_pkg AS
2 /* $Header: IGSNI49B.pls 120.3 2005/10/17 02:20:50 appldev ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references igs_pe_teach_periods_all%RowType;
6   new_references igs_pe_teach_periods_all%RowType;
7 
8   PROCEDURE Set_Column_Values (
9     p_action IN VARCHAR2,
10     x_rowid IN VARCHAR2 ,--DEFAULT NULL,
11     x_teaching_period_id IN NUMBER ,--DEFAULT NULL,
12     x_person_id IN NUMBER ,--DEFAULT NULL,
13     x_teach_period_resid_stat_cd IN VARCHAR2,-- DEFAULT NULL,
14     x_cal_type IN VARCHAR2 ,--DEFAULT NULL,
15     x_sequence_number IN NUMBER ,--DEFAULT NULL,
16     x_creation_date IN DATE ,--DEFAULT NULL,
17     x_created_by IN NUMBER ,--DEFAULT NULL,
18     x_last_update_date IN DATE ,--DEFAULT NULL,
19     x_last_updated_by IN NUMBER ,--DEFAULT NULL,
20     x_last_update_login IN NUMBER ,--DEFAULT NULL,
21     x_org_id IN NUMBER -- DEFAULT NULL
22   ) AS
23 
24   /*************************************************************
25   Created By :
26   Date Created By :
27   Purpose :
28   Know limitations, enhancements or remarks
29   Change History
30   Who             When            What
31   pkpatel         30-Jun-2005     Bug 4327807 (Person SS Enhancement)
32                                   Added the cal_type_cur to populate new_references.cal_type. The x_cal_type will come as NULL
33 								  when called from self-service
34   (reverse chronological order - newest change first)
35   ***************************************************************/
36 
37     CURSOR cur_old_ref_values IS
38       SELECT   *
39       FROM     igs_pe_teach_periods_all
40       WHERE    rowid = x_rowid;
41 
42     CURSOR cal_type_cur (cp_sequence_number NUMBER) IS
43 	SELECT cal_type
44 	FROM igs_ca_inst_all
45 	WHERE sequence_number = cp_sequence_number;
46 
47     cal_type_rec cal_type_cur%ROWTYPE;
48   BEGIN
49 
50     l_rowid := x_rowid;
51 
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       Close cur_old_ref_values;
58       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
59       IGS_GE_MSG_STACK.ADD;
60       App_Exception.Raise_Exception;
61       Return;
62     END IF;
63     Close cur_old_ref_values;
64 
65     -- Populate New Values.
66     new_references.teaching_period_id := x_teaching_period_id;
67     new_references.person_id := x_person_id;
68     new_references.teach_period_resid_stat_cd := x_teach_period_resid_stat_cd;
69 
70 	IF (x_cal_type IS NOT NULL) THEN
71       new_references.cal_type := x_cal_type;
72     ELSE
73 	  OPEN cal_type_cur (x_sequence_number);
74 	  FETCH cal_type_cur INTO cal_type_rec;
75 	  CLOSE cal_type_cur;
76       new_references.cal_type := cal_type_rec.cal_type;
77 	END IF;
78     new_references.sequence_number := x_sequence_number;
79     IF (p_action = 'UPDATE') THEN
80       new_references.creation_date := old_references.creation_date;
81       new_references.created_by := old_references.created_by;
82     ELSE
83       new_references.creation_date := x_creation_date;
84       new_references.created_by := x_created_by;
85     END IF;
86     new_references.last_update_date := x_last_update_date;
87     new_references.last_updated_by := x_last_updated_by;
88     new_references.last_update_login := x_last_update_login;
89     new_references.org_id := x_org_id;
90 
91   END Set_Column_Values;
92 
93  PROCEDURE Check_Uniqueness AS
94  /***********************************************************
95 
96  Created By : gmaheswa
97 
98  Date Created By : 2004/10/11
99 
100  Purpose : check uniqueness on the table
101 
102  Know limitations, enhancements or remarks
103 
104  Change History
105 
106  Who      When     What
107 
108  ****************************************************************/
109 
110  BEGIN
111      IF Get_Uk_For_Validation (
112      	new_references.cal_type,
113    	new_references.sequence_number,
114 	new_references.person_id)
115      THEN
116  	Fnd_Message.Set_Name ('IGS', 'IGS_PE_HOU_STAT_DUP_EXISTS');
117         IGS_GE_MSG_STACK.ADD;
118 	app_exception.raise_exception;
119      END IF;
120  END Check_Uniqueness ;
121 
122 
123   PROCEDURE Check_Constraints (
124 		 Column_Name IN VARCHAR2  ,
125 		 Column_Value IN VARCHAR2  ) AS
126   /*************************************************************
127   Created By :
128   Date Created By :
129   Purpose :
130   Know limitations, enhancements or remarks
131   Change History
132   Who             When            What
133 
134   (reverse chronological order - newest change first)
135   ***************************************************************/
136 
137   BEGIN
138 
139       IF column_name IS NULL THEN
140         NULL;
141         NULL;
142       END IF;
143 
144   END Check_Constraints;
145 
146   PROCEDURE Check_Parent_Existance AS
147   /*************************************************************
148   Created By :
149   Date Created By :
150   Purpose :
151   Know limitations, enhancements or remarks
152   Change History
153   Who             When            What
154 
155   (reverse chronological order - newest change first)
156   ***************************************************************/
157 
158   BEGIN
159 
160     IF (((old_references.teach_period_resid_stat_cd = new_references.teach_period_resid_stat_cd)) OR
161         ((new_references.teach_period_resid_stat_cd IS NULL))) THEN
162       NULL;
163     ELSIF NOT Igs_Lookups_View_Pkg.Get_PK_For_Validation (
164         		'PE_TEA_PER_RES',new_references.teach_period_resid_stat_cd
165         )  THEN
166 	 Fnd_Message.Set_Name ('FND','FORM_RECORD_DELETED');
167       IGS_GE_MSG_STACK.ADD;
168  	 App_Exception.Raise_Exception;
169     END IF;
170 
171     IF (((old_references.person_id = new_references.person_id)) OR
172         ((new_references.person_id IS NULL))) THEN
173       NULL;
174     ELSIF NOT Igs_Pe_Person_Pkg.Get_PK_For_Validation (
175         		new_references.person_id
176         )  THEN
177 	 Fnd_Message.Set_Name ('FND','FORM_RECORD_DELETED');
178       IGS_GE_MSG_STACK.ADD;
179  	 App_Exception.Raise_Exception;
180     END IF;
181 
182   END Check_Parent_Existance;
183 
184   FUNCTION Get_PK_For_Validation (
185     x_teaching_period_id IN NUMBER
186     ) RETURN BOOLEAN AS
187 
188   /*************************************************************
189   Created By :
190   Date Created By :
191   Purpose :
192   Know limitations, enhancements or remarks
193   Change History
194   Who             When            What
195 
196   (reverse chronological order - newest change first)
197   ***************************************************************/
198 
199     CURSOR cur_rowid IS
200       SELECT   rowid
201       FROM     igs_pe_teach_periods_all
202       WHERE    teaching_period_id = x_teaching_period_id
203       FOR UPDATE NOWAIT;
204 
205     lv_rowid cur_rowid%RowType;
206 
207   BEGIN
208 
209     Open cur_rowid;
210     Fetch cur_rowid INTO lv_rowid;
211     IF (cur_rowid%FOUND) THEN
212       Close cur_rowid;
213       Return(TRUE);
214     ELSE
215       Close cur_rowid;
216       Return(FALSE);
217     END IF;
218   END Get_PK_For_Validation;
219 
220   FUNCTION Get_UK_For_Validation (
221 	  x_cal_type IN VARCHAR2,
222 	  x_sequence_number IN NUMBER,
223           x_person_id IN NUMBER
224   ) RETURN BOOLEAN AS
225   /***********************************************************
226 
227   Created By : gmaheswa
228 
229   Date Created By : 2004/11/4
230 
231   Purpose : check uniqueness on the table
232 
233   Know limitations, enhancements or remarks
234 
235   Change History
236 
237   Who      When     What
238   ****************************************************************/
239 
240   CURSOR cur_rowid (cp_cal_type varchar2,cp_person_id number,cp_seq_number number)IS
241   SELECT   load.rowid
242   FROM     igs_pe_teach_periods_all load
243   WHERE    load.person_id = cp_person_id
244   AND      load.cal_type = cp_cal_type
245   AND      load.sequence_number = cp_seq_number
246   AND      ((l_rowid is null) or (rowid <> l_rowid));
247   lv_rowid cur_rowid%RowType;
248 
249   BEGIN
250 
251     OPEN cur_rowid(x_cal_type,x_person_id,x_sequence_number);
252     FETCH cur_rowid INTO lv_rowid;
253     IF (cur_rowid%FOUND) THEN
254       CLOSE cur_rowid;
255       RETURN TRUE;
256     ELSE
257       CLOSE cur_rowid;
258       RETURN FALSE;
259     END IF;
260 
261   END Get_UK_For_Validation ;
262 
263   PROCEDURE Get_FK_Igs_Pe_Person (
264     x_person_id IN NUMBER
265     ) AS
266 
267   /*************************************************************
268   Created By :
269   Date Created By :
270   Purpose :
271   Know limitations, enhancements or remarks
272   Change History
273   Who             When            What
274 
275   (reverse chronological order - newest change first)
276   ***************************************************************/
277 
278     CURSOR cur_rowid IS
279       SELECT   rowid
280       FROM     igs_pe_teach_periods_all
281       WHERE    person_id = x_person_id ;
282 
283     lv_rowid cur_rowid%RowType;
284 
285   BEGIN
286 
287     Open cur_rowid;
288     Fetch cur_rowid INTO lv_rowid;
289     IF (cur_rowid%FOUND) THEN
290       Close cur_rowid;
291       Fnd_Message.Set_Name ('IGS', 'IGS_PE_PPT_PP_FK');
292       IGS_GE_MSG_STACK.ADD;
293       App_Exception.Raise_Exception;
294       Return;
295     END IF;
296     Close cur_rowid;
297 
298   END Get_FK_Igs_Pe_Person;
299 
300   PROCEDURE Before_DML (
301     p_action IN VARCHAR2,
302     x_rowid IN VARCHAR2 ,--DEFAULT NULL,
303     x_teaching_period_id IN NUMBER ,--DEFAULT NULL,
304     x_person_id IN NUMBER ,--DEFAULT NULL,
305     x_teach_period_resid_stat_cd IN VARCHAR2 ,--DEFAULT NULL,
306     x_cal_type IN VARCHAR2 ,--DEFAULT NULL,
307     x_sequence_number IN NUMBER,-- DEFAULT NULL,
308     x_creation_date IN DATE ,--DEFAULT NULL,
309     x_created_by IN NUMBER ,--DEFAULT NULL,
310     x_last_update_date IN DATE ,--DEFAULT NULL,
311     x_last_updated_by IN NUMBER ,--DEFAULT NULL,
312     x_last_update_login IN NUMBER ,--DEFAULT NULL,
313     x_org_id IN NUMBER-- DEFAULT NULL
314   ) AS
315   /*************************************************************
316   Created By :
317   Date Created By :
318   Purpose :
319   Know limitations, enhancements or remarks
320   Change History
321   Who             When            What
322 
323   (reverse chronological order - newest change first)
324   ***************************************************************/
325 
326   BEGIN
327 
328     Set_Column_Values (
329       p_action,
330       x_rowid,
331       x_teaching_period_id,
332       x_person_id,
333       x_teach_period_resid_stat_cd,
334       x_cal_type,
335       x_sequence_number,
336       x_creation_date,
337       x_created_by,
338       x_last_update_date,
339       x_last_updated_by,
340       x_last_update_login,
341       x_org_id
342     );
343 
344     IF (p_action = 'INSERT') THEN
345       -- Call all the procedures related to Before Insert.
346         IF Get_Pk_For_Validation(new_references.teaching_period_id)  THEN
347 	    Fnd_Message.Set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
348             IGS_GE_MSG_STACK.ADD;
349 	    App_Exception.Raise_Exception;
350 	END IF;
351         Check_Constraints;
352 	Check_Uniqueness;
353 	Check_Parent_Existance;
354     ELSIF (p_action = 'UPDATE') THEN
355       -- Call all the procedures related to Before Update.
356       Check_Constraints;
357       Check_Uniqueness;
358       Check_Parent_Existance;
359     ELSIF (p_action = 'DELETE') THEN
360       -- Call all the procedures related to Before Delete.
361       Null;
362     ELSIF (p_action = 'VALIDATE_INSERT') THEN
363       -- Call all the procedures related to Before Insert.
364       IF Get_PK_For_Validation (new_references.teaching_period_id)  THEN
365           Fnd_Message.Set_name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
366    	  IGS_GE_MSG_STACK.ADD;
367 	  App_Exception.Raise_Exception;
368       END IF;
369       Check_Constraints;
370       Check_Uniqueness;
371     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
372       Check_Constraints;
373     ELSIF (p_action = 'VALIDATE_DELETE') THEN
374       Null;
375     END IF;
376 
377   END Before_DML;
378 
379   PROCEDURE After_DML (
380     p_action IN VARCHAR2,
381     x_rowid IN VARCHAR2
382   ) IS
383   /*************************************************************
384   Created By :
385   Date Created By :
386   Purpose :
387   Know limitations, enhancements or remarks
388   Change History
389   Who             When            What
390   gmaheswa      2-nov-2004    added a call to afterrowinsertupdate for date overlap check in case of insert/update and
391                               added call out for processing FA todo items process in case of insert/update.
392                               added a call to workflow package to raise an event in case of insert/update.
393   (reverse chronological order - newest change first)
394   ***************************************************************/
395 
396   BEGIN
397 
398     l_rowid := NULL;
399 
400     IF (p_action = 'INSERT') THEN
401       -- Call all the procedures related to After Insert.
402        IGS_PE_GEN_003.PROCESS_HOUSING_DTLS(
403 	  P_ACTION  	=> 'I',
404           P_OLD_RECORD  => old_references,
405   	  P_NEW_RECORD	=> new_references
406 	) ;
407 
408        IGS_PE_WF_GEN.change_housing_status(
409 	  P_PERSON_ID	=>	new_references.person_id,
410           P_HOUSING_STATUS =>	new_references.teach_period_resid_stat_cd,
411 	  P_CALENDER_TYPE  =>	new_references.cal_type,
412 	  P_CAL_SEQ_NUM    =>	new_references.sequence_number,
413 	  P_TEACHING_PERIOD_ID =>new_references.teaching_period_id,
414 	  P_ACTION         =>    'I'
415 	);
416 
417     ELSIF (p_action = 'UPDATE') THEN
418       -- Call all the procedures related to After Update.
419        IF(  new_references.teach_period_resid_stat_cd <>  old_references.teach_period_resid_stat_cd)
420        THEN
421 
422 	  IGS_PE_WF_GEN.change_housing_status(
423 	         P_PERSON_ID	=>	new_references.person_id,
424                  P_HOUSING_STATUS =>	new_references.teach_period_resid_stat_cd,
425 		 P_CALENDER_TYPE  =>	new_references.cal_type,
426 		 P_CAL_SEQ_NUM    =>	new_references.sequence_number,
427 		 P_TEACHING_PERIOD_ID =>new_references.teaching_period_id,
428 		 P_ACTION         =>    'U'
429 	  );
430 
431 	  IGS_PE_GEN_003.PROCESS_HOUSING_DTLS(
432 		 P_ACTION  	=> 'U',
433 	         P_OLD_RECORD  => old_references,
434   		 P_NEW_RECORD	=> new_references
435 	  ) ;
436 
437        END IF;
438 
439     ELSIF (p_action = 'DELETE') THEN
440       -- Call all the procedures related to After Delete.
441       Null;
442     END IF;
443 
444   END After_DML;
445 
446  procedure INSERT_ROW (
447       X_ROWID in out NOCOPY VARCHAR2,
448        x_TEACHING_PERIOD_ID IN OUT NOCOPY NUMBER,
449        x_PERSON_ID IN NUMBER,
450        x_TEACH_PERIOD_RESID_STAT_CD IN VARCHAR2,
451        x_CAL_TYPE IN VARCHAR2,
452        x_SEQUENCE_NUMBER IN NUMBER,
453       X_MODE in VARCHAR2,-- default 'R',
454       X_ORG_ID in NUMBER
455   ) AS
456   /*************************************************************
457   Created By :
458   Date Created By :
459   Purpose :
460   Know limitations, enhancements or remarks
461   Change History
462   Who             When            What
463 
464   (reverse chronological order - newest change first)
465   ***************************************************************/
466 
467     cursor C is select ROWID from igs_pe_teach_periods_all
468              where
469 		TEACHING_PERIOD_ID= X_TEACHING_PERIOD_ID;
470      X_LAST_UPDATE_DATE DATE ;
471      X_LAST_UPDATED_BY NUMBER ;
472      X_LAST_UPDATE_LOGIN NUMBER ;
473  begin
474      X_LAST_UPDATE_DATE := SYSDATE;
475       if(X_MODE = 'I') then
476         X_LAST_UPDATED_BY := 1;
477         X_LAST_UPDATE_LOGIN := 0;
478          elsif (X_MODE IN ('R', 'S')) then
479                X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
480             if X_LAST_UPDATED_BY is NULL then
481                 X_LAST_UPDATED_BY := -1;
482             end if;
483             X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
484          if X_LAST_UPDATE_LOGIN is NULL then
485             X_LAST_UPDATE_LOGIN := -1;
486           end if;
487        else
488         FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
489       IGS_GE_MSG_STACK.ADD;
490           app_exception.raise_exception;
491        end if;
492       select igs_pe_teach_periods_s.nextval into x_teaching_period_id from dual;
493 
494    Before_DML(
495  		p_action=>'INSERT',
496  		x_rowid=>X_ROWID,
497  	       x_teaching_period_id=>X_TEACHING_PERIOD_ID,
498  	       x_person_id=>X_PERSON_ID,
499  	       x_teach_period_resid_stat_cd=>X_TEACH_PERIOD_RESID_STAT_CD,
500  	       x_cal_type=>X_CAL_TYPE,
501  	       x_sequence_number=>X_SEQUENCE_NUMBER,
502 	       x_creation_date=>X_LAST_UPDATE_DATE,
503 	       x_created_by=>X_LAST_UPDATED_BY,
504 	       x_last_update_date=>X_LAST_UPDATE_DATE,
505 	       x_last_updated_by=>X_LAST_UPDATED_BY,
506 	       x_last_update_login=>X_LAST_UPDATE_LOGIN,
507 	       x_org_id=>igs_ge_gen_003.get_org_id
508 	  );
509 
510       IF (x_mode = 'S') THEN
511     igs_sc_gen_001.set_ctx('R');
512   END IF;
513  INSERT INTO igs_pe_teach_periods_all (
514 		TEACHING_PERIOD_ID
515 		,PERSON_ID
516 		,TEACH_PERIOD_RESID_STAT_CD
517 		,CAL_TYPE
518 		,SEQUENCE_NUMBER
519 	        ,CREATION_DATE
520 		,CREATED_BY
521 		,LAST_UPDATE_DATE
522 		,LAST_UPDATED_BY
523 		,LAST_UPDATE_LOGIN
524 		,ORG_ID
525      ) VALUES  (
526 	        NEW_REFERENCES.TEACHING_PERIOD_ID
527 	        ,NEW_REFERENCES.PERSON_ID
528 	        ,NEW_REFERENCES.TEACH_PERIOD_RESID_STAT_CD
529 	        ,NEW_REFERENCES.CAL_TYPE
530 	        ,NEW_REFERENCES.SEQUENCE_NUMBER
531 	        ,X_LAST_UPDATE_DATE
532 		,X_LAST_UPDATED_BY
533 		,X_LAST_UPDATE_DATE
534 		,X_LAST_UPDATED_BY
535 		,X_LAST_UPDATE_LOGIN
536 	        ,NEW_REFERENCES.ORG_ID
537      );
538  IF (x_mode = 'S') THEN
539     igs_sc_gen_001.unset_ctx('R');
540   END IF;
541 
542      OPEN c;
543      FETCH c INTO X_ROWID;
544      IF (c%NOTFOUND) THEN
545 	CLOSE c;
546  	RAISE no_data_found;
547      END IF;
548      CLOSE c;
549      After_DML (
550 		p_action => 'INSERT' ,
551 		x_rowid => X_ROWID );
552 EXCEPTION
553   WHEN OTHERS THEN
554     IF (SQLCODE IN (-28115, -28113, -28111)) THEN
555       fnd_message.set_name ('IGS', 'IGS_SC_POLICY_EXCEPTION');
556       fnd_message.set_token ('ERR_CD', SQLCODE);
557       igs_ge_msg_stack.add;
558       igs_sc_gen_001.unset_ctx('R');
559       app_exception.raise_exception;
560     ELSE
561       igs_sc_gen_001.unset_ctx('R');
562       RAISE;
563     END IF;
564 
565 END INSERT_ROW;
566 
567  procedure LOCK_ROW (
568       X_ROWID in  VARCHAR2,
569        x_TEACHING_PERIOD_ID IN NUMBER,
570        x_PERSON_ID IN NUMBER,
571        x_TEACH_PERIOD_RESID_STAT_CD IN VARCHAR2,
572        x_CAL_TYPE IN VARCHAR2,
573        x_SEQUENCE_NUMBER IN NUMBER
574      ) AS
575   /*************************************************************
576   Created By :
577   Date Created By :
578   Purpose :
579   Know limitations, enhancements or remarks
580   Change History
581   Who             When            What
582 
583   (reverse chronological order - newest change first)
584   ***************************************************************/
585 
586    CURSOR c1 IS
587    SELECT
588       PERSON_ID,
589       TEACH_PERIOD_RESID_STAT_CD,
590       CAL_TYPE,
591       SEQUENCE_NUMBER
592    FROM igs_pe_teach_periods_all
593    WHERE ROWID = X_ROWID
594    FOR UPDATE NOWAIT;
595    tlinfo c1%rowtype;
596 
597 BEGIN
598   OPEN c1;
599   FETCH c1 INTO tlinfo;
600   IF (c1%NOTFOUND) THEN
601     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
602     IGS_GE_MSG_STACK.ADD;
603     CLOSE c1;
604     app_exception.raise_exception;
605     RETURN;
606   END IF;
607   CLOSE c1;
608 
609   IF ( (  tlinfo.PERSON_ID = X_PERSON_ID)
610      AND ((tlinfo.TEACH_PERIOD_RESID_STAT_CD = X_TEACH_PERIOD_RESID_STAT_CD)
611          OR ((tlinfo.TEACH_PERIOD_RESID_STAT_CD is null)
612             AND (X_TEACH_PERIOD_RESID_STAT_CD is null)))
613      AND ((tlinfo.CAL_TYPE = X_CAL_TYPE)
614          OR ((tlinfo.CAL_TYPE is null)
615              AND (X_CAL_TYPE is null)))
616      AND ((tlinfo.SEQUENCE_NUMBER = X_SEQUENCE_NUMBER)
617  	    OR ((tlinfo.SEQUENCE_NUMBER is null)
618 		AND (X_SEQUENCE_NUMBER is null)))
619   ) THEN
620     NULL;
621   ELSE
622     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
623     IGS_GE_MSG_STACK.ADD;
624     app_exception.raise_exception;
625   END IF;
626   RETURN;
627 END LOCK_ROW;
628 
629 PROCEDURE UPDATE_ROW (
630        X_ROWID in  VARCHAR2,
631        x_TEACHING_PERIOD_ID IN NUMBER,
632        x_PERSON_ID IN NUMBER,
633        x_TEACH_PERIOD_RESID_STAT_CD IN VARCHAR2,
634        x_CAL_TYPE IN VARCHAR2,
635        x_SEQUENCE_NUMBER IN NUMBER,
636        X_MODE in VARCHAR2 --default 'R'
637   ) AS
638   /*************************************************************
639   Created By :
640   Date Created By :
641   Purpose :
642   Know limitations, enhancements or remarks
643   Change History
644   Who             When            What
645 
646   (reverse chronological order - newest change first)
647   ***************************************************************/
648 
649      X_LAST_UPDATE_DATE DATE ;
650      X_LAST_UPDATED_BY NUMBER ;
651      X_LAST_UPDATE_LOGIN NUMBER ;
652  BEGIN
653      X_LAST_UPDATE_DATE := SYSDATE;
654      IF(X_MODE = 'I') THEN
655         X_LAST_UPDATED_BY := 1;
656         X_LAST_UPDATE_LOGIN := 0;
657      ELSIF (X_MODE IN ('R', 'S')) THEN
658         X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
659         IF X_LAST_UPDATED_BY IS NULL THEN
660             X_LAST_UPDATED_BY := -1;
661         END IF;
662         X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
663         IF X_LAST_UPDATE_LOGIN IS NULL THEN
664             X_LAST_UPDATE_LOGIN := -1;
665         END IF;
666      ELSE
667         FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
668         IGS_GE_MSG_STACK.ADD;
669         app_exception.raise_exception;
670      END IF;
671    Before_DML(
672  	       p_action=>'UPDATE',
673  	       x_rowid=>X_ROWID,
674  	       x_teaching_period_id=>X_TEACHING_PERIOD_ID,
675  	       x_person_id=>X_PERSON_ID,
676  	       x_teach_period_resid_stat_cd=>X_TEACH_PERIOD_RESID_STAT_CD,
677  	       x_cal_type=>X_CAL_TYPE,
678  	       x_sequence_number=>X_SEQUENCE_NUMBER,
679  	       x_creation_date=>X_LAST_UPDATE_DATE,
680 	       x_created_by=>X_LAST_UPDATED_BY,
681 	       x_last_update_date=>X_LAST_UPDATE_DATE,
682 	       x_last_updated_by=>X_LAST_UPDATED_BY,
683 	       x_last_update_login=>X_LAST_UPDATE_LOGIN);
684 
685     IF (x_mode = 'S') THEN
686     igs_sc_gen_001.set_ctx('R');
687   END IF;
688  UPDATE igs_pe_teach_periods_all
689    SET PERSON_ID =  NEW_REFERENCES.PERSON_ID,
690        TEACH_PERIOD_RESID_STAT_CD =  NEW_REFERENCES.TEACH_PERIOD_RESID_STAT_CD,
691        CAL_TYPE =  NEW_REFERENCES.CAL_TYPE,
692        SEQUENCE_NUMBER =  NEW_REFERENCES.SEQUENCE_NUMBER,
693        LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
694        LAST_UPDATED_BY = X_LAST_UPDATED_BY,
695        LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
696    WHERE ROWID = X_ROWID;
697 
698    IF (SQL%NOTFOUND) THEN
699      fnd_message.set_name ('IGS', 'IGS_SC_POLICY_UPD_DEL_EXCEP');
700      igs_ge_msg_stack.add;
701      igs_sc_gen_001.unset_ctx('R');
702      app_exception.raise_exception;
703  END IF;
704  IF (x_mode = 'S') THEN
705     igs_sc_gen_001.unset_ctx('R');
706   END IF;
707 
708 
709    After_DML (
710 	p_action => 'UPDATE' ,
711 	x_rowid => X_ROWID
712 	);
713 EXCEPTION
714   WHEN OTHERS THEN
715     IF (SQLCODE = (-28115)) THEN
716       fnd_message.set_name ('IGS', 'IGS_SC_UPD_POLICY_EXCP');
717       fnd_message.set_token ('ERR_CD', SQLCODE);
718       igs_ge_msg_stack.add;
719       igs_sc_gen_001.unset_ctx('R');
720       app_exception.raise_exception;
721     ELSE
722       igs_sc_gen_001.unset_ctx('R');
723       RAISE;
724     END IF;
725 
726 END UPDATE_ROW;
727 
728 PROCEDURE ADD_ROW (
729        X_ROWID in out NOCOPY VARCHAR2,
730        x_TEACHING_PERIOD_ID IN OUT NOCOPY NUMBER,
731        x_PERSON_ID IN NUMBER,
732        x_TEACH_PERIOD_RESID_STAT_CD IN VARCHAR2,
733        x_CAL_TYPE IN VARCHAR2,
734        x_SEQUENCE_NUMBER IN NUMBER,
735        X_MODE in VARCHAR2 ,--default 'R',
736        X_ORG_ID in NUMBER
737   ) AS
738   /*************************************************************
739   Created By :
740   Date Created By :
741   Purpose :
742   Know limitations, enhancements or remarks
743   Change History
744   Who             When            What
745 
746   (reverse chronological order - newest change first)
747   ***************************************************************/
748 
749   CURSOR c1 IS
750   SELECT ROWID
751   FROM igs_pe_teach_periods_all
752   WHERE TEACHING_PERIOD_ID= X_TEACHING_PERIOD_ID;
753 
754 BEGIN
755 	OPEN c1;
756 	FETCH c1 INTO X_ROWID;
757 	IF (c1%NOTFOUND) THEN
758   	   CLOSE c1;
759            INSERT_ROW (
760 	       X_ROWID,
761 	       X_TEACHING_PERIOD_ID,
762 	       X_PERSON_ID,
763 	       X_TEACH_PERIOD_RESID_STAT_CD,
764 	       X_CAL_TYPE,
765 	       X_SEQUENCE_NUMBER,
766  	       X_MODE,
767 	       X_ORG_ID );
768 	   RETURN;
769 	END IF;
770         CLOSE c1;
771 	UPDATE_ROW (
772 	       X_ROWID,
773 	       X_TEACHING_PERIOD_ID,
774 	       X_PERSON_ID,
775 	       X_TEACH_PERIOD_RESID_STAT_CD,
776 	       X_CAL_TYPE,
777 	       X_SEQUENCE_NUMBER,
778 	       X_MODE );
779 END ADD_ROW;
780 PROCEDURE DELETE_ROW (
781   X_ROWID in VARCHAR2,
782   x_mode IN VARCHAR2
783   ) AS
784   /*************************************************************
785   Created By :
786   Date Created By :
787   Purpose :
788   Know limitations, enhancements or remarks
789   Change History
790   Who             When            What
791 
792   (reverse chronological order - newest change first)
793   ***************************************************************/
794 
795   BEGIN
796     Before_DML (
797       p_action => 'DELETE',
798       x_rowid => X_ROWID
799     );
800      IF (x_mode = 'S') THEN
801     igs_sc_gen_001.set_ctx('R');
802   END IF;
803  delete from igs_pe_teach_periods_all
804     where ROWID = X_ROWID;
805     if (sql%notfound) then
806      fnd_message.set_name ('IGS', 'IGS_SC_POLICY_UPD_DEL_EXCEP');
807      igs_ge_msg_stack.add;
808      igs_sc_gen_001.unset_ctx('R');
809      app_exception.raise_exception;
810  end if;
811  IF (x_mode = 'S') THEN
812     igs_sc_gen_001.unset_ctx('R');
813   END IF;
814 
815     After_DML (
816       p_action => 'DELETE',
817       x_rowid => X_ROWID
818     );
819 END DELETE_ROW;
820 END igs_pe_teach_periods_pkg;