DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_ROLE_JOB_BG_UTILS

Source


1 PACKAGE BODY pa_role_job_bg_utils AS
2 -- $Header: PAXRJBUB.pls 115.3 2003/08/25 19:01:25 ramurthy ship $
3 
4 --
5 --  PROCEDURE
6 --              check_dup_job_bg_defaults
7 --  PURPOSE
8 --              This procedure checks to see that the same Business Group
9 --              has not already had job defaults specified for a given role.
10 --  HISTORY
11 --     17-Jul-2003      Ranjana Murthy    - Created
12 --
13 -- PROCEDURE check_dup_job_bg_defaults
14 -- This procedure checks if the role already has job defaults for the given
15 -- business group - a role can only have one set of job defaults
16 -- for a business group.
17 -- It will be called from the private api before inserting
18 -- a new record into the role job defaults table or before updating
19 -- an existing record
20 
21 PROCEDURE check_dup_job_bg_defaults(
22                         p_role_job_bg_id       IN  NUMBER
23                        ,p_project_role_id      IN  NUMBER
24                        ,p_business_group_id    IN  NUMBER
25                        ,p_return_status        OUT NOCOPY VARCHAR2
26                        ,p_error_message_code   OUT NOCOPY VARCHAR2) IS
27 
28 cursor c_exists is
29 select 'Y'
30 from   pa_role_job_bgs
31 where  project_role_id = p_project_role_id
32 and    nvl(business_group_id, -99) = nvl(p_business_group_id, -99)
33 and    role_job_bg_id <> nvl(p_role_job_bg_id, -99);
34 
35 l_dummy VARCHAR2(1) ;
36 
37 BEGIN
38 -- hr_utility.trace_on(NULL, 'RMDUP');
39     --hr_utility.trace('start');
40     --hr_utility.trace('P_ROLE_JOB_BG_ID IS : ' || P_ROLE_JOB_BG_ID);
41     --hr_utility.trace('P_PROJECT_ROLE_ID IS : ' || P_PROJECT_ROLE_ID);
42     --hr_utility.trace('P_BUSINESS_GROUP_ID IS : ' || P_BUSINESS_GROUP_ID);
43 
44 OPEN c_exists;
45 FETCH c_exists into l_dummy;
46 IF c_exists%NOTFOUND THEN
47     p_return_status := fnd_api.g_ret_sts_success;
48 ELSE
49   p_return_status := fnd_api.g_ret_sts_error;
50   p_error_message_code := 'PA_DUP_ROLE_JOB_BG';
51 END IF;
52  CLOSE c_exists;
53 EXCEPTION
54    WHEN OTHERS THEN
55      CLOSE c_exists;
56      p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
57      p_error_message_code := SQLCODE;
58 END check_dup_job_bg_defaults;
59 
60 -- These functions are called from the view PA_PROJECT_ROLE_TYPES_VL
61 -- to get the job defaults based on the profile values for CBGA and
62 -- HR BG ID.
63 
64 FUNCTION get_job_id(p_project_role_id IN  NUMBER) return NUMBER IS
65 
66 l_job_id          NUMBER;
67 l_bg_id           NUMBER;
68 
69 BEGIN
70 
71 -- Using HR Profile BG ID for now - not sure where all this
72 -- is used; this may need to change to go off of implementation options.
73 
74 IF PA_CROSS_BUSINESS_GRP.IsCrossBGProfile = 'N' THEN
75    l_bg_id := fnd_profile.value('PER_BUSINESS_GROUP_ID');
76 ELSE
77    l_bg_id := -1;
78 END IF;
79 
80 BEGIN
81 
82    SELECT job_id
83    into   l_job_id
84    FROM   pa_role_job_bgs
85    WHERE  project_role_id = p_project_role_id
86    AND    nvl(business_group_id, -1) = l_bg_id;
87 
88    EXCEPTION
89       WHEN NO_DATA_FOUND THEN
90          l_job_id := NULL;
91 END;
92 
93 RETURN l_job_id;
94 
95 END get_job_id;
96 
97 --
98 FUNCTION get_min_job_level(p_project_role_id IN  NUMBER) return NUMBER IS
99 
100 l_min_job_level   NUMBER;
101 l_bg_id           NUMBER;
102 
103 BEGIN
104 
105 -- Using HR Profile BG ID for now - not sure where all this
106 -- is used; this may need to change to go off of implementation options.
107 
108 IF PA_CROSS_BUSINESS_GRP.IsCrossBGProfile = 'N' THEN
109    l_bg_id := fnd_profile.value('PER_BUSINESS_GROUP_ID');
110 ELSE
111    l_bg_id := -1;
112 END IF;
113 
114 BEGIN
115 
116    SELECT min_job_level
117    into   l_min_job_level
118    FROM   pa_role_job_bgs
119    WHERE  project_role_id = p_project_role_id
120    AND    nvl(business_group_id, -1) = l_bg_id;
121 
122    EXCEPTION
123       WHEN NO_DATA_FOUND THEN
124          l_min_job_level := NULL;
125 END;
126 
127 RETURN l_min_job_level;
128 
129 END get_min_job_level;
130 
131 --
132 FUNCTION get_max_job_level(p_project_role_id IN  NUMBER) return NUMBER IS
133 
134 l_max_job_level   NUMBER;
135 l_bg_id           NUMBER;
136 
137 BEGIN
138 
139 -- Using HR Profile BG ID for now - not sure where all this
140 -- is used; this may need to change to go off of implementation options.
141 
142 IF PA_CROSS_BUSINESS_GRP.IsCrossBGProfile = 'N' THEN
143    l_bg_id := fnd_profile.value('PER_BUSINESS_GROUP_ID');
144 ELSE
145    l_bg_id := -1;
146 END IF;
147 
148 BEGIN
149 
150    SELECT max_job_level
151    into   l_max_job_level
152    FROM   pa_role_job_bgs
153    WHERE  project_role_id = p_project_role_id
154    AND    nvl(business_group_id, -1) = l_bg_id;
155 
156    EXCEPTION
157       WHEN NO_DATA_FOUND THEN
158          l_max_job_level := NULL;
159 END;
160 
161 RETURN l_max_job_level;
162 
163 END get_max_job_level;
164 
165 
166 end pa_role_job_bg_utils ;