DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AD_ADM_UT_STT_LD_PKG

Source


1 package body IGS_AD_ADM_UT_STT_LD_PKG as
2 /* $Header: IGSAI03B.pls 115.7 2003/10/30 13:18:43 rghosh ship $ */
3   l_rowid VARCHAR2(25);
4   old_references IGS_AD_ADM_UT_STT_LD%RowType;
5   new_references IGS_AD_ADM_UT_STT_LD%RowType;
6 
7   PROCEDURE Set_Column_Values (
8     p_action IN VARCHAR2,
9     x_rowid IN VARCHAR2 DEFAULT NULL,
10     x_administrative_unit_status IN VARCHAR2 DEFAULT NULL,
11     x_cal_type IN VARCHAR2 DEFAULT NULL,
12     x_ci_sequence_number IN NUMBER DEFAULT NULL,
13     x_teach_cal_type IN VARCHAR2 DEFAULT NULL,
14     x_load_incurred_ind IN VARCHAR2 DEFAULT NULL,
15     x_creation_date IN DATE DEFAULT NULL,
16     x_created_by IN NUMBER DEFAULT NULL,
17     x_last_update_date IN DATE DEFAULT NULL,
18     x_last_updated_by IN NUMBER DEFAULT NULL,
19     x_last_update_login IN NUMBER DEFAULT NULL
20   ) IS
21 
22     CURSOR cur_old_ref_values IS
23       SELECT   *
24       FROM     IGS_AD_ADM_UT_STT_LD
25       WHERE    rowid = x_rowid;
26 
27   BEGIN
28 
29     l_rowid := x_rowid;
30 
31     -- Code for setting the Old and New Reference Values.
32     -- Populate Old Values.
33     Open cur_old_ref_values;
34     Fetch cur_old_ref_values INTO old_references;
35     IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT','VALIDATE_INSERT')) THEN
36       Close cur_old_ref_values;
37       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
38       IGS_GE_MSG_STACK.ADD;
39       App_Exception.Raise_Exception;
40       Return;
41     END IF;
42     Close cur_old_ref_values;
43 
44     -- Populate New Values.
45     new_references.administrative_unit_status := x_administrative_unit_status;
46     new_references.cal_type := x_cal_type;
47     new_references.ci_sequence_number := x_ci_sequence_number;
48     new_references.teach_cal_type := x_teach_cal_type;
49     new_references.load_incurred_ind := x_load_incurred_ind;
50     IF (p_action = 'UPDATE') THEN
51       new_references.creation_date := old_references.creation_date;
52       new_references.created_by := old_references.created_by;
53     ELSE
54       new_references.creation_date := x_creation_date;
55       new_references.created_by := x_created_by;
56     END IF;
57     new_references.last_update_date := x_last_update_date;
58     new_references.last_updated_by := x_last_updated_by;
59     new_references.last_update_login := x_last_update_login;
60 
61   END Set_Column_Values;
62 
63   -- Trigger description :-
64   -- "OSS_TST".TRG_AUSL_BR_IUD
65   -- BEFORE  INSERT  OR UPDATE  OR DELETE  ON IGS_AD_ADM_UT_STT_LD
66   -- REFERENCING
67   --  NEW AS NEW
68   --  OLD AS OLD
69   -- FOR EACH ROW
70 
71   PROCEDURE BeforeRowInsertUpdateDelete1(
72     p_inserting IN BOOLEAN DEFAULT FALSE,
73     p_updating IN BOOLEAN DEFAULT FALSE,
74     p_deleting IN BOOLEAN DEFAULT FALSE
75     ) IS
76 	v_message_name		VARCHAR2(30);
77 	v_cal_type		IGS_AD_ADM_UT_STT_LD.cal_type%TYPE;
78 	v_ci_sequence_number	IGS_AD_ADM_UT_STT_LD.ci_sequence_number%TYPE;
79   BEGIN
80 	IF p_inserting OR p_updating THEN
81 		v_cal_type := new_references.cal_type;
82 		v_ci_sequence_number := new_references.ci_sequence_number;
83 	ELSE
84 		v_cal_type := old_references.cal_type;
85 		v_ci_sequence_number := old_references.ci_sequence_number;
86 	END IF;
87 	-- Validate if insert, update or delete is allowed.
88 /*
89 ||  Bug ID 1956374 - Removal of Duplicate Program Units from OSS.
90 ||  Changed the reference of "IGS_EN_VAL_AUSL.STAP_VAL_CI_STATUS" to program unit "IGS_EN_VAL_DLA.STAP_VAL_CI_STATUS". -- kdande
91 */
92 	IF IGS_EN_VAL_DLA.stap_val_ci_status (
93 			v_cal_type,
94 			v_ci_sequence_number,
95 			v_message_name) = FALSE THEN
96 
97 		    Fnd_Message.Set_Name('IGS',v_message_name);
98 		    IGS_GE_MSG_STACK.ADD;
99 		    App_Exception.Raise_Exception;
100 	END IF;
101 	-- Validate that inserts/updates are allowed
102 	IF  p_inserting OR p_updating THEN
103 	    IF	IGS_EN_VAL_UDDC.ENRP_VAL_AUS_CLOSED(new_references.administrative_unit_status
104 						,v_message_name) = FALSE THEN
105 		    Fnd_Message.Set_Name('IGS',v_message_name);
106 		    IGS_GE_MSG_STACK.ADD;
107 		    App_Exception.Raise_Exception;
108 	    END IF;
109 	    IF	IGS_EN_VAL_AUSL.ENRP_VAL_AUSL_AUS(new_references.administrative_unit_status
110 						,v_message_name) = FALSE THEN
111 		    Fnd_Message.Set_Name('IGS',v_message_name);
112 		    IGS_GE_MSG_STACK.ADD;
113 		    App_Exception.Raise_Exception;
114 	    END IF;
115 	END IF;
116 
117 
118   END BeforeRowInsertUpdateDelete1;
119 
120 
121   PROCEDURE Check_Parent_Existance IS
122   BEGIN
123 
124     IF (((old_references.administrative_unit_status =
125           new_references.administrative_unit_status)) OR
126         ((new_references.administrative_unit_status IS NULL))) THEN
127       NULL;
128     ELSE
129       IF NOT IGS_AD_ADM_UNIT_STAT_PKG.Get_PK_For_Validation (
130         new_references.administrative_unit_status,'N' ) THEN
131         Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
132         IGS_GE_MSG_STACK.ADD;
133         App_Exception.Raise_Exception;
134       END IF;
135     END IF;
136 
137     IF (((old_references.cal_type = new_references.cal_type) AND
138          (old_references.ci_sequence_number = new_references.ci_sequence_number) AND
139          (old_references.teach_cal_type = new_references.teach_cal_type)) OR
140         ((new_references.cal_type IS NULL) OR
141          (new_references.ci_sequence_number IS NULL) OR
142          (new_references.teach_cal_type IS NULL))) THEN
143       NULL;
144     ELSE
145      IF NOT IGS_ST_DFT_LOAD_APPO_PKG.Get_PK_For_Validation (
146         new_references.cal_type,
147         new_references.ci_sequence_number,
148         new_references.teach_cal_type       ) THEN
149          Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
150          IGS_GE_MSG_STACK.ADD;
151         App_Exception.Raise_Exception;
152 	END IF;
153     END IF;
154 
155   END Check_Parent_Existance;
156 
157   PROCEDURE Check_Constraints (
158 			Column_Name IN VARCHAR2 DEFAULT NULL,
159 			Column_Value IN VARCHAR2 DEFAULT NULL
160 			) AS
161  BEGIN
162 
163       IF Column_Name IS NULL THEN
164 	   NULL;
165       ELSIF upper(Column_Name) = 'ADMINISTRATIVE_UNIT_STATUS' THEN
166 	   new_references.administrative_unit_status := column_value ;
167       ELSIF upper(Column_Name) = 'CAL_TYPE' THEN
168 	   new_references.cal_type := column_value ;
169       ELSIF upper(Column_Name) = 'LOAD_INCURRED_IND' THEN
170 	   new_references.load_incurred_ind := column_value ;
171       ELSIF upper(Column_Name) = 'TEACH_CAL_TYPE' THEN
172 	   new_references.teach_cal_type := column_value ;
173   	END IF;
174 
175       IF upper(Column_Name) = 'ADMINISTRATIVE_UNIT_STATUS' OR
176 	   Column_name IS NULL THEN
177          IF new_references.administrative_unit_status <> upper(new_references.administrative_unit_status) THEN
178             Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
179             IGS_GE_MSG_STACK.ADD;
180             App_Exception.Raise_Exception;
181 	   END IF;
182       END IF;
183       IF upper(Column_Name) = 'CAL_TYPE' OR
184 	   Column_name IS NULL THEN
185          IF new_references.cal_type <> upper(new_references.cal_type) THEN
186             Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
187             IGS_GE_MSG_STACK.ADD;
188             App_Exception.Raise_Exception;
189 	   END IF;
190       END IF;
191       IF upper(Column_Name) = 'TEACH_CAL_TYPE' OR
192 	   Column_name IS NULL THEN
193          IF new_references.teach_cal_type <> upper(new_references.teach_cal_type) THEN
194             Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
195             IGS_GE_MSG_STACK.ADD;
196             App_Exception.Raise_Exception;
197 	   END IF;
198       END IF;
199 	IF upper(Column_Name) = 'LOAD_INCURRED_IND' OR
200 	   Column_name IS NULL THEN
201          IF new_references.load_incurred_ind NOT IN ('Y','N') THEN
202             Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
203             IGS_GE_MSG_STACK.ADD;
204             App_Exception.Raise_Exception;
205 	   END IF;
206       END IF;
207  END Check_Constraints;
208 
209   FUNCTION Get_PK_For_Validation (
210     x_administrative_unit_status IN VARCHAR2,
211     x_cal_type IN VARCHAR2,
212     x_ci_sequence_number IN NUMBER,
213     x_teach_cal_type IN VARCHAR2) RETURN BOOLEAN AS
214 
215     CURSOR cur_rowid IS
216       SELECT   rowid
217       FROM     IGS_AD_ADM_UT_STT_LD
218       WHERE    administrative_unit_status = x_administrative_unit_status
219       AND      cal_type = x_cal_type
220       AND      ci_sequence_number = x_ci_sequence_number
221       AND      teach_cal_type = x_teach_cal_type
222       FOR UPDATE NOWAIT;
223 
224     lv_rowid cur_rowid%RowType;
225 
226   BEGIN
227 
228     Open cur_rowid;
229     Fetch cur_rowid INTO lv_rowid;
230     IF (cur_rowid%FOUND) THEN
231       Close cur_rowid;
232       Return (True);
233     ELSE
234       Close cur_rowid;
235       Return (False);
236     END IF;
237 
238   END Get_PK_For_Validation;
239 
240   PROCEDURE GET_FK_IGS_ST_DFT_LOAD_APPO (
241     x_cal_type IN VARCHAR2,
242     x_ci_sequence_number IN NUMBER,
243     x_teach_cal_type IN VARCHAR2
244     ) IS
245 
246     CURSOR cur_rowid IS
247       SELECT   rowid
248       FROM     IGS_AD_ADM_UT_STT_LD
249       WHERE    cal_type = x_cal_type
250       AND      ci_sequence_number = x_ci_sequence_number
251       AND      teach_cal_type = x_teach_cal_type ;
252 
253     lv_rowid cur_rowid%RowType;
254 
255   BEGIN
256 
257     Open cur_rowid;
258     Fetch cur_rowid INTO lv_rowid;
259     IF (cur_rowid%FOUND) THEN
260       Close cur_rowid;
261       Fnd_Message.Set_Name ('IGS', 'IGS_AD_AUSL_DLA_FK');
262       IGS_GE_MSG_STACK.ADD;
263       App_Exception.Raise_Exception;
264       Return;
265     END IF;
266     Close cur_rowid;
267 
268   END GET_FK_IGS_ST_DFT_LOAD_APPO;
269 
270   PROCEDURE Before_DML (
271     p_action IN VARCHAR2,
272     x_rowid IN VARCHAR2 DEFAULT NULL,
273     x_administrative_unit_status IN VARCHAR2 DEFAULT NULL,
274     x_cal_type IN VARCHAR2 DEFAULT NULL,
275     x_ci_sequence_number IN NUMBER DEFAULT NULL,
276     x_teach_cal_type IN VARCHAR2 DEFAULT NULL,
277     x_load_incurred_ind IN VARCHAR2 DEFAULT NULL,
278     x_creation_date IN DATE DEFAULT NULL,
279     x_created_by IN NUMBER DEFAULT NULL,
280     x_last_update_date IN DATE DEFAULT NULL,
281     x_last_updated_by IN NUMBER DEFAULT NULL,
282     x_last_update_login IN NUMBER DEFAULT NULL
283   ) IS
284   BEGIN
285 
286     Set_Column_Values (
287       p_action,
288       x_rowid,
289       x_administrative_unit_status,
290       x_cal_type,
291       x_ci_sequence_number,
292       x_teach_cal_type,
293       x_load_incurred_ind,
294       x_creation_date,
295       x_created_by,
296       x_last_update_date,
297       x_last_updated_by,
298       x_last_update_login
299     );
300 
301     IF (p_action = 'INSERT') THEN
302       -- Call all the procedures related to Before Insert.
303       BeforeRowInsertUpdateDelete1 ( p_inserting => TRUE );
304 	IF Get_PK_For_Validation (
305          new_references.administrative_unit_status ,
306          new_references.cal_type,
307          new_references.ci_sequence_number,
308          new_references.teach_cal_type ) THEN
309 
310          Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
311          IGS_GE_MSG_STACK.ADD;
312          App_Exception.Raise_Exception;
313      END IF;
314       Check_constraints;
315       Check_Parent_Existance;
316 
317     ELSIF (p_action = 'UPDATE') THEN
318       -- Call all the procedures related to Before Update.
319       BeforeRowInsertUpdateDelete1 ( p_updating => TRUE );
320       Check_constraints;
321       Check_Parent_Existance;
322 
323     ELSIF (p_action = 'DELETE') THEN
324       -- Call all the procedures related to Before Delete.
325       BeforeRowInsertUpdateDelete1 ( p_deleting => TRUE );
326 
327     ELSIF (p_action = 'VALIDATE_INSERT') THEN
328     	IF Get_PK_For_Validation (
329          new_references.administrative_unit_status ,
330          new_references.cal_type,
331          new_references.ci_sequence_number,
332          new_references.teach_cal_type ) THEN
333 
334          Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
335          IGS_GE_MSG_STACK.ADD;
336          App_Exception.Raise_Exception;
337      END IF;
338       Check_constraints;
339 
340     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
341       Check_constraints;
342     END IF;
343 
344   END Before_DML;
345 
346   PROCEDURE After_DML (
347     p_action IN VARCHAR2,
348     x_rowid IN VARCHAR2
349   ) IS
350   BEGIN
351 
352     l_rowid := x_rowid;
353 
354   END After_DML;
355 
356 procedure INSERT_ROW (
357   X_ROWID in out NOCOPY VARCHAR2,
358   X_ADMINISTRATIVE_UNIT_STATUS in VARCHAR2,
359   X_CAL_TYPE in VARCHAR2,
360   X_CI_SEQUENCE_NUMBER in NUMBER,
361   X_TEACH_CAL_TYPE in VARCHAR2,
362   X_LOAD_INCURRED_IND in VARCHAR2,
363   X_MODE in VARCHAR2 default 'R'
364   ) is
365     cursor C is select ROWID from IGS_AD_ADM_UT_STT_LD
366       where ADMINISTRATIVE_UNIT_STATUS = X_ADMINISTRATIVE_UNIT_STATUS
367       and CAL_TYPE = X_CAL_TYPE
368       and CI_SEQUENCE_NUMBER = X_CI_SEQUENCE_NUMBER
369       and TEACH_CAL_TYPE = X_TEACH_CAL_TYPE;
370     X_LAST_UPDATE_DATE DATE;
371     X_LAST_UPDATED_BY NUMBER;
372     X_LAST_UPDATE_LOGIN NUMBER;
373 begin
374   X_LAST_UPDATE_DATE := SYSDATE;
375   if(X_MODE = 'I') then
376     X_LAST_UPDATED_BY := 1;
377     X_LAST_UPDATE_LOGIN := 0;
378   elsif (X_MODE = 'R') then
379     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
380     if X_LAST_UPDATED_BY is NULL then
381       X_LAST_UPDATED_BY := -1;
382     end if;
383     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
384     if X_LAST_UPDATE_LOGIN is NULL then
385       X_LAST_UPDATE_LOGIN := -1;
386     end if;
387   else
388     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
389     IGS_GE_MSG_STACK.ADD;
390     app_exception.raise_exception;
391   end if;
392 
393  Before_DML (
394     p_action => 'INSERT',
395     x_rowid => X_ROWID,
396     x_administrative_unit_status => X_ADMINISTRATIVE_UNIT_STATUS,
397     x_cal_type => X_CAL_TYPE,
398     x_ci_sequence_number => X_CI_SEQUENCE_NUMBER,
399     x_teach_cal_type => X_TEACH_CAL_TYPE,
400     x_load_incurred_ind => Nvl(X_LOAD_INCURRED_IND, 'Y'),
401     x_creation_date => X_LAST_UPDATE_DATE,
402     x_created_by => X_LAST_UPDATED_BY,
403     x_last_update_date => X_LAST_UPDATE_DATE,
404     x_last_updated_by => X_LAST_UPDATED_BY,
405     x_last_update_login => X_LAST_UPDATE_LOGIN
406   );
407   insert into IGS_AD_ADM_UT_STT_LD (
408     ADMINISTRATIVE_UNIT_STATUS,
409     CAL_TYPE,
410     CI_SEQUENCE_NUMBER,
411     TEACH_CAL_TYPE,
412     LOAD_INCURRED_IND,
413     CREATION_DATE,
414     CREATED_BY,
415     LAST_UPDATE_DATE,
416     LAST_UPDATED_BY,
417     LAST_UPDATE_LOGIN
418   ) values (
419     NEW_REFERENCES.ADMINISTRATIVE_UNIT_STATUS,
420     NEW_REFERENCES.CAL_TYPE,
421     NEW_REFERENCES.CI_SEQUENCE_NUMBER,
422     NEW_REFERENCES.TEACH_CAL_TYPE,
423     NEW_REFERENCES.LOAD_INCURRED_IND,
424     X_LAST_UPDATE_DATE,
425     X_LAST_UPDATED_BY,
426     X_LAST_UPDATE_DATE,
427     X_LAST_UPDATED_BY,
428     X_LAST_UPDATE_LOGIN
429   );
430 
431   open c;
432   fetch c into X_ROWID;
433   if (c%notfound) then
434     close c;
435     raise no_data_found;
436   end if;
437   close c;
438  After_DML (
439     p_action => 'INSERT',
440     x_rowid => X_ROWID
441  );
445   X_ROWID in VARCHAR2,
442 end INSERT_ROW;
443 
444 procedure LOCK_ROW (
446   X_ADMINISTRATIVE_UNIT_STATUS in VARCHAR2,
447   X_CAL_TYPE in VARCHAR2,
448   X_CI_SEQUENCE_NUMBER in NUMBER,
449   X_TEACH_CAL_TYPE in VARCHAR2,
450   X_LOAD_INCURRED_IND in VARCHAR2
451 ) is
452   cursor c1 is select
453       LOAD_INCURRED_IND
454     from IGS_AD_ADM_UT_STT_LD
455     where ROWID = X_ROWID
456     for update nowait;
457   tlinfo c1%rowtype;
458 
459 begin
460   open c1;
461   fetch c1 into tlinfo;
462   if (c1%notfound) then
463     close c1;
464     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
465     app_exception.raise_exception;
466     return;
467   end if;
468   close c1;
469 
470   if ( (tlinfo.LOAD_INCURRED_IND = X_LOAD_INCURRED_IND)
471   ) then
472     null;
473   else
474     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
475     app_exception.raise_exception;
476   end if;
477   return;
478 end LOCK_ROW;
479 
480 procedure UPDATE_ROW (
481   X_ROWID in VARCHAR2,
482   X_ADMINISTRATIVE_UNIT_STATUS in VARCHAR2,
483   X_CAL_TYPE in VARCHAR2,
484   X_CI_SEQUENCE_NUMBER in NUMBER,
485   X_TEACH_CAL_TYPE in VARCHAR2,
486   X_LOAD_INCURRED_IND in VARCHAR2,
487   X_MODE in VARCHAR2 default 'R'
488   ) is
489     X_LAST_UPDATE_DATE DATE;
490     X_LAST_UPDATED_BY NUMBER;
491     X_LAST_UPDATE_LOGIN NUMBER;
492 begin
493   X_LAST_UPDATE_DATE := SYSDATE;
494   if(X_MODE = 'I') then
495     X_LAST_UPDATED_BY := 1;
496     X_LAST_UPDATE_LOGIN := 0;
497   elsif (X_MODE = 'R') then
498     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
499     if X_LAST_UPDATED_BY is NULL then
500       X_LAST_UPDATED_BY := -1;
501     end if;
502     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
503     if X_LAST_UPDATE_LOGIN is NULL then
504       X_LAST_UPDATE_LOGIN := -1;
505     end if;
506   else
507     FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
508     IGS_GE_MSG_STACK.ADD;
509     app_exception.raise_exception;
510   end if;
511 
512 Before_DML (
513     p_action => 'UPDATE',
514     x_rowid => X_ROWID,
515     x_administrative_unit_status => X_ADMINISTRATIVE_UNIT_STATUS,
516     x_cal_type => X_CAL_TYPE,
517     x_ci_sequence_number => X_CI_SEQUENCE_NUMBER,
518     x_teach_cal_type => X_TEACH_CAL_TYPE,
519     x_load_incurred_ind => X_LOAD_INCURRED_IND,
520     x_creation_date => X_LAST_UPDATE_DATE,
521     x_created_by => X_LAST_UPDATED_BY,
522     x_last_update_date => X_LAST_UPDATE_DATE,
523     x_last_updated_by => X_LAST_UPDATED_BY,
524     x_last_update_login => X_LAST_UPDATE_LOGIN
525   );
526 
527   update IGS_AD_ADM_UT_STT_LD set
528     LOAD_INCURRED_IND = NEW_REFERENCES.LOAD_INCURRED_IND,
529     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
530     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
531     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
532   where ROWID = X_ROWID ;
533   if (sql%notfound) then
534     raise no_data_found;
535   end if;
536 After_DML (
537     p_action => 'UPDATE',
538     x_rowid => X_ROWID
539  );
540 
541 end UPDATE_ROW;
542 
543 procedure ADD_ROW (
544   X_ROWID in out NOCOPY VARCHAR2,
545   X_ADMINISTRATIVE_UNIT_STATUS in VARCHAR2,
546   X_CAL_TYPE in VARCHAR2,
547   X_CI_SEQUENCE_NUMBER in NUMBER,
548   X_TEACH_CAL_TYPE in VARCHAR2,
549   X_LOAD_INCURRED_IND in VARCHAR2,
550   X_MODE in VARCHAR2 default 'R'
551   ) is
552   cursor c1 is select rowid from IGS_AD_ADM_UT_STT_LD
553      where ADMINISTRATIVE_UNIT_STATUS = X_ADMINISTRATIVE_UNIT_STATUS
554      and CAL_TYPE = X_CAL_TYPE
555      and CI_SEQUENCE_NUMBER = X_CI_SEQUENCE_NUMBER
556      and TEACH_CAL_TYPE = X_TEACH_CAL_TYPE  ;
557 begin
558   open c1;
559   fetch c1 into X_ROWID ;
560   if (c1%notfound) then
561     close c1;
562     INSERT_ROW (
563      X_ROWID,
564      X_ADMINISTRATIVE_UNIT_STATUS,
565      X_CAL_TYPE,
566      X_CI_SEQUENCE_NUMBER,
567      X_TEACH_CAL_TYPE,
568      X_LOAD_INCURRED_IND,
569      X_MODE);
570     return;
571   end if;
572   close c1;
573   UPDATE_ROW (
574    X_ROWID,
575    X_ADMINISTRATIVE_UNIT_STATUS,
576    X_CAL_TYPE,
577    X_CI_SEQUENCE_NUMBER,
578    X_TEACH_CAL_TYPE,
579    X_LOAD_INCURRED_IND,
580    X_MODE);
581 end ADD_ROW;
582 
583 procedure DELETE_ROW (
584 X_ROWID in VARCHAR2
585 ) is
586 begin
587 
588 Before_DML (
589     p_action => 'DELETE',
590     x_rowid => X_ROWID
591  );
592   delete from IGS_AD_ADM_UT_STT_LD
593   where ROWID = X_ROWID;
594   if (sql%notfound) then
595     raise no_data_found;
596   end if;
597 After_DML (
598     p_action => 'DELETE',
599     x_rowid => X_ROWID
600  );
601 end DELETE_ROW;
602 
603 end IGS_AD_ADM_UT_STT_LD_PKG;