[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;