DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AS_EXM_LOC_SPVSR_PKG

Source


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