[Home] [Help]
PACKAGE BODY: APPS.IGS_AD_LOCATION_REL_PKG
Source
1 package body IGS_AD_LOCATION_REL_PKG as
2 /* $Header: IGSAI44B.pls 115.4 2003/10/30 13:20:39 rghosh ship $ */
3
4 l_rowid VARCHAR2(25);
5 old_references IGS_AD_LOCATION_REL%RowType;
6 new_references IGS_AD_LOCATION_REL%RowType;
7
8 PROCEDURE Set_Column_Values (
9 p_action IN VARCHAR2,
10 x_rowid IN VARCHAR2 DEFAULT NULL,
11 x_location_cd IN VARCHAR2 DEFAULT NULL,
12 x_sub_location_cd IN VARCHAR2 DEFAULT NULL,
13 x_dflt_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_AD_LOCATION_REL
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 IGS_GE_MSG_STACK.ADD;
38 App_Exception.Raise_Exception;
39 Return;
40 END IF;
41 Close cur_old_ref_values;
42
43 -- Populate New Values.
44 new_references.location_cd := x_location_cd;
45 new_references.sub_location_cd := x_sub_location_cd;
46 new_references.dflt_ind := x_dflt_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 BeforeRowInsertUpdate1(
61 p_inserting IN BOOLEAN DEFAULT FALSE,
62 p_updating IN BOOLEAN DEFAULT FALSE,
63 p_deleting IN BOOLEAN DEFAULT FALSE
64 ) AS
65 v_message_name varchar2(30);
66 BEGIN
67 -- Validate that inserts are allowed
68 IF p_inserting OR p_updating THEN
69 --<Start lr2>
70 -- Cannot make a campus (s_location_type = 'CAMPUS') a child of
71 -- an exam centre (s_location_type = 'EXAM_CTR')
72 IF IGS_OR_VAL_LR.assp_val_lr_lr (
73 new_references.location_cd,
74 new_references.sub_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 END IF;
81
82
83 END BeforeRowInsertUpdate1;
84
85 PROCEDURE AfterRowInsertUpdate2(
86 p_inserting IN BOOLEAN DEFAULT FALSE,
87 p_updating IN BOOLEAN DEFAULT FALSE,
88 p_deleting IN BOOLEAN DEFAULT FALSE
89 ) AS
90 v_message_name varchar2(30);
91 v_rowid_saved BOOLEAN := FALSE;
92 BEGIN
93
94 -- Validate location relationship.
95 IF IGS_OR_VAL_LR.orgp_val_lr (new_references.location_cd,
96 new_references.sub_location_cd,
97 v_message_name) = FALSE THEN
98 Fnd_Message.Set_Name('IGS',v_message_name);
99 IGS_GE_MSG_STACK.ADD;
100 App_Exception.Raise_Exception;
101 END IF;
102 --<Start lr1>
103 -- Can only set default indicator when parent location is a campus and
104 -- child location is an exam location. This is not really a mutating
105 -- trigger but as <lr3> depends on the result and <lr3> is mutating then
106 -- handle as such.
107 IF IGS_OR_VAL_LR.assp_val_lr_dfltslot (
108 new_references.location_cd,
109 new_references.sub_location_cd,
110 new_references.dflt_ind,
111 v_message_name) = FALSE THEN
112 Fnd_Message.Set_Name('IGS',v_message_name);
113 IGS_GE_MSG_STACK.ADD;
114 App_Exception.Raise_Exception;
115 END IF;
116
117
118 -- Validate IGS_AD_LOCATION relationship.
119 -- Save the rowid of the current row.
120 --IGS_OR_VAL_LR.genp_set_rowid(l_rowid);
121 --v_rowid_saved := TRUE; /* This line was commented becuase the variable v_rowid_saved is to be set true */
122 /* only if the record has been inserted into the pl/sql table */
123 -- Cannot call orgp_val_lr because trigger mayl be mutating.
124
125
126 END AfterRowInsertUpdate2;
127
128 procedure Check_Constraints (
129 Column_Name IN VARCHAR2 DEFAULT NULL,
130 Column_Value IN VARCHAR2 DEFAULT NULL
131 )
132 AS
133 BEGIN
134 IF Column_Name is null then
135 NULL;
136 ELSIF upper(Column_Name) = 'DFLT_IND' then
137 new_references.dflt_ind := column_value;
138 ELSIF upper(Column_Name) = 'LOCATION_CD' then
139 new_references.location_cd := column_value;
140 ELSIF upper(Column_Name) = 'SUB_LOCATION_CD' then
141 new_references.sub_location_cd := column_value;
142 END IF;
143
144 IF upper(Column_Name) = 'DFLT_IND' OR Column_Name IS NULL THEN
145 IF new_references.dflt_ind NOT IN ('Y','N') THEN
146 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
147 IGS_GE_MSG_STACK.ADD;
148 App_Exception.Raise_Exception;
149 END IF;
150 END IF;
151 IF upper(Column_Name) = 'LOCATION_CD' OR Column_Name IS NULL THEN
152 IF new_references.location_cd <> UPPER(new_references.location_cd) THEN
153 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
154 IGS_GE_MSG_STACK.ADD;
155 App_Exception.Raise_Exception;
156 END IF;
157 END IF;
158 IF upper(Column_Name) = 'SUB_LOCATION_CD' OR Column_Name IS NULL THEN
159 IF new_references.sub_location_cd <> UPPER(new_references.sub_location_cd) 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
166 END Check_Constraints;
167
168 PROCEDURE Check_Parent_Existance AS
169 BEGIN
170
171 IF (((old_references.location_cd = new_references.location_cd)) OR
172 ((new_references.location_cd IS NULL))) THEN
173 NULL;
174 ELSE
175 IF NOT IGS_AD_LOCATION_PKG.Get_PK_For_Validation (
176 new_references.location_cd,
177 'N'
178 ) THEN
179 Fnd_Message.Set_Name('FND','FORM_RECORD_DELETED');
180 IGS_GE_MSG_STACK.ADD;
181 App_Exception.Raise_Exception;
182 END IF;
183 END IF;
184
185 IF (((old_references.sub_location_cd = new_references.sub_location_cd)) OR
186 ((new_references.sub_location_cd IS NULL))) THEN
187 NULL;
188 ELSE
189 IF NOT IGS_AD_LOCATION_PKG.Get_PK_For_Validation (
190 new_references.sub_location_cd,
191 'N'
192 ) THEN
193 Fnd_Message.Set_Name('FND','FORM_RECORD_DELETED');
194 IGS_GE_MSG_STACK.ADD;
195 App_Exception.Raise_Exception;
196 END IF;
197 END IF;
198
199 END Check_Parent_Existance;
200
201 FUNCTION Get_PK_For_Validation (
202 x_location_cd IN VARCHAR2,
203 x_sub_location_cd IN VARCHAR2
204 )return BOOLEAN AS
205
206 CURSOR cur_rowid IS
207 SELECT rowid
208 FROM IGS_AD_LOCATION_REL
209 WHERE location_cd = x_location_cd
210 AND sub_location_cd = x_sub_location_cd
211 FOR UPDATE NOWAIT;
212
213 lv_rowid cur_rowid%RowType;
214
215 BEGIN
216
217 Open cur_rowid;
218 Fetch cur_rowid INTO lv_rowid;
219 IF (cur_rowid%FOUND) THEN
220 Close cur_rowid;
221 Return(TRUE);
222 ELSE
223 Close cur_rowid;
224 Return(FALSE);
225 END IF;
226
227 END Get_PK_For_Validation;
228
229 PROCEDURE GET_FK_IGS_AD_LOCATION (
230 x_location_cd IN VARCHAR2
231 ) AS
232
233 CURSOR cur_rowid IS
234 SELECT rowid
235 FROM IGS_AD_LOCATION_REL
236 WHERE location_cd = x_location_cd
237 OR sub_location_cd = x_location_cd ;
238
239 lv_rowid cur_rowid%RowType;
240
241 BEGIN
242
243 Open cur_rowid;
244 Fetch cur_rowid INTO lv_rowid;
245 IF (cur_rowid%FOUND) THEN
246 Close cur_rowid;
247 Fnd_Message.Set_Name ('IGS', 'IGS_AD_LR_LOC_FK');
248 IGS_GE_MSG_STACK.ADD;
249 App_Exception.Raise_Exception;
250 Return;
251 END IF;
252 Close cur_rowid;
253
254 END GET_FK_IGS_AD_LOCATION;
255
256
257 PROCEDURE Before_DML (
258 p_action IN VARCHAR2,
259 x_rowid IN VARCHAR2 DEFAULT NULL,
260 x_location_cd IN VARCHAR2 DEFAULT NULL,
261 x_sub_location_cd IN VARCHAR2 DEFAULT NULL,
262 x_dflt_ind IN VARCHAR2 DEFAULT NULL,
263 x_creation_date IN DATE DEFAULT NULL,
264 x_created_by IN NUMBER DEFAULT NULL,
265 x_last_update_date IN DATE DEFAULT NULL,
266 x_last_updated_by IN NUMBER DEFAULT NULL,
267 x_last_update_login IN NUMBER DEFAULT NULL
268 ) AS
269 BEGIN
270
271 Set_Column_Values (
272 p_action,
273 x_rowid,
274 x_location_cd,
275 x_sub_location_cd,
276 x_dflt_ind,
277 x_creation_date,
278 x_created_by,
279 x_last_update_date,
280 x_last_updated_by,
281 x_last_update_login
282 );
283
284 IF (p_action = 'INSERT') THEN
285 BeforeRowInsertUpdate1 ( p_inserting => TRUE );
286 IF Get_PK_For_Validation (
287 new_references.location_cd,
288 new_references.sub_location_cd
289 ) THEN
290 Fnd_Message.Set_Name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
291 IGS_GE_MSG_STACK.ADD;
292 App_Exception.Raise_Exception;
293 END IF;
294 Check_Constraints;
295 Check_Parent_Existance;
296 ELSIF (p_action = 'UPDATE') THEN
297 BeforeRowInsertUpdate1 ( p_updating => TRUE );
298 Check_Constraints;
299 Check_Parent_Existance;
300 ELSIF (p_action = 'VALIDATE_INSERT') THEN
301 IF Get_PK_For_Validation (
302 new_references.location_cd,
303 new_references.sub_location_cd
304 ) THEN
305 Fnd_Message.Set_Name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
306 IGS_GE_MSG_STACK.ADD;
307 App_Exception.Raise_Exception;
308 END IF;
309 Check_Constraints;
310 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
311 Check_Constraints;
312 END IF;
313
314 END Before_DML;
315
316 PROCEDURE After_DML (
317 p_action IN VARCHAR2,
318 x_rowid IN VARCHAR2
319 ) AS
320 BEGIN
321
322 l_rowid := x_rowid;
323
324 IF (p_action = 'INSERT') THEN
325 AfterRowInsertUpdate2 ( p_inserting => TRUE );
326 ELSIF (p_action = 'UPDATE') THEN
327 AfterRowInsertUpdate2 ( p_updating => TRUE );
328 --AfterStmtInsertUpdate3 ( p_updating => TRUE );
329 END IF;
330
331 END After_DML;
332
333
334 procedure INSERT_ROW (
335 X_ROWID in out NOCOPY VARCHAR2,
336 X_LOCATION_CD in VARCHAR2,
337 X_SUB_LOCATION_CD in VARCHAR2,
338 X_DFLT_IND in VARCHAR2,
339 X_MODE in VARCHAR2 default 'R'
340 ) AS
341 cursor C is select ROWID from IGS_AD_LOCATION_REL
342 where LOCATION_CD = X_LOCATION_CD
343 and SUB_LOCATION_CD = X_SUB_LOCATION_CD;
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
367 Before_DML(
368 p_action=>'INSERT' ,
369 x_rowid=>X_ROWID ,
370 x_location_cd => X_LOCATION_CD ,
371 x_sub_location_cd => X_SUB_LOCATION_CD ,
372 x_dflt_ind => NVL(X_DFLT_IND,'N') ,
373 x_creation_date=>X_LAST_UPDATE_DATE ,
374 x_created_by=>X_LAST_UPDATED_BY ,
375 x_last_update_date=>X_LAST_UPDATE_DATE ,
376 x_last_updated_by=>X_LAST_UPDATED_BY ,
377 x_last_update_login=> X_LAST_UPDATE_LOGIN
378 );
379
380
381 insert into IGS_AD_LOCATION_REL (
382 LOCATION_CD,
383 SUB_LOCATION_CD,
384 DFLT_IND,
385 CREATION_DATE,
386 CREATED_BY,
387 LAST_UPDATE_DATE,
388 LAST_UPDATED_BY,
389 LAST_UPDATE_LOGIN
390 ) values (
391 NEW_REFERENCES.LOCATION_CD,
392 NEW_REFERENCES.SUB_LOCATION_CD,
393 NEW_REFERENCES.DFLT_IND,
394 X_LAST_UPDATE_DATE,
395 X_LAST_UPDATED_BY,
396 X_LAST_UPDATE_DATE,
397 X_LAST_UPDATED_BY,
398 X_LAST_UPDATE_LOGIN
399 );
400
401 open c;
402 fetch c into X_ROWID;
403 if (c%notfound) then
404 close c;
405 raise no_data_found;
406 end if;
407 close c;
408
409 After_DML(
410 p_action=>'INSERT',
411 x_rowid=> X_ROWID
412 );
413
414 end INSERT_ROW;
415
416 procedure LOCK_ROW (
417 X_ROWID in VARCHAR2 ,
418 X_LOCATION_CD in VARCHAR2,
419 X_SUB_LOCATION_CD in VARCHAR2,
420 X_DFLT_IND in VARCHAR2
421 ) AS
422 cursor c1 is select
423 DFLT_IND
424 from IGS_AD_LOCATION_REL
425 WHERE ROWID = X_ROWID for update nowait ;
426 tlinfo c1%rowtype;
427
428 begin
429 open c1;
430 fetch c1 into tlinfo;
431 if (c1%notfound) then
432 close c1;
433 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
434 IGS_GE_MSG_STACK.ADD;
435 app_exception.raise_exception;
436 return;
437 end if;
438 close c1;
439
440 if ( (tlinfo.DFLT_IND = X_DFLT_IND)
441 ) then
442 null;
443 else
444 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
445 IGS_GE_MSG_STACK.ADD;
446 app_exception.raise_exception;
447 end if;
448 return;
449 end LOCK_ROW;
450
451 procedure UPDATE_ROW (
452 X_ROWID in VARCHAR2 ,
453 X_LOCATION_CD in VARCHAR2,
454 X_SUB_LOCATION_CD in VARCHAR2,
455 X_DFLT_IND in VARCHAR2,
456 X_MODE in VARCHAR2 default 'R'
457 ) AS
458 X_LAST_UPDATE_DATE DATE;
459 X_LAST_UPDATED_BY NUMBER;
460 X_LAST_UPDATE_LOGIN NUMBER;
461 begin
462 X_LAST_UPDATE_DATE := SYSDATE;
463 if(X_MODE = 'I') then
464 X_LAST_UPDATED_BY := 1;
465 X_LAST_UPDATE_LOGIN := 0;
466 elsif (X_MODE = 'R') then
467 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
468 if X_LAST_UPDATED_BY is NULL then
469 X_LAST_UPDATED_BY := -1;
470 end if;
471 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
472 if X_LAST_UPDATE_LOGIN is NULL then
473 X_LAST_UPDATE_LOGIN := -1;
474 end if;
475 else
476 FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
477 IGS_GE_MSG_STACK.ADD;
478 app_exception.raise_exception;
479 end if;
480
481 Before_DML(
482 p_action=>'UPDATE' ,
483 x_rowid=>X_ROWID ,
484 x_location_cd => X_LOCATION_CD ,
485 x_sub_location_cd => X_SUB_LOCATION_CD ,
486 x_dflt_ind => X_DFLT_IND ,
487 x_creation_date=>X_LAST_UPDATE_DATE ,
488 x_created_by=>X_LAST_UPDATED_BY ,
489 x_last_update_date=>X_LAST_UPDATE_DATE ,
490 x_last_updated_by=>X_LAST_UPDATED_BY ,
491 x_last_update_login=> X_LAST_UPDATE_LOGIN
492 );
493
494
495 update IGS_AD_LOCATION_REL set
496 DFLT_IND = NEW_REFERENCES.DFLT_IND,
497 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
498 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
499 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
500 where ROWID = X_ROWID ;
501 if (sql%notfound) then
502 raise no_data_found;
503 end if;
504
505
506 After_DML(
507 p_action=>'UPDATE',
508 x_rowid=> X_ROWID
509 );
510
511 end UPDATE_ROW;
512
513 procedure ADD_ROW (
514 X_ROWID in out NOCOPY VARCHAR2,
515 X_LOCATION_CD in VARCHAR2,
516 X_SUB_LOCATION_CD in VARCHAR2,
517 X_DFLT_IND in VARCHAR2,
518 X_MODE in VARCHAR2 default 'R'
519 ) AS
520 cursor c1 is select rowid from IGS_AD_LOCATION_REL
521 where LOCATION_CD = X_LOCATION_CD
522 and SUB_LOCATION_CD = X_SUB_LOCATION_CD
523 ;
524
525 begin
526 open c1;
527 fetch c1 into X_ROWID;
528 if (c1%notfound) then
529 close c1;
530 INSERT_ROW (
531 X_ROWID,
532 X_LOCATION_CD,
533 X_SUB_LOCATION_CD,
534 X_DFLT_IND,
535 X_MODE);
536 return;
537 end if;
538 close c1;
539 UPDATE_ROW (
540 X_ROWID ,
541 X_LOCATION_CD,
542 X_SUB_LOCATION_CD,
543 X_DFLT_IND,
544 X_MODE);
545 end ADD_ROW;
546
547 procedure DELETE_ROW (
548 X_ROWID in VARCHAR2
549 ) AS
550 begin
551
552 Before_DML(
553 p_action=>'DELETE',
554 x_rowid=> X_ROWID
555 );
556
557 delete from IGS_AD_LOCATION_REL
558 where ROWID = X_ROWID;
559 if (sql%notfound) then
560 raise no_data_found;
561 end if;
562
563
564 After_DML(
565 p_action=>'DELETE',
566 x_rowid=> X_ROWID
567 );
568
569 end DELETE_ROW;
570
571 end IGS_AD_LOCATION_REL_PKG;