[Home] [Help]
PACKAGE BODY: APPS.IGS_GR_STAT_PKG
Source
1 package body IGS_GR_STAT_PKG as
2 /* $Header: IGSGI17B.pls 115.6 2003/05/19 04:45:39 ijeddy ship $ */
3 l_rowid VARCHAR2(25);
4 old_references IGS_GR_STAT%RowType;
5 new_references IGS_GR_STAT%RowType;
6
7 PROCEDURE Set_Column_Values (
8 p_action IN VARCHAR2,
9 x_rowid IN VARCHAR2 DEFAULT NULL,
10 x_graduand_status IN VARCHAR2 DEFAULT NULL,
11 x_description IN VARCHAR2 DEFAULT NULL,
12 x_s_graduand_status IN VARCHAR2 DEFAULT NULL,
13 x_closed_ind IN VARCHAR2 DEFAULT NULL,
14 x_creation_date IN DATE DEFAULT NULL,
15 x_created_by IN NUMBER DEFAULT NULL,
16 x_last_update_date IN DATE DEFAULT NULL,
17 x_last_updated_by IN NUMBER DEFAULT NULL,
18 x_last_update_login IN NUMBER DEFAULT NULL
19 ) AS
20
21 CURSOR cur_old_ref_values IS
22 SELECT *
23 FROM IGS_GR_STAT
24 WHERE rowid = x_rowid;
25
26 BEGIN
27
28 l_rowid := x_rowid;
29
30 -- Code for setting the Old and New Reference Values.
31 -- Populate Old Values.
32 Open cur_old_ref_values;
33 Fetch cur_old_ref_values INTO old_references;
34 IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT')) THEN
35 Close cur_old_ref_values;
36 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
37 App_Exception.Raise_Exception;
38 Return;
39 END IF;
40 Close cur_old_ref_values;
41
42 -- Populate New Values.
43 new_references.graduand_status := x_graduand_status;
44 new_references.description := x_description;
45 new_references.s_graduand_status := x_s_graduand_status;
46 new_references.closed_ind := x_closed_ind;
47 IF (p_action = 'UPDATE') THEN
48 new_references.creation_date := old_references.creation_date;
49 new_references.created_by := old_references.created_by;
50 ELSE
51 new_references.creation_date := x_creation_date;
52 new_references.created_by := x_created_by;
53 END IF;
54 new_references.last_update_date := x_last_update_date;
55 new_references.last_updated_by := x_last_updated_by;
56 new_references.last_update_login := x_last_update_login;
57
58 END Set_Column_Values;
59
60 PROCEDURE Check_Child_Existance AS
61 BEGIN
62
63 IGS_GR_GRADUAND_PKG.GET_FK_IGS_GR_STAT (
64 old_references.graduand_status
65 );
66
67 END Check_Child_Existance;
68
69 FUNCTION Get_PK_For_Validation (
70 x_graduand_status IN VARCHAR2
71 ) RETURN BOOLEAN AS
72
73 CURSOR cur_rowid IS
74 SELECT rowid
75 FROM IGS_GR_STAT
76 WHERE graduand_status = x_graduand_status ;
77
78 lv_rowid cur_rowid%RowType;
79
80 BEGIN
81
82 Open cur_rowid;
83 Fetch cur_rowid INTO lv_rowid;
84 IF (cur_rowid%FOUND) THEN
85 Close cur_rowid;
86 Return (TRUE);
87 ELSE
88 Close cur_rowid;
89 Return (FALSE);
90 END IF;
91
92 END Get_PK_For_Validation;
93
94 PROCEDURE CHECK_CONSTRAINTS(
95 Column_Name IN VARCHAR2 DEFAULT NULL,
96 Column_Value IN VARCHAR2 DEFAULT NULL
97 ) AS
98 BEGIN
99 IF Column_Name is null THEN
100 NULL;
101 ELSIF upper(Column_name) = 'CLOSED_IND' THEN
102 new_references.CLOSED_IND:= COLUMN_VALUE ;
103
104 ELSIF upper(Column_name) = 'GRADUAND_STATUS' THEN
105 new_references.GRADUAND_STATUS:= COLUMN_VALUE ;
106
107 ELSIF upper(Column_name) = 'S_GRADUAND_STATUS' THEN
108 new_references.S_GRADUAND_STATUS:= COLUMN_VALUE ;
109
110 END IF ;
111
112 IF upper(Column_name) = 'CLOSED_IND' OR COLUMN_NAME IS NULL THEN
113 IF new_references.CLOSED_IND not in ('Y','N') then
114 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
115 App_Exception.Raise_Exception ;
116 END IF;
117 END IF ;
118
119 IF upper(Column_name) = 'GRADUAND_STATUS' OR COLUMN_NAME IS NULL THEN
120 IF new_references.GRADUAND_STATUS<> upper(new_references.GRADUAND_STATUS) then
121 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
122 App_Exception.Raise_Exception ;
123 END IF;
124
125 END IF ;
126
127 IF upper(Column_name) = 'S_GRADUAND_STATUS' OR COLUMN_NAME IS NULL THEN
128 IF new_references.S_GRADUAND_STATUS<> upper(new_references.S_GRADUAND_STATUS) then
129 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
130 App_Exception.Raise_Exception ;
131 END IF;
132
133 IF new_references.S_GRADUAND_STATUS not in ( 'POTENTIAL' , 'ELIGIBLE' , 'SURRENDER' , 'GRADUATED' ) then
134 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
135 App_Exception.Raise_Exception ;
136 END IF;
137
138 END IF ;
139 END CHECK_CONSTRAINTS;
140
141 PROCEDURE Before_DML (
142 p_action IN VARCHAR2,
143 x_rowid IN VARCHAR2 DEFAULT NULL,
144 x_graduand_status IN VARCHAR2 DEFAULT NULL,
145 x_description IN VARCHAR2 DEFAULT NULL,
146 x_s_graduand_status IN VARCHAR2 DEFAULT NULL,
147 x_closed_ind IN VARCHAR2 DEFAULT NULL,
148 x_creation_date IN DATE DEFAULT NULL,
149 x_created_by IN NUMBER DEFAULT NULL,
150 x_last_update_date IN DATE DEFAULT NULL,
151 x_last_updated_by IN NUMBER DEFAULT NULL,
152 x_last_update_login IN NUMBER DEFAULT NULL
153 ) AS
154 BEGIN
155
156 Set_Column_Values (
157 p_action,
158 x_rowid,
159 x_graduand_status,
160 x_description,
161 x_s_graduand_status,
162 x_closed_ind,
163 x_creation_date,
164 x_created_by,
165 x_last_update_date,
166 x_last_updated_by,
167 x_last_update_login
168 );
169
170 IF (p_action = 'INSERT') THEN
171 -- Call all the procedures related to Before Insert.
172 IF GET_PK_FOR_VALIDATION(NEW_REFERENCES.graduand_status) THEN
173 Fnd_Message.Set_Name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
174 App_Exception.Raise_Exception;
175 END IF;
176
177 check_constraints;
178 ELSIF (p_action = 'UPDATE') THEN
179 -- Call all the procedures related to Before Update.
180
181 check_constraints;
182 ELSIF (p_action = 'DELETE') THEN
183 -- Call all the procedures related to Before Delete.
184 Check_Child_Existance;
185 ELSIF (p_action = 'VALIDATE_INSERT') THEN
186 IF GET_PK_FOR_VALIDATION(NEW_REFERENCES.graduand_status) THEN
187 Fnd_Message.Set_Name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
188 App_Exception.Raise_Exception;
189 END IF;
190
191 check_constraints;
192 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
193
194 check_constraints;
195 ELSIF (p_action = 'VALIDATE_DELETE') THEN
196 check_child_existance;
197 END IF;
198
199 /*
200 The (L_ROWID := null) was added by ijeddy on the 12-apr-2003 as
201 part of the bug fix for bug no 2868726, (Uniqueness Check at Item Level)
202 */
203 L_ROWID := null;
204
205 END Before_DML;
206
207 procedure INSERT_ROW (
208 X_ROWID in out NOCOPY VARCHAR2,
209 X_GRADUAND_STATUS in VARCHAR2,
210 X_DESCRIPTION in VARCHAR2,
211 X_S_GRADUAND_STATUS in VARCHAR2,
212 X_CLOSED_IND in VARCHAR2,
213 X_MODE in VARCHAR2 default 'R'
214 ) AS
215 cursor C is select ROWID from IGS_GR_STAT
216 where GRADUAND_STATUS = X_GRADUAND_STATUS;
217 X_LAST_UPDATE_DATE DATE;
218 X_LAST_UPDATED_BY NUMBER;
219 X_LAST_UPDATE_LOGIN NUMBER;
220 begin
221 X_LAST_UPDATE_DATE := SYSDATE;
222 if(X_MODE = 'I') then
223 X_LAST_UPDATED_BY := 1;
224 X_LAST_UPDATE_LOGIN := 0;
225 elsif (X_MODE = 'R') then
226 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
227 if X_LAST_UPDATED_BY is NULL then
228 X_LAST_UPDATED_BY := -1;
229 end if;
230 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
231 if X_LAST_UPDATE_LOGIN is NULL then
232 X_LAST_UPDATE_LOGIN := -1;
233 end if;
234 else
235 FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
236 app_exception.raise_exception;
237 end if;
238
239 Before_DML (
240 p_action => 'INSERT',
241 x_rowid => X_ROWID,
242 x_graduand_status => X_GRADUAND_STATUS,
243 x_description => X_DESCRIPTION,
244 x_s_graduand_status => NVL(X_S_GRADUAND_STATUS, 'POTENTIAL'),
245 x_closed_ind => NVL(X_CLOSED_IND, 'N'),
246 x_creation_date => X_LAST_UPDATE_DATE,
247 x_created_by => X_LAST_UPDATED_BY,
248 x_last_update_date => X_LAST_UPDATE_DATE,
249 x_last_updated_by => X_LAST_UPDATED_BY,
250 x_last_update_login => X_LAST_UPDATE_LOGIN
251 );
252
253 insert into IGS_GR_STAT (
254 GRADUAND_STATUS,
255 DESCRIPTION,
256 S_GRADUAND_STATUS,
257 CLOSED_IND,
258 CREATION_DATE,
259 CREATED_BY,
260 LAST_UPDATE_DATE,
261 LAST_UPDATED_BY,
262 LAST_UPDATE_LOGIN
263 ) values (
264 NEW_REFERENCES.GRADUAND_STATUS,
265 NEW_REFERENCES.DESCRIPTION,
266 NEW_REFERENCES.S_GRADUAND_STATUS,
267 NEW_REFERENCES.CLOSED_IND,
268 X_LAST_UPDATE_DATE,
269 X_LAST_UPDATED_BY,
270 X_LAST_UPDATE_DATE,
271 X_LAST_UPDATED_BY,
272 X_LAST_UPDATE_LOGIN
273 );
274
275 open c;
276 fetch c into X_ROWID;
277 if (c%notfound) then
278 close c;
279 raise no_data_found;
280 end if;
281 close c;
282
283 end INSERT_ROW;
284
285 procedure LOCK_ROW (
286 X_ROWID in VARCHAR2,
287 X_GRADUAND_STATUS in VARCHAR2,
288 X_DESCRIPTION in VARCHAR2,
289 X_S_GRADUAND_STATUS in VARCHAR2,
290 X_CLOSED_IND in VARCHAR2
291 ) AS
292 cursor c1 is select
293 DESCRIPTION,
294 S_GRADUAND_STATUS,
295 CLOSED_IND
296 from IGS_GR_STAT
297 where ROWID = X_ROWID for update nowait;
298 tlinfo c1%rowtype;
299
300 begin
301 open c1;
302 fetch c1 into tlinfo;
303 if (c1%notfound) then
304 close c1;
305 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
306 app_exception.raise_exception;
307 return;
308 end if;
309 close c1;
310
311 if ( (tlinfo.DESCRIPTION = X_DESCRIPTION)
312 AND (tlinfo.S_GRADUAND_STATUS = X_S_GRADUAND_STATUS)
313 AND (tlinfo.CLOSED_IND = X_CLOSED_IND)
314 ) then
315 null;
316 else
317 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
318 app_exception.raise_exception;
319 end if;
320 return;
321 end LOCK_ROW;
322
323 procedure UPDATE_ROW (
324 X_ROWID in VARCHAR2,
325 X_GRADUAND_STATUS in VARCHAR2,
326 X_DESCRIPTION in VARCHAR2,
327 X_S_GRADUAND_STATUS in VARCHAR2,
328 X_CLOSED_IND in VARCHAR2,
329 X_MODE in VARCHAR2 default 'R'
330 ) AS
331 X_LAST_UPDATE_DATE DATE;
332 X_LAST_UPDATED_BY NUMBER;
333 X_LAST_UPDATE_LOGIN NUMBER;
334 begin
335 X_LAST_UPDATE_DATE := SYSDATE;
336 if(X_MODE = 'I') then
337 X_LAST_UPDATED_BY := 1;
338 X_LAST_UPDATE_LOGIN := 0;
339 elsif (X_MODE = 'R') then
340 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
341 if X_LAST_UPDATED_BY is NULL then
342 X_LAST_UPDATED_BY := -1;
343 end if;
344 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
345 if X_LAST_UPDATE_LOGIN is NULL then
346 X_LAST_UPDATE_LOGIN := -1;
347 end if;
348 else
349 FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
350 app_exception.raise_exception;
351 end if;
352
353 Before_DML (
354 p_action => 'UPDATE',
355 x_rowid => X_ROWID,
356 x_graduand_status => X_GRADUAND_STATUS,
357 x_description => X_DESCRIPTION,
358 x_s_graduand_status => X_S_GRADUAND_STATUS,
359 x_closed_ind => X_CLOSED_IND,
360 x_creation_date => X_LAST_UPDATE_DATE,
361 x_created_by => X_LAST_UPDATED_BY,
362 x_last_update_date => X_LAST_UPDATE_DATE,
363 x_last_updated_by => X_LAST_UPDATED_BY,
364 x_last_update_login => X_LAST_UPDATE_LOGIN
365 );
366
367 update IGS_GR_STAT set
368 DESCRIPTION = NEW_REFERENCES.DESCRIPTION,
369 S_GRADUAND_STATUS = NEW_REFERENCES.S_GRADUAND_STATUS,
370 CLOSED_IND = NEW_REFERENCES.CLOSED_IND,
371 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
372 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
373 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
374 where ROWID = X_ROWID
375 ;
376 if (sql%notfound) then
377 raise no_data_found;
378 end if;
379
380 end UPDATE_ROW;
381
382 procedure ADD_ROW (
383 X_ROWID in out NOCOPY VARCHAR2,
384 X_GRADUAND_STATUS in VARCHAR2,
385 X_DESCRIPTION in VARCHAR2,
386 X_S_GRADUAND_STATUS in VARCHAR2,
387 X_CLOSED_IND in VARCHAR2,
388 X_MODE in VARCHAR2 default 'R'
389 ) AS
390 cursor c1 is select rowid from IGS_GR_STAT
391 where GRADUAND_STATUS = X_GRADUAND_STATUS
392 ;
393
394 begin
395 open c1;
396 fetch c1 into X_ROWID;
397 if (c1%notfound) then
398 close c1;
399 INSERT_ROW (
400 X_ROWID,
401 X_GRADUAND_STATUS,
402 X_DESCRIPTION,
403 X_S_GRADUAND_STATUS,
404 X_CLOSED_IND,
405 X_MODE);
406 return;
407 end if;
408 close c1;
409 UPDATE_ROW (
410 X_ROWID,
411 X_GRADUAND_STATUS,
412 X_DESCRIPTION,
413 X_S_GRADUAND_STATUS,
414 X_CLOSED_IND,
415 X_MODE);
416 end ADD_ROW;
417
418 /* Removed the code for delete row For Locking Issus */
419
420 end IGS_GR_STAT_PKG;