DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_RE_THS_PNL_TYPE_PKG

Source


1 package body IGS_RE_THS_PNL_TYPE_PKG as
2 /* $Header: IGSRI24B.pls 115.4 2003/02/19 12:29:40 kpadiyar ship $ */
3 
4   l_rowid VARCHAR2(25);
5   old_references IGS_RE_THS_PNL_TYPE%RowType;
6   new_references IGS_RE_THS_PNL_TYPE%RowType;
7 
8   PROCEDURE Set_Column_Values (
9     p_action IN VARCHAR2,
10     x_rowid IN VARCHAR2 DEFAULT NULL,
11     x_thesis_panel_type IN VARCHAR2 DEFAULT NULL,
12     x_description IN VARCHAR2 DEFAULT NULL,
13     x_closed_ind IN VARCHAR2 DEFAULT NULL,
14     x_recommended_panel_size IN NUMBER DEFAULT NULL,
15     x_tracking_type IN VARCHAR2 DEFAULT NULL,
16     x_selection_criteria IN VARCHAR2 DEFAULT NULL,
17     x_creation_date IN DATE DEFAULT NULL,
18     x_created_by IN NUMBER DEFAULT NULL,
19     x_last_update_date IN DATE DEFAULT NULL,
20     x_last_updated_by IN NUMBER DEFAULT NULL,
21     x_last_update_login IN NUMBER DEFAULT NULL
22   ) AS
23 
24     CURSOR cur_old_ref_values IS
25       SELECT   *
26       FROM     IGS_RE_THS_PNL_TYPE
27       WHERE    rowid = x_rowid;
28 
29   BEGIN
30 
31     l_rowid := x_rowid;
32 
33     -- Code for setting the Old and New Reference Values.
34     -- Populate Old Values.
35     Open cur_old_ref_values;
36     Fetch cur_old_ref_values INTO old_references;
37     IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT', 'VALIDATE_INSERT')) THEN
38       Close cur_old_ref_values;
39       Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
40       IGS_GE_MSG_STACK.ADD;
41       App_Exception.Raise_Exception;
42       Return;
43     END IF;
44     Close cur_old_ref_values;
45 
46     -- Populate New Values.
47     new_references.thesis_panel_type := x_thesis_panel_type;
48     new_references.description := x_description;
49     new_references.closed_ind := x_closed_ind;
50     new_references.recommended_panel_size := x_recommended_panel_size;
51     new_references.tracking_type := x_tracking_type;
52     new_references.selection_criteria := x_selection_criteria;
53     IF (p_action = 'UPDATE') THEN
54       new_references.creation_date := old_references.creation_date;
55       new_references.created_by := old_references.created_by;
56     ELSE
57       new_references.creation_date := x_creation_date;
58       new_references.created_by := x_created_by;
59     END IF;
60     new_references.last_update_date := x_last_update_date;
61     new_references.last_updated_by := x_last_updated_by;
62     new_references.last_update_login := x_last_update_login;
63 
64   END Set_Column_Values;
65 
66   PROCEDURE BeforeRowInsertUpdate(
67     p_inserting IN BOOLEAN DEFAULT FALSE,
68     p_updating IN BOOLEAN DEFAULT FALSE
69     ) as
70      v_message_name                  VARCHAR2(30);
71   BEGIN
72 
73         IF (p_inserting OR (p_updating AND (old_references.tracking_type <> new_references.tracking_type))) THEN
74 	 IF NOT IGS_TR_VAL_TRI.TRKP_VAL_TRI_TYPE (new_references.tracking_type,
75 	                                          v_message_name) 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   END BeforeRowInsertUpdate;
82 
83  PROCEDURE Check_Constraints(
84   Column_Name IN VARCHAR2 DEFAULT NULL,
85   Column_Value IN VARCHAR2 DEFAULT NULL
86  ) AS
87   BEGIN
88 	IF column_name is null then
89 		NULL;
90 	ELSIF upper(Column_name) = 'CLOSED_IND' then
91 		new_references.closed_ind := column_value;
92 	ELSIF upper(Column_name) = 'THESIS_PANEL_TYPE' then
93 		new_references.thesis_panel_type:= column_value;
94 	ELSIF upper(Column_name) = 'TRACKING_TYPE' then
95 		new_references.tracking_type:= column_value;
96 	ELSIF upper(Column_name) = 'RECOMMENDED_PANEL_SIZE' then
97 		new_references.recommended_panel_size := column_value;
98       END IF;
99 
100 	IF upper(Column_name) = 'CLOSED_IND' OR column_name is null then
101 		IF new_references.closed_ind <> UPPER(new_references.closed_ind ) OR
102 			new_references.closed_ind NOT IN ( 'Y' , 'N' ) then
103 			      Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
104 			      IGS_GE_MSG_STACK.ADD;
105 				App_Exception.Raise_Exception;
106 		END IF;
107 	END IF;
108 
109 	IF upper(Column_name) = 'RECOMMENDED_PANEL_SIZE'  OR column_name is null then
110 		IF new_references.recommended_panel_size  < 1 OR new_references.recommended_panel_size  > 99 then
111 		      Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
112 		      IGS_GE_MSG_STACK.ADD;
113 			App_Exception.Raise_Exception;
114 		END IF;
115 	END IF;
116 
117 
118 	IF upper(Column_name) = 'THESIS_PANEL_TYPE' OR column_name is null then
119 		IF new_references.thesis_panel_type <> UPPER(new_references.thesis_panel_type ) then
120 		      Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
121 		      IGS_GE_MSG_STACK.ADD;
122 			App_Exception.Raise_Exception;
123 		END IF;
124 	END IF;
125 
126 	IF upper(Column_name) = 'TRACKING_TYPE' OR column_name is null then
127 		IF new_references.tracking_type <> UPPER(new_references.tracking_type) then
128 		      Fnd_Message.Set_Name ('IGS', 'IGS_GE_INVALID_VALUE');
129 		      IGS_GE_MSG_STACK.ADD;
130 			App_Exception.Raise_Exception;
131 		END IF;
132 	END IF;
133 
134   END Check_Constraints;
135 
136   PROCEDURE Check_Parent_Existance AS
137   BEGIN
138 
139     IF (((old_references.tracking_type = new_references.tracking_type)) OR
140         ((new_references.tracking_type IS NULL))) THEN
141       NULL;
142     ELSE
143       IF NOT IGS_TR_TYPE_PKG.Get_PK_For_Validation (
144         new_references.tracking_type
145         ) THEN
146 		Fnd_Message.Set_Name('FND','FORM_RECORD_DELETED');
147 		IGS_GE_MSG_STACK.ADD;
148 		App_Exception.Raise_Exception;
149 	END IF;
150     END IF;
151   END Check_Parent_Existance;
152 
153   PROCEDURE Check_Child_Existance AS
154   BEGIN
155 
156     IGS_RE_THESIS_EXAM_PKG.GET_FK_IGS_RE_THS_PNL_TYPE (
157       old_references.thesis_panel_type
158       );
159 
160   END Check_Child_Existance;
161 
162   FUNCTION Get_PK_For_Validation (
163     x_thesis_panel_type IN VARCHAR2
164     ) RETURN BOOLEAN AS
165 
166     CURSOR cur_rowid IS
167       SELECT   rowid
168       FROM     IGS_RE_THS_PNL_TYPE
169       WHERE    thesis_panel_type = x_thesis_panel_type
170       FOR UPDATE NOWAIT;
171 
172     lv_rowid cur_rowid%RowType;
173 
174   BEGIN
175 
176     Open cur_rowid;
177     Fetch cur_rowid INTO lv_rowid;
178 	IF (cur_rowid%FOUND) THEN
179 	  Close cur_rowid;
180 	  Return(TRUE);
181 	ELSE
182 	  Close cur_rowid;
183 	  Return(FALSE);
184 	END IF;
185 
186   END Get_PK_For_Validation;
187 
188   PROCEDURE Before_DML (
189     p_action IN VARCHAR2,
190     x_rowid IN VARCHAR2 DEFAULT NULL,
191     x_thesis_panel_type IN VARCHAR2 DEFAULT NULL,
192     x_description IN VARCHAR2 DEFAULT NULL,
193     x_closed_ind IN VARCHAR2 DEFAULT NULL,
194     x_recommended_panel_size IN NUMBER DEFAULT NULL,
195     x_tracking_type IN VARCHAR2 DEFAULT NULL,
196     x_selection_criteria IN VARCHAR2 DEFAULT NULL,
197     x_creation_date IN DATE DEFAULT NULL,
198     x_created_by IN NUMBER DEFAULT NULL,
199     x_last_update_date IN DATE DEFAULT NULL,
200     x_last_updated_by IN NUMBER DEFAULT NULL,
201     x_last_update_login IN NUMBER DEFAULT NULL
202   ) AS
203   BEGIN
204 
205     Set_Column_Values (
206       p_action,
207       x_rowid,
208       x_thesis_panel_type,
209       x_description,
210       x_closed_ind,
211       x_recommended_panel_size,
212       x_tracking_type,
213       x_selection_criteria,
214       x_creation_date,
215       x_created_by,
216       x_last_update_date,
217       x_last_updated_by,
218       x_last_update_login
219     );
220 
221     IF (p_action = 'INSERT') THEN
222        BeforeRowInsertUpdate(p_inserting => TRUE);
223       -- Call all the procedures related to Before Insert.
224 	IF Get_PK_For_Validation(
225 		new_references.thesis_panel_type
226 	)THEN
227 		Fnd_Message.Set_Name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
228 		IGS_GE_MSG_STACK.ADD;
229 		App_Exception.Raise_Exception;
230 	END IF;
231 	Check_Constraints;
232       Check_Parent_Existance;
233     ELSIF (p_action = 'UPDATE') THEN
234        BeforeRowInsertUpdate(p_updating => TRUE);
235       -- Call all the procedures related to Before Update.
236 	Check_Constraints;
237       Check_Parent_Existance;
238     ELSIF (p_action = 'DELETE') THEN
239       -- Call all the procedures related to Before Delete.
240       Check_Child_Existance;
241     ELSIF (p_action = 'VALIDATE_INSERT') THEN
242 	IF Get_PK_For_Validation(
243 		new_references.thesis_panel_type
244 	)THEN
245 		Fnd_Message.Set_Name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
246 		IGS_GE_MSG_STACK.ADD;
247 		App_Exception.Raise_Exception;
248 	END IF;
249 	Check_Constraints;
250     ELSIF (p_action = 'VALIDATE_UPDATE') THEN
251 	Check_Constraints;
252     ELSIF (p_action = 'VALIDATE_DELETE') THEN
253       Check_Child_Existance;
254 
255     END IF;
256 
257   END Before_DML;
258 
259 procedure INSERT_ROW (
260   X_ROWID in out NOCOPY VARCHAR2,
261   X_THESIS_PANEL_TYPE in VARCHAR2,
262   X_DESCRIPTION in VARCHAR2,
263   X_CLOSED_IND in VARCHAR2,
264   X_RECOMMENDED_PANEL_SIZE in NUMBER,
265   X_TRACKING_TYPE in VARCHAR2,
266   X_SELECTION_CRITERIA in VARCHAR2,
267   X_MODE in VARCHAR2 default 'R'
268   ) as
269     cursor C is select ROWID from IGS_RE_THS_PNL_TYPE
270       where THESIS_PANEL_TYPE = X_THESIS_PANEL_TYPE;
271     X_LAST_UPDATE_DATE DATE;
272     X_LAST_UPDATED_BY NUMBER;
273     X_LAST_UPDATE_LOGIN NUMBER;
274 begin
275   X_LAST_UPDATE_DATE := SYSDATE;
276   if(X_MODE = 'I') then
277     X_LAST_UPDATED_BY := 1;
278     X_LAST_UPDATE_LOGIN := 0;
279   elsif (X_MODE = 'R') then
280     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
281     if X_LAST_UPDATED_BY is NULL then
282       X_LAST_UPDATED_BY := -1;
283     end if;
284     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
285     if X_LAST_UPDATE_LOGIN is NULL then
286       X_LAST_UPDATE_LOGIN := -1;
287     end if;
288   else
289     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
290     IGS_GE_MSG_STACK.ADD;
291     app_exception.raise_exception;
292   end if;
293 
294   Before_DML (
295     p_action => 'INSERT',
296     x_rowid => X_ROWID,
297     x_thesis_panel_type => X_THESIS_PANEL_TYPE,
298     x_description => X_DESCRIPTION,
299     x_closed_ind => NVL(X_CLOSED_IND, 'N'),
300     x_recommended_panel_size => X_RECOMMENDED_PANEL_SIZE,
301     x_tracking_type => X_TRACKING_TYPE,
302     x_selection_criteria => X_SELECTION_CRITERIA,
303     x_created_by => X_LAST_UPDATED_BY ,
304     x_creation_date => X_LAST_UPDATE_DATE,
305     x_last_updated_by => X_LAST_UPDATED_BY,
306     x_last_update_date => X_LAST_UPDATE_DATE,
307     x_last_update_login => X_LAST_UPDATE_LOGIN
308  );
309 
310   insert into IGS_RE_THS_PNL_TYPE (
311     THESIS_PANEL_TYPE,
312     DESCRIPTION,
313     CLOSED_IND,
314     RECOMMENDED_PANEL_SIZE,
315     TRACKING_TYPE,
316     SELECTION_CRITERIA,
317     CREATION_DATE,
318     CREATED_BY,
319     LAST_UPDATE_DATE,
320     LAST_UPDATED_BY,
321     LAST_UPDATE_LOGIN
322   ) values (
323     NEW_REFERENCES.THESIS_PANEL_TYPE,
324     NEW_REFERENCES.DESCRIPTION,
325     NEW_REFERENCES.CLOSED_IND,
326     NEW_REFERENCES.RECOMMENDED_PANEL_SIZE,
327     NEW_REFERENCES.TRACKING_TYPE,
328     NEW_REFERENCES.SELECTION_CRITERIA,
329     X_LAST_UPDATE_DATE,
330     X_LAST_UPDATED_BY,
331     X_LAST_UPDATE_DATE,
332     X_LAST_UPDATED_BY,
333     X_LAST_UPDATE_LOGIN
334   );
335 
336   open c;
337   fetch c into X_ROWID;
338   if (c%notfound) then
339     close c;
340     raise no_data_found;
341   end if;
342   close c;
343 
344 end INSERT_ROW;
345 
346 procedure LOCK_ROW (
347   X_ROWID in VARCHAR2,
348   X_THESIS_PANEL_TYPE in VARCHAR2,
349   X_DESCRIPTION in VARCHAR2,
350   X_CLOSED_IND in VARCHAR2,
351   X_RECOMMENDED_PANEL_SIZE in NUMBER,
352   X_TRACKING_TYPE in VARCHAR2,
353   X_SELECTION_CRITERIA in VARCHAR2
354 ) as
355   cursor c1 is select
356       DESCRIPTION,
357       CLOSED_IND,
358       RECOMMENDED_PANEL_SIZE,
359       TRACKING_TYPE,
360       SELECTION_CRITERIA
361     from IGS_RE_THS_PNL_TYPE
362     where ROWID = X_ROWID
363     for update nowait;
364   tlinfo c1%rowtype;
365 
366 begin
367   open c1;
368   fetch c1 into tlinfo;
369   if (c1%notfound) then
370     close c1;
371     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
372     app_exception.raise_exception;
373     return;
374   end if;
375   close c1;
376 
377   if ( (tlinfo.DESCRIPTION = X_DESCRIPTION)
378       AND (tlinfo.CLOSED_IND = X_CLOSED_IND)
379       AND ((tlinfo.RECOMMENDED_PANEL_SIZE = X_RECOMMENDED_PANEL_SIZE)
380            OR ((tlinfo.RECOMMENDED_PANEL_SIZE is null)
381                AND (X_RECOMMENDED_PANEL_SIZE is null)))
382       AND ((tlinfo.TRACKING_TYPE = X_TRACKING_TYPE)
383            OR ((tlinfo.TRACKING_TYPE is null)
384                AND (X_TRACKING_TYPE is null)))
385       AND ((tlinfo.SELECTION_CRITERIA = X_SELECTION_CRITERIA)
386            OR ((tlinfo.SELECTION_CRITERIA is null)
387                AND (X_SELECTION_CRITERIA is null)))
388   ) then
389     null;
390   else
391     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
392     app_exception.raise_exception;
393   end if;
394   return;
395 end LOCK_ROW;
396 
397 procedure UPDATE_ROW (
398   X_ROWID in VARCHAR2,
399   X_THESIS_PANEL_TYPE in VARCHAR2,
400   X_DESCRIPTION in VARCHAR2,
401   X_CLOSED_IND in VARCHAR2,
402   X_RECOMMENDED_PANEL_SIZE in NUMBER,
403   X_TRACKING_TYPE in VARCHAR2,
404   X_SELECTION_CRITERIA in VARCHAR2,
405   X_MODE in VARCHAR2 default 'R'
406   ) as
407     X_LAST_UPDATE_DATE DATE;
408     X_LAST_UPDATED_BY NUMBER;
409     X_LAST_UPDATE_LOGIN NUMBER;
410 begin
411   X_LAST_UPDATE_DATE := SYSDATE;
412   if(X_MODE = 'I') then
413     X_LAST_UPDATED_BY := 1;
414     X_LAST_UPDATE_LOGIN := 0;
415   elsif (X_MODE = 'R') then
416     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
417     if X_LAST_UPDATED_BY is NULL then
418       X_LAST_UPDATED_BY := -1;
419     end if;
420     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
421     if X_LAST_UPDATE_LOGIN is NULL then
422       X_LAST_UPDATE_LOGIN := -1;
423     end if;
424   else
425     FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
426     IGS_GE_MSG_STACK.ADD;
427     app_exception.raise_exception;
428   end if;
429 
430   Before_DML (
431     p_action => 'UPDATE',
432     x_rowid => X_ROWID,
433     x_thesis_panel_type => X_THESIS_PANEL_TYPE,
434     x_description => X_DESCRIPTION,
435     x_closed_ind => X_CLOSED_IND,
436     x_recommended_panel_size => X_RECOMMENDED_PANEL_SIZE,
437     x_tracking_type => X_TRACKING_TYPE,
438     x_selection_criteria => X_SELECTION_CRITERIA,
439     x_created_by => X_LAST_UPDATED_BY ,
440     x_creation_date => X_LAST_UPDATE_DATE,
441     x_last_updated_by => X_LAST_UPDATED_BY,
442     x_last_update_date => X_LAST_UPDATE_DATE,
443     x_last_update_login => X_LAST_UPDATE_LOGIN
444  );
445   update IGS_RE_THS_PNL_TYPE set
446     DESCRIPTION = NEW_REFERENCES.DESCRIPTION,
447     CLOSED_IND = NEW_REFERENCES.CLOSED_IND,
448     RECOMMENDED_PANEL_SIZE = NEW_REFERENCES.RECOMMENDED_PANEL_SIZE,
449     TRACKING_TYPE = NEW_REFERENCES.TRACKING_TYPE,
450     SELECTION_CRITERIA = NEW_REFERENCES.SELECTION_CRITERIA,
451     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
452     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
453     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
454   where ROWID = X_ROWID
455   ;
456   if (sql%notfound) then
457     raise no_data_found;
458   end if;
459 
460 end UPDATE_ROW;
461 
462 procedure ADD_ROW (
463   X_ROWID in out NOCOPY VARCHAR2,
464   X_THESIS_PANEL_TYPE in VARCHAR2,
465   X_DESCRIPTION in VARCHAR2,
466   X_CLOSED_IND in VARCHAR2,
467   X_RECOMMENDED_PANEL_SIZE in NUMBER,
468   X_TRACKING_TYPE in VARCHAR2,
469   X_SELECTION_CRITERIA in VARCHAR2,
470   X_MODE in VARCHAR2 default 'R'
471   ) as
472   cursor c1 is select rowid from IGS_RE_THS_PNL_TYPE
473      where THESIS_PANEL_TYPE = X_THESIS_PANEL_TYPE
474   ;
475 begin
476   open c1;
477   fetch c1 into X_ROWID;
478   if (c1%notfound) then
479     close c1;
480     INSERT_ROW (
481      X_ROWID,
482      X_THESIS_PANEL_TYPE,
483      X_DESCRIPTION,
484      X_CLOSED_IND,
485      X_RECOMMENDED_PANEL_SIZE,
486      X_TRACKING_TYPE,
487      X_SELECTION_CRITERIA,
488      X_MODE);
489     return;
490   end if;
491   close c1;
492   UPDATE_ROW (
493    X_ROWID,
494    X_THESIS_PANEL_TYPE,
495    X_DESCRIPTION,
496    X_CLOSED_IND,
497    X_RECOMMENDED_PANEL_SIZE,
498    X_TRACKING_TYPE,
499    X_SELECTION_CRITERIA,
500    X_MODE);
501 end ADD_ROW;
502 
503 procedure DELETE_ROW (
504   X_ROWID in VARCHAR2
505 ) as
506 begin
507 
508   Before_DML (
509     p_action => 'DELETE',
510     x_rowid => X_ROWID
511    );
512 
513   delete from IGS_RE_THS_PNL_TYPE
514   where ROWID = X_ROWID;
515   if (sql%notfound) then
516     raise no_data_found;
517   end if;
518 
519 end DELETE_ROW;
520 
521 end IGS_RE_THS_PNL_TYPE_PKG;