DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PR_OU_PS_PKG

Source


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