[Home] [Help]
PACKAGE BODY: APPS.IGS_PS_STAT_PKG
Source
1 package body IGS_PS_STAT_PKG AS
2 /* $Header: IGSPI35B.pls 115.3 2002/11/29 02:22:40 nsidana ship $ */
3
4 l_rowid VARCHAR2(25);
5 old_references IGS_PS_STAT%RowType;
6 new_references IGS_PS_STAT%RowType;
7
8 PROCEDURE Set_Column_Values (
9 p_action IN VARCHAR2,
10 x_rowid IN VARCHAR2 DEFAULT NULL,
11 x_course_status IN VARCHAR2 DEFAULT NULL,
12 x_description IN VARCHAR2 DEFAULT NULL,
13 x_s_course_status IN VARCHAR2 DEFAULT NULL,
14 x_closed_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 ) AS
21
22 CURSOR cur_old_ref_values IS
23 SELECT *
24 FROM IGS_PS_STAT
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.course_status := x_course_status;
46 new_references.description := x_description;
47 new_references.s_course_status := x_s_course_status;
48 new_references.closed_ind := x_closed_ind;
49 IF (p_action = 'UPDATE') THEN
50 new_references.creation_date := old_references.creation_date;
51 new_references.created_by := old_references.created_by;
52 ELSE
53 new_references.creation_date := x_creation_date;
54 new_references.created_by := x_created_by;
55 END IF;
56 new_references.last_update_date := x_last_update_date;
57 new_references.last_updated_by := x_last_updated_by;
58 new_references.last_update_login := x_last_update_login;
59
60 END Set_Column_Values;
61
62 PROCEDURE Check_Constraints (
63 Column_Name IN VARCHAR2 DEFAULT NULL,
64 Column_Value IN VARCHAR2 DEFAULT NULL
65 ) AS
66 BEGIN
67 IF column_name is null THEN
68 NULL;
69 ELSIF upper(column_name) = 'S_COURSE_STATUS' THEN
70 new_references.s_course_status := column_value;
71 ELSIF upper(column_name) = 'CLOSED_IND' THEN
72 new_references.closed_ind := column_value;
73 ELSIF upper(column_name) = 'COURSE_STATUS' THEN
74 new_references.course_status := column_value;
75 END IF;
76
77
78 IF upper(column_name)= 'COURSE_STATUS' OR
79 column_name is null THEN
80 IF new_references.course_status <> UPPER(new_references.course_status)
81 THEN
82 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
83 IGS_GE_MSG_STACK.ADD;
84 App_Exception.Raise_Exception;
85 END IF;
86 END IF;
87
88 IF upper(column_name)= 'CLOSED_IND' OR
89 column_name is null THEN
90 IF new_references.closed_ind NOT IN ( 'Y' , 'N' )
91 THEN
92 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
93 IGS_GE_MSG_STACK.ADD;
94 App_Exception.Raise_Exception;
95 END IF;
96 END IF;
97
98 IF upper(column_name)= 'S_COURSE_STATUS' OR
99 column_name is null THEN
100 IF new_references.s_course_status NOT IN ( 'ACTIVE' , 'INACTIVE','PLANNED' )
101 THEN
102 Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
103 IGS_GE_MSG_STACK.ADD;
104 App_Exception.Raise_Exception;
105 END IF;
106 END IF;
107 END Check_Constraints;
108
109 PROCEDURE Check_Child_Existance AS
110 BEGIN
111
112 IGS_PS_VER_PKG.GET_FK_IGS_PS_STAT (
113 old_references.course_status
114 );
115
116 END Check_Child_Existance;
117
118 FUNCTION Get_PK_For_Validation (
119 x_course_status IN VARCHAR2
120 ) RETURN BOOLEAN AS
121
122 CURSOR cur_rowid IS
123 SELECT rowid
124 FROM IGS_PS_STAT
125 WHERE course_status = x_course_status
126 FOR UPDATE NOWAIT;
127
128 lv_rowid cur_rowid%RowType;
129
130 BEGIN
131
132 Open cur_rowid;
133 Fetch cur_rowid INTO lv_rowid;
134 IF (cur_rowid%FOUND) THEN
135 Close cur_rowid;
136 Return(TRUE);
137 ELSE
138 Close cur_rowid;
139 Return(FALSE);
140 END IF;
141
142 END Get_PK_For_Validation;
143
144 PROCEDURE Before_DML (
145 p_action IN VARCHAR2,
146 x_rowid IN VARCHAR2 DEFAULT NULL,
147 x_course_status IN VARCHAR2 DEFAULT NULL,
148 x_description IN VARCHAR2 DEFAULT NULL,
149 x_s_course_status IN VARCHAR2 DEFAULT NULL,
150 x_closed_ind IN VARCHAR2 DEFAULT NULL,
151 x_creation_date IN DATE DEFAULT NULL,
152 x_created_by IN NUMBER DEFAULT NULL,
153 x_last_update_date IN DATE DEFAULT NULL,
154 x_last_updated_by IN NUMBER DEFAULT NULL,
155 x_last_update_login IN NUMBER DEFAULT NULL
156 ) AS
157 BEGIN
158
159 Set_Column_Values (
160 p_action,
161 x_rowid,
162 x_course_status,
163 x_description,
164 x_s_course_status,
165 x_closed_ind,
166 x_creation_date,
167 x_created_by,
168 x_last_update_date,
169 x_last_updated_by,
170 x_last_update_login
171 );
172
173 IF (p_action = 'INSERT') THEN
174 -- Call all the procedures related to Before Insert.
175 IF Get_PK_For_Validation(
176 new_references.course_status
177 ) THEN
178 Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
179 IGS_GE_MSG_STACK.ADD;
180 App_Exception.Raise_Exception;
181 END IF;
182 Check_Constraints;
183 ELSIF (p_action = 'UPDATE') THEN
184 -- Call all the procedures related to Before Update.
185 Null;
186 Check_Constraints;
187 ELSIF (p_action = 'DELETE') THEN
188 -- Call all the procedures related to Before Delete.
189 Check_Child_Existance;
190 ELSIF (p_action = 'VALIDATE_INSERT') THEN
191 IF Get_PK_For_Validation(
192 new_references.course_status
193 ) THEN
194 Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
195 IGS_GE_MSG_STACK.ADD;
196 App_Exception.Raise_Exception;
197 END IF;
198 Check_Constraints;
199 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
200 Check_Constraints;
201 ELSIF (p_action = 'VALIDATE_DELETE') THEN
202 Check_Child_Existance;
203 END IF;
204 END Before_DML;
205
206 PROCEDURE After_DML (
207 p_action IN VARCHAR2,
208 x_rowid IN VARCHAR2
209 ) AS
210 BEGIN
211
212 l_rowid := x_rowid;
213
214
215 END After_DML;
216
217 procedure INSERT_ROW (
218 X_ROWID in out NOCOPY VARCHAR2,
219 X_COURSE_STATUS in VARCHAR2,
220 X_DESCRIPTION in VARCHAR2,
221 X_S_COURSE_STATUS in VARCHAR2,
222 X_CLOSED_IND in VARCHAR2,
223 X_MODE in VARCHAR2 default 'R'
224 ) AS
225 cursor C is select ROWID from IGS_PS_STAT
226 where COURSE_STATUS = X_COURSE_STATUS;
227 X_LAST_UPDATE_DATE DATE;
228 X_LAST_UPDATED_BY NUMBER;
229 X_LAST_UPDATE_LOGIN NUMBER;
230 begin
231 X_LAST_UPDATE_DATE := SYSDATE;
232 if(X_MODE = 'I') then
233 X_LAST_UPDATED_BY := 1;
234 X_LAST_UPDATE_LOGIN := 0;
235 elsif (X_MODE = 'R') then
236 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
237 if X_LAST_UPDATED_BY is NULL then
238 X_LAST_UPDATED_BY := -1;
239 end if;
240 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
241 if X_LAST_UPDATE_LOGIN is NULL then
242 X_LAST_UPDATE_LOGIN := -1;
243 end if;
244 else
245 FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
246 IGS_GE_MSG_STACK.ADD;
247 app_exception.raise_exception;
248 end if;
249 Before_DML( p_action => 'INSERT',
250 x_rowid => X_ROWID,
251 x_course_status => X_COURSE_STATUS,
252 x_description => X_DESCRIPTION,
253 x_s_course_status => X_S_COURSE_STATUS,
254 x_closed_ind => NVL(X_CLOSED_IND,'N'),
255 x_creation_date => X_LAST_UPDATE_DATE,
256 x_created_by => X_LAST_UPDATED_BY,
257 x_last_update_date => X_LAST_UPDATE_DATE,
258 x_last_updated_by => X_LAST_UPDATED_BY,
259 x_last_update_login => X_LAST_UPDATE_LOGIN
260 );
261 insert into IGS_PS_STAT (
262 COURSE_STATUS,
263 DESCRIPTION,
264 S_COURSE_STATUS,
265 CLOSED_IND,
266 CREATION_DATE,
267 CREATED_BY,
268 LAST_UPDATE_DATE,
269 LAST_UPDATED_BY,
270 LAST_UPDATE_LOGIN
271 ) values (
272 NEW_REFERENCES.COURSE_STATUS,
273 NEW_REFERENCES.DESCRIPTION,
274 NEW_REFERENCES.S_COURSE_STATUS,
275 NEW_REFERENCES.CLOSED_IND,
276 X_LAST_UPDATE_DATE,
277 X_LAST_UPDATED_BY,
278 X_LAST_UPDATE_DATE,
279 X_LAST_UPDATED_BY,
280 X_LAST_UPDATE_LOGIN
281 );
282
283 open c;
284 fetch c into X_ROWID;
285 if (c%notfound) then
286 close c;
287 raise no_data_found;
288 end if;
289 close c;
290 After_DML(
291 p_action => 'INSERT',
292 x_rowid => X_ROWID
293 );
294 end INSERT_ROW;
295
296 procedure LOCK_ROW (
297 X_ROWID in VARCHAR2,
298 X_COURSE_STATUS in VARCHAR2,
299 X_DESCRIPTION in VARCHAR2,
300 X_S_COURSE_STATUS in VARCHAR2,
301 X_CLOSED_IND in VARCHAR2
302 ) AS
303 cursor c1 is select
304 DESCRIPTION,
305 S_COURSE_STATUS,
306 CLOSED_IND
307 from IGS_PS_STAT
308 where ROWID = X_ROWID for update nowait;
309 tlinfo c1%rowtype;
310
311 begin
312 open c1;
313 fetch c1 into tlinfo;
314 if (c1%notfound) then
315 close c1;
316 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
317 IGS_GE_MSG_STACK.ADD;
318 app_exception.raise_exception;
319 return;
320 end if;
321 close c1;
322
323 if ( (tlinfo.DESCRIPTION = X_DESCRIPTION)
324 AND (tlinfo.S_COURSE_STATUS = X_S_COURSE_STATUS)
325 AND (tlinfo.CLOSED_IND = X_CLOSED_IND)
326 ) then
327 null;
328 else
329 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
330 IGS_GE_MSG_STACK.ADD;
331 app_exception.raise_exception;
332 end if;
333 return;
334 end LOCK_ROW;
335
336 procedure UPDATE_ROW (
337 X_ROWID in VARCHAR2,
338 X_COURSE_STATUS in VARCHAR2,
339 X_DESCRIPTION in VARCHAR2,
340 X_S_COURSE_STATUS in VARCHAR2,
341 X_CLOSED_IND in VARCHAR2,
342 X_MODE in VARCHAR2 default 'R'
343 ) AS
344 X_LAST_UPDATE_DATE DATE;
345 X_LAST_UPDATED_BY NUMBER;
346 X_LAST_UPDATE_LOGIN NUMBER;
347 begin
348 X_LAST_UPDATE_DATE := SYSDATE;
349 if(X_MODE = 'I') then
350 X_LAST_UPDATED_BY := 1;
351 X_LAST_UPDATE_LOGIN := 0;
352 elsif (X_MODE = 'R') then
353 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
354 if X_LAST_UPDATED_BY is NULL then
355 X_LAST_UPDATED_BY := -1;
356 end if;
357 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
358 if X_LAST_UPDATE_LOGIN is NULL then
359 X_LAST_UPDATE_LOGIN := -1;
360 end if;
361 else
362 FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
363 IGS_GE_MSG_STACK.ADD;
364 app_exception.raise_exception;
365 end if;
366 Before_DML( p_action => 'UPDATE',
367 x_rowid => X_ROWID,
368 x_course_status => X_COURSE_STATUS,
369 x_description => X_DESCRIPTION,
370 x_s_course_status => X_S_COURSE_STATUS,
371 x_closed_ind => X_CLOSED_IND,
372 x_creation_date => X_LAST_UPDATE_DATE,
373 x_created_by => X_LAST_UPDATED_BY,
374 x_last_update_date => X_LAST_UPDATE_DATE,
375 x_last_updated_by => X_LAST_UPDATED_BY,
376 x_last_update_login => X_LAST_UPDATE_LOGIN
377 );
378
379 update IGS_PS_STAT set
380 DESCRIPTION = NEW_REFERENCES.DESCRIPTION,
381 S_COURSE_STATUS = NEW_REFERENCES.S_COURSE_STATUS,
382 CLOSED_IND = NEW_REFERENCES.CLOSED_IND,
383 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
384 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
385 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
386 where ROWID = X_ROWID
387 ;
388 if (sql%notfound) then
389 raise no_data_found;
390 end if;
391 After_DML(
392 p_action => 'UPDATE',
393 x_rowid => X_ROWID
394 );
395
396 end UPDATE_ROW;
397
398 procedure ADD_ROW (
399 X_ROWID in out NOCOPY VARCHAR2,
400 X_COURSE_STATUS in VARCHAR2,
401 X_DESCRIPTION in VARCHAR2,
402 X_S_COURSE_STATUS in VARCHAR2,
403 X_CLOSED_IND in VARCHAR2,
404 X_MODE in VARCHAR2 default 'R'
405 ) AS
406 cursor c1 is select rowid from IGS_PS_STAT
407 where COURSE_STATUS = X_COURSE_STATUS
408 ;
409 begin
410 open c1;
411 fetch c1 into X_ROWID;
412 if (c1%notfound) then
413 close c1;
414 INSERT_ROW (
415 X_ROWID,
416 X_COURSE_STATUS,
417 X_DESCRIPTION,
418 X_S_COURSE_STATUS,
419 X_CLOSED_IND,
420 X_MODE);
421 return;
422 end if;
423 close c1;
424 UPDATE_ROW (
425 X_ROWID,
426 X_COURSE_STATUS,
427 X_DESCRIPTION,
428 X_S_COURSE_STATUS,
429 X_CLOSED_IND,
430 X_MODE);
431 end ADD_ROW;
432
433 procedure DELETE_ROW (
434 X_ROWID in VARCHAR2
435 ) AS
436 begin
437 Before_DML( p_action => 'DELETE',
438 x_rowid => X_ROWID
439 );
440
441 delete from IGS_PS_STAT
442 where ROWID = X_ROWID;
443 if (sql%notfound) then
444 raise no_data_found;
445 end if;
446 After_DML(
447 p_action => 'DELETE',
448 x_rowid => X_ROWID
449 );
450 end DELETE_ROW;
451
452 end IGS_PS_STAT_PKG;