DBA Data[Home] [Help]

PACKAGE BODY: APPS.IGS_PR_RU_CAT_PKG

Source


1 package body IGS_PR_RU_CAT_PKG AS
2 /* $Header: IGSQI11B.pls 115.6 2003/05/19 04:46:43 ijeddy ship $ */
3   l_rowid VARCHAR2(25);
4   old_references IGS_PR_RU_CAT%RowType;
5   new_references IGS_PR_RU_CAT%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_description IN VARCHAR2 DEFAULT NULL,
12     x_s_rule_call_cd IN VARCHAR2 DEFAULT NULL,
13     x_closed_ind IN VARCHAR2 DEFAULT NULL,
14     x_message IN VARCHAR2 DEFAULT NULL,
15     x_positive_rule_ind IN VARCHAR2 DEFAULT 'N',
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_PR_RU_CAT
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.progression_rule_cat := x_progression_rule_cat;
47     new_references.description := x_description;
48     new_references.s_rule_call_cd := x_s_rule_call_cd;
49     new_references.closed_ind := x_closed_ind;
50     new_references.message := x_message;
51     new_references.positive_rule_ind := x_positive_rule_ind;
52     IF (p_action = 'UPDATE') THEN
53       new_references.creation_date := old_references.creation_date;
54       new_references.created_by := old_references.created_by;
55     ELSE
56       new_references.creation_date := x_creation_date;
57       new_references.created_by := x_created_by;
58     END IF;
59     new_references.last_update_date := x_last_update_date;
60     new_references.last_updated_by := x_last_updated_by;
61     new_references.last_update_login := x_last_update_login;
62 
63   END Set_Column_Values;
64 
65   -- Trigger description :-
66   -- "OSS_TST".trg_prgc_br_iu
67   -- BEFORE INSERT OR UPDATE
68   -- ON IGS_PR_RU_CAT
69   -- FOR EACH ROW
70 
71   PROCEDURE BeforeRowInsertUpdate1(
72     p_inserting IN BOOLEAN DEFAULT FALSE,
73     p_updating IN BOOLEAN DEFAULT FALSE,
74     p_deleting IN BOOLEAN DEFAULT FALSE
75     ) AS
76 	v_message_name varchar2(30);
77   BEGIN
78 	-- Validate the system IGS_RU_RULE call code can be changed
79 	IF (p_updating AND new_references.s_rule_call_cd <> old_references.s_rule_call_cd) THEN
80 		IF IGS_PR_VAL_PRGC.prgp_val_prgc_upd (
81 					new_references.progression_rule_cat,
82 					old_references.s_rule_call_cd,
83 					new_references.s_rule_call_cd,
84 					v_message_name) = FALSE THEN
85 			Fnd_Message.Set_Name('IGS',v_message_name);
86       IGS_GE_MSG_STACK.ADD;
87 			App_Exception.Raise_Exception;
88 		END IF;
89 	END IF;
90 	-- Validate the system IGS_RU_RULE call code
91 	IF p_inserting OR
92 	  (p_updating AND new_references.s_rule_call_cd <> old_references.s_rule_call_cd) THEN
93 		IF IGS_PR_VAL_PRGC.prgp_val_src_prg (
94 					new_references.s_rule_call_cd,
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 
102 
103   END BeforeRowInsertUpdate1;
104   PROCEDURE Check_Parent_Existance AS
105   BEGIN
106 
107     IF (((old_references.s_rule_call_cd = new_references.s_rule_call_cd)) OR
108         ((new_references.s_rule_call_cd IS NULL))) THEN
109       NULL;
110     ELSE
111       IF NOT IGS_RU_CALL_PKG.Get_PK_For_Validation (
112         new_references.s_rule_call_cd
113         ) THEN
114 	Fnd_Message.Set_Name('FND','FORM_RECORD_DELETED');
115       IGS_GE_MSG_STACK.ADD;
116 	App_Exception.Raise_Exception;
117 
118 	END IF;
119 
120     END IF;
121 
122   END Check_Parent_Existance;
123 
124   PROCEDURE Check_Child_Existance AS
125   BEGIN
126 
127     IGS_PR_RULE_PKG.GET_FK_IGS_PR_RU_CAT (
128       old_references.progression_rule_cat
129       );
130 
131     IGS_PR_RU_APPL_PKG.GET_FK_IGS_PR_RU_CAT (
132       old_references.progression_rule_cat
133       );
134 
135   END Check_Child_Existance;
136 
137   FUNCTION Get_PK_For_Validation (
138     x_progression_rule_cat IN VARCHAR2
139     ) RETURN BOOLEAN AS
140 
141     CURSOR cur_rowid IS
142       SELECT   rowid
143       FROM     IGS_PR_RU_CAT
144       WHERE    progression_rule_cat = x_progression_rule_cat
145       FOR UPDATE NOWAIT;
146 
147     lv_rowid cur_rowid%RowType;
148 
149   BEGIN
150 
151     Open cur_rowid;
152     Fetch cur_rowid INTO lv_rowid;
153 	IF (cur_rowid%FOUND) THEN
154 		Close cur_rowid;
155 		Return (TRUE);
156 	ELSE
157 		Close cur_rowid;
158 		Return (FALSE);
159 	END IF;
160  END Get_PK_For_Validation;
161 
162 
163   PROCEDURE GET_FK_IGS_RU_CALL (
164     x_s_rule_call_cd IN VARCHAR2
165     ) IS
166 
167     CURSOR cur_rowid IS
168       SELECT   rowid
169       FROM     IGS_PR_RU_CAT
170       WHERE    s_rule_call_cd = x_s_rule_call_cd ;
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       Fnd_Message.Set_Name ('IGS', 'IGS_PR_PRGC_SRC_FK');
180       IGS_GE_MSG_STACK.ADD;
181 	  Close cur_rowid;
182       App_Exception.Raise_Exception;
183       Return;
184     END IF;
185     Close cur_rowid;
186 
187   END GET_FK_IGS_RU_CALL;
188 
189 
190  PROCEDURE Before_DML (
191     p_action IN VARCHAR2,
192     x_rowid IN VARCHAR2 DEFAULT NULL,
193     x_progression_rule_cat IN VARCHAR2 DEFAULT NULL,
194     x_description IN VARCHAR2 DEFAULT NULL,
195     x_s_rule_call_cd IN VARCHAR2 DEFAULT NULL,
196     x_closed_ind IN VARCHAR2 DEFAULT NULL,
197     x_message IN VARCHAR2 DEFAULT NULL,
198     x_positive_rule_ind IN VARCHAR2 DEFAULT 'N',
199     x_creation_date IN DATE DEFAULT NULL,
200     x_created_by IN NUMBER DEFAULT NULL,
201     x_last_update_date IN DATE DEFAULT NULL,
202     x_last_updated_by IN NUMBER DEFAULT NULL,
203     x_last_update_login IN NUMBER DEFAULT NULL
204   ) AS
205   BEGIN
206 
207     Set_Column_Values (
208       p_action,
209       x_rowid,
210       x_progression_rule_cat,
211       x_description,
212       x_s_rule_call_cd,
213       x_closed_ind,
214       x_message,
215       x_positive_rule_ind,
216       x_creation_date,
217       x_created_by,
218       x_last_update_date,
219       x_last_updated_by,
220       x_last_update_login
221     );
222 
223     IF (p_action = 'INSERT') THEN
224       -- Call all the procedures related to Before Insert.
225       BeforeRowInsertUpdate1 ( p_inserting => TRUE );
226       Check_Parent_Existance;
227 	IF GET_PK_FOR_VALIDATION(
228     			new_references.progression_rule_cat) THEN
229 		Fnd_Message.Set_Name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
230       IGS_GE_MSG_STACK.ADD;
231 		App_Exception.Raise_Exception;
232 
233 	END IF;
234 	CHECK_CONSTRAINTS;
235     ELSIF (p_action = 'UPDATE') THEN
236       -- Call all the procedures related to Before Update.
237       BeforeRowInsertUpdate1 ( p_updating => TRUE );
238       Check_Parent_Existance;
239 	CHECK_CONSTRAINTS;
240     ELSIF (p_action = 'DELETE') THEN
241       -- Call all the procedures related to Before Delete.
242       Check_Child_Existance;
243 
244 	ELSIF (p_action = 'VALIDATE_INSERT') THEN
245 		IF GET_PK_FOR_VALIDATION(
246     			new_references.progression_rule_cat) THEN
247 			Fnd_Message.Set_Name('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
248 			IGS_GE_MSG_STACK.ADD;
249 			App_Exception.Raise_Exception;
250 
251 		END IF;
252 			CHECK_CONSTRAINTS;
253 	ELSIF (p_action = 'VALIDATE_UPDATE') THEN
254 		CHECK_CONSTRAINTS;
255 	ELSIF (p_action = 'VALIDATE_DELETE') THEN
256       Check_Child_Existance;
257     END IF;
258 
259 
260 /*
261 The (L_ROWID := null) was added by ijeddy on the 12-apr-2003 as
262 part of the bug fix for bug no 2868726, (Uniqueness Check at Item Level)
263 */
264 L_ROWID := null;
265 
266   END Before_DML;
267 
268 procedure INSERT_ROW (
269   X_ROWID in out NOCOPY VARCHAR2,
270   X_PROGRESSION_RULE_CAT in VARCHAR2,
271   X_DESCRIPTION in VARCHAR2,
272   X_S_RULE_CALL_CD in VARCHAR2,
273   X_CLOSED_IND in VARCHAR2,
274   X_MESSAGE in VARCHAR2,
275   X_POSITIVE_RULE_IND IN VARCHAR2 DEFAULT 'N',
276   X_MODE in VARCHAR2 default 'R'
277   ) AS
278     cursor C is select ROWID from IGS_PR_RU_CAT
279       where PROGRESSION_RULE_CAT = X_PROGRESSION_RULE_CAT;
280     X_LAST_UPDATE_DATE DATE;
281     X_LAST_UPDATED_BY NUMBER;
282     X_LAST_UPDATE_LOGIN NUMBER;
283 begin
284   X_LAST_UPDATE_DATE := SYSDATE;
285   if(X_MODE = 'I') then
286     X_LAST_UPDATED_BY := 1;
287     X_LAST_UPDATE_LOGIN := 0;
288   elsif (X_MODE = 'R') then
289     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
290     if X_LAST_UPDATED_BY is NULL then
291       X_LAST_UPDATED_BY := -1;
292     end if;
293     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
294     if X_LAST_UPDATE_LOGIN is NULL then
295       X_LAST_UPDATE_LOGIN := -1;
296     end if;
297   else
298     FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
299       IGS_GE_MSG_STACK.ADD;
300     app_exception.raise_exception;
301   end if;
302 
303   Before_DML (
304     p_action => 'INSERT',
305     x_rowid => x_rowid ,
306     x_progression_rule_cat => x_progression_rule_cat ,
307     x_description => x_description ,
308     x_s_rule_call_cd => x_s_rule_call_cd ,
309     x_closed_ind => nvl( x_closed_ind, 'N'),
310     x_message => x_message ,
311     x_positive_rule_ind => x_positive_rule_ind,
312     x_creation_date => x_last_update_date,
313     x_created_by => x_last_updated_by ,
314     x_last_update_date => x_last_update_date ,
315     x_last_updated_by => x_last_updated_by ,
316     x_last_update_login => x_last_update_login
317   );
318 
319   insert into IGS_PR_RU_CAT (
320     PROGRESSION_RULE_CAT,
321     DESCRIPTION,
322     S_RULE_CALL_CD,
323     CLOSED_IND,
324     MESSAGE,
325     POSITIVE_RULE_IND,
326     CREATION_DATE,
327     CREATED_BY,
328     LAST_UPDATE_DATE,
329     LAST_UPDATED_BY,
330     LAST_UPDATE_LOGIN
331   ) values (
332     NEW_REFERENCES.PROGRESSION_RULE_CAT,
333     NEW_REFERENCES.DESCRIPTION,
334     NEW_REFERENCES.S_RULE_CALL_CD,
335     NEW_REFERENCES.CLOSED_IND,
336     NEW_REFERENCES.MESSAGE,
337     NEW_REFERENCES.POSITIVE_RULE_IND,
338     X_LAST_UPDATE_DATE,
339     X_LAST_UPDATED_BY,
340     X_LAST_UPDATE_DATE,
341     X_LAST_UPDATED_BY,
342     X_LAST_UPDATE_LOGIN
343   );
344 
345   open c;
346   fetch c into X_ROWID;
347   if (c%notfound) then
348     close c;
349     raise no_data_found;
350   end if;
351   close c;
352 end INSERT_ROW;
353 
354 procedure LOCK_ROW (
355   X_ROWID in VARCHAR2,
356   X_PROGRESSION_RULE_CAT in VARCHAR2,
357   X_DESCRIPTION in VARCHAR2,
358   X_S_RULE_CALL_CD in VARCHAR2,
359   X_CLOSED_IND in VARCHAR2,
360   X_MESSAGE in VARCHAR2,
361   X_POSITIVE_RULE_IND IN VARCHAR2 DEFAULT 'N'
362 ) AS
363   cursor c1 is select
364       DESCRIPTION,
365       S_RULE_CALL_CD,
366       CLOSED_IND,
367       MESSAGE,
368       POSITIVE_RULE_IND
369     from IGS_PR_RU_CAT
370     where ROWID = X_ROWID for update nowait;
371   tlinfo c1%rowtype;
372 
373 begin
374   open c1;
375   fetch c1 into tlinfo;
376   if (c1%notfound) then
377     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
378       IGS_GE_MSG_STACK.ADD;
379 	close c1;
380     app_exception.raise_exception;
381     return;
382   end if;
383   close c1;
384 
385   if ( (tlinfo.DESCRIPTION = X_DESCRIPTION)
386       AND (tlinfo.S_RULE_CALL_CD = X_S_RULE_CALL_CD)
387       AND (tlinfo.CLOSED_IND = X_CLOSED_IND)
388       AND ((tlinfo.MESSAGE = X_MESSAGE)
389            OR ((tlinfo.MESSAGE is null)
390                AND (X_MESSAGE is null)))
391      AND ((tlinfo.POSITIVE_RULE_IND = X_POSITIVE_RULE_IND)
392          OR (( tlinfo.POSITIVE_RULE_IND IS NULL) AND (X_POSITIVE_RULE_IND IS NULL)))
393   ) then
394     null;
395   else
396     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
397       IGS_GE_MSG_STACK.ADD;
398     app_exception.raise_exception;
399   end if;
400   return;
401 end LOCK_ROW;
402 
403 procedure UPDATE_ROW (
404   X_ROWID in VARCHAR2,
405   X_PROGRESSION_RULE_CAT in VARCHAR2,
406   X_DESCRIPTION in VARCHAR2,
407   X_S_RULE_CALL_CD in VARCHAR2,
408   X_CLOSED_IND in VARCHAR2,
409   X_MESSAGE in VARCHAR2,
410   X_POSITIVE_RULE_IND IN VARCHAR2 DEFAULT 'N',
411   X_MODE in VARCHAR2 default 'R'
412   ) AS
413     X_LAST_UPDATE_DATE DATE;
414     X_LAST_UPDATED_BY NUMBER;
415     X_LAST_UPDATE_LOGIN NUMBER;
416 begin
417   X_LAST_UPDATE_DATE := SYSDATE;
418   if(X_MODE = 'I') then
419     X_LAST_UPDATED_BY := 1;
420     X_LAST_UPDATE_LOGIN := 0;
421   elsif (X_MODE = 'R') then
422     X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
423     if X_LAST_UPDATED_BY is NULL then
424       X_LAST_UPDATED_BY := -1;
425     end if;
426     X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
427     if X_LAST_UPDATE_LOGIN is NULL then
428       X_LAST_UPDATE_LOGIN := -1;
429     end if;
430   else
431     FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
432       IGS_GE_MSG_STACK.ADD;
433     app_exception.raise_exception;
434   end if;
435 
436   Before_DML (
437     p_action => 'UPDATE',
438     x_rowid => x_rowid,
439     x_progression_rule_cat => x_progression_rule_cat ,
440     x_description => x_description ,
441     x_s_rule_call_cd => x_s_rule_call_cd ,
442     x_closed_ind => x_closed_ind ,
443     x_message => x_message ,
444     x_positive_rule_ind => x_positive_rule_ind,
445     x_creation_date => x_last_update_date,
446     x_created_by => x_last_updated_by ,
447     x_last_update_date => x_last_update_date ,
448     x_last_updated_by => x_last_updated_by ,
449     x_last_update_login => x_last_update_login
450   );
451 
452 
453   update IGS_PR_RU_CAT set
454     DESCRIPTION = NEW_REFERENCES.DESCRIPTION,
455     S_RULE_CALL_CD = NEW_REFERENCES.S_RULE_CALL_CD,
456     CLOSED_IND = NEW_REFERENCES.CLOSED_IND,
457     MESSAGE = NEW_REFERENCES.MESSAGE,
458     POSITIVE_RULE_IND = NEW_REFERENCES.POSITIVE_RULE_IND,
459     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
460     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
461     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
462   where ROWID = X_ROWID
463   ;
464   if (sql%notfound) then
465     raise no_data_found;
466   end if;
467 
468 end UPDATE_ROW;
469 
470 procedure ADD_ROW (
471   X_ROWID in out NOCOPY VARCHAR2,
472   X_PROGRESSION_RULE_CAT in VARCHAR2,
473   X_DESCRIPTION in VARCHAR2,
474   X_S_RULE_CALL_CD in VARCHAR2,
475   X_CLOSED_IND in VARCHAR2,
476   X_MESSAGE in VARCHAR2,
477   X_POSITIVE_RULE_IND IN VARCHAR2 DEFAULT 'N',
478   X_MODE in VARCHAR2 default 'R'
479   ) AS
480   cursor c1 is select rowid from IGS_PR_RU_CAT
481      where PROGRESSION_RULE_CAT = X_PROGRESSION_RULE_CAT
482   ;
483 begin
484   open c1;
485   fetch c1 into X_ROWID;
486   if (c1%notfound) then
487     close c1;
488     INSERT_ROW (
489      X_ROWID,
490      X_PROGRESSION_RULE_CAT,
491      X_DESCRIPTION,
492      X_S_RULE_CALL_CD,
493      X_CLOSED_IND,
494      X_MESSAGE,
495      X_POSITIVE_RULE_IND,
496      X_MODE);
497     return;
498   end if;
499   close c1;
500   UPDATE_ROW (
501    X_ROWID ,
502    X_PROGRESSION_RULE_CAT,
503    X_DESCRIPTION,
504    X_S_RULE_CALL_CD,
505    X_CLOSED_IND,
506    X_MESSAGE,
507    X_POSITIVE_RULE_IND,
508    X_MODE);
509 end ADD_ROW;
510 
511 procedure DELETE_ROW (
512   X_ROWID in VARCHAR2
513 ) AS
514 begin
515 Before_DML (
516     p_action => 'DELETE',
517     x_rowid => X_ROWID
518   );
519 
520   delete from IGS_PR_RU_CAT
521   where ROWID = X_ROWID;
522   if (sql%notfound) then
523     raise no_data_found;
524   end if;
525 end DELETE_ROW;
526 
527 PROCEDURE Check_Constraints (
528 	Column_Name IN VARCHAR2 DEFAULT NULL,
529 	Column_Value IN VARCHAR2 DEFAULT NULL
530 	) AS
531     BEGIN
532 	IF column_name IS NULL THEN
533 		NULL;
534 	ELSIF upper(Column_name) = 'CLOSED_IND' then
535 	    new_references.closed_ind := column_value;
536 	ELSIF upper(Column_name) = 'PROGRESSION_RULE_CAT'  then
537 	    new_references.progression_rule_cat := column_value;
538 	ELSIF upper(Column_name) = 'S_RULE_CALL_CD' then
539 	    new_references.s_rule_call_cd:= column_value;
540 	END IF;
541 
542 IF UPPER(column_name) = 'CLOSED_IND'  OR column_name IS NULL THEN
543 
544 		IF new_references.closed_ind NOT IN ('Y','N') THEN
545 			Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
546                       IGS_GE_MSG_STACK.ADD;
547 			App_Exception.Raise_Exception;
548 		END IF;
549 END IF;
550 
551 
552 
553 IF UPPER(column_name) = 'PROGRESSION_RULE_CAT' OR column_name IS NULL THEN
554 		IF new_references.progression_rule_cat <> UPPER(new_references.progression_rule_cat) THEN
555 			Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
556       IGS_GE_MSG_STACK.ADD;
557 			App_Exception.Raise_Exception;
558 		END IF;
559 END IF;
560 
561 IF UPPER(column_name) = 'S_RULE_CALL_CD' OR column_name IS NULL THEN
562 		IF new_references.s_rule_call_cd <> UPPER(new_references.s_rule_call_cd) THEN
563 			Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
564       IGS_GE_MSG_STACK.ADD;
565 			App_Exception.Raise_Exception;
566 		END IF;
567 END IF;
568 
569 END Check_Constraints;
570 
571 end IGS_PR_RU_CAT_PKG;