DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_EN_ATD_TYPE_LOAD_PKG

Source


1 package body IGS_EN_ATD_TYPE_LOAD_PKG AS
2 /* $Header: IGSEI19B.pls 120.1 2005/09/08 14:28:01 appldev noship $ */
3   l_rowid VARCHAR2(25);
4   old_references IGS_EN_ATD_TYPE_LOAD_ALL%RowType;
5   new_references IGS_EN_ATD_TYPE_LOAD_ALL%RowType;
6   PROCEDURE Set_Column_Values (
7     p_action IN VARCHAR2,
8     x_rowid IN VARCHAR2 DEFAULT NULL,
9     x_org_id IN NUMBER DEFAULT NULL,
10     x_cal_type IN VARCHAR2 DEFAULT NULL,
11     x_attendance_type IN VARCHAR2 DEFAULT NULL,
12     x_lower_enr_load_range IN NUMBER DEFAULT NULL,
13     x_upper_enr_load_range IN NUMBER DEFAULT NULL,
14     x_default_eftsu IN NUMBER 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   ) AS
21 
22     CURSOR cur_old_ref_values IS
23       SELECT   *
24       FROM     IGS_EN_ATD_TYPE_LOAD_ALL
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.org_id := x_org_id;
46     new_references.cal_type := x_cal_type;
47     new_references.attendance_type := x_attendance_type;
48     new_references.lower_enr_load_range := x_lower_enr_load_range;
49     new_references.upper_enr_load_range := x_upper_enr_load_range;
50     new_references.default_eftsu := x_default_eftsu;
51     IF (p_action = 'UPDATE') THEN
52       new_references.creation_date := old_references.creation_date;
53       new_references.created_by := old_references.created_by;
54     ELSE
55       new_references.creation_date := x_creation_date;
56       new_references.created_by := x_created_by;
57     END IF;
58     new_references.last_update_date := x_last_update_date;
59     new_references.last_updated_by := x_last_updated_by;
60     new_references.last_update_login := x_last_update_login;
61 
62   END Set_Column_Values;
63 
64   PROCEDURE BeforeRowInsertUpdate1(
65     p_inserting IN BOOLEAN DEFAULT FALSE,
66     p_updating IN BOOLEAN DEFAULT FALSE,
67     p_deleting IN BOOLEAN DEFAULT FALSE
68     ) AS
69 	v_message_name		varchar2(30);
70   BEGIN
71 	-- Validate that inserts/updates are allowed
72 	IF  p_inserting OR p_updating THEN
73 	    IF	IGS_AD_VAL_APCOO.CRSP_VAL_ATT_CLOSED(new_references.attendance_type
74 						,v_message_name) = FALSE THEN
75 				fnd_message.set_name('IGS',v_message_name);
76 IGS_GE_MSG_STACK.ADD;
77 				app_exception.raise_exception;
78 	    END IF;
79 	    IF	IGS_PS_VAL_ATL.CRSP_VAL_ATL_CAT(new_references.cal_type
80 						,v_message_name) = FALSE THEN
81 				fnd_message.set_name('IGS',v_message_name);
82 IGS_GE_MSG_STACK.ADD;
83 				app_exception.raise_exception;
84 	    END IF;
85 	END IF;
86 
87 
88   END BeforeRowInsertUpdate1;
89   PROCEDURE AfterRowInsertUpdate2(
90     p_inserting IN BOOLEAN DEFAULT FALSE,
91     p_updating IN BOOLEAN DEFAULT FALSE,
92     p_deleting IN BOOLEAN DEFAULT FALSE
93     ) AS
94 	v_message_name	varchar2(30);
95 	v_rowid_saved	BOOLEAN := FALSE;
96   BEGIN
97 	-- Validate attendance type load.
98 	-- Cannot call crsp_val_atl_range because trigger may be mutating.
99 	-- Save the rowid of the current row.
100 	-- Perform validation processing on all the rows affected by the statement.
101 	-- Validate attendance type load range.
102 	IF IGS_PS_VAL_ATL.crsp_val_atl_range (new_references.attendance_type,
103 			new_references.cal_type,
104 			new_references.lower_enr_load_range,
105 			new_references.upper_enr_load_range,
106 			v_message_name) = FALSE THEN
107 				fnd_message.set_name('IGS',v_message_name);
108 IGS_GE_MSG_STACK.ADD;
109 				app_exception.raise_exception;
110 	END IF;
111 	v_rowid_saved := TRUE;
112   END AfterRowInsertUpdate2;
113 
114 procedure Check_constraints(
115 	column_name IN VARCHAR2 DEFAULT NULL,
116 	column_value IN VARCHAR2 DEFAULT NULL
117    ) AS
118 begin
119 	IF column_name is null then
120 	   NULL;
121 	ELSIF upper(column_name) = 'UPPER_ENR_LOAD_RANGE' then
122 		new_references.upper_enr_load_range := igs_ge_number.to_num(column_value);
123 	ELSIF upper(column_name) = 'LOWER_ENR_LOAD_RANGE' then
124 		new_references.lower_enr_load_range := igs_ge_number.to_num(column_value);
125 	ELSIF upper(column_name) = 'ATTENDANCE_TYPE' then
126 		new_references.attendance_type := column_value;
127 	ELSIF upper(column_name) = 'CAL_TYPE' then
128 		new_references.cal_type := column_value;
129 	END IF;
130 
131 	IF upper(column_name) = 'UPPER_ENR_LOAD_RANGE' OR
132 	 column_name is null then
133 	    if  new_references.upper_enr_load_range <0 OR
134 	     new_references.upper_enr_load_range > 999.999 then
135 	         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
136 IGS_GE_MSG_STACK.ADD;
137          	 App_Exception.Raise_Exception;
138 	     end if;
139 	end if;
140 	IF upper(column_name) = 'LOWER_ENR_LOAD_RANGE' OR
141 	 column_name is null then
142 	   if  new_references.lower_enr_load_range<0 OR
143  		new_references.lower_enr_load_range >999.999 then
144 	         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
145 IGS_GE_MSG_STACK.ADD;
146          	 App_Exception.Raise_Exception;
147 	     end if;
148 	end if;
149 	IF upper(column_name) = 'ATTENDANCE_TYPE'  OR
150 	 column_name is null then
151 	   if new_references.attendance_type <> upper(new_references.attendance_type) then
152 	         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
153 IGS_GE_MSG_STACK.ADD;
154          	 App_Exception.Raise_Exception;
155 	     end if;
156 	end if;
157 	IF upper(column_name) = 'CAL_TYPE'  OR
158 	 column_name is null then
159 	   if new_references.cal_type <> upper(new_references.cal_type) then
160 	         Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
161 IGS_GE_MSG_STACK.ADD;
162          	 App_Exception.Raise_Exception;
163 	     end if;
164 	end if;
165 END check_constraints;
166 
167   PROCEDURE Check_Parent_Existance AS
168   BEGIN
169 
170     IF (((old_references.attendance_type = new_references.attendance_type)) OR
171         ((new_references.attendance_type IS NULL))) THEN
172       NULL;
173     ELSE
174       IF NOT IGS_EN_ATD_TYPE_PKG.Get_PK_For_Validation (
175         new_references.attendance_type
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     END IF;
182 
183     IF (((old_references.cal_type = new_references.cal_type)) OR
184         ((new_references.cal_type IS NULL))) THEN
185       NULL;
186     ELSE
187       IF NOT IGS_CA_TYPE_PKG.Get_PK_For_Validation (
188         new_references.cal_type
189         ) THEN
190          Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
191 IGS_GE_MSG_STACK.ADD;
192          App_Exception.Raise_Exception;
193       end if;
194     END IF;
195 
196   END Check_Parent_Existance;
197 
198  FUNCTION Get_PK_For_Validation (
199     x_cal_type IN VARCHAR2,
200     x_attendance_type IN VARCHAR2
201     ) RETURN BOOLEAN AS
202 
203     CURSOR cur_rowid IS
204       SELECT   rowid
205       FROM     IGS_EN_ATD_TYPE_LOAD_ALL
206       WHERE    cal_type = x_cal_type
207       AND      attendance_type = x_attendance_type
208       FOR UPDATE NOWAIT;
209 
210     lv_rowid cur_rowid%RowType;
211 
212   BEGIN
213 
214     Open cur_rowid;
215     Fetch cur_rowid INTO lv_rowid;
216     IF (cur_rowid%FOUND) THEN
217 	Close cur_rowid;
218 	return(TRUE);
219     else
220 	Close cur_rowid;
221       Return(FALSE);
222     END IF;
223 
224   END Get_PK_For_Validation;
225 
226   PROCEDURE GET_FK_IGS_EN_ATD_TYPE (
227     x_attendance_type IN VARCHAR2
228     ) AS
229 
230     CURSOR cur_rowid IS
231       SELECT   rowid
232       FROM     IGS_EN_ATD_TYPE_LOAD_ALL
233       WHERE    attendance_type = x_attendance_type ;
234 
235     lv_rowid cur_rowid%RowType;
236 
237   BEGIN
238 
239     Open cur_rowid;
240     Fetch cur_rowid INTO lv_rowid;
241     IF (cur_rowid%FOUND) THEN
242       Close cur_rowid;
243       Fnd_Message.Set_Name ('IGS', 'IGS_EN_ATL_ATT_FK');
244 IGS_GE_MSG_STACK.ADD;
245       App_Exception.Raise_Exception;
246       Return;
247     END IF;
248     Close cur_rowid;
249 
250   END GET_FK_IGS_EN_ATD_TYPE;
251 
252   PROCEDURE GET_FK_IGS_CA_TYPE (
253     x_cal_type IN VARCHAR2
254     )AS
255 
256     CURSOR cur_rowid IS
257       SELECT   rowid
258       FROM     IGS_EN_ATD_TYPE_LOAD_ALL
259       WHERE    cal_type = x_cal_type ;
260 
261     lv_rowid cur_rowid%RowType;
262 
263   BEGIN
264 
265     Open cur_rowid;
266     Fetch cur_rowid INTO lv_rowid;
267     IF (cur_rowid%FOUND) THEN
268       Close cur_rowid;
269       Fnd_Message.Set_Name ('IGS', 'IGS_EN_ATL_CAT_FK');
270 IGS_GE_MSG_STACK.ADD;
271       App_Exception.Raise_Exception;
272       Return;
273     END IF;
274     Close cur_rowid;
275 
276   END GET_FK_IGS_CA_TYPE;
277   PROCEDURE Before_DML (
278     p_action IN VARCHAR2,
279     x_rowid IN VARCHAR2 DEFAULT NULL,
280     x_org_id IN NUMBER DEFAULT NULL,
281     x_cal_type IN VARCHAR2 DEFAULT NULL,
282     x_attendance_type IN VARCHAR2 DEFAULT NULL,
283     x_lower_enr_load_range IN NUMBER DEFAULT NULL,
284     x_upper_enr_load_range IN NUMBER DEFAULT NULL,
285     x_default_eftsu IN NUMBER DEFAULT NULL,
286     x_creation_date IN DATE DEFAULT NULL,
287     x_created_by IN NUMBER DEFAULT NULL,
288     x_last_update_date IN DATE DEFAULT NULL,
289     x_last_updated_by IN NUMBER DEFAULT NULL,
290     x_last_update_login IN NUMBER DEFAULT NULL
291   ) AS
292   BEGIN
293 
294     Set_Column_Values (
295       p_action,
296       x_rowid,
297       x_org_id,
298       x_cal_type,
299       x_attendance_type,
300       x_lower_enr_load_range,
301       x_upper_enr_load_range,
302       x_default_eftsu,
303       x_creation_date,
304       x_created_by,
305       x_last_update_date,
306       x_last_updated_by,
307       x_last_update_login
308     );
309 
310     IF (p_action = 'INSERT') THEN
311       -- Call all the procedures related to Before Insert.
312       BeforeRowInsertUpdate1 ( p_inserting => TRUE );
313 	IF Get_PK_For_Validation (
314  	   new_references.cal_type ,
315   	   new_references.attendance_type
316     	) THEN
317 	 Fnd_Message.Set_Name ('IGS', 'IGS_GE_MULTI_ORG_DUP_REC');
318 IGS_GE_MSG_STACK.ADD;
319          App_Exception.Raise_Exception;
320 	END IF;
321       Check_constraints;
322       Check_Parent_Existance;
323     ELSIF (p_action = 'UPDATE') THEN
324       -- Call all the procedures related to Before Update.
325       BeforeRowInsertUpdate1 ( p_updating => TRUE );
326       Check_constraints;
327       Check_Parent_Existance;
328     ELSIF (p_action = 'DELETE') THEN
329       -- Call all the procedures related to Before Delete.
330       Null;
331    ELSIF (p_action = 'VALIDATE_INSERT') then
332 	IF Get_PK_For_Validation (
333  	   new_references.cal_type ,
334   	   new_references.attendance_type
335     	) THEN
336 	 Fnd_Message.Set_Name ('IGS', 'IGS_GE_MULTI_ORG_DUP_REC');
337 IGS_GE_MSG_STACK.ADD;
338          App_Exception.Raise_Exception;
339 	END IF;
340       Check_constraints;
341    ELSIF (p_action = 'VALIDATE_UPDATE') THEN
342        Check_constraints;
343    ELSIF (p_action = 'VALIDATE_DELETE') THEN
344 	null;
345     END IF;
346 
347   END Before_DML;
348 
349   PROCEDURE After_DML (
350     p_action IN VARCHAR2,
351     x_rowid IN VARCHAR2
352   ) AS
353   BEGIN
354 
355     l_rowid := x_rowid;
356 
357     IF (p_action = 'INSERT') THEN
358       -- Call all the procedures related to After Insert.
359       AfterRowInsertUpdate2 ( p_inserting => TRUE );
360     ELSIF (p_action = 'UPDATE') THEN
361       -- Call all the procedures related to After Update.
362       AfterRowInsertUpdate2 ( p_updating => TRUE );
363     ELSIF (p_action = 'DELETE') THEN
364       -- Call all the procedures related to After Delete.
365       Null;
366     END IF;
367 
368   END After_DML;
369 procedure INSERT_ROW (
370   X_ROWID in out NOCOPY VARCHAR2,
371   X_ORG_ID in NUMBER,
372   X_CAL_TYPE in VARCHAR2,
373   X_ATTENDANCE_TYPE in VARCHAR2,
374   X_LOWER_ENR_LOAD_RANGE in NUMBER,
375   X_UPPER_ENR_LOAD_RANGE in NUMBER,
376   X_DEFAULT_EFTSU in NUMBER,
377   X_MODE in VARCHAR2 default 'R'
378   ) AS
379     cursor C is select ROWID from IGS_EN_ATD_TYPE_LOAD_ALL
380       where CAL_TYPE = X_CAL_TYPE
381       and ATTENDANCE_TYPE = X_ATTENDANCE_TYPE;
382     X_LAST_UPDATE_DATE DATE;
383     X_LAST_UPDATED_BY NUMBER;
384     X_LAST_UPDATE_LOGIN NUMBER;
385 begin
386   X_LAST_UPDATE_DATE := SYSDATE;
387   if(X_MODE = 'I') then
388     X_LAST_UPDATED_BY := 1;
389     X_LAST_UPDATE_LOGIN := 0;
390   elsif (X_MODE = 'R') then
391     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
392     if X_LAST_UPDATED_BY is NULL then
393       X_LAST_UPDATED_BY := -1;
394     end if;
395     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
396     if X_LAST_UPDATE_LOGIN is NULL then
397       X_LAST_UPDATE_LOGIN := -1;
398     end if;
399   else
400     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
401 IGS_GE_MSG_STACK.ADD;
402     app_exception.raise_exception;
403   end if;
404   Before_DML (
405     p_action => 'INSERT',
406     x_rowid => X_ROWID,
407     x_org_id => igs_ge_gen_003.get_org_id,
408     x_cal_type => X_CAL_TYPE,
409     x_attendance_type => X_ATTENDANCE_TYPE,
410     x_lower_enr_load_range => X_LOWER_ENR_LOAD_RANGE,
411     x_upper_enr_load_range => X_UPPER_ENR_LOAD_RANGE,
412     x_default_eftsu => X_DEFAULT_EFTSU,
413     x_creation_date => X_LAST_UPDATE_DATE,
414     x_created_by => X_LAST_UPDATED_BY,
415     x_last_update_date => X_LAST_UPDATE_DATE,
416     x_last_updated_by => X_LAST_UPDATED_BY,
417     x_last_update_login => X_LAST_UPDATE_LOGIN
418   );
419   insert into IGS_EN_ATD_TYPE_LOAD_ALL (
420     org_id,
421     CAL_TYPE,
422     ATTENDANCE_TYPE,
423     LOWER_ENR_LOAD_RANGE,
424     UPPER_ENR_LOAD_RANGE,
425     DEFAULT_EFTSU,
426     CREATION_DATE,
427     CREATED_BY,
428     LAST_UPDATE_DATE,
429     LAST_UPDATED_BY,
430     LAST_UPDATE_LOGIN
431   ) values (
432     NEW_REFERENCES.ORG_ID,
433     NEW_REFERENCES.CAL_TYPE,
434     NEW_REFERENCES.ATTENDANCE_TYPE,
435     NEW_REFERENCES.LOWER_ENR_LOAD_RANGE,
436     NEW_REFERENCES.UPPER_ENR_LOAD_RANGE,
437     NEW_REFERENCES.DEFAULT_EFTSU,
438     X_LAST_UPDATE_DATE,
439     X_LAST_UPDATED_BY,
440     X_LAST_UPDATE_DATE,
441     X_LAST_UPDATED_BY,
442     X_LAST_UPDATE_LOGIN
443   );
444 
445   open c;
446   fetch c into X_ROWID;
447   if (c%notfound) then
448     close c;
449     raise no_data_found;
450   end if;
451   close c;
452 
453   After_DML(
454     p_action => 'INSERT',
455     x_rowid => X_ROWID
456   );
457 
458 end INSERT_ROW;
459 
460 procedure LOCK_ROW (
461   X_ROWID in VARCHAR2,
462   X_CAL_TYPE in VARCHAR2,
463   X_ATTENDANCE_TYPE in VARCHAR2,
464   X_LOWER_ENR_LOAD_RANGE in NUMBER,
465   X_UPPER_ENR_LOAD_RANGE in NUMBER,
466   X_DEFAULT_EFTSU in NUMBER
467 ) AS
468   cursor c1 is select
469       LOWER_ENR_LOAD_RANGE,
470       UPPER_ENR_LOAD_RANGE,
471       DEFAULT_EFTSU
472     from IGS_EN_ATD_TYPE_LOAD_ALL
473     where ROWID = X_ROWID for update nowait;
474   tlinfo c1%rowtype;
475 
476 begin
477   open c1;
478   fetch c1 into tlinfo;
479   if (c1%notfound) then
480     close c1;
481     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
482 IGS_GE_MSG_STACK.ADD;
483     app_exception.raise_exception;
484     return;
485   end if;
486   close c1;
487 
488   if ( (tlinfo.LOWER_ENR_LOAD_RANGE = X_LOWER_ENR_LOAD_RANGE)
489       AND (tlinfo.UPPER_ENR_LOAD_RANGE = X_UPPER_ENR_LOAD_RANGE)
490       AND ((tlinfo.DEFAULT_EFTSU = X_DEFAULT_EFTSU)
491            OR ((tlinfo.DEFAULT_EFTSU is null)
492                AND (X_DEFAULT_EFTSU is null)))
493   ) then
494     null;
495   else
496     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
497 IGS_GE_MSG_STACK.ADD;
498     app_exception.raise_exception;
499   end if;
500   return;
501 end LOCK_ROW;
502 
503 procedure UPDATE_ROW (
504   X_ROWID in VARCHAR2,
505   X_CAL_TYPE in VARCHAR2,
506   X_ATTENDANCE_TYPE in VARCHAR2,
507   X_LOWER_ENR_LOAD_RANGE in NUMBER,
508   X_UPPER_ENR_LOAD_RANGE in NUMBER,
509   X_DEFAULT_EFTSU in NUMBER,
510   X_MODE in VARCHAR2 default 'R'
511   ) AS
512     X_LAST_UPDATE_DATE DATE;
513     X_LAST_UPDATED_BY NUMBER;
514     X_LAST_UPDATE_LOGIN NUMBER;
515 begin
516   X_LAST_UPDATE_DATE := SYSDATE;
517   if(X_MODE = 'I') then
518     X_LAST_UPDATED_BY := 1;
519     X_LAST_UPDATE_LOGIN := 0;
520   elsif (X_MODE = 'R') then
521     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
522     if X_LAST_UPDATED_BY is NULL then
523       X_LAST_UPDATED_BY := -1;
524     end if;
525     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
526     if X_LAST_UPDATE_LOGIN is NULL then
527       X_LAST_UPDATE_LOGIN := -1;
528     end if;
529   else
530     FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
531 IGS_GE_MSG_STACK.ADD;
532     app_exception.raise_exception;
533   end if;
534   Before_DML (
535     p_action => 'UPDATE',
536     x_rowid => X_ROWID,
537     x_cal_type => X_CAL_TYPE,
538     x_attendance_type => X_ATTENDANCE_TYPE,
539     x_lower_enr_load_range => X_LOWER_ENR_LOAD_RANGE,
540     x_upper_enr_load_range => X_UPPER_ENR_LOAD_RANGE,
541     x_default_eftsu => X_DEFAULT_EFTSU,
542     x_creation_date => X_LAST_UPDATE_DATE,
543     x_created_by => X_LAST_UPDATED_BY,
544     x_last_update_date => X_LAST_UPDATE_DATE,
545     x_last_updated_by => X_LAST_UPDATED_BY,
546     x_last_update_login => X_LAST_UPDATE_LOGIN
547   );
548   update IGS_EN_ATD_TYPE_LOAD_ALL set
549     LOWER_ENR_LOAD_RANGE = NEW_REFERENCES.LOWER_ENR_LOAD_RANGE,
550     UPPER_ENR_LOAD_RANGE = NEW_REFERENCES.UPPER_ENR_LOAD_RANGE,
551     DEFAULT_EFTSU = NEW_REFERENCES.DEFAULT_EFTSU,
552     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
553     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
554     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
555   where ROWID = X_ROWID;
556   if (sql%notfound) then
557     raise no_data_found;
558   end if;
559 
560   After_DML(
561     p_action => 'UPDATE',
562     x_rowid => X_ROWID
563   );
564 
565 end UPDATE_ROW;
566 
567 procedure ADD_ROW (
568   X_ROWID in out NOCOPY VARCHAR2,
569   X_ORG_ID in NUMBER,
570   X_CAL_TYPE in VARCHAR2,
571   X_ATTENDANCE_TYPE in VARCHAR2,
572   X_LOWER_ENR_LOAD_RANGE in NUMBER,
573   X_UPPER_ENR_LOAD_RANGE in NUMBER,
574   X_DEFAULT_EFTSU in NUMBER,
575   X_MODE in VARCHAR2 default 'R'
576   ) AS
577   cursor c1 is select rowid from IGS_EN_ATD_TYPE_LOAD_ALL
578      where CAL_TYPE = X_CAL_TYPE
579      and ATTENDANCE_TYPE = X_ATTENDANCE_TYPE
580   ;
581 
582 begin
583   open c1;
584   fetch c1 into X_ROWID;
585   if (c1%notfound) then
586     close c1;
587     INSERT_ROW (
588      X_ROWID,
589      x_org_id,
590      X_CAL_TYPE,
591      X_ATTENDANCE_TYPE,
592      X_LOWER_ENR_LOAD_RANGE,
593      X_UPPER_ENR_LOAD_RANGE,
594      X_DEFAULT_EFTSU,
595      X_MODE);
596     return;
597   end if;
598   close c1;
599   UPDATE_ROW (
600    X_ROWID,
601    X_CAL_TYPE,
602    X_ATTENDANCE_TYPE,
603    X_LOWER_ENR_LOAD_RANGE,
604    X_UPPER_ENR_LOAD_RANGE,
605    X_DEFAULT_EFTSU,
606    X_MODE);
607 end ADD_ROW;
608 
609 procedure DELETE_ROW (X_ROWID in VARCHAR2
610 ) AS
611 begin
612   Before_DML(
613     p_action => 'DELETE',
614     x_rowid => X_ROWID
615   );
616   delete from IGS_EN_ATD_TYPE_LOAD_ALL
617   where ROWID = X_ROWID;
618   if (sql%notfound) then
619     raise no_data_found;
620   end if;
621 
622   After_DML(
623     p_action => 'DELETE',
624     x_rowid => X_ROWID
625   );
626 
627 end DELETE_ROW;
628 
629 end IGS_EN_ATD_TYPE_LOAD_PKG;