1 package body IGS_RU_CALL_PKG AS
2 /* $Header: IGSUI01B.pls 115.11 2002/11/29 04:24:40 nsidana ship $ */
3 l_rowid VARCHAR2(25);
4 old_references IGS_RU_CALL%RowType;
5 new_references IGS_RU_CALL%RowType;
6
7 PROCEDURE Set_Column_Values (
8 p_action IN VARCHAR2,
9 x_rowid IN VARCHAR2 ,
10 x_s_rule_call_cd IN VARCHAR2 ,
11 x_s_rule_type_cd IN VARCHAR2 ,
12 x_rud_sequence_number IN NUMBER ,
13 x_true_message IN VARCHAR2 ,
14 x_false_message IN VARCHAR2 ,
15 x_default_rule IN NUMBER ,
16 x_rug_sequence_number IN NUMBER ,
17 x_select_group IN NUMBER ,
18 x_creation_date IN DATE ,
19 x_created_by IN NUMBER ,
20 x_last_update_date IN DATE ,
21 x_last_updated_by IN NUMBER ,
22 x_last_update_login IN NUMBER ) AS
23
24 CURSOR cur_old_ref_values IS
25 SELECT *
26 FROM IGS_RU_CALL
27 WHERE rowid = x_rowid;
28
29 BEGIN
30
31 l_rowid := x_rowid;
32
33 -- Code for setting the Old and New Reference Values.
34 -- Populate Old Values.
35 Open cur_old_ref_values;
36 Fetch cur_old_ref_values INTO old_references;
37 IF (cur_old_ref_values%NOTFOUND) AND (p_action NOT IN ('INSERT','VALIDATE_INSERT')) THEN
38 Close cur_old_ref_values;
39 Fnd_Message.Set_Name ('FND', 'FORM_RECORD_DELETED');
40 IGS_RU_GEN_006.SET_TOKEN('IGS_RU_CALL : P_ACTION Insert, validate Insert : IGSUI01B.PLS');
41 IGS_GE_MSG_STACK.ADD;
42 App_Exception.Raise_Exception;
43 Return;
44 END IF;
45 Close cur_old_ref_values;
46
47 -- Populate New Values.
48 new_references.s_rule_call_cd := x_s_rule_call_cd;
49 new_references.s_rule_type_cd := x_s_rule_type_cd;
50 new_references.rud_sequence_number := x_rud_sequence_number;
51 new_references.true_message := x_true_message;
52 new_references.false_message := x_false_message;
53 new_references.default_rule := x_default_rule;
54 new_references.rug_sequence_number := x_rug_sequence_number;
55 new_references.select_group := x_select_group;
56 IF (p_action = 'UPDATE') THEN
57 new_references.creation_date := old_references.creation_date;
58 new_references.created_by := old_references.created_by;
59 ELSE
60 new_references.creation_date := x_creation_date;
61 new_references.created_by := x_created_by;
62 END IF;
63 new_references.last_update_date := x_last_update_date;
64 new_references.last_updated_by := x_last_updated_by;
65 new_references.last_update_login := x_last_update_login;
66
67 END Set_Column_Values;
68
69
70 PROCEDURE Check_Parent_Existance AS
71 BEGIN
72
73 IF (((old_references.default_rule = new_references.default_rule)) OR
74 ((new_references.default_rule IS NULL))) THEN
75 NULL;
76 ELSE
77 IF NOT IGS_RU_NAMED_RULE_PKG.Get_PK_For_Validation (
78 new_references.default_rule
79 )THEN
80 Fnd_Message.Set_Name('FND','FORM_RECORD_DELETED');
81 IGS_RU_GEN_006.SET_TOKEN('IGS_RU_NAMED_RULE : P_ACTION Check_Parent_Existance new_references.default_rule : IGSUI01B.PLS');
82 IGS_GE_MSG_STACK.ADD;
83 App_Exception.Raise_Exception;
84
85 END IF;
86
87 END IF;
88
89 IF (((old_references.rud_sequence_number = new_references.rud_sequence_number)) OR
90 ((new_references.rud_sequence_number IS NULL))) THEN
91 NULL;
92 ELSE
93 IF NOT IGS_RU_DESCRIPTION_PKG.Get_PK_For_Validation (
94 new_references.rud_sequence_number
95 )THEN
96 Fnd_Message.Set_Name('FND','FORM_RECORD_DELETED');
97 IGS_RU_GEN_006.SET_TOKEN('IGS_RU_DESCRIPTION : P_ACTION Check_Parent_Existance new_references.rud_sequence_number : IGSUI01B.PLS');
98 IGS_GE_MSG_STACK.ADD;
99 App_Exception.Raise_Exception;
100
101 END IF;
102
103 END IF;
104
105 IF (((old_references.rug_sequence_number = new_references.rug_sequence_number)) OR
106 ((new_references.rug_sequence_number IS NULL))) THEN
107 NULL;
108 ELSE
109 IF NOT IGS_RU_GROUP_PKG.Get_PK_For_Validation (
110 new_references.rug_sequence_number
111 )THEN
112 Fnd_Message.Set_Name('FND','FORM_RECORD_DELETED');
113 IGS_RU_GEN_006.SET_TOKEN('IGS_RU_GROUP : P_ACTION Check_Parent_Existance new_references.rug_sequence_number : IGSUI01B.PLS');
114 IGS_GE_MSG_STACK.ADD;
115 App_Exception.Raise_Exception;
116
117 END IF;
118
119 END IF;
120
121 IF (((old_references.select_group = new_references.select_group)) OR
122 ((new_references.select_group IS NULL))) THEN
123 NULL;
124 ELSE
125 IF NOT IGS_RU_GROUP_PKG.Get_PK_For_Validation (
126 new_references.select_group
127 )THEN
128 Fnd_Message.Set_Name('FND','FORM_RECORD_DELETED');
129 IGS_RU_GEN_006.SET_TOKEN('IGS_RU_GROUP : P_ACTION Check_Parent_Existance new_references.select_group : IGSUI01B.PLS');
130 IGS_GE_MSG_STACK.ADD;
131 App_Exception.Raise_Exception;
132
133 END IF;
134
135 END IF;
136
137 END Check_Parent_Existance;
138
139 PROCEDURE Check_UK_Child_Existance AS
140 BEGIN
141
142 IF (old_references.rud_sequence_number = new_references.rud_sequence_number) OR
143 (old_references.rud_sequence_number IS NULL)
144 THEN
145 NULL;
146 ELSE
147 IGS_RU_ITEM_PKG.GET_UFK_IGS_RU_CALL(
148 old_references.rud_sequence_number
149 );
150 END IF;
151
152 END Check_UK_Child_Existance;
153
154
155 FUNCTION Get_PK_For_Validation (
156 x_s_rule_call_cd IN VARCHAR2
157 )
158 RETURN BOOLEAN AS
159
160 CURSOR cur_rowid IS
161 SELECT rowid
162 FROM IGS_RU_CALL
163 WHERE s_rule_call_cd = x_s_rule_call_cd
164 FOR UPDATE NOWAIT;
165
166 lv_rowid cur_rowid%RowType;
167
168 BEGIN
169
170 Open cur_rowid;
171 Fetch cur_rowid INTO lv_rowid;
172 IF (cur_rowid%FOUND) THEN
173 Close cur_rowid;
174 Return TRUE;
175 ELSE
176 Close cur_rowid;
177 Return FALSE;
178 END IF;
179
180 END Get_PK_For_Validation;
181
182
183
184 FUNCTION Get_UK1_For_Validation (
185 x_rud_sequence_number IN NUMBER
186 )
187 RETURN BOOLEAN AS
188 CURSOR cur_rowid IS
189 SELECT rowid
190 FROM IGS_RU_CALL
191 WHERE rud_sequence_number = x_rud_sequence_number
192 AND ((l_rowid IS NULL) OR (rowid <> l_rowid));
193
194
195 lv_rowid cur_rowid%RowType;
196 BEGIN
197 Open cur_rowid;
198 Fetch cur_rowid INTO lv_rowid;
199 IF (cur_rowid%FOUND) THEN
200 Close cur_rowid;
201 Return TRUE;
202 ELSE
203 Close cur_rowid;
204 Return FALSE;
205 END IF;
206 END Get_UK1_For_Validation;
207
208
209 PROCEDURE GET_FK_IGS_RU_NAMED_RULE (
210 x_rul_sequence_number IN NUMBER
211 ) AS
212
213 CURSOR cur_rowid IS
214 SELECT rowid
215 FROM IGS_RU_CALL
216 WHERE default_rule = x_rul_sequence_number ;
217
218 lv_rowid cur_rowid%RowType;
219
220 BEGIN
221
222 Open cur_rowid;
223 Fetch cur_rowid INTO lv_rowid;
224 IF (cur_rowid%FOUND) THEN
225 Close cur_rowid;
226 Fnd_Message.Set_Name ('IGS', 'IGS_RU_SRC_NR_FK');
227 IGS_GE_MSG_STACK.ADD;
228 App_Exception.Raise_Exception;
229 Return;
230 END IF;
231 Close cur_rowid;
232
233 END GET_FK_IGS_RU_NAMED_RULE;
234
235 PROCEDURE GET_FK_IGS_RU_DESCRIPTION (
236 x_sequence_number IN NUMBER
237 ) AS
238
239 CURSOR cur_rowid IS
240 SELECT rowid
241 FROM IGS_RU_CALL
242 WHERE rud_sequence_number = x_sequence_number ;
243
244 lv_rowid cur_rowid%RowType;
245
246 BEGIN
247
248 Open cur_rowid;
249 Fetch cur_rowid INTO lv_rowid;
250 IF (cur_rowid%FOUND) THEN
251 Close cur_rowid;
252 Fnd_Message.Set_Name ('IGS', 'IGS_RU_SRC_RUD_FK');
253 IGS_GE_MSG_STACK.ADD;
254 App_Exception.Raise_Exception;
255 Return;
256 END IF;
257 Close cur_rowid;
258
259 END GET_FK_IGS_RU_DESCRIPTION;
260
261
262 PROCEDURE GET_FK_IGS_RU_GROUP_SG (
263 x_sequence_number IN NUMBER
264 ) AS
265
266 CURSOR cur_rowid IS
267 SELECT rowid
268 FROM IGS_RU_CALL
269 WHERE rug_sequence_number = x_sequence_number
270 OR select_group = x_sequence_number ;
271
272 lv_rowid cur_rowid%RowType;
273
274 BEGIN
275
276 Open cur_rowid;
277 Fetch cur_rowid INTO lv_rowid;
278 IF (cur_rowid%FOUND) THEN
279 Close cur_rowid;
280 Fnd_Message.Set_Name ('IGS', 'IGS_RU_SRC_RUG_SG_FK');
281 IGS_GE_MSG_STACK.ADD;
282 App_Exception.Raise_Exception;
283 Return;
284 END IF;
285 Close cur_rowid;
286
287 END GET_FK_IGS_RU_GROUP_SG;
288
289 PROCEDURE Get_FK_IGS_RU_GROUP_SEQ (
290 x_sequence_number IN NUMBER
291 ) AS
292
293 CURSOR cur_rowid IS
294 SELECT rowid
295 FROM igs_ru_call
296 WHERE rug_sequence_number = x_sequence_number ;
297
298 lv_rowid cur_rowid%RowType;
299
300 BEGIN
301
302 Open cur_rowid;
303 Fetch cur_rowid INTO lv_rowid;
304 IF (cur_rowid%FOUND) THEN
305 Close cur_rowid;
306 Fnd_Message.Set_Name ('IGS', 'IGS_GE_RECORD_ALREADY_EXISTS');
307 App_Exception.Raise_Exception;
308 Return;
309 END IF;
310 Close cur_rowid;
311 END Get_FK_IGS_RU_GROUP_SEQ ;
312
313 PROCEDURE CHECK_UNIQUENESS AS
314
315 BEGIN
316
317 IF GET_UK1_FOR_VALIDATION(
318 new_references.rud_sequence_number) THEN
319 FND_MESSAGE.SET_NAME('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
320 IGS_GE_MSG_STACK.ADD;
321 APP_EXCEPTION.RAISE_EXCEPTION;
322 END IF;
323
324
325 END CHECK_UNIQUENESS;
326
327 PROCEDURE Before_DML (
328 p_action IN VARCHAR2,
329 x_rowid IN VARCHAR2 ,
330 x_s_rule_call_cd IN VARCHAR2 ,
331 x_s_rule_type_cd IN VARCHAR2 ,
332 x_rud_sequence_number IN NUMBER ,
333 x_true_message IN VARCHAR2 ,
334 x_false_message IN VARCHAR2 ,
335 x_default_rule IN NUMBER ,
336 x_rug_sequence_number IN NUMBER ,
337 x_select_group IN NUMBER ,
338 x_creation_date IN DATE ,
339 x_created_by IN NUMBER ,
340 x_last_update_date IN DATE ,
341 x_last_updated_by IN NUMBER ,
342 x_last_update_login IN NUMBER
343 ) AS
344 BEGIN
345
346 Set_Column_Values (
347 p_action,
348 x_rowid,
349 x_s_rule_call_cd,
350 x_s_rule_type_cd,
351 x_rud_sequence_number,
352 x_true_message,
353 x_false_message,
354 x_default_rule,
355 x_rug_sequence_number,
356 x_select_group,
357 x_creation_date,
358 x_created_by,
359 x_last_update_date,
360 x_last_updated_by,
361 x_last_update_login
362 );
363
364 IF (p_action = 'INSERT') THEN
365 -- Call all the procedures related to Before Insert.
366 Null;
367 IF GET_PK_FOR_VALIDATION(
368 new_references.s_rule_call_cd )THEN
369 FND_MESSAGE.SET_NAME('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
370 IGS_GE_MSG_STACK.ADD;
371 APP_EXCEPTION.RAISE_EXCEPTION;
372 END IF;
373 --Check_Unique (x_rowid);
374 Check_uniqueness;
375 Check_constraints;
376 Check_Parent_Existance;
377 ELSIF (p_action = 'UPDATE') THEN
378 -- Call all the procedures related to Before Update.
379 Check_uniqueness;
380 Check_constraints;
381 Check_Parent_Existance;
382 Check_UK_Child_Existance;
383 ELSIF (p_action = 'DELETE') THEN
384 -- Call all the procedures related to Before Delete.
385 --
386 -- svenkata - This table handler is released as part of IGS specific forms in SEED . As a consequence ,
387 -- the procedure Check_Child_Existance originally a part of this package , has been moved to Igs_Ru_Gen_005 .
388 -- This was done 'cos Check_Child_Existance makes calls to other procedures which are not being shipped !
389 -- Check_Child_Existance is called only when the user is not DATAMERGE . Hence , the proc.
390 -- Check_Child_Existance_ru_rule is being called using execute immediate only if the user is not DATAMERGE .
391 -- Bug # 2233951
392 --
393 IF (fnd_global.user_id <> 1) THEN
394 -- do execute immediate
395 EXECUTE IMMEDIATE 'BEGIN Igs_Ru_Gen_005.Check_Child_Existance_Ru_Call(:1,:2); END;'
396 USING
397 old_references.rud_sequence_number ,
398 old_references.s_rule_call_cd ;
399 END IF;
400
401 ELSIF (p_action = 'VALIDATE_INSERT') THEN
402 -- Call all the procedures related to Before Delete.
403 IF GET_PK_FOR_VALIDATION(
404 new_references.s_rule_call_cd
405 )THEN
406 FND_MESSAGE.SET_NAME('IGS','IGS_GE_RECORD_ALREADY_EXISTS');
407 IGS_GE_MSG_STACK.ADD;
408 APP_EXCEPTION.RAISE_EXCEPTION;
409 END IF;
410 Check_uniqueness;
411 Check_Constraints;
412 ELSIF (p_action = 'VALIDATE_UPDATE') THEN
413 -- Call all the procedures related to Before Delete.
414 Check_uniqueness;
415 check_constraints;
416 Check_uk_child_existance;
417 ELSIF (p_action = 'VALIDATE_DELETE') THEN
418 -- Call all the procedures related to Before Delete.
419 --
420 -- svenkata - This table handler is released as part of IGS specific forms in SEED . As a consequence ,
421 -- the procedure Check_Child_Existance originally a part of this package , has been moved to Igs_Ru_Gen_005 .
422 -- This was done 'cos Check_Child_Existance makes calls to other procedures which are not being shipped !
423 -- Check_Child_Existance is called only when the user is not DATAMERGE . Hence , the proc.
424 -- Check_Child_Existance_ru_rule is being called using execute immediate only if the user is not DATAMERGE .
425 -- Bug # 2233951
426 --
427 IF (fnd_global.user_id <> 1) THEN
428 -- do execute immediate
429 EXECUTE IMMEDIATE 'BEGIN Igs_Ru_Gen_005.Check_Child_Existance_Ru_Call(:1,:2); END;'
430 USING
431 old_references.rud_sequence_number ,
432 old_references.s_rule_call_cd ;
433 END IF;
434
435 END IF;
436
437 END Before_DML;
438
439 PROCEDURE After_DML (
440 p_action IN VARCHAR2,
441 x_rowid IN VARCHAR2
442 ) AS
443 BEGIN
444
445 l_rowid := x_rowid;
446
447 l_rowid := NULL;
448
449 END After_DML;
450
451 procedure INSERT_ROW (
452 X_ROWID in out NOCOPY VARCHAR2,
453 X_S_RULE_CALL_CD in VARCHAR2,
454 X_S_RULE_TYPE_CD in VARCHAR2,
455 X_RUD_SEQUENCE_NUMBER in NUMBER,
456 X_SELECT_GROUP in NUMBER,
457 X_TRUE_MESSAGE in VARCHAR2,
458 X_FALSE_MESSAGE in VARCHAR2,
459 X_DEFAULT_RULE in NUMBER,
460 X_RUG_SEQUENCE_NUMBER in NUMBER,
461 X_MODE in VARCHAR2
462 ) AS
463 cursor C is select ROWID from IGS_RU_CALL
464 where S_RULE_CALL_CD = X_S_RULE_CALL_CD;
465 X_LAST_UPDATE_DATE DATE;
466 X_LAST_UPDATED_BY NUMBER;
467 X_LAST_UPDATE_LOGIN NUMBER;
468 begin
469 X_LAST_UPDATE_DATE := SYSDATE;
470 if(X_MODE = 'I') then
471 X_LAST_UPDATED_BY := 1;
472 X_LAST_UPDATE_LOGIN := 0;
473 elsif (X_MODE = 'R') then
474 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
475 if X_LAST_UPDATED_BY is NULL then
476 X_LAST_UPDATED_BY := -1;
477 end if;
478 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
479 if X_LAST_UPDATE_LOGIN is NULL then
480 X_LAST_UPDATE_LOGIN := -1;
481 end if;
482 else
483 FND_MESSAGE.SET_NAME( 'FND', 'SYSTEM-INVALID ARGS');
484 IGS_GE_MSG_STACK.ADD;
485 app_exception.raise_exception;
486 end if;
487
488 Before_DML (
489 p_action => 'INSERT',
490 x_rowid => X_ROWID,
491 x_s_rule_call_cd =>X_S_RULE_CALL_CD,
492 x_s_rule_type_cd =>X_S_RULE_TYPE_CD,
493 x_rud_sequence_number =>X_RUD_SEQUENCE_NUMBER,
494 x_true_message =>X_TRUE_MESSAGE,
495 x_false_message =>X_FALSE_MESSAGE,
496 x_default_rule =>X_DEFAULT_RULE,
497 x_rug_sequence_number =>X_RUG_SEQUENCE_NUMBER,
498 x_select_group =>X_SELECT_GROUP,
499 x_creation_date =>X_LAST_UPDATE_DATE,
500 x_created_by =>X_LAST_UPDATED_BY,
501 x_last_update_date =>X_LAST_UPDATE_DATE,
502 x_last_updated_by =>X_LAST_UPDATED_BY,
503 x_last_update_login=> X_LAST_UPDATE_LOGIN
504 );
505
506 insert into IGS_RU_CALL (
507 S_RULE_TYPE_CD,
508 S_RULE_CALL_CD,
509 RUD_SEQUENCE_NUMBER,
510 SELECT_GROUP,
511 TRUE_MESSAGE,
512 FALSE_MESSAGE,
513 DEFAULT_RULE,
514 RUG_SEQUENCE_NUMBER,
515 CREATION_DATE,
516 CREATED_BY,
517 LAST_UPDATE_DATE,
518 LAST_UPDATED_BY,
519 LAST_UPDATE_LOGIN
520 ) values (
521 NEW_REFERENCES.S_RULE_TYPE_CD,
522 NEW_REFERENCES.S_RULE_CALL_CD,
523 NEW_REFERENCES.RUD_SEQUENCE_NUMBER,
524 NEW_REFERENCES.SELECT_GROUP,
525 NEW_REFERENCES.TRUE_MESSAGE,
526 NEW_REFERENCES.FALSE_MESSAGE,
527 NEW_REFERENCES.DEFAULT_RULE,
528 NEW_REFERENCES.RUG_SEQUENCE_NUMBER,
529 X_LAST_UPDATE_DATE,
530 X_LAST_UPDATED_BY,
531 X_LAST_UPDATE_DATE,
532 X_LAST_UPDATED_BY,
533 X_LAST_UPDATE_LOGIN
534 );
535
536 open c;
537 fetch c into X_ROWID;
538 if (c%notfound) then
539 close c;
540 raise no_data_found;
541 end if;
542 close c;
543
544 After_DML (
545 p_action => 'INSERT',
546 x_rowid => X_ROWID
547 );
548
549
550 end INSERT_ROW;
551
552 procedure LOCK_ROW (
553 X_ROWID in VARCHAR2,
554 X_S_RULE_CALL_CD in VARCHAR2,
555 X_S_RULE_TYPE_CD in VARCHAR2,
556 X_RUD_SEQUENCE_NUMBER in NUMBER,
557 X_SELECT_GROUP in NUMBER,
558 X_TRUE_MESSAGE in VARCHAR2,
559 X_FALSE_MESSAGE in VARCHAR2,
560 X_DEFAULT_RULE in NUMBER,
561 X_RUG_SEQUENCE_NUMBER in NUMBER
562 ) AS
563 cursor c1 is select
564 S_RULE_TYPE_CD,
565 RUD_SEQUENCE_NUMBER,
566 SELECT_GROUP,
567 TRUE_MESSAGE,
568 FALSE_MESSAGE,
569 DEFAULT_RULE,
570 RUG_SEQUENCE_NUMBER
571 from IGS_RU_CALL
572 where ROWID = X_ROWID
573 for update nowait;
574 tlinfo c1%rowtype;
575
576 begin
577 open c1;
578 fetch c1 into tlinfo;
579 if (c1%notfound) then
580 close c1;
581 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
582 IGS_RU_GEN_006.SET_TOKEN('IGS_RU_CALL : P_ACTION LOCK_ROW : IGSUI01B.PLS');
583 IGS_GE_MSG_STACK.ADD;
584 app_exception.raise_exception;
585 return;
586 end if;
587 close c1;
588
589 if ( (tlinfo.S_RULE_TYPE_CD = X_S_RULE_TYPE_CD)
590 AND (tlinfo.RUD_SEQUENCE_NUMBER = X_RUD_SEQUENCE_NUMBER)
591 AND (tlinfo.SELECT_GROUP = X_SELECT_GROUP)
592 AND ((tlinfo.TRUE_MESSAGE = X_TRUE_MESSAGE)
593 OR ((tlinfo.TRUE_MESSAGE is null)
594 AND (X_TRUE_MESSAGE is null)))
595 AND ((tlinfo.FALSE_MESSAGE = X_FALSE_MESSAGE)
596 OR ((tlinfo.FALSE_MESSAGE is null)
597 AND (X_FALSE_MESSAGE is null)))
598 AND ((tlinfo.DEFAULT_RULE = X_DEFAULT_RULE)
599 OR ((tlinfo.DEFAULT_RULE is null)
600 AND (X_DEFAULT_RULE is null)))
601 AND ((tlinfo.RUG_SEQUENCE_NUMBER = X_RUG_SEQUENCE_NUMBER)
602 OR ((tlinfo.RUG_SEQUENCE_NUMBER is null)
603 AND (X_RUG_SEQUENCE_NUMBER is null)))
604 ) then
605 null;
606 else
607 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
608 IGS_RU_GEN_006.SET_TOKEN('IGS_RU_CALL : P_ACTION LOCK_ROW FORM_RECORD_CHANGED : IGSUI01B.PLS');
609 IGS_GE_MSG_STACK.ADD;
610 app_exception.raise_exception;
611 end if;
612 return;
613 end LOCK_ROW;
614
615 procedure UPDATE_ROW (
616 X_ROWID in VARCHAR2,
617 X_S_RULE_CALL_CD in VARCHAR2,
618 X_S_RULE_TYPE_CD in VARCHAR2,
619 X_RUD_SEQUENCE_NUMBER in NUMBER,
620 X_SELECT_GROUP in NUMBER,
621 X_TRUE_MESSAGE in VARCHAR2,
622 X_FALSE_MESSAGE in VARCHAR2,
623 X_DEFAULT_RULE in NUMBER,
624 X_RUG_SEQUENCE_NUMBER in NUMBER,
625 X_MODE in VARCHAR2
626 ) AS
627 X_LAST_UPDATE_DATE DATE;
628 X_LAST_UPDATED_BY NUMBER;
629 X_LAST_UPDATE_LOGIN NUMBER;
630 begin
631 X_LAST_UPDATE_DATE := SYSDATE;
632 if(X_MODE = 'I') then
633 X_LAST_UPDATED_BY := 1;
634 X_LAST_UPDATE_LOGIN := 0;
635 elsif (X_MODE = 'R') then
636 X_LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
637 if X_LAST_UPDATED_BY is NULL then
638 X_LAST_UPDATED_BY := -1;
639 end if;
640 X_LAST_UPDATE_LOGIN :=FND_GLOBAL.LOGIN_ID;
641 if X_LAST_UPDATE_LOGIN is NULL then
642 X_LAST_UPDATE_LOGIN := -1;
643 end if;
644 else
645 FND_MESSAGE.SET_NAME('FND', 'SYSTEM-INVALID ARGS');
646 IGS_GE_MSG_STACK.ADD;
647 app_exception.raise_exception;
648 end if;
649
650 Before_DML (
651 p_action => 'UPDATE',
652 x_rowid => X_ROWID,
653 x_s_rule_call_cd =>X_S_RULE_CALL_CD,
654 x_s_rule_type_cd =>X_S_RULE_TYPE_CD,
655 x_rud_sequence_number =>X_RUD_SEQUENCE_NUMBER,
656 x_true_message =>X_TRUE_MESSAGE,
657 x_false_message =>X_FALSE_MESSAGE,
658 x_default_rule =>X_DEFAULT_RULE,
659 x_rug_sequence_number =>X_RUG_SEQUENCE_NUMBER,
660 x_select_group =>X_SELECT_GROUP,
661 x_creation_date =>X_LAST_UPDATE_DATE,
662 x_created_by =>X_LAST_UPDATED_BY,
663 x_last_update_date =>X_LAST_UPDATE_DATE,
664 x_last_updated_by =>X_LAST_UPDATED_BY,
665 x_last_update_login=> X_LAST_UPDATE_LOGIN
666 );
667
668 update IGS_RU_CALL set
669 S_RULE_TYPE_CD = NEW_REFERENCES.S_RULE_TYPE_CD,
670 RUD_SEQUENCE_NUMBER = NEW_REFERENCES.RUD_SEQUENCE_NUMBER,
671 SELECT_GROUP = NEW_REFERENCES.SELECT_GROUP,
672 TRUE_MESSAGE = NEW_REFERENCES.TRUE_MESSAGE,
673 FALSE_MESSAGE = NEW_REFERENCES.FALSE_MESSAGE,
674 DEFAULT_RULE = NEW_REFERENCES.DEFAULT_RULE,
675 RUG_SEQUENCE_NUMBER = NEW_REFERENCES.RUG_SEQUENCE_NUMBER,
676 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
677 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
678 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
679 where ROWID = X_ROWID ;
680 if (sql%notfound) then
681 raise no_data_found;
682 end if;
683 After_DML (
684 p_action => 'UPDATE',
685 x_rowid => X_ROWID
686 );
687
688 end UPDATE_ROW;
689
690 procedure ADD_ROW (
691 X_ROWID in out NOCOPY VARCHAR2,
692 X_S_RULE_CALL_CD in VARCHAR2,
693 X_S_RULE_TYPE_CD in VARCHAR2,
694 X_RUD_SEQUENCE_NUMBER in NUMBER,
695 X_SELECT_GROUP in NUMBER,
696 X_TRUE_MESSAGE in VARCHAR2,
697 X_FALSE_MESSAGE in VARCHAR2,
698 X_DEFAULT_RULE in NUMBER,
699 X_RUG_SEQUENCE_NUMBER in NUMBER,
700 X_MODE in VARCHAR2
701 ) AS
702 cursor c1 is select rowid from IGS_RU_CALL
703 where S_RULE_CALL_CD = X_S_RULE_CALL_CD
704 ;
705 begin
706 open c1;
707 fetch c1 into X_ROWID;
708 if (c1%notfound) then
709 close c1;
710 INSERT_ROW (
711 X_ROWID,
712 X_S_RULE_CALL_CD,
713 X_S_RULE_TYPE_CD,
714 X_RUD_SEQUENCE_NUMBER,
715 X_SELECT_GROUP,
716 X_TRUE_MESSAGE,
717 X_FALSE_MESSAGE,
718 X_DEFAULT_RULE,
719 X_RUG_SEQUENCE_NUMBER,
720 X_MODE);
721 return;
722 end if;
723 close c1;
724 UPDATE_ROW (
725 X_ROWID,
726 X_S_RULE_CALL_CD,
727 X_S_RULE_TYPE_CD,
728 X_RUD_SEQUENCE_NUMBER,
729 X_SELECT_GROUP,
730 X_TRUE_MESSAGE,
731 X_FALSE_MESSAGE,
732 X_DEFAULT_RULE,
733 X_RUG_SEQUENCE_NUMBER,
734 X_MODE);
735 end ADD_ROW;
736
737 procedure DELETE_ROW (
738 X_ROWID in VARCHAR2
739 ) AS
740 begin
741
742 Before_DML (
743 p_action => 'DELETE',
744 x_rowid => X_ROWID
745 );
746
747 delete from IGS_RU_CALL
748 where ROWID = X_ROWID;
749 if (sql%notfound) then
750 raise no_data_found;
751 end if;
752 After_DML (
753 p_action => 'DELETE',
754 x_rowid => X_ROWID
755 );
756 end DELETE_ROW;
757
758
759 PROCEDURE Check_Constraints (
760 Column_Name IN VARCHAR2 ,
761 Column_Value IN VARCHAR2
762 ) AS
763 BEGIN
764 IF Column_Name is null THEN
765 NULL;
766 ELSIF upper(Column_name) = 'DEFAULT_RULE' THEN
767 new_references.DEFAULT_RULE:= igs_ge_number.to_num(COLUMN_VALUE) ;
768
769 ELSIF upper(Column_name) = 'RUD_SEQUENCE_NUMBER' THEN
770 new_references.RUD_SEQUENCE_NUMBER:= igs_ge_number.to_num(COLUMN_VALUE) ;
771
772 ELSIF upper(Column_name) = 'RUG_SEQUENCE_NUMBER' THEN
773 new_references.RUG_SEQUENCE_NUMBER:= igs_ge_number.to_num(COLUMN_VALUE) ;
774
775 ELSIF upper(Column_name) = 'SELECT_GROUP' THEN
776 new_references.SELECT_GROUP:= igs_ge_number.to_num(COLUMN_VALUE) ;
777
778 ELSIF upper(Column_name) = 'S_RULE_CALL_CD' THEN
779 new_references.S_RULE_CALL_CD:= COLUMN_VALUE ;
780
781 ELSIF upper(Column_name) = 'S_RULE_TYPE_CD' THEN
782 new_references.S_RULE_TYPE_CD:= COLUMN_VALUE ;
783
784 END IF ;
785
786 IF upper(Column_name) = 'DEFAULT_RULE' OR COLUMN_NAME IS NULL THEN
787 IF new_references.DEFAULT_RULE < 1 or new_references.DEFAULT_RULE > 999999 then
788 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
789 IGS_GE_MSG_STACK.ADD;
790 App_Exception.Raise_Exception ;
791 END IF;
792
793 END IF ;
794
795 IF upper(Column_name) = 'RUD_SEQUENCE_NUMBER' OR COLUMN_NAME IS NULL THEN
796 IF new_references.RUD_SEQUENCE_NUMBER < 1 or new_references.RUD_SEQUENCE_NUMBER > 999999 then
797 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
798 IGS_GE_MSG_STACK.ADD;
799 App_Exception.Raise_Exception ;
800 END IF;
801
802 END IF ;
803
804 IF upper(Column_name) = 'RUG_SEQUENCE_NUMBER' OR COLUMN_NAME IS NULL THEN
805 IF new_references.RUG_SEQUENCE_NUMBER < 1 or new_references.RUG_SEQUENCE_NUMBER > 999999 then
806 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
807 IGS_GE_MSG_STACK.ADD;
808 App_Exception.Raise_Exception ;
809 END IF;
810
811 END IF ;
812
813 IF upper(Column_name) = 'SELECT_GROUP' OR COLUMN_NAME IS NULL THEN
814 IF new_references.SELECT_GROUP < 1 or new_references.SELECT_GROUP > 999999 then
815 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
816 IGS_GE_MSG_STACK.ADD;
817 App_Exception.Raise_Exception ;
818 END IF;
819
820 END IF ;
821
822 IF upper(Column_name) = 'S_RULE_CALL_CD' OR COLUMN_NAME IS NULL THEN
823 IF new_references.S_RULE_CALL_CD<> upper(new_references.S_RULE_CALL_CD) then
824 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
825 IGS_GE_MSG_STACK.ADD;
826 App_Exception.Raise_Exception ;
827 END IF;
828
829 END IF ;
830
831 IF upper(Column_name) = 'S_RULE_TYPE_CD' OR COLUMN_NAME IS NULL THEN
832 IF new_references.S_RULE_TYPE_CD<> upper(new_references.S_RULE_TYPE_CD) then
833 Fnd_Message.Set_Name('IGS','IGS_GE_INVALID_VALUE');
834 IGS_GE_MSG_STACK.ADD;
835 App_Exception.Raise_Exception ;
836 END IF;
837
838 END IF ;
839 END Check_Constraints;
840
841 end IGS_RU_CALL_PKG;