DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_AS_ITM_EXAM_MTRL_PKG

Source


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