DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AS_EXM_MTRL_TYPE_PKG

Source


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