1 PACKAGE BODY IGS_PR_VAL_PRGC AS
2 /* $Header: IGSPR06B.pls 115.3 2002/11/29 02:45:01 nsidana ship $ */
3 --
4 -- Validate the IGS_PR_RU_CAT.s_rule_call_cd field.
5 FUNCTION prgp_val_src_prg(
6 p_s_rule_call_cd IN VARCHAR2 ,
7 p_message_name OUT NOCOPY VARCHAR2 )
8 RETURN BOOLEAN AS
9 gv_other_detail VARCHAR2(255);
10 BEGIN -- prgp_val_src_prg
11 -- Validate the IGS_PR_RU_CAT.s_rule_call_cd field can
12 -- only be linked to IGS_RU_CALL records with a s_rule_type_cd of 'PRG'.
13 DECLARE
14 v_dummy VARCHAR2(1);
15 CURSOR c_src IS
16 SELECT 'X'
17 FROM IGS_RU_CALL src
18 WHERE src.s_rule_call_cd = p_s_rule_call_cd AND
19 src.s_rule_type_cd = 'PRG';
20 BEGIN
21 IF p_s_rule_call_cd IS NULL THEN
22 p_message_name := null;
23 RETURN TRUE;
24 END IF;
25 OPEN c_src;
26 FETCH c_src INTO v_dummy;
27 IF c_src%NOTFOUND THEN
28 CLOSE c_src;
29 p_message_name := 'IGS_PR_CHK_SYSTEM_RULE_CALL';
30 RETURN FALSE;
31 END IF;
32 CLOSE c_src;
33 p_message_name := null;
34 RETURN TRUE;
35 EXCEPTION
36 WHEN OTHERS THEN
37 IF (c_src%ISOPEN) THEN
38 CLOSE c_src;
39 END IF;
40 RAISE;
41 END;
42 EXCEPTION
43 WHEN OTHERS THEN
44 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXCEPTION');
45 FND_MESSAGE.SET_TOKEN ('NAME', 'IGS_PR_VAL_PRGC.PRGP_VAL_SRC_PRG');
46 --IGS_GE_MSG_STACK.ADD;
47
48 END prgp_val_src_prg;
49 --
50 -- Validate the IGS_PR_RU_CAT.s_rule_call_cd.
51 FUNCTION prgp_val_prgc_upd(
52 p_progression_rule_cat IN VARCHAR2 ,
53 p_old_s_rule_call_cd IN VARCHAR2 ,
54 p_new_s_rule_call_cd IN VARCHAR2 ,
55 p_message_name OUT NOCOPY VARCHAR2 )
56 RETURN BOOLEAN AS
57 gv_other_detail VARCHAR2(255);
58 BEGIN -- prgp_val_prgc_upd
59 -- Validate the IGS_PR_RU_CAT.s_rule_call_cd can only be updated if
60 -- there are no IGS_PR_RULE or IGS_PR_RU_APPL records linked to
61 -- this IGS_PR_RU_CAT.
62 DECLARE
63 v_dummy VARCHAR2(1);
64 CURSOR c_prr IS
65 SELECT 'X'
66 FROM IGS_PR_RULE prr
67 WHERE prr.progression_rule_cat = p_progression_rule_cat;
68 CURSOR c_pra IS
69 SELECT 'X'
70 FROM IGS_PR_RU_APPL pra
71 WHERE pra.progression_rule_cat = p_progression_rule_cat AND
72 pra.rul_sequence_number IS NOT NULL;
73 BEGIN
74 -- Set the default message number
75 p_message_name := null;
76 IF p_progression_rule_cat IS NULL OR
77 p_old_s_rule_call_cd IS NULL OR
78 p_new_s_rule_call_cd IS NULL THEN
79 RETURN TRUE;
80 END IF;
81 -- If the s_rule_call_cd has been changed
82 IF p_old_s_rule_call_cd <>
83 p_new_s_rule_call_cd THEN
84 -- Check for any IGS_PR_RULE records using this IGS_PR_RU_CAT
85 OPEN c_prr;
86 FETCH c_prr INTO v_dummy;
87 IF c_prr%FOUND THEN
88 CLOSE c_prr;
89 p_message_name := 'IGS_PR_RUL_RECORD_IN_USE';
90 RETURN FALSE;
91 END IF;
92 CLOSE c_prr;
93 -- Check for any IGS_PR_RU_APPL records using this
94 -- progression_rule_cat
95 OPEN c_pra;
96 FETCH c_pra INTO v_dummy;
97 IF c_pra%FOUND THEN
98 CLOSE c_pra;
99 p_message_name := 'IGS_PR_RUL_APPL_REC_IN_USE';
100 RETURN FALSE;
101 END IF;
102 CLOSE c_pra;
103 END IF;
104 RETURN TRUE;
105 EXCEPTION
106 WHEN OTHERS THEN
107 IF c_prr%ISOPEN THEN
108 CLOSE c_prr;
109 END IF;
110 IF c_pra%ISOPEN THEN
111 CLOSE c_pra;
112 END IF;
113 RAISE;
114 END;
115 EXCEPTION
116 WHEN OTHERS THEN
117 Fnd_Message.Set_Name('IGS','IGS_GE_UNHANDLED_EXCEPTION');
118 FND_MESSAGE.SET_TOKEN ('NAME', 'IGS_PR_VAL_PRGC.PRGP_VAL_PRGC_UPD');
119 --IGS_GE_MSG_STACK.ADD;
120
121 END prgp_val_prgc_upd;
122 END IGS_PR_VAL_PRGC;