[Home] [Help]
PACKAGE BODY: APPS.AMV_USER_PVT
Source
1 PACKAGE BODY amv_user_pvt AS
2 /* $Header: amvvusrb.pls 120.1 2005/06/29 10:43:09 appldev ship $ */
3 -- * * * USER BLOCK API * * *
4 --
5 -- NAME
6 -- AMV_USER_PVT
7 --
8 -- HISTORY
9 -- 11/04/1999 PWU CREATED
10 --
11 -- 06/30/2000 SHITIJ VATSA UPDATED
12 --
13 -- 12/26/2002 KALYAN Modified pls refer the bug# 2709045,272331
14 --
15 -- (svatsa) Made the following changes for Territory Privilege Integration
16 -- 1. Modified the API Get_RoleIDArray to support Territory Intg
17 -- 2. Modified the API Get_Role to support Territory Intg
18 --
19 -- 12/21/00 MADESAI MODIFIED DELETE_GROUP API to add code to delete
20 -- from amv_c_channels when a Group is deleted.
21 --
22 -- 8/20/03 SHARMA replaced email by username in find resource proc
23 --
24 --
25 G_PKG_NAME CONSTANT VARCHAR2(30) := 'AMV_USER_PVT';
26 G_FILE_NAME CONSTANT VARCHAR2(12) := 'amvvusrb.pls';
27 --
28 G_RESOURCE_ROLE_CODE CONSTANT VARCHAR2(30) := 'RS_INDIVIDUAL';
29 G_GROUP_ROLE_CODE CONSTANT VARCHAR2(30) := 'RS_GROUP';
30 -- Debug mode
31 G_DEBUG boolean := FALSE;
32 --G_DEBUG boolean := TRUE;
33 --
34 --
35 TYPE CursorType IS REF CURSOR;
36 --
37 --
38 ----------------------------- Private Portinon ---------------------------------
39 --------------------------------------------------------------------------------
40 FUNCTION Get_RoleId
41 (
42 p_role_code VARCHAR2
43 ) return NUMBER;
44 PROCEDURE Add_Access_Helper
45 (
46 p_access_obj IN AMV_ACCESS_OBJ_TYPE,
47 x_return_status OUT NOCOPY VARCHAR2,
48 x_access_id OUT NOCOPY NUMBER
49 );
50 PROCEDURE Update_Access_Helper
51 (
52 p_access_obj IN AMV_ACCESS_OBJ_TYPE,
53 x_return_status OUT NOCOPY VARCHAR2
54 );
55 --------------------------------------------------------------------------------
56 FUNCTION Get_RoleId
57 (
58 p_role_code VARCHAR2
59 ) return NUMBER AS
60 --
61 CURSOR Get_MES_Role_Id_csr (p_role_code IN VARCHAR2) IS
62 Select
63 role_id
64 From jtf_rs_roles_vl
65 Where role_code = p_role_code
66 And role_type_code = G_MES_ROLE_TYPE_NAME
67 ;
68 l_role_id number := FND_API.G_MISS_NUM;
69 BEGIN
70 OPEN Get_MES_Role_Id_csr(p_role_code);
71 FETCH Get_MES_Role_Id_csr INTO l_role_id;
72 CLOSE Get_MES_Role_Id_csr;
73 return l_role_id;
74 END Get_RoleId;
75 --------------------------------------------------------------------------------
76 FUNCTION Get_Role(p_resource_id IN NUMBER, p_resource_type IN VARCHAR2)
77 RETURN STRING AS
78 l_return_str VARCHAR2(7) := '';
79 l_temp NUMBER;
80
81 CURSOR check_role_csr(p_role_code IN VARCHAR2) IS
82 Select
83 rol.role_id
84 From jtf_rs_roles_vl rol, jtf_rs_role_relations_vl rel
85 Where rol.role_id = rel.role_id
86 And rel.role_resource_id = p_resource_id
87 And rel.role_resource_type = p_resource_type
88 And rol.role_type_code = G_MES_ROLE_TYPE_NAME
89 And rol.role_code = p_role_code;
90
91 BEGIN
92 OPEN check_role_csr(G_ADMINISTRTOR_CODE);
93 FETCH check_role_csr INTO l_temp;
94 IF (check_role_csr%FOUND) THEN
95 l_return_str := l_return_str || 'T';
96 ELSE
97 l_return_str := l_return_str || 'F';
98 END IF;
99 CLOSE check_role_csr;
100
101 OPEN check_role_csr(G_CAN_PUBLISH_CODE);
102 FETCH check_role_csr INTO l_temp;
103 IF (check_role_csr%FOUND) THEN
104 l_return_str := l_return_str || 'T';
105 ELSE
106 l_return_str := l_return_str || 'F';
107 END IF;
108 CLOSE check_role_csr;
109
110 OPEN check_role_csr(G_CAN_APPROVE_CODE);
111 FETCH check_role_csr INTO l_temp;
112 IF (check_role_csr%FOUND) THEN
113 l_return_str := l_return_str || 'T';
114 ELSE
115 l_return_str := l_return_str || 'F';
116 END IF;
117 CLOSE check_role_csr;
118
119 OPEN check_role_csr(G_CAN_SETUP_CHANNEL_CODE);
120 FETCH check_role_csr INTO l_temp;
121 IF (check_role_csr%FOUND) THEN
122 l_return_str := l_return_str || 'T';
123 ELSE
124 l_return_str := l_return_str || 'F';
125 END IF;
126 CLOSE check_role_csr;
127
128 OPEN check_role_csr(G_CAN_SETUP_CATEGORY_CODE);
129 FETCH check_role_csr INTO l_temp;
130 IF (check_role_csr%FOUND) THEN
131 l_return_str := l_return_str || 'T';
132 ELSE
133 l_return_str := l_return_str || 'F';
134 END IF;
135 CLOSE check_role_csr;
136
137 OPEN check_role_csr(G_CAN_SETUP_DIST_CODE);
138 FETCH check_role_csr INTO l_temp;
139 IF (check_role_csr%FOUND) THEN
140 l_return_str := l_return_str || 'T';
141 ELSE
142 l_return_str := l_return_str || 'F';
143 END IF;
144 CLOSE check_role_csr;
145
146 -- Begin : Territory Integration
147 -- 07/06/2000 svatsa
148 OPEN check_role_csr(G_CAN_SETUP_TERRITORY_CODE);
149 FETCH check_role_csr INTO l_temp;
150 IF (check_role_csr%FOUND) THEN
151 l_return_str := l_return_str || 'T';
152 ELSE
153 l_return_str := l_return_str || 'F';
154 END IF;
155 CLOSE check_role_csr;
156 -- End : Territory Integration
157
158 RETURN l_return_str;
159 --dbms_output.put_line('l_return_str'||l_return_str);
160 EXCEPTION
161 WHEN OTHERS THEN
162 l_return_str := 'FFFFFFF';
163 RETURN l_return_str;
164 END Get_Role;
165 --------------------------------------------------------------------------------
166 PROCEDURE Get_RoleIDArray
167 (p_role_code_array IN VARCHAR2,
168 x_role_id_varray OUT NOCOPY AMV_NUMBER_VARRAY_TYPE
169 ) AS
170 l_str VARCHAR2(1);
171 l_index NUMBER := 1;
172 BEGIN
173 x_role_id_varray := AMV_NUMBER_VARRAY_TYPE();
174 l_str := substr(p_role_code_array, 1, 1);
175 IF (l_str = 'T') THEN
176 x_role_id_varray.extend;
177 x_role_id_varray(l_index) := Get_RoleId(G_ADMINISTRTOR_CODE);
178 l_index := l_index + 1;
179 END IF;
180 l_str := substr(p_role_code_array, 2, 1);
181 IF (l_str = 'T') THEN
182 x_role_id_varray.extend;
183 x_role_id_varray(l_index) := Get_RoleId(G_CAN_PUBLISH_CODE);
184 l_index := l_index + 1;
185 END IF;
186 l_str := substr(p_role_code_array, 3, 1);
187 IF (l_str = 'T') THEN
188 x_role_id_varray.extend;
189 x_role_id_varray(l_index) := Get_RoleId(G_CAN_APPROVE_CODE);
190 l_index := l_index + 1;
191 END IF;
192 l_str := substr(p_role_code_array, 4, 1);
193 IF (l_str = 'T') THEN
194 x_role_id_varray.extend;
195 x_role_id_varray(l_index) := Get_RoleId(G_CAN_SETUP_CHANNEL_CODE);
196 l_index := l_index + 1;
197 END IF;
198 l_str := substr(p_role_code_array, 5, 1);
199 IF (l_str = 'T') THEN
200 x_role_id_varray.extend;
201 x_role_id_varray(l_index) := Get_RoleId(G_CAN_SETUP_CATEGORY_CODE);
202 l_index := l_index + 1;
203 END IF;
204 l_str := substr(p_role_code_array, 6, 1);
205 IF (l_str = 'T') THEN
206 x_role_id_varray.extend;
207 x_role_id_varray(l_index) := Get_RoleId(G_CAN_SETUP_DIST_CODE);
208 l_index := l_index + 1;
209 END IF;
210
211 -- Begin : Territory Integration
212 -- 06/30/2000 svatsa
213 l_str := substr(p_role_code_array, 7, 1);
214 IF (l_str = 'T') THEN
215 x_role_id_varray.extend;
216 x_role_id_varray(l_index) := Get_RoleId(G_CAN_SETUP_TERRITORY_CODE);
217 l_index := l_index + 1;
218 END IF;
219 -- End : Territory Integration
220
221 END Get_RoleIDArray;
222 --------------------------------------------------------------------------------
223 PROCEDURE Add_Access_Helper
224 (
225 p_access_obj IN AMV_ACCESS_OBJ_TYPE,
226 x_return_status OUT NOCOPY VARCHAR2,
227 x_access_id OUT NOCOPY NUMBER
228 ) AS
229 --
230 l_api_name CONSTANT VARCHAR2(30) := 'Add_Access_helper';
231 l_current_user_id NUMBER;
232 l_current_login_id NUMBER;
233 l_current_resource_id NUMBER;
234 l_current_user_status VARCHAR2(30);
235 --
236 l_access_id NUMBER;
237 l_date DATE;
238 l_access_obj AMV_ACCESS_OBJ_TYPE;
239 --
240 CURSOR Get_IDandDate_csr is
241 Select amv_u_access_s.nextval, sysdate
242 From Dual;
243 --
244 BEGIN
245 SAVEPOINT Add_Access_helper_PVT;
246 -- Get the current (login) user id.
247 AMV_UTILITY_PVT.Get_UserInfo(
248 x_user_id => l_current_user_id,
249 x_login_id => l_current_login_id,
250 x_resource_id => l_current_resource_id,
251 x_user_status => l_current_user_status
252 );
253 -- This is to make database happy
254 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
255 l_current_login_id := -1;
256 l_current_user_id := -1;
257 l_current_resource_id := -1;
258 END IF;
259 OPEN Get_IDandDate_csr;
260 FETCH Get_IDandDate_csr INTO l_access_id, l_date;
261 CLOSE Get_IDandDate_csr;
262 l_access_obj := p_access_obj;
263 -- Maybe we add more checking on the passed object and make some change.
264 Insert into amv_u_access
265 (
266 ACCESS_ID,
267 OBJECT_VERSION_NUMBER,
268 CREATION_DATE,
269 CREATED_BY,
270 LAST_UPDATE_DATE,
271 LAST_UPDATED_BY,
272 LAST_UPDATE_LOGIN,
273 ACCESS_TO_TABLE_CODE,
274 ACCESS_TO_TABLE_RECORD_ID,
275 USER_OR_GROUP_ID,
276 USER_OR_GROUP_TYPE,
277 EFFECTIVE_START_DATE,
278 EXPIRATION_DATE,
279 CAN_VIEW_FLAG,
280 CAN_CREATE_FLAG,
281 CAN_DELETE_FLAG,
282 CAN_UPDATE_FLAG,
283 CAN_CREATE_DIST_RULE_FLAG,
284 CHL_APPROVER_FLAG,
285 CHL_REQUIRED_FLAG,
286 CHL_REQUIRED_NEED_NOTIF_FLAG
287 )
288 values
289 (
290 l_access_id,
291 1, --OBJECT_VERSION_NUMBER
292 l_date,
293 l_current_user_id,
294 l_date,
295 l_current_user_id,
296 l_current_login_id,
297 l_access_obj.ACCESS_TO_TABLE_CODE,
298 l_access_obj.ACCESS_TO_TABLE_RECORD_ID,
299 l_access_obj.USER_OR_GROUP_ID,
300 l_access_obj.USER_OR_GROUP_TYPE,
301 l_access_obj.EFFECTIVE_START_DATE,
302 l_access_obj.EXPIRATION_DATE,
303 l_access_obj.CAN_VIEW_FLAG,
304 l_access_obj.CAN_CREATE_FLAG,
305 l_access_obj.CAN_DELETE_FLAG,
306 l_access_obj.CAN_UPDATE_FLAG,
307 l_access_obj.CAN_CREATE_DIST_RULE_FLAG,
308 l_access_obj.CHL_APPROVER_FLAG,
309 l_access_obj.CHL_REQUIRED_FLAG,
310 l_access_obj.CHL_REQUIRED_NEED_NOTIF_FLAG
311 );
312 x_access_id := l_access_id;
313 x_return_status := FND_API.G_RET_STS_SUCCESS;
314 EXCEPTION
315 WHEN OTHERS THEN
316 ROLLBACK TO Add_Access_helper_PVT;
317 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
318 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
319 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
320 END IF;
321 END Add_Access_helper;
322 --------------------------------------------------------------------------------
323 PROCEDURE Update_Access_helper
324 (
325 p_access_obj IN AMV_ACCESS_OBJ_TYPE,
326 x_return_status OUT NOCOPY VARCHAR2
327 ) AS
328 --
329 l_api_name CONSTANT VARCHAR2(30) := 'Update_Access_helper';
330 l_current_user_id NUMBER;
331 l_current_login_id NUMBER;
332 l_current_resource_id NUMBER;
333 l_current_user_status VARCHAR2(30);
334 --
335 l_access_id NUMBER;
336 l_access_obj AMV_ACCESS_OBJ_TYPE;
337 --
338 BEGIN
339 SAVEPOINT Update_Access_helper_PVT;
340 -- Get the current (login) user id.
341 AMV_UTILITY_PVT.Get_UserInfo(
342 x_user_id => l_current_user_id,
343 x_login_id => l_current_login_id,
344 x_resource_id => l_current_resource_id,
345 x_user_status => l_current_user_status
346 );
347 -- This is to make database happy
348 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
349 l_current_login_id := -1;
350 l_current_user_id := -1;
351 l_current_resource_id := -1;
352 END IF;
353 l_access_obj := p_access_obj;
354 -- Maybe we add more checking on the passed object and make some change.
355 Update amv_u_access
356 Set LAST_UPDATE_DATE = sysdate,
357 LAST_UPDATED_BY = l_current_user_id,
358 LAST_UPDATE_LOGIN = l_current_login_id,
359 OBJECT_VERSION_NUMBER = object_version_number + 1,
360 EFFECTIVE_START_DATE = decode(l_access_obj.effective_start_date,
361 FND_API.G_MISS_DATE, EFFECTIVE_START_DATE,
362 l_access_obj.effective_start_date),
363 EXPIRATION_DATE = decode(l_access_obj.expiration_date,
364 FND_API.G_MISS_DATE, EXPIRATION_DATE,
365 l_access_obj.expiration_date),
366 CAN_VIEW_FLAG = decode(l_access_obj.can_view_flag,
367 FND_API.G_MISS_CHAR, CAN_VIEW_FLAG,
368 l_access_obj.can_view_flag),
369 CAN_CREATE_FLAG = decode(l_access_obj.can_create_flag,
370 FND_API.G_MISS_CHAR, CAN_CREATE_FLAG,
371 l_access_obj.can_create_flag),
372 CAN_DELETE_FLAG = decode(l_access_obj.can_delete_flag,
373 FND_API.G_MISS_CHAR, CAN_DELETE_FLAG,
374 l_access_obj.can_delete_flag),
375 CAN_UPDATE_FLAG = decode(l_access_obj.can_update_flag,
376 FND_API.G_MISS_CHAR, CAN_UPDATE_FLAG,
377 l_access_obj.can_update_flag),
378 CAN_CREATE_DIST_RULE_FLAG =
379 decode(l_access_obj.can_create_dist_rule_flag,
380 FND_API.G_MISS_CHAR, CAN_CREATE_DIST_RULE_FLAG,
381 l_access_obj.can_create_dist_rule_flag),
382 CHL_APPROVER_FLAG = decode(l_access_obj.chl_approver_flag,
383 FND_API.G_MISS_CHAR, CHL_APPROVER_FLAG,
384 l_access_obj.chl_approver_flag),
385 CHL_REQUIRED_FLAG = decode(l_access_obj.chl_required_flag,
386 FND_API.G_MISS_CHAR, CHL_REQUIRED_FLAG,
387 l_access_obj.chl_required_flag),
388 CHL_REQUIRED_NEED_NOTIF_FLAG =
389 decode(l_access_obj.chl_required_need_notif_flag,
390 FND_API.G_MISS_CHAR, CHL_REQUIRED_NEED_NOTIF_FLAG,
391 l_access_obj.chl_required_need_notif_flag)
392 where access_id = l_access_obj.access_id
393 ;--and object_version_number = l_access_obj.access_id.object_version_number;
394 IF (SQL%NOTFOUND) THEN
395 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
396 FND_MESSAGE.Set_Name('AMV', 'AMV_INVALID_ACCESS_ID');
397 FND_MESSAGE.Set_Token('ACCESS_ID', TO_CHAR(l_access_obj.access_id) );
398 FND_MSG_PUB.add;
399 END IF;
400 RAISE FND_API.G_EXC_ERROR;
401 END IF;
402 x_return_status := FND_API.G_RET_STS_SUCCESS;
403 EXCEPTION
404 WHEN OTHERS THEN
405 ROLLBACK TO Update_Access_helper_PVT;
406 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
407 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
408 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME,l_api_name);
409 END IF;
410 END Update_Access_helper;
411 --------------------------------------------------------------------------------
412 --------------------------------------------------------------------------------
413 PROCEDURE Get_ResourceId
414 (
415 p_api_version IN NUMBER,
416 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
417 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
418 x_return_status OUT NOCOPY VARCHAR2,
419 x_msg_count OUT NOCOPY NUMBER,
420 x_msg_data OUT NOCOPY VARCHAR2,
421 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
422 p_user_id IN NUMBER := FND_API.G_MISS_NUM,
423 x_resource_id OUT NOCOPY NUMBER
424 ) AS
425 l_api_name CONSTANT VARCHAR2(30) := 'Get_ResourceId';
426 l_api_version CONSTANT NUMBER := 1.0;
427 l_current_user_id NUMBER;
428 l_current_login_id NUMBER;
429 l_current_resource_id NUMBER;
430 l_current_user_status VARCHAR2(30);
431 --
432 BEGIN
433 -- Standard call to check for call compatibility.
434 IF NOT FND_API.Compatible_API_Call (
435 l_api_version,
436 p_api_version,
437 l_api_name,
438 G_PKG_NAME) THEN
439 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
440 END IF;
441 --Initialize message list if p_init_msg_list is TRUE.
442 IF FND_API.To_Boolean (p_init_msg_list) THEN
443 FND_MSG_PUB.initialize;
444 END IF;
445 -- Initialize API return status to success
446 x_return_status := FND_API.G_RET_STS_SUCCESS;
447 -- Get the current (login) user id.
448 AMV_UTILITY_PVT.Get_UserInfo(
449 x_user_id => l_current_user_id,
450 x_login_id => l_current_login_id,
451 x_resource_id => l_current_resource_id,
452 x_user_status => l_current_user_status
453 );
454 IF (p_check_login_user = FND_API.G_TRUE) THEN
455 -- Check if user is login and has the required privilege.
456 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
457 -- User is not login.
458 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
459 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
460 FND_MSG_PUB.Add;
461 END IF;
462 RAISE FND_API.G_EXC_ERROR;
463 END IF;
464 END IF;
465 IF (p_user_id = l_current_user_id) THEN
466 x_resource_id := l_current_resource_id;
467 ELSE
468 AMV_UTILITY_PVT.Get_ResourceId
469 (
470 p_user_id => p_user_id,
471 x_resource_id => x_resource_id
472 );
473 END IF;
474 --Standard call to get message count and if count=1, get the message
475 FND_MSG_PUB.Count_And_Get (
476 p_encoded => FND_API.G_FALSE,
477 p_count => x_msg_count,
478 p_data => x_msg_data
479 );
480 EXCEPTION
481 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
482 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
483 -- Standard call to get message count and if count=1, get the message
484 FND_MSG_PUB.Count_And_Get (
485 p_encoded => FND_API.G_FALSE,
486 p_count => x_msg_count,
487 p_data => x_msg_data
488 );
489 WHEN FND_API.G_EXC_ERROR THEN
490 x_return_status := FND_API.G_RET_STS_ERROR;
491 -- Standard call to get message count and if count=1, get the message
492 FND_MSG_PUB.Count_And_Get (
493 p_encoded => FND_API.G_FALSE,
494 p_count => x_msg_count,
495 p_data => x_msg_data
496 );
497 WHEN OTHERS THEN
498 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
499 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
500 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
501 END IF;
502 -- Standard call to get message count and if count=1, get the message
503 FND_MSG_PUB.Count_And_Get (
504 p_encoded => FND_API.G_FALSE,
505 p_count => x_msg_count,
506 p_data => x_msg_data
507 );
508 END Get_ResourceId;
509 --------------------------------------------------------------------------------
510 PROCEDURE Find_Resource
511 (
512 p_api_version IN NUMBER,
513 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
514 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
515 x_return_status OUT NOCOPY VARCHAR2,
516 x_msg_count OUT NOCOPY NUMBER,
517 x_msg_data OUT NOCOPY VARCHAR2,
518 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
519 p_group_id IN NUMBER := FND_API.G_MISS_NUM,
520 p_check_effective_date IN VARCHAR2 := FND_API.G_TRUE,
521 p_user_name IN VARCHAR2 := FND_API.G_MISS_CHAR,
522 p_last_name IN VARCHAR2 := FND_API.G_MISS_CHAR,
523 p_first_name IN VARCHAR2 := FND_API.G_MISS_CHAR,
524 p_subset_request_obj IN AMV_REQUEST_OBJ_TYPE,
525 x_subset_return_obj OUT NOCOPY AMV_RETURN_OBJ_TYPE,
526 x_resource_obj_array OUT NOCOPY AMV_RESOURCE_OBJ_VARRAY
527 ) AS
528 l_api_name CONSTANT VARCHAR2(30) := 'Find_Resource';
529 l_api_version CONSTANT NUMBER := 1.0;
530 l_current_user_id NUMBER;
531 l_current_login_id NUMBER;
532 l_current_resource_id NUMBER;
533 l_current_user_status VARCHAR2(30);
534 --
535 l_cursor CursorType;
536 l_sql_statement VARCHAR2(2000);
537 l_sql_statement2 VARCHAR2(2000);
538 l_where_clause VARCHAR2(2000);
539 l_total_count NUMBER := 1;
540 l_fetch_count NUMBER := 0;
541 l_start_with NUMBER;
542 l_total_record_count NUMBER;
543 --
544 l_resource_id NUMBER;
545 l_person_id NUMBER;
546 l_user_name VARCHAR2(80);
547 l_resource_name VARCHAR2(80);
548 l_first_name VARCHAR2(40);
549 l_last_name VARCHAR2(40);
550 l_search VARCHAR2(2000);
551 --
552 BEGIN
553 -- Standard call to check for call compatibility.
554 IF NOT FND_API.Compatible_API_Call (
555 l_api_version,
556 p_api_version,
557 l_api_name,
558 G_PKG_NAME) THEN
559 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
560 END IF;
561 --Initialize message list if p_init_msg_list is TRUE.
562 IF FND_API.To_Boolean (p_init_msg_list) THEN
563 FND_MSG_PUB.initialize;
564 END IF;
565 -- Initialize API return status to success
566 x_return_status := FND_API.G_RET_STS_SUCCESS;
567 -- Get the current (login) user id.
568 AMV_UTILITY_PVT.Get_UserInfo(
569 x_user_id => l_current_user_id,
570 x_login_id => l_current_login_id,
571 x_resource_id => l_current_resource_id,
572 x_user_status => l_current_user_status
573 );
574 IF (p_check_login_user = FND_API.G_TRUE) THEN
575 -- Check if user is login and has the required privilege.
576 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
577 -- User is not login.
578 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
579 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
580 FND_MSG_PUB.Add;
581 END IF;
582 RAISE FND_API.G_EXC_ERROR;
583 END IF;
584 END IF;
585 -- This is to make database happy
586 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
587 l_current_login_id := -1;
588 l_current_user_id := -1;
589 l_current_resource_id := -1;
590 END IF;
591 -- Now create SQL statement and find the results:
592 IF (p_group_id IS NULL OR p_group_id = FND_API.G_MISS_NUM) THEN
593 l_sql_statement :=
594 'Select ' ||
595 'r.source_id, ' ||
596 'r.resource_id, ' ||
597 's.user_name, ' ||
598 'r.resource_name, ' ||
599 'r.first_name, ' ||
600 'r.last_name ' ||
601 'From amv_rs_all_res_extns_vl r, jtf_rs_resource_extns s ';
602 l_sql_statement2 :=
603 'Select count(*) ' ||
604 'From amv_rs_all_res_extns_vl r, jtf_rs_resource_extns s ';
605 l_where_clause := 'Where s.resource_id = r.resource_id ';
606 ELSE
607 l_sql_statement :=
608 'Select ' ||
609 'r.source_id, ' ||
610 'r.resource_id, ' ||
611 's.user_name, ' ||
612 'r.resource_name, ' ||
613 'r.first_name, ' ||
614 'r.last_name ' ||
615 'From amv_rs_all_res_extns_vl r, jtf_rs_group_members m, jtf_rs_resource_extns s ';
616 l_sql_statement2 :=
617 'Select count(*) ' ||
618 'From amv_rs_all_res_extns_vl r, jtf_rs_group_members m, jtf_rs_resource_extns s ';
619 l_where_clause :=
620 'Where m.resource_id = r.resource_id ' ||
621 'And s.resource_id = r.resource_id ' ||
622 'And m.delete_flag <> ''Y'' ' ||
623 'And m.group_id = ' || p_group_id || ' ';
624 IF (p_check_effective_date = FND_API.G_TRUE) THEN
625 l_sql_statement := l_sql_statement || ', jtf_rs_groups_vl g ';
626 l_sql_statement2 := l_sql_statement2 || ', jtf_rs_groups_vl g ';
627 l_where_clause := l_where_clause ||
628 'And g.group_id = ' || p_group_id || ' ' ||
629 --'And r.start_date_active < sysdate ' ||
630 --'And nvl(r.end_date_active, sysdate+1) > sysdate ' ||
631 'And g.start_date_active < sysdate ' ||
632 'And nvl(g.end_date_active, sysdate+1) > sysdate ';
633 END IF;
634 END IF;
635 IF (p_user_name IS NOT NULL AND p_user_name <> FND_API.G_MISS_CHAR) THEN
636 l_where_clause := l_where_clause ||
637 'And ( upper(s.user_name) Like upper(''' || p_user_name || ''') ' ||
638 'OR upper(r.resource_name) Like upper(''' || p_user_name || ''')' ||
639 'OR upper(r.first_name) Like upper(''' || p_user_name || ''') ' ||
640 'OR upper(r.last_name) Like upper(''' || p_user_name || ''') ) ';
641 END IF;
642
643
644 l_sql_statement := l_sql_statement ||
645 l_where_clause || 'ORDER BY r.last_name, r.first_name ';
646 l_sql_statement2 := l_sql_statement2 || l_where_clause;
647
648 IF (G_DEBUG = TRUE) THEN
649 AMV_UTILITY_PVT.PRINT_DEBUG_MESSAGE(l_sql_statement);
650 END IF;
651 --Execute the SQL statements to get the total count:
652 IF (p_subset_request_obj.return_total_count_flag = FND_API.G_TRUE) THEN
653 OPEN l_cursor FOR l_sql_statement2;
654 FETCH l_cursor INTO l_total_record_count;
655 CLOSE l_cursor;
656 END IF;
657
658
659 --Execute the SQL statements to get records
660 l_start_with := p_subset_request_obj.start_record_position;
661 x_resource_obj_array := AMV_RESOURCE_OBJ_VARRAY();
662 OPEN l_cursor FOR l_sql_statement;
663 LOOP
664 FETCH l_cursor INTO
665 l_person_id,
666 l_resource_id,
667 l_user_name,
668 l_resource_name,
669 l_first_name,
670 l_last_name;
671 EXIT WHEN l_cursor%NOTFOUND;
672 IF (l_start_with <= l_total_count AND
673 l_fetch_count < p_subset_request_obj.records_requested) THEN
674 l_fetch_count := l_fetch_count + 1;
675 x_resource_obj_array.extend;
676 x_resource_obj_array(l_fetch_count).resource_id := l_resource_id;
677 x_resource_obj_array(l_fetch_count).person_id := l_person_id;
678 x_resource_obj_array(l_fetch_count).user_name := l_user_name;
679
680 /* Check for null first/last name. If null, use resource_name */
681 IF (l_first_name IS NULL OR l_last_name IS NULL) THEN
682 x_resource_obj_array(l_fetch_count).first_name := l_resource_name;
683 x_resource_obj_array(l_fetch_count).last_name := '';
684 ELSE
685 x_resource_obj_array(l_fetch_count).first_name := l_first_name;
686 x_resource_obj_array(l_fetch_count).last_name := l_last_name;
687 END IF;
688
689 END IF;
690 IF (l_fetch_count >= p_subset_request_obj.records_requested) THEN
691 exit;
692 END IF;
693 l_total_count := l_total_count + 1;
694 END LOOP;
695 CLOSE l_cursor;
696
697 x_subset_return_obj.returned_record_count := l_fetch_count;
698 x_subset_return_obj.next_record_position := p_subset_request_obj.start_record_position + l_fetch_count;
699 x_subset_return_obj.total_record_count := l_total_record_count;
700
701 /*
702 x_subset_return_obj := AMV_RETURN_OBJ_TYPE
703 (
704 l_fetch_count,
705 p_subset_request_obj.start_record_position + l_fetch_count,
706 l_total_record_count
707 );
708 */
709 --Standard call to get message count and if count=1, get the message
710 FND_MSG_PUB.Count_And_Get (
711 p_encoded => FND_API.G_FALSE,
712 p_count => x_msg_count,
713 p_data => x_msg_data
714 );
715 EXCEPTION
716 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
717 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
718 -- Standard call to get message count and if count=1, get the message
719 FND_MSG_PUB.Count_And_Get (
720 p_encoded => FND_API.G_FALSE,
721 p_count => x_msg_count,
722 p_data => x_msg_data
723 );
724 WHEN FND_API.G_EXC_ERROR THEN
725 x_return_status := FND_API.G_RET_STS_ERROR;
726 -- Standard call to get message count and if count=1, get the message
727 FND_MSG_PUB.Count_And_Get (
728 p_encoded => FND_API.G_FALSE,
729 p_count => x_msg_count,
730 p_data => x_msg_data
731 );
732 WHEN OTHERS THEN
733 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
734 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
735 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
736 END IF;
737 -- Standard call to get message count and if count=1, get the message
738 FND_MSG_PUB.Count_And_Get (
739 p_encoded => FND_API.G_FALSE,
740 p_count => x_msg_count,
741 p_data => x_msg_data
742 );
743 END Find_Resource;
744 --------------------------------------------------------------------------------
745 PROCEDURE Find_Resource
746 (
747 p_api_version IN NUMBER,
748 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
749 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
750 x_return_status OUT NOCOPY VARCHAR2,
751 x_msg_count OUT NOCOPY NUMBER,
752 x_msg_data OUT NOCOPY VARCHAR2,
753 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
754 p_resource_id IN NUMBER := FND_API.G_MISS_NUM,
755 p_resource_name IN VARCHAR2 := FND_API.G_MISS_CHAR,
756 p_subset_request_obj IN AMV_REQUEST_OBJ_TYPE,
757 x_subset_return_obj OUT NOCOPY AMV_RETURN_OBJ_TYPE,
758 x_resource_obj_array OUT NOCOPY AMV_RESOURCE_OBJ_VARRAY,
759 x_role_code_varray OUT NOCOPY AMV_CHAR_VARRAY_TYPE
760 ) AS
761 l_api_name CONSTANT VARCHAR2(30) := 'Find_Resource';
762 l_api_version CONSTANT NUMBER := 1.0;
763 l_current_user_id NUMBER;
764 l_current_login_id NUMBER;
765 l_current_resource_id NUMBER;
766 l_current_user_status VARCHAR2(30);
767 --
768 l_cursor CursorType;
769 l_sql_statement VARCHAR2(2000);
770 l_sql_statement2 VARCHAR2(2000);
771 l_where_clause VARCHAR2(2000);
772 l_total_count NUMBER := 1;
773 l_fetch_count NUMBER := 0;
774 l_start_with NUMBER;
775 l_total_record_count NUMBER;
776 --
777 l_resource_id NUMBER;
778 l_person_id NUMBER;
779 l_user_name VARCHAR2(80);
780 l_resource_name VARCHAR2(80);
781 l_first_name VARCHAR2(40);
782 l_last_name VARCHAR2(40);
783 l_search VARCHAR2(2000);
784 --
785 BEGIN
786 --dbms_output.put_line('Enter : Find_Resource');
787 -- Standard call to check for call compatibility.
788 IF NOT FND_API.Compatible_API_Call (
789 l_api_version,
790 p_api_version,
791 l_api_name,
792 G_PKG_NAME) THEN
793 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
794 END IF;
795 --Initialize message list if p_init_msg_list is TRUE.
796 IF FND_API.To_Boolean (p_init_msg_list) THEN
797 FND_MSG_PUB.initialize;
798 END IF;
799 -- Initialize API return status to success
800 x_return_status := FND_API.G_RET_STS_SUCCESS;
801 -- Get the current (login) user id.
802 AMV_UTILITY_PVT.Get_UserInfo(
803 x_user_id => l_current_user_id,
804 x_login_id => l_current_login_id,
805 x_resource_id => l_current_resource_id,
806 x_user_status => l_current_user_status
807 );
808 IF (p_check_login_user = FND_API.G_TRUE) THEN
809 -- Check if user is login and has the required privilege.
810 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
811 -- User is not login.
812 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
813 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
814 FND_MSG_PUB.Add;
815 END IF;
816 RAISE FND_API.G_EXC_ERROR;
817 END IF;
818 END IF;
819 -- This is to make database happy
820 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
821 l_current_login_id := -1;
822 l_current_user_id := -1;
823 l_current_resource_id := -1;
824 END IF;
825 -- Now create SQL statement and find the results:
826 l_sql_statement :=
827 'Select ' ||
828 'r.source_id, ' ||
829 'r.resource_id, ' ||
830 'r.email user_name, ' ||
831 'r.resource_name, ' ||
832 'r.first_name, ' ||
833 'r.last_name ' ||
834 'From amv_rs_all_res_extns_vl r ';
835 l_sql_statement2 :=
836 'Select count(*) ' ||fnd_global.local_chr(10)||
837 'From amv_rs_all_res_extns_vl r ';
838 --l_where_clause := 'Where r.start_date_active < sysdate ' ||
839 -- 'And nvl(r.end_date_active, sysdate+1) > sysdate ';
840 IF ( p_resource_id = FND_API.G_MISS_NUM ) THEN
841 l_where_clause :=
842 'Where ( upper(r.email) Like upper(''' || p_resource_name ||''') ' ||
843 'OR upper(r.resource_name) Like upper('''||p_resource_name||''') ' ||
844 'OR upper(r.first_name) Like upper(''' || p_resource_name || ''') ' ||
845 'OR upper(r.last_name) Like upper(''' || p_resource_name || ''') ) ';
846 ELSE
847 l_where_clause := 'Where resource_id = ' || p_resource_id || ' ';
848
849 END IF;
850 l_sql_statement := l_sql_statement ||fnd_global.local_chr(10)||
851 l_where_clause ||fnd_global.local_chr(10)|| 'ORDER BY r.last_name, r.first_name ';
852
853 l_sql_statement2 := l_sql_statement2 ||fnd_global.local_chr(10)||l_where_clause;
854 IF (G_DEBUG = TRUE) THEN
855 AMV_UTILITY_PVT.PRINT_DEBUG_MESSAGE(l_sql_statement);
856 END IF;
857 --Execute the SQL statements to get the total count:
858 --dbms_output.put_line('l_sql_statement2 : '||l_sql_statement2);
859 IF (p_subset_request_obj.return_total_count_flag = FND_API.G_TRUE) THEN
860 OPEN l_cursor FOR l_sql_statement2;
861 FETCH l_cursor INTO l_total_record_count;
862 CLOSE l_cursor;
863 END IF;
864 --Execute the SQL statements to get records
865
866 l_start_with := p_subset_request_obj.start_record_position;
867 x_resource_obj_array := AMV_RESOURCE_OBJ_VARRAY();
868 x_role_code_varray := AMV_CHAR_VARRAY_TYPE();
869 --dbms_output.put_line('l_sql_statement : '||l_sql_statement);
870
871
872 OPEN l_cursor FOR l_sql_statement;
873 --dbms_output.put_line('Opened cursor');
874 LOOP
875 --dbms_output.put_line('Fetch cursor');
876 FETCH l_cursor INTO
877 l_person_id,
878 l_resource_id,
879 l_user_name,
880 l_resource_name,
881 l_first_name,
882 l_last_name;
883 EXIT WHEN l_cursor%NOTFOUND;
884 IF (l_start_with <= l_total_count AND
885 l_fetch_count < p_subset_request_obj.records_requested) THEN
886 --dbms_output.put_line('Inside IF cursor');
887 l_fetch_count := l_fetch_count + 1;
888 x_resource_obj_array.extend;
889 x_resource_obj_array(l_fetch_count).resource_id := l_resource_id;
890 x_resource_obj_array(l_fetch_count).person_id := l_person_id;
891 x_resource_obj_array(l_fetch_count).user_name := l_user_name;
892
893 /* Check for null first/last name. If null, use resource_name */
894 IF (l_first_name IS NULL OR l_last_name IS NULL) THEN
895 x_resource_obj_array(l_fetch_count).first_name := l_resource_name;
896 x_resource_obj_array(l_fetch_count).last_name := '';
897 ELSE
898 x_resource_obj_array(l_fetch_count).first_name := l_first_name;
899 x_resource_obj_array(l_fetch_count).last_name := l_last_name;
900 END IF;
901
902 --Get the user roles:
903 x_role_code_varray.extend;
904 --dbms_output.put_line('Getting Role');
905 x_role_code_varray(l_fetch_count) := Get_Role(l_resource_id, G_RESOURCE_ROLE_CODE);
906 --dbms_output.put_line('x_role_code_varray(l_fetch_count)'||x_role_code_varray(l_fetch_count));
907 END IF;
908 IF (l_fetch_count >= p_subset_request_obj.records_requested) THEN
909 exit;
910 END IF;
911 l_total_count := l_total_count + 1;
912 --dbms_output.put_line('Fetching Again');
913 END LOOP;
914 CLOSE l_cursor;
915 --dbms_output.put_line('Closed cursor');
916 x_subset_return_obj.returned_record_count := l_fetch_count;
917 x_subset_return_obj.next_record_position := p_subset_request_obj.start_record_position + l_fetch_count;
918 x_subset_return_obj.total_record_count := l_total_record_count;
919
920 /*
921 x_subset_return_obj := AMV_RETURN_OBJ_TYPE
922 (
923 l_fetch_count,
924 p_subset_request_obj.start_record_position + l_fetch_count,
925 l_total_record_count
926 );
927 */
928 --Standard call to get message count and if count=1, get the message
929 FND_MSG_PUB.Count_And_Get (
930 p_encoded => FND_API.G_FALSE,
931 p_count => x_msg_count,
932 p_data => x_msg_data
933 );
934 --dbms_output.put_line('Exit : Find_Resource');
935 EXCEPTION
936 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
937 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
938 -- Standard call to get message count and if count=1, get the message
939 FND_MSG_PUB.Count_And_Get (
940 p_encoded => FND_API.G_FALSE,
941 p_count => x_msg_count,
942 p_data => x_msg_data
943 );
944 WHEN FND_API.G_EXC_ERROR THEN
945 x_return_status := FND_API.G_RET_STS_ERROR;
946 -- Standard call to get message count and if count=1, get the message
947 FND_MSG_PUB.Count_And_Get (
948 p_encoded => FND_API.G_FALSE,
949 p_count => x_msg_count,
950 p_data => x_msg_data
951 );
952 WHEN OTHERS THEN
953 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
954 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
955 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
956 END IF;
957 -- Standard call to get message count and if count=1, get the message
958 FND_MSG_PUB.Count_And_Get (
959 p_encoded => FND_API.G_FALSE,
960 p_count => x_msg_count,
961 p_data => x_msg_data
962 );
963 END Find_Resource;
964 --------------------------------------------------------------------------------
965 -------------------------- RESOURCE and GROUP ROLE HELPER ----------------------
966 --------------------------------------------------------------------------------
967 PROCEDURE Add_AssignRoleHelper
968 (
969 p_api_version IN NUMBER,
970 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
971 p_commit IN VARCHAR2 := FND_API.G_FALSE,
972 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
973 x_return_status OUT NOCOPY VARCHAR2,
974 x_msg_count OUT NOCOPY NUMBER,
975 x_msg_data OUT NOCOPY VARCHAR2,
976 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
977 p_resource_id IN NUMBER,
978 p_resource_type IN VARCHAR2,
979 p_role_id IN NUMBER := FND_API.G_MISS_NUM,
980 p_role_code IN VARCHAR2 := FND_API.G_MISS_CHAR
981 ) AS
982 l_api_name CONSTANT VARCHAR2(30) := 'Add_AssignRoleHelper';
983 l_api_version CONSTANT NUMBER := 1.0;
984 l_current_user_id NUMBER;
985 l_current_login_id NUMBER;
986 l_current_resource_id NUMBER;
987 l_current_user_status VARCHAR2(30);
988 --
989 l_admin_flag VARCHAR2(1);
990 l_role_id NUMBER;
991 l_role_code VARCHAR2(30);
992 l_temp NUMBER;
993 l_date DATE;
994 --
995 CURSOR Check_ResourceRole_csr IS
996 Select role_relate_id
997 From jtf_rs_role_relations_vl
998 Where role_id = l_role_id
999 And role_resource_id = p_resource_id
1000 And role_resource_type = p_resource_type
1001 ;
1002 --
1003 BEGIN
1004
1005 -- Standard call to check for call compatibility.
1006 SAVEPOINT Add_AssignRoleHelper_Pvt;
1007 IF NOT FND_API.Compatible_API_Call (
1008 l_api_version,
1009 p_api_version,
1010 l_api_name,
1011 G_PKG_NAME) THEN
1012 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1013 END IF;
1014 --Initialize message list if p_init_msg_list is TRUE.
1015 IF FND_API.To_Boolean (p_init_msg_list) THEN
1016 FND_MSG_PUB.initialize;
1017 END IF;
1018 -- Initialize API return status to success
1019 x_return_status := FND_API.G_RET_STS_SUCCESS;
1020 -- Get the current (login) user id.
1021 AMV_UTILITY_PVT.Get_UserInfo(
1022 x_user_id => l_current_user_id,
1023 x_login_id => l_current_login_id,
1024 x_resource_id => l_current_resource_id,
1025 x_user_status => l_current_user_status
1026 );
1027 IF (p_check_login_user = FND_API.G_TRUE) THEN
1028 -- Check if user is login and has the required privilege.
1029 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
1030 -- User is not login.
1031 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1032 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
1033 FND_MSG_PUB.Add;
1034 END IF;
1035 RAISE FND_API.G_EXC_ERROR;
1036 END IF;
1037 AMV_USER_PVT.Is_Administrator
1038 (
1039 p_api_version => 1.0,
1040 x_return_status => x_return_status,
1041 x_msg_count => x_msg_count,
1042 x_msg_data => x_msg_data,
1043 p_check_login_user => FND_API.G_FALSE,
1044 p_resource_id => l_current_resource_id,
1045 x_result_flag => l_admin_flag
1046 );
1047 IF (l_admin_flag <> FND_API.G_TRUE) THEN
1048 -- User is not an administrator.
1049 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1050 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
1051 FND_MSG_PUB.Add;
1052 END IF;
1053 RAISE FND_API.G_EXC_ERROR;
1054 END IF;
1055 END IF;
1056 -- This is to make database happy
1057 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
1058 l_current_login_id := -1;
1059 l_current_user_id := -1;
1060 END IF;
1061 --
1062 IF (p_role_id = FND_API.G_MISS_NUM) THEN
1063 l_role_id := get_roleid(p_role_code);
1064 ELSE
1065 l_role_id := p_role_id;
1066 END IF;
1067 OPEN Check_ResourceRole_csr;
1068 FETCH Check_ResourceRole_csr INTO l_temp;
1069 IF (Check_ResourceRole_csr%NOTFOUND) THEN
1070 CLOSE Check_ResourceRole_csr;
1071 IF (p_role_id = FND_API.G_MISS_NUM) THEN
1072 l_role_id := null;
1073 ELSE
1074 l_role_id := p_role_id;
1075 END IF;
1076 IF (p_role_code = FND_API.G_MISS_CHAR) THEN
1077 l_role_code := null;
1078 ELSE
1079 l_role_code := p_role_code;
1080 END IF;
1081
1082
1083 jtf_rs_role_relate_pub.create_resource_role_relate
1084 (
1085 p_api_version => p_api_version,
1086 p_commit => p_commit,
1087 p_role_resource_type => p_resource_type,
1088 p_role_resource_id => p_resource_id,
1089 p_role_id => l_role_id,
1090 p_role_code => l_role_code,
1091 p_start_date_active => sysdate,
1092 p_end_date_active => null,
1093 x_return_status => x_return_status,
1094 x_msg_count => x_msg_count,
1095 x_msg_data => x_msg_data,
1096 x_role_relate_id => l_temp
1097 );
1098
1099
1100 ELSE
1101 CLOSE Check_ResourceRole_csr;
1102 END IF;
1103 --Standard call to get message count and if count=1, get the message
1104 FND_MSG_PUB.Count_And_Get (
1105 p_encoded => FND_API.G_FALSE,
1106 p_count => x_msg_count,
1107 p_data => x_msg_data
1108 );
1109 EXCEPTION
1110 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1111 ROLLBACK TO Add_AssignRoleHelper_Pvt;
1112 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1113 -- Standard call to get message count and if count=1, get the message
1114 FND_MSG_PUB.Count_And_Get (
1115 p_encoded => FND_API.G_FALSE,
1116 p_count => x_msg_count,
1117 p_data => x_msg_data
1118 );
1119 WHEN FND_API.G_EXC_ERROR THEN
1120 ROLLBACK TO Add_AssignRoleHelper_Pvt;
1121 x_return_status := FND_API.G_RET_STS_ERROR;
1122 -- Standard call to get message count and if count=1, get the message
1123 FND_MSG_PUB.Count_And_Get (
1124 p_encoded => FND_API.G_FALSE,
1125 p_count => x_msg_count,
1126 p_data => x_msg_data
1127 );
1128 WHEN OTHERS THEN
1129 ROLLBACK TO Add_AssignRoleHelper_Pvt;
1130 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1131 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1132 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1133 END IF;
1134 -- Standard call to get message count and if count=1, get the message
1135 FND_MSG_PUB.Count_And_Get (
1136 p_encoded => FND_API.G_FALSE,
1137 p_count => x_msg_count,
1138 p_data => x_msg_data
1139 );
1140 END Add_AssignRoleHelper;
1141 --------------------------------------------------------------------------------
1142 PROCEDURE Remove_RoleHelper
1143 (
1144 p_api_version IN NUMBER,
1145 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1146 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1147 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1148 x_return_status OUT NOCOPY VARCHAR2,
1149 x_msg_count OUT NOCOPY NUMBER,
1150 x_msg_data OUT NOCOPY VARCHAR2,
1151 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
1152 p_resource_id IN NUMBER,
1153 p_resource_type IN VARCHAR2,
1154 p_role_id IN NUMBER
1155 ) AS
1156 l_api_name CONSTANT VARCHAR2(30) := 'Remove_RoleHelper';
1157 l_api_version CONSTANT NUMBER := 1.0;
1158 l_current_user_id NUMBER;
1159 l_current_login_id NUMBER;
1160 l_current_resource_id NUMBER;
1161 l_current_user_status VARCHAR2(30);
1162 --
1163 l_admin_flag VARCHAR2(1);
1164 l_role_relate_id NUMBER;
1165 l_version NUMBER;
1166 --
1167 CURSOR Check_ResourceRole_csr IS
1168 Select
1169 role_relate_id,
1170 object_version_number
1171 From jtf_rs_role_relations
1172 Where role_id = p_role_id
1173 And role_resource_id = p_resource_id
1174 And role_resource_type = p_resource_type
1175 And delete_flag <> 'Y'
1176 --And role_type_code = G_MES_ROLE_TYPE_NAME
1177 ;
1178 BEGIN
1179 -- Standard call to check for call compatibility.
1180 SAVEPOINT Remove_RoleHelper_Pvt;
1181 IF NOT FND_API.Compatible_API_Call (
1182 l_api_version,
1183 p_api_version,
1184 l_api_name,
1185 G_PKG_NAME) THEN
1186 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1187 END IF;
1188 --Initialize message list if p_init_msg_list is TRUE.
1189 IF FND_API.To_Boolean (p_init_msg_list) THEN
1190 FND_MSG_PUB.initialize;
1191 END IF;
1192 -- Initialize API return status to success
1193 x_return_status := FND_API.G_RET_STS_SUCCESS;
1194 -- Get the current (login) user id.
1195 AMV_UTILITY_PVT.Get_UserInfo(
1196 x_user_id => l_current_user_id,
1197 x_login_id => l_current_login_id,
1198 x_resource_id => l_current_resource_id,
1199 x_user_status => l_current_user_status
1200 );
1201 IF (p_check_login_user = FND_API.G_TRUE) THEN
1202 -- Check if user is login and has the required privilege.
1203 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
1204 -- User is not login.
1205 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1206 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
1207 FND_MSG_PUB.Add;
1208 END IF;
1209 RAISE FND_API.G_EXC_ERROR;
1210 END IF;
1211 AMV_USER_PVT.Is_Administrator
1212 (
1213 p_api_version => 1.0,
1214 x_return_status => x_return_status,
1215 x_msg_count => x_msg_count,
1216 x_msg_data => x_msg_data,
1217 p_check_login_user => FND_API.G_FALSE,
1218 p_resource_id => l_current_resource_id,
1219 x_result_flag => l_admin_flag
1220 );
1221 IF (l_admin_flag <> FND_API.G_TRUE) THEN
1222 -- User is not an administrator.
1223 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1224 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
1225 FND_MSG_PUB.Add;
1226 END IF;
1227 RAISE FND_API.G_EXC_ERROR;
1228 END IF;
1229 END IF;
1230 -- This is to make database happy
1231 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
1232 l_current_login_id := -1;
1233 l_current_user_id := -1;
1234 END IF;
1235 OPEN Check_ResourceRole_csr;
1236 FETCH Check_ResourceRole_csr INTO l_role_relate_id, l_version;
1237 IF (Check_ResourceRole_csr%NOTFOUND) THEN
1238 CLOSE Check_ResourceRole_csr;
1239 IF (p_resource_type = G_RESOURCE_ROLE_CODE) THEN
1240 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1241 FND_MESSAGE.Set_name('AMV','AMV_RESOURCE_NOT_HAS_ROLE');
1242 FND_MESSAGE.Set_Token('P_RESOURCE_ID', TO_CHAR(p_resource_id) );
1243 FND_MESSAGE.Set_Token('P_ROLE_ID', TO_CHAR(p_role_id) );
1244 FND_MSG_PUB.Add;
1245 END IF;
1246 RAISE FND_API.G_EXC_ERROR;
1247 ELSIF (p_resource_type = G_GROUP_ROLE_CODE) THEN
1248 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1249 FND_MESSAGE.Set_name('AMV','AMV_GROUP_NOT_HAS_ROLE');
1250 FND_MESSAGE.Set_Token('P_GROUP_ID', TO_CHAR(p_resource_id) );
1251 FND_MESSAGE.Set_Token('P_ROLE_ID', TO_CHAR(p_role_id) );
1252 FND_MSG_PUB.Add;
1253 END IF;
1254 RAISE FND_API.G_EXC_ERROR;
1255 END IF;
1256 END IF;
1257 CLOSE Check_ResourceRole_csr;
1258 jtf_rs_role_relate_pub.delete_resource_role_relate
1259 (
1260 p_api_version => p_api_version,
1261 p_commit => p_commit,
1262 p_role_relate_id => l_role_relate_id,
1263 p_object_version_num => l_version,
1264 x_return_status => x_return_status,
1265 x_msg_count => x_msg_count,
1266 x_msg_data => x_msg_data
1267 );
1268 --Standard call to get message count and if count=1, get the message
1269 FND_MSG_PUB.Count_And_Get (
1270 p_encoded => FND_API.G_FALSE,
1271 p_count => x_msg_count,
1272 p_data => x_msg_data
1273 );
1274 EXCEPTION
1275 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1276 ROLLBACK TO Remove_RoleHelper_Pvt;
1277 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1278 -- Standard call to get message count and if count=1, get the message
1279 FND_MSG_PUB.Count_And_Get (
1280 p_encoded => FND_API.G_FALSE,
1281 p_count => x_msg_count,
1282 p_data => x_msg_data
1283 );
1284 WHEN FND_API.G_EXC_ERROR THEN
1285 ROLLBACK TO Remove_RoleHelper_Pvt;
1286 x_return_status := FND_API.G_RET_STS_ERROR;
1287 -- Standard call to get message count and if count=1, get the message
1288 FND_MSG_PUB.Count_And_Get (
1289 p_encoded => FND_API.G_FALSE,
1290 p_count => x_msg_count,
1291 p_data => x_msg_data
1292 );
1293 WHEN OTHERS THEN
1294 ROLLBACK TO Remove_RoleHelper_Pvt;
1295 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1296 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1297 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1298 END IF;
1299 -- Standard call to get message count and if count=1, get the message
1300 FND_MSG_PUB.Count_And_Get (
1301 p_encoded => FND_API.G_FALSE,
1302 p_count => x_msg_count,
1303 p_data => x_msg_data
1304 );
1305 END Remove_RoleHelper;
1306 --------------------------------------------------------------------------------
1307 -------------------------- RESOURCE ROLE ------------------------------------
1308 --------------------------------------------------------------------------------
1309 PROCEDURE Add_ResourceRole
1310 (
1311 p_api_version IN NUMBER,
1312 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1313 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1314 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1315 x_return_status OUT NOCOPY VARCHAR2,
1316 x_msg_count OUT NOCOPY NUMBER,
1317 x_msg_data OUT NOCOPY VARCHAR2,
1318 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
1319 p_resource_id IN NUMBER,
1320 p_role_id IN NUMBER := FND_API.G_MISS_NUM,
1321 p_role_code IN VARCHAR2 := FND_API.G_MISS_CHAR
1322 ) IS
1323 BEGIN
1324 Add_AssignRoleHelper
1325 (
1326 p_api_version => p_api_version,
1327 p_init_msg_list => p_init_msg_list,
1328 p_commit => p_commit,
1329 p_validation_level => p_validation_level,
1330 x_return_status => x_return_status,
1331 x_msg_count => x_msg_count,
1332 x_msg_data => x_msg_data,
1333 p_check_login_user => p_check_login_user,
1334 p_resource_id => p_resource_id,
1335 p_resource_type => G_RESOURCE_ROLE_CODE,
1336 p_role_id => p_role_id,
1337 p_role_code => p_role_code
1338 );
1339 END Add_ResourceRole;
1340 --------------------------------------------------------------------------------
1341 PROCEDURE Add_ResourceRole
1342 (
1343 p_api_version IN NUMBER,
1344 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1345 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1346 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1347 x_return_status OUT NOCOPY VARCHAR2,
1348 x_msg_count OUT NOCOPY NUMBER,
1349 x_msg_data OUT NOCOPY VARCHAR2,
1350 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
1351 p_resource_id IN NUMBER,
1352 p_role_id_varray IN AMV_NUMBER_VARRAY_TYPE
1353 ) AS
1354 l_api_name CONSTANT VARCHAR2(30) := 'Add_ResourceRole';
1355 l_api_version CONSTANT NUMBER := 1.0;
1356 l_current_user_id NUMBER;
1357 l_current_login_id NUMBER;
1358 l_current_resource_id NUMBER;
1359 l_current_user_status VARCHAR2(30);
1360 --
1361 l_return_status VARCHAR2(1);
1362 l_admin_flag VARCHAR2(1);
1363 l_count NUMBER;
1364 --
1365 BEGIN
1366 -- Standard call to check for call compatibility.
1367 SAVEPOINT Add_ResourceRole_Pvt;
1368 IF NOT FND_API.Compatible_API_Call (
1369 l_api_version,
1370 p_api_version,
1371 l_api_name,
1372 G_PKG_NAME) THEN
1373 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1374 END IF;
1375 --Initialize message list if p_init_msg_list is TRUE.
1376 IF FND_API.To_Boolean (p_init_msg_list) THEN
1377 FND_MSG_PUB.initialize;
1378 END IF;
1379 -- Initialize API return status to success
1380 x_return_status := FND_API.G_RET_STS_SUCCESS;
1381 -- Get the current (login) user id.
1382 AMV_UTILITY_PVT.Get_UserInfo(
1383 x_user_id => l_current_user_id,
1384 x_login_id => l_current_login_id,
1385 x_resource_id => l_current_resource_id,
1386 x_user_status => l_current_user_status
1387 );
1388 IF (p_check_login_user = FND_API.G_TRUE) THEN
1389 -- Check if user is login and has the required privilege.
1390 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
1391 -- User is not login.
1392 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1393 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
1394 FND_MSG_PUB.Add;
1395 END IF;
1396 RAISE FND_API.G_EXC_ERROR;
1397 END IF;
1398 AMV_USER_PVT.Is_Administrator
1399 (
1400 p_api_version => 1.0,
1401 x_return_status => x_return_status,
1402 x_msg_count => x_msg_count,
1403 x_msg_data => x_msg_data,
1404 p_check_login_user => FND_API.G_FALSE,
1405 p_resource_id => l_current_resource_id,
1406 x_result_flag => l_admin_flag
1407 );
1408 IF (l_admin_flag <> FND_API.G_TRUE) THEN
1409 -- User is not an administrator.
1410 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1411 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
1412 FND_MSG_PUB.Add;
1413 END IF;
1414 RAISE FND_API.G_EXC_ERROR;
1415 END IF;
1416 END IF;
1417 -- This is to make database happy
1418 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
1419 l_current_login_id := -1;
1420 l_current_user_id := -1;
1421 END IF;
1422 -- Check if the resource id is valid
1423 IF (AMV_UTILITY_PVT.IS_RESOURCEIDVALID(p_resource_id) <> TRUE) THEN
1424 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1425 FND_MESSAGE.Set_name('AMV','AMV_INVALID_RESOURCE_ID');
1426 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_resource_id, -1) ) );
1427 FND_MSG_PUB.Add;
1428 END IF;
1429 RAISE FND_API.G_EXC_ERROR;
1430 END IF;
1431 IF (p_role_id_varray IS NULL) THEN
1432 l_count := 0;
1433 ELSE
1434 l_count := p_role_id_varray.count;
1435 END IF;
1436 FOR i IN 1..l_count LOOP
1437 Add_ResourceRole
1438 (
1439 p_api_version => p_api_version,
1440 p_commit => p_commit,
1441 p_validation_level => p_validation_level,
1442 x_return_status => l_return_status,
1443 x_msg_count => x_msg_count,
1444 x_msg_data => x_msg_data,
1445 p_check_login_user => FND_API.G_FALSE,
1446 p_resource_id => p_resource_id,
1447 p_role_id => p_role_id_varray(i)
1448 );
1449 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1450 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1451 ELSIF (l_return_status = FND_API.G_RET_STS_ERROR AND
1452 x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1453 x_return_status := FND_API.G_RET_STS_ERROR;
1454 END IF;
1455 END LOOP;
1456 --Standard call to get message count and if count=1, get the message
1457 FND_MSG_PUB.Count_And_Get (
1458 p_encoded => FND_API.G_FALSE,
1459 p_count => x_msg_count,
1460 p_data => x_msg_data
1461 );
1462 EXCEPTION
1463 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1464 ROLLBACK TO Add_ResourceRole_Pvt;
1465 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1466 -- Standard call to get message count and if count=1, get the message
1467 FND_MSG_PUB.Count_And_Get (
1468 p_encoded => FND_API.G_FALSE,
1469 p_count => x_msg_count,
1470 p_data => x_msg_data
1471 );
1472 WHEN FND_API.G_EXC_ERROR THEN
1473 ROLLBACK TO Add_ResourceRole_Pvt;
1474 x_return_status := FND_API.G_RET_STS_ERROR;
1475 -- Standard call to get message count and if count=1, get the message
1476 FND_MSG_PUB.Count_And_Get (
1477 p_encoded => FND_API.G_FALSE,
1478 p_count => x_msg_count,
1479 p_data => x_msg_data
1480 );
1481 WHEN OTHERS THEN
1482 ROLLBACK TO Add_ResourceRole_Pvt;
1483 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1484 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1485 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1486 END IF;
1487 -- Standard call to get message count and if count=1, get the message
1488 FND_MSG_PUB.Count_And_Get (
1489 p_encoded => FND_API.G_FALSE,
1490 p_count => x_msg_count,
1491 p_data => x_msg_data
1492 );
1493 END Add_ResourceRole;
1494 --------------------------------------------------------------------------------
1495 PROCEDURE Remove_ResourceRole
1496 (
1497 p_api_version IN NUMBER,
1498 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1499 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1500 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1501 x_return_status OUT NOCOPY VARCHAR2,
1502 x_msg_count OUT NOCOPY NUMBER,
1503 x_msg_data OUT NOCOPY VARCHAR2,
1504 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
1505 p_resource_id IN NUMBER,
1506 p_role_id IN NUMBER := FND_API.G_MISS_NUM,
1507 p_role_code IN VARCHAR2 := FND_API.G_MISS_CHAR
1508 ) AS
1509 l_role_id number;
1510 BEGIN
1511 IF (p_role_id = FND_API.G_MISS_NUM) THEN
1512 l_role_id := Get_RoleId(p_role_code);
1513 ELSE
1514 l_role_id := p_role_id;
1515 END IF;
1516 Remove_RoleHelper
1517 (
1518 p_api_version => p_api_version,
1519 p_init_msg_list => p_init_msg_list,
1520 p_commit => p_commit,
1521 p_validation_level => p_validation_level,
1522 x_return_status => x_return_status,
1523 x_msg_count => x_msg_count,
1524 x_msg_data => x_msg_data,
1525 p_check_login_user => p_check_login_user,
1526 p_resource_id => p_resource_id,
1527 p_resource_type => G_RESOURCE_ROLE_CODE,
1528 p_role_id => l_role_id
1529 );
1530 END Remove_ResourceRole;
1531 --------------------------------------------------------------------------------
1532 PROCEDURE Remove_ResourceRole
1533 (
1534 p_api_version IN NUMBER,
1535 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1536 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1537 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1538 x_return_status OUT NOCOPY VARCHAR2,
1539 x_msg_count OUT NOCOPY NUMBER,
1540 x_msg_data OUT NOCOPY VARCHAR2,
1541 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
1542 p_resource_id IN NUMBER,
1543 p_role_id_varray IN AMV_NUMBER_VARRAY_TYPE := NULL
1544 ) AS
1545 l_api_name CONSTANT VARCHAR2(30) := 'Remove_ResourceRole';
1546 l_api_version CONSTANT NUMBER := 1.0;
1547 l_current_user_id NUMBER;
1548 l_current_login_id NUMBER;
1549 l_current_resource_id NUMBER;
1550 l_current_user_status VARCHAR2(30);
1551 --
1552 l_admin_flag VARCHAR2(1);
1553 l_count NUMBER;
1554 l_return_status VARCHAR2(1);
1555 l_role_id_varray AMV_NUMBER_VARRAY_TYPE;
1556 l_role_code_varray AMV_CHAR_VARRAY_TYPE;
1557 --
1558 BEGIN
1559 -- Standard call to check for call compatibility.
1560 SAVEPOINT Remove_ResourceRole_Pvt;
1561 IF NOT FND_API.Compatible_API_Call (
1562 l_api_version,
1563 p_api_version,
1564 l_api_name,
1565 G_PKG_NAME) THEN
1566 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1567 END IF;
1568 --Initialize message list if p_init_msg_list is TRUE.
1569 IF FND_API.To_Boolean (p_init_msg_list) THEN
1570 FND_MSG_PUB.initialize;
1571 END IF;
1572 -- Initialize API return status to success
1573 x_return_status := FND_API.G_RET_STS_SUCCESS;
1574 -- Get the current (login) user id.
1575 AMV_UTILITY_PVT.Get_UserInfo(
1576 x_user_id => l_current_user_id,
1577 x_login_id => l_current_login_id,
1578 x_resource_id => l_current_resource_id,
1579 x_user_status => l_current_user_status
1580 );
1581 IF (p_check_login_user = FND_API.G_TRUE) THEN
1582 -- Check if user is login and has the required privilege.
1583 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
1584 -- User is not login.
1585 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1586 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
1587 FND_MSG_PUB.Add;
1588 END IF;
1589 RAISE FND_API.G_EXC_ERROR;
1590 END IF;
1591 AMV_USER_PVT.Is_Administrator
1592 (
1593 p_api_version => 1.0,
1594 x_return_status => x_return_status,
1595 x_msg_count => x_msg_count,
1596 x_msg_data => x_msg_data,
1597 p_check_login_user => FND_API.G_FALSE,
1598 p_resource_id => l_current_resource_id,
1599 x_result_flag => l_admin_flag
1600 );
1601 IF (l_admin_flag <> FND_API.G_TRUE) THEN
1602 -- User is not an administrator.
1603 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1604 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
1605 FND_MSG_PUB.Add;
1606 END IF;
1607 RAISE FND_API.G_EXC_ERROR;
1608 END IF;
1609 END IF;
1610 -- This is to make database happy
1611 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
1612 l_current_login_id := -1;
1613 l_current_user_id := -1;
1614 END IF;
1615 -- Check if the resource id is valid
1616 IF (AMV_UTILITY_PVT.IS_RESOURCEIDVALID(p_resource_id) <> TRUE) THEN
1617 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1618 FND_MESSAGE.Set_name('AMV','AMV_INVALID_RESOURCE_ID');
1619 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_resource_id, -1) ) );
1620 FND_MSG_PUB.Add;
1621 END IF;
1622 RAISE FND_API.G_EXC_ERROR;
1623 END IF;
1624 IF (p_role_id_varray IS NULL OR p_role_id_varray.count = 0) THEN
1625 Get_ResourceRoles
1626 (
1627 p_api_version => p_api_version,
1628 x_return_status => l_return_status,
1629 x_msg_count => x_msg_count,
1630 x_msg_data => x_msg_data,
1631 p_check_login_user => FND_API.G_FALSE,
1632 p_resource_id => p_resource_id,
1633 x_role_id_varray => l_role_id_varray,
1634 x_role_code_varray => l_role_code_varray
1635 );
1636 IF (l_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1637 l_count := l_role_id_varray.count;
1638 ELSE
1639 l_count := 0;
1640 x_return_status := l_return_status;
1641 END IF;
1642 ELSE
1643 l_count := p_role_id_varray.count;
1644 l_role_id_varray := p_role_id_varray;
1645 END IF;
1646
1647 FOR i IN 1..l_count LOOP
1648 Remove_ResourceRole
1649 (
1650 p_api_version => p_api_version,
1651 p_commit => p_commit,
1652 p_validation_level => p_validation_level,
1653 x_return_status => l_return_status,
1654 x_msg_count => x_msg_count,
1655 x_msg_data => x_msg_data,
1656 p_check_login_user => FND_API.G_FALSE,
1657 p_resource_id => p_resource_id,
1658 p_role_id => l_role_id_varray(i),
1659 p_role_code => null
1660 );
1661 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1662 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1663 ELSIF (l_return_status = FND_API.G_RET_STS_ERROR AND
1664 x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
1665 x_return_status := FND_API.G_RET_STS_ERROR;
1666 END IF;
1667 END LOOP;
1668 --Standard call to get message count and if count=1, get the message
1669 FND_MSG_PUB.Count_And_Get (
1670 p_encoded => FND_API.G_FALSE,
1671 p_count => x_msg_count,
1672 p_data => x_msg_data
1673 );
1674 EXCEPTION
1675 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1676 ROLLBACK TO Remove_ResourceRole_Pvt;
1677 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1678 -- Standard call to get message count and if count=1, get the message
1679 FND_MSG_PUB.Count_And_Get (
1680 p_encoded => FND_API.G_FALSE,
1681 p_count => x_msg_count,
1682 p_data => x_msg_data
1683 );
1684 WHEN FND_API.G_EXC_ERROR THEN
1685 ROLLBACK TO Remove_ResourceRole_Pvt;
1686 x_return_status := FND_API.G_RET_STS_ERROR;
1687 -- Standard call to get message count and if count=1, get the message
1688 FND_MSG_PUB.Count_And_Get (
1689 p_encoded => FND_API.G_FALSE,
1690 p_count => x_msg_count,
1691 p_data => x_msg_data
1692 );
1693 WHEN OTHERS THEN
1694 ROLLBACK TO Remove_ResourceRole_Pvt;
1695 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1696 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1697 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1698 END IF;
1699 -- Standard call to get message count and if count=1, get the message
1700 FND_MSG_PUB.Count_And_Get (
1701 p_encoded => FND_API.G_FALSE,
1702 p_count => x_msg_count,
1703 p_data => x_msg_data
1704 );
1705 END Remove_ResourceRole;
1706 --------------------------------------------------------------------------------
1707 PROCEDURE Replace_ResourceRole
1708 (
1709 p_api_version IN NUMBER,
1710 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1711 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1712 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1713 x_return_status OUT NOCOPY VARCHAR2,
1714 x_msg_count OUT NOCOPY NUMBER,
1715 x_msg_data OUT NOCOPY VARCHAR2,
1716 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
1717 p_resource_id IN NUMBER,
1718 p_role_code IN VARCHAR2
1719 ) AS
1720 l_role_id_array AMV_NUMBER_VARRAY_TYPE;
1721 BEGIN
1722 Get_RoleIDArray (p_role_code, l_role_id_array);
1723 Replace_ResourceRole
1724 (
1725 p_api_version => p_api_version,
1726 p_init_msg_list => p_init_msg_list,
1727 p_commit => p_commit,
1728 p_validation_level => p_validation_level,
1729 x_return_status => x_return_status,
1730 x_msg_count => x_msg_count,
1731 x_msg_data => x_msg_data,
1732 p_check_login_user => p_check_login_user,
1733 p_resource_id => p_resource_id,
1734 p_role_id_varray => l_role_id_array
1735 );
1736 END Replace_ResourceRole;
1737 --------------------------------------------------------------------------------
1738 PROCEDURE Replace_ResourceRole
1739 (
1740 p_api_version IN NUMBER,
1741 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1742 p_commit IN VARCHAR2 := FND_API.G_FALSE,
1743 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1744 x_return_status OUT NOCOPY VARCHAR2,
1745 x_msg_count OUT NOCOPY NUMBER,
1746 x_msg_data OUT NOCOPY VARCHAR2,
1747 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
1748 p_resource_id IN NUMBER,
1749 p_role_id_varray IN AMV_NUMBER_VARRAY_TYPE
1750 ) AS
1751 l_api_name CONSTANT VARCHAR2(30) := 'Replace_ResourceRole';
1752 l_api_version CONSTANT NUMBER := 1.0;
1753 l_current_user_id NUMBER;
1754 l_current_login_id NUMBER;
1755 l_current_resource_id NUMBER;
1756 l_current_user_status VARCHAR2(30);
1757 --
1758 l_count NUMBER;
1759 l_temp NUMBER;
1760 l_return_status VARCHAR2(1);
1761 l_date DATE;
1762 --
1763 BEGIN
1764 -- Standard call to check for call compatibility.
1765 SAVEPOINT Replace_ResourceRole_Pvt;
1766 x_return_status := FND_API.G_RET_STS_SUCCESS;
1767 --Remove the existing roles
1768 Remove_ResourceRole
1769 (
1770 p_api_version => p_api_version,
1771 p_init_msg_list => p_init_msg_list,
1772 --commit parameter was not passed before,refer bug#270945,2727331
1773 p_commit => p_commit,
1774 p_validation_level => p_validation_level,
1775 x_return_status => l_return_status,
1776 x_msg_count => x_msg_count,
1777 x_msg_data => x_msg_data,
1778 p_check_login_user => p_check_login_user,
1779 p_resource_id => p_resource_id,
1780 p_role_id_varray => null
1781 );
1782 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1783 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1784 ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1785 RAISE FND_API.G_EXC_ERROR;
1786 END IF;
1787 -- Add new roles:
1788 Add_ResourceRole
1789 (
1790 p_api_version => p_api_version,
1791 p_commit => p_commit,
1792 p_validation_level => p_validation_level,
1793 x_return_status => l_return_status,
1794 x_msg_count => x_msg_count,
1795 x_msg_data => x_msg_data,
1796 p_check_login_user => FND_API.G_FALSE,
1797 p_resource_id => p_resource_id,
1798 p_role_id_varray => p_role_id_varray
1799 );
1800 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1801 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1802 ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
1803 RAISE FND_API.G_EXC_ERROR;
1804 END IF;
1805 --Standard call to get message count and if count=1, get the message
1806 FND_MSG_PUB.Count_And_Get (
1807 p_encoded => FND_API.G_FALSE,
1808 p_count => x_msg_count,
1809 p_data => x_msg_data
1810 );
1811 EXCEPTION
1812 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1813 ROLLBACK TO Replace_ResourceRole_Pvt;
1814 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1815 -- Standard call to get message count and if count=1, get the message
1816 FND_MSG_PUB.Count_And_Get (
1817 p_encoded => FND_API.G_FALSE,
1818 p_count => x_msg_count,
1819 p_data => x_msg_data
1820 );
1821 WHEN FND_API.G_EXC_ERROR THEN
1822 ROLLBACK TO Replace_ResourceRole_Pvt;
1823 x_return_status := FND_API.G_RET_STS_ERROR;
1824 -- Standard call to get message count and if count=1, get the message
1825 FND_MSG_PUB.Count_And_Get (
1826 p_encoded => FND_API.G_FALSE,
1827 p_count => x_msg_count,
1828 p_data => x_msg_data
1829 );
1830 WHEN OTHERS THEN
1831 ROLLBACK TO Replace_ResourceRole_Pvt;
1832 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1833 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1834 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1835 END IF;
1836 -- Standard call to get message count and if count=1, get the message
1837 FND_MSG_PUB.Count_And_Get (
1838 p_encoded => FND_API.G_FALSE,
1839 p_count => x_msg_count,
1840 p_data => x_msg_data
1841 );
1842 END Replace_ResourceRole;
1843 --------------------------------------------------------------------------------
1844 PROCEDURE Get_ResourceRoles
1845 (
1846 p_api_version IN NUMBER,
1847 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1848 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1849 x_return_status OUT NOCOPY VARCHAR2,
1850 x_msg_count OUT NOCOPY NUMBER,
1851 x_msg_data OUT NOCOPY VARCHAR2,
1852 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
1853 p_resource_id IN NUMBER := FND_API.G_MISS_NUM,
1854 x_role_id_varray OUT NOCOPY AMV_NUMBER_VARRAY_TYPE,
1855 x_role_code_varray OUT NOCOPY AMV_CHAR_VARRAY_TYPE
1856 ) AS
1857 l_api_name CONSTANT VARCHAR2(30) := 'Get_ResourceRoles';
1858 l_api_version CONSTANT NUMBER := 1.0;
1859 l_current_user_id NUMBER;
1860 l_current_login_id NUMBER;
1861 l_current_resource_id NUMBER;
1862 l_current_user_status VARCHAR2(30);
1863 --
1864 l_count NUMBER := 0;
1865 --
1866 CURSOR Get_ResourceRole_csr IS
1867 Select
1868 rol.role_code,
1869 rol.role_id
1870 From jtf_rs_role_relations_vl rel, jtf_rs_roles_vl rol
1871 Where rel.role_resource_id = p_resource_id
1872 And rel.role_resource_type = G_RESOURCE_ROLE_CODE
1873 And rel.role_id = rol.role_id
1874 And rol.role_type_code = G_MES_ROLE_TYPE_NAME
1875 Order by rol.role_code;
1876 --
1877 BEGIN
1878 -- Standard call to check for call compatibility.
1879 IF NOT FND_API.Compatible_API_Call (
1880 l_api_version,
1881 p_api_version,
1882 l_api_name,
1883 G_PKG_NAME) THEN
1884 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1885 END IF;
1886 --Initialize message list if p_init_msg_list is TRUE.
1887 IF FND_API.To_Boolean (p_init_msg_list) THEN
1888 FND_MSG_PUB.initialize;
1889 END IF;
1890 -- Initialize API return status to success
1891 x_return_status := FND_API.G_RET_STS_SUCCESS;
1892 x_role_id_varray := AMV_NUMBER_VARRAY_TYPE();
1893 x_role_code_varray := AMV_CHAR_VARRAY_TYPE();
1894 -- Get the current (login) user id.
1895 AMV_UTILITY_PVT.Get_UserInfo(
1896 x_user_id => l_current_user_id,
1897 x_login_id => l_current_login_id,
1898 x_resource_id => l_current_resource_id,
1899 x_user_status => l_current_user_status
1900 );
1901 IF (p_check_login_user = FND_API.G_TRUE) THEN
1902 -- Check if user is login and has the required privilege.
1903 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
1904 -- User is not login.
1905 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1906 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
1907 FND_MSG_PUB.Add;
1908 END IF;
1909 RAISE FND_API.G_EXC_ERROR;
1910 END IF;
1911 END IF;
1912 -- This is to make database happy
1913 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
1914 l_current_login_id := -1;
1915 l_current_user_id := -1;
1916 END IF;
1917 -- Check if the resource id is valid
1918 IF (AMV_UTILITY_PVT.IS_RESOURCEIDVALID(p_resource_id) <> TRUE) THEN
1919 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1920 FND_MESSAGE.Set_name('AMV','AMV_INVALID_RESOURCE_ID');
1921 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_resource_id, -1) ) );
1922 FND_MSG_PUB.Add;
1923 END IF;
1924 RAISE FND_API.G_EXC_ERROR;
1925 END IF;
1926 FOR csr1 IN Get_ResourceRole_csr LOOP
1927 l_count := l_count + 1;
1928 x_role_id_varray.extend;
1929 x_role_code_varray.extend;
1930 x_role_id_varray(l_count) := csr1.role_id;
1931 x_role_code_varray(l_count) := csr1.role_code;
1932 END LOOP;
1933 --Standard call to get message count and if count=1, get the message
1934 FND_MSG_PUB.Count_And_Get (
1935 p_encoded => FND_API.G_FALSE,
1936 p_count => x_msg_count,
1937 p_data => x_msg_data
1938 );
1939 EXCEPTION
1940 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1941 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1942 -- Standard call to get message count and if count=1, get the message
1943 FND_MSG_PUB.Count_And_Get (
1944 p_encoded => FND_API.G_FALSE,
1945 p_count => x_msg_count,
1946 p_data => x_msg_data
1947 );
1948 WHEN FND_API.G_EXC_ERROR THEN
1949 x_return_status := FND_API.G_RET_STS_ERROR;
1950 -- Standard call to get message count and if count=1, get the message
1951 FND_MSG_PUB.Count_And_Get (
1952 p_encoded => FND_API.G_FALSE,
1953 p_count => x_msg_count,
1954 p_data => x_msg_data
1955 );
1956 WHEN OTHERS THEN
1957 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1958 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
1959 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
1960 END IF;
1961 -- Standard call to get message count and if count=1, get the message
1962 FND_MSG_PUB.Count_And_Get (
1963 p_encoded => FND_API.G_FALSE,
1964 p_count => x_msg_count,
1965 p_data => x_msg_data
1966 );
1967 END Get_ResourceRoles;
1968 --------------------------------------------------------------------------------
1969 PROCEDURE Check_ResourceRole
1970 (
1971 p_api_version IN NUMBER,
1972 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
1973 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
1974 x_return_status OUT NOCOPY VARCHAR2,
1975 x_msg_count OUT NOCOPY NUMBER,
1976 x_msg_data OUT NOCOPY VARCHAR2,
1977 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
1978 p_resource_id IN NUMBER := FND_API.G_MISS_NUM,
1979 p_role_id IN NUMBER,
1980 p_group_usage IN VARCHAR2 := G_MES_GROUP_USAGE,
1981 p_include_group_flag IN VARCHAR2 := FND_API.G_TRUE,
1982 p_check_effective_date IN VARCHAR2 := FND_API.G_TRUE,
1983 x_result_flag OUT NOCOPY VARCHAR2
1984 ) AS
1985 l_api_name CONSTANT VARCHAR2(30) := 'Check_ResourceRole';
1986 l_api_version CONSTANT NUMBER := 1.0;
1987 l_current_user_id NUMBER;
1988 l_current_login_id NUMBER;
1989 l_current_resource_id NUMBER;
1990 l_current_user_status VARCHAR2(30);
1991 --
1992 l_resource_id NUMBER;
1993 l_temp NUMBER;
1994 --
1995 CURSOR Get_ResourceRole_csr(p_res_id IN NUMBER) IS
1996 Select
1997 role_relate_id
1998 From jtf_rs_role_relations_vl
1999 Where role_id = p_role_id
2000 And role_resource_id = p_res_id
2001 And role_resource_type = G_RESOURCE_ROLE_CODE
2002 ;
2003 --
2004 CURSOR Get_ResourceRole2_csr(p_res_id IN NUMBER) IS
2005 Select rel.role_relate_id
2006 From jtf_rs_role_relations_vl rel
2007 , jtf_rs_resource_extns res
2008 Where rel.role_id = p_role_id
2009 And rel.role_resource_id = p_res_id
2010 And rel.role_resource_type = G_RESOURCE_ROLE_CODE
2011 And res.resource_id = rel.role_resource_id
2012 And rel.start_date_active < sysdate
2013 And nvl(rel.end_date_active, sysdate+1) > sysdate
2014 And res.start_date_active < sysdate
2015 And nvl(res.end_date_active, sysdate+1) > sysdate
2016 ;
2017 --
2018 CURSOR Get_GroupRole_csr(p_res_id IN NUMBER) IS
2019 Select
2020 1
2021 From dual
2022 Where exists
2023 (
2024 select r.role_id
2025 from jtf_rs_group_members m, jtf_rs_role_relations_vl r,
2026 jtf_rs_group_usages usg
2027 where m.resource_id = p_res_id
2028 and m.delete_flag <> 'Y'
2029 and m.group_id = r.role_resource_id
2030 and r.role_resource_type = G_GROUP_ROLE_CODE
2031 and r.role_id = p_role_id
2032 and m.group_id = usg.group_id
2033 and usg.usage = p_group_usage
2034 );
2035 --
2036 CURSOR Get_GroupRole2_csr(p_res_id IN NUMBER) IS
2037 Select
2038 1
2039 From dual
2040 Where exists
2041 (
2042 select r.role_id
2043 from jtf_rs_group_members m, jtf_rs_role_relations_vl r,
2044 jtf_rs_groups_vl g, jtf_rs_group_usages usg
2045 where m.resource_id = p_res_id
2046 and m.delete_flag <> 'Y'
2047 and m.group_id = r.role_resource_id
2048 and r.role_id = p_role_id
2049 and r.role_resource_type = G_GROUP_ROLE_CODE
2050 --and r.role_type_code = G_MES_ROLE_TYPE_NAME
2051 and r.start_date_active < sysdate
2052 and nvl(r.end_date_active, sysdate+1) > sysdate
2053 and g.group_id = m.group_id
2054 and g.start_date_active < sysdate
2055 and nvl(g.end_date_active, sysdate+1) > sysdate
2056 and usg.group_id = g.group_id
2057 and usg.usage = p_group_usage
2058 )
2059 ;
2060 --
2061 BEGIN
2062 -- Standard call to check for call compatibility.
2063 IF NOT FND_API.Compatible_API_Call (
2064 l_api_version,
2065 p_api_version,
2066 l_api_name,
2067 G_PKG_NAME) THEN
2068 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2069 END IF;
2070 --Initialize message list if p_init_msg_list is TRUE.
2071 IF FND_API.To_Boolean (p_init_msg_list) THEN
2072 FND_MSG_PUB.initialize;
2073 END IF;
2074 -- Initialize API return status to success
2075 x_return_status := FND_API.G_RET_STS_SUCCESS;
2076 x_result_flag := FND_API.G_FALSE;
2077 -- Get the current (login) user id.
2078 AMV_UTILITY_PVT.Get_UserInfo(
2079 x_user_id => l_current_user_id,
2080 x_login_id => l_current_login_id,
2081 x_resource_id => l_current_resource_id,
2082 x_user_status => l_current_user_status
2083 );
2084 IF (p_check_login_user = FND_API.G_TRUE) THEN
2085 -- Check if user is login and has the required privilege.
2086 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
2087 -- User is not login.
2088 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2089 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
2090 FND_MSG_PUB.Add;
2091 END IF;
2092 RAISE FND_API.G_EXC_ERROR;
2093 END IF;
2094 END IF;
2095 -- This is to make database happy
2096 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
2097 l_current_login_id := -1;
2098 l_current_user_id := -1;
2099 END IF;
2100 --
2101 IF (p_resource_id IS NULL OR p_resource_id = FND_API.G_MISS_NUM) THEN
2102 l_resource_id := l_current_resource_id;
2103 ELSE
2104 l_resource_id := p_resource_id;
2105 -- Check if the resource id is valid
2106 IF (AMV_UTILITY_PVT.IS_RESOURCEIDVALID(p_resource_id) <> TRUE) THEN
2107 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2108 FND_MESSAGE.Set_name('AMV','AMV_INVALID_RESOURCE_ID');
2109 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_resource_id, -1) ) );
2110 FND_MSG_PUB.Add;
2111 END IF;
2112 RAISE FND_API.G_EXC_ERROR;
2113 END IF;
2114 END IF;
2115 IF (p_check_effective_date = FND_API.G_TRUE) THEN
2116 OPEN Get_ResourceRole2_csr(l_resource_id);
2117 FETCH Get_ResourceRole2_csr INTO l_temp;
2118 IF (Get_ResourceRole2_csr%FOUND) THEN
2119 x_result_flag := FND_API.G_TRUE;
2120 ELSE
2121 x_result_flag := FND_API.G_FALSE;
2122 END IF;
2123 CLOSE Get_ResourceRole2_csr;
2124 ELSE
2125 OPEN Get_ResourceRole_csr(l_resource_id);
2126 FETCH Get_ResourceRole_csr INTO l_temp;
2127 IF (Get_ResourceRole_csr%FOUND) THEN
2128 x_result_flag := FND_API.G_TRUE;
2129 ELSE
2130 x_result_flag := FND_API.G_FALSE;
2131 END IF;
2132 CLOSE Get_ResourceRole_csr;
2133 END IF;
2134
2135 IF ( x_result_flag = FND_API.G_FALSE AND
2136 p_include_group_flag = FND_API.G_TRUE ) THEN
2137 IF (p_check_effective_date = FND_API.G_TRUE) THEN
2138 OPEN Get_GroupRole2_csr(l_resource_id);
2139 FETCH Get_GroupRole2_csr INTO l_temp;
2140 IF (Get_GroupRole2_csr%FOUND) THEN
2141 x_result_flag := FND_API.G_TRUE;
2142 END IF;
2143 CLOSE Get_GroupRole2_csr;
2144 ELSE
2145 OPEN Get_GroupRole_csr(l_resource_id);
2146 FETCH Get_GroupRole_csr INTO l_temp;
2147 IF (Get_GroupRole_csr%FOUND) THEN
2148 x_result_flag := FND_API.G_TRUE;
2149 END IF;
2150 CLOSE Get_GroupRole_csr;
2151 END IF;
2152 END IF;
2153 --Standard call to get message count and if count=1, get the message
2154 FND_MSG_PUB.Count_And_Get (
2155 p_encoded => FND_API.G_FALSE,
2156 p_count => x_msg_count,
2157 p_data => x_msg_data
2158 );
2159 EXCEPTION
2160 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2161 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2162 -- Standard call to get message count and if count=1, get the message
2163 FND_MSG_PUB.Count_And_Get (
2164 p_encoded => FND_API.G_FALSE,
2165 p_count => x_msg_count,
2166 p_data => x_msg_data
2167 );
2168 WHEN FND_API.G_EXC_ERROR THEN
2169 x_return_status := FND_API.G_RET_STS_ERROR;
2170 -- Standard call to get message count and if count=1, get the message
2171 FND_MSG_PUB.Count_And_Get (
2172 p_encoded => FND_API.G_FALSE,
2173 p_count => x_msg_count,
2174 p_data => x_msg_data
2175 );
2176 WHEN OTHERS THEN
2177 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2178 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2179 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
2180 END IF;
2181 -- Standard call to get message count and if count=1, get the message
2182 FND_MSG_PUB.Count_And_Get (
2183 p_encoded => FND_API.G_FALSE,
2184 p_count => x_msg_count,
2185 p_data => x_msg_data
2186 );
2187 END Check_ResourceRole;
2188 --------------------------------------------------------------------------------
2189 PROCEDURE Is_Administrator
2190 (
2191 p_api_version IN NUMBER,
2192 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2193 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2194 x_return_status OUT NOCOPY VARCHAR2,
2195 x_msg_count OUT NOCOPY NUMBER,
2196 x_msg_data OUT NOCOPY VARCHAR2,
2197 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
2198 p_resource_id IN NUMBER := FND_API.G_MISS_NUM,
2199 p_include_group_flag IN VARCHAR2 := FND_API.G_TRUE,
2200 x_result_flag OUT NOCOPY VARCHAR2
2201 ) AS
2202 l_role_id number;
2203 BEGIN
2204 l_role_id := Get_RoleId(G_ADMINISTRTOR_CODE);
2205 Check_ResourceRole
2206 (
2207 p_api_version => p_api_version,
2208 p_init_msg_list => p_init_msg_list,
2209 p_validation_level => p_validation_level,
2210 x_return_status => x_return_status,
2211 x_msg_count => x_msg_count,
2212 x_msg_data => x_msg_data,
2213 p_check_login_user => p_check_login_user,
2214 p_resource_id => p_resource_id,
2215 p_role_id => l_role_id,
2216 p_include_group_flag => p_include_group_flag,
2217 p_check_effective_date => FND_API.G_TRUE,
2218 x_result_flag => x_result_flag
2219 );
2220 END Is_Administrator;
2221 --------------------------------------------------------------------------------
2222 PROCEDURE Can_PublishContent
2223 (
2224 p_api_version IN NUMBER,
2225 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2226 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2227 x_return_status OUT NOCOPY VARCHAR2,
2228 x_msg_count OUT NOCOPY NUMBER,
2229 x_msg_data OUT NOCOPY VARCHAR2,
2230 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
2231 p_resource_id IN NUMBER := FND_API.G_MISS_NUM,
2232 p_include_group_flag IN VARCHAR2 := FND_API.G_TRUE,
2233 x_result_flag OUT NOCOPY VARCHAR2
2234 ) AS
2235 l_role_id number;
2236 BEGIN
2237 Is_Administrator
2238 (
2239 p_api_version,
2240 p_init_msg_list,
2241 p_validation_level,
2242 x_return_status,
2243 x_msg_count,
2244 x_msg_data,
2245 p_check_login_user,
2246 p_resource_id,
2247 p_include_group_flag,
2248 x_result_flag
2249 );
2250 IF (x_result_flag <> FND_API.G_TRUE) THEN
2251 l_role_id := Get_RoleId(G_CAN_PUBLISH_CODE);
2252 Check_ResourceRole
2253 (
2254 p_api_version => p_api_version,
2255 p_init_msg_list => p_init_msg_list,
2256 p_validation_level => p_validation_level,
2257 x_return_status => x_return_status,
2258 x_msg_count => x_msg_count,
2259 x_msg_data => x_msg_data,
2260 p_check_login_user => p_check_login_user,
2261 p_resource_id => p_resource_id,
2262 p_role_id => l_role_id,
2263 p_include_group_flag => p_include_group_flag,
2264 p_check_effective_date => FND_API.G_TRUE,
2265 x_result_flag => x_result_flag
2266 );
2267 END IF;
2268 END Can_PublishContent;
2269 --------------------------------------------------------------------------------
2270 PROCEDURE Can_ApproveContent
2271 (
2272 p_api_version IN NUMBER,
2273 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2274 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2275 x_return_status OUT NOCOPY VARCHAR2,
2276 x_msg_count OUT NOCOPY NUMBER,
2277 x_msg_data OUT NOCOPY VARCHAR2,
2278 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
2279 p_resource_id IN NUMBER := FND_API.G_MISS_NUM,
2280 p_include_group_flag IN VARCHAR2 := FND_API.G_TRUE,
2281 x_result_flag OUT NOCOPY VARCHAR2
2282 ) AS
2283 l_role_id number;
2284 BEGIN
2285 Is_Administrator
2286 (
2287 p_api_version,
2288 p_init_msg_list,
2289 p_validation_level,
2290 x_return_status,
2291 x_msg_count,
2292 x_msg_data,
2293 p_check_login_user,
2294 p_resource_id,
2295 p_include_group_flag,
2296 x_result_flag
2297 );
2298 IF (x_result_flag <> FND_API.G_TRUE) THEN
2299 l_role_id := Get_RoleId(G_CAN_APPROVE_CODE);
2300 Check_ResourceRole
2301 (
2302 p_api_version => p_api_version,
2303 p_init_msg_list => p_init_msg_list,
2304 p_validation_level => p_validation_level,
2305 x_return_status => x_return_status,
2306 x_msg_count => x_msg_count,
2307 x_msg_data => x_msg_data,
2308 p_check_login_user => p_check_login_user,
2309 p_resource_id => p_resource_id,
2310 p_role_id => l_role_id,
2311 p_include_group_flag => p_include_group_flag,
2312 p_check_effective_date => FND_API.G_TRUE,
2313 x_result_flag => x_result_flag
2314 );
2315 END IF;
2316 END Can_ApproveContent;
2317 --------------------------------------------------------------------------------
2318 PROCEDURE Can_SetupChannel
2319 (
2320 p_api_version IN NUMBER,
2321 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2322 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2323 x_return_status OUT NOCOPY VARCHAR2,
2324 x_msg_count OUT NOCOPY NUMBER,
2325 x_msg_data OUT NOCOPY VARCHAR2,
2326 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
2327 p_resource_id IN NUMBER := FND_API.G_MISS_NUM,
2328 p_include_group_flag IN VARCHAR2 := FND_API.G_TRUE,
2329 x_result_flag OUT NOCOPY VARCHAR2
2330 ) AS
2331 l_role_id number;
2332 BEGIN
2333 Is_Administrator
2334 (
2335 p_api_version,
2336 p_init_msg_list,
2337 p_validation_level,
2338 x_return_status,
2339 x_msg_count,
2340 x_msg_data,
2341 p_check_login_user,
2342 p_resource_id,
2343 p_include_group_flag,
2344 x_result_flag
2345 );
2346 IF (x_result_flag <> FND_API.G_TRUE) THEN
2347 l_role_id := Get_RoleId(G_CAN_SETUP_CHANNEL_CODE);
2348 Check_ResourceRole
2349 (
2350 p_api_version => p_api_version,
2351 p_init_msg_list => p_init_msg_list,
2352 p_validation_level => p_validation_level,
2353 x_return_status => x_return_status,
2354 x_msg_count => x_msg_count,
2355 x_msg_data => x_msg_data,
2356 p_check_login_user => p_check_login_user,
2357 p_resource_id => p_resource_id,
2358 p_role_id => l_role_id,
2359 p_include_group_flag => p_include_group_flag,
2360 p_check_effective_date => FND_API.G_TRUE,
2361 x_result_flag => x_result_flag
2362 );
2363 END IF;
2364 END Can_SetupChannel;
2365 --------------------------------------------------------------------------------
2366 PROCEDURE Can_SetupCategory
2367 (
2368 p_api_version IN NUMBER,
2369 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2370 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2371 x_return_status OUT NOCOPY VARCHAR2,
2372 x_msg_count OUT NOCOPY NUMBER,
2373 x_msg_data OUT NOCOPY VARCHAR2,
2374 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
2375 p_resource_id IN NUMBER := FND_API.G_MISS_NUM,
2376 p_include_group_flag IN VARCHAR2 := FND_API.G_TRUE,
2377 x_result_flag OUT NOCOPY VARCHAR2
2378 ) AS
2379 l_role_id number;
2380 BEGIN
2381 Is_Administrator
2382 (
2383 p_api_version,
2384 p_init_msg_list,
2385 p_validation_level,
2386 x_return_status,
2387 x_msg_count,
2388 x_msg_data,
2389 p_check_login_user,
2390 p_resource_id,
2391 p_include_group_flag,
2392 x_result_flag
2393 );
2394 IF (x_result_flag <> FND_API.G_TRUE) THEN
2395 l_role_id := Get_RoleId(G_CAN_SETUP_CATEGORY_CODE);
2396 Check_ResourceRole
2397 (
2398 p_api_version => p_api_version,
2399 p_init_msg_list => p_init_msg_list,
2400 p_validation_level => p_validation_level,
2401 x_return_status => x_return_status,
2402 x_msg_count => x_msg_count,
2403 x_msg_data => x_msg_data,
2404 p_check_login_user => p_check_login_user,
2405 p_resource_id => p_resource_id,
2406 p_role_id => l_role_id,
2407 p_include_group_flag => p_include_group_flag,
2408 p_check_effective_date => FND_API.G_TRUE,
2409 x_result_flag => x_result_flag
2410 );
2411 END IF;
2412 END Can_SetupCategory;
2413 --------------------------------------------------------------------------------
2414 PROCEDURE Can_SetupDistRule
2415 (
2416 p_api_version IN NUMBER,
2417 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2418 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2419 x_return_status OUT NOCOPY VARCHAR2,
2420 x_msg_count OUT NOCOPY NUMBER,
2421 x_msg_data OUT NOCOPY VARCHAR2,
2422 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
2423 p_resource_id IN NUMBER := FND_API.G_MISS_NUM,
2424 p_include_group_flag IN VARCHAR2 := FND_API.G_TRUE,
2425 x_result_flag OUT NOCOPY VARCHAR2
2426 ) AS
2427 l_role_id number;
2428 BEGIN
2429 Is_Administrator
2430 (
2431 p_api_version,
2432 p_init_msg_list,
2433 p_validation_level,
2434 x_return_status,
2435 x_msg_count,
2436 x_msg_data,
2437 p_check_login_user,
2438 p_resource_id,
2439 p_include_group_flag,
2440 x_result_flag
2441 );
2442 IF (x_result_flag <> FND_API.G_TRUE) THEN
2443 l_role_id := Get_RoleId(G_CAN_SETUP_DIST_CODE);
2444 Check_ResourceRole
2445 (
2446 p_api_version => p_api_version,
2447 p_init_msg_list => p_init_msg_list,
2448 p_validation_level => p_validation_level,
2449 x_return_status => x_return_status,
2450 x_msg_count => x_msg_count,
2451 x_msg_data => x_msg_data,
2452 p_check_login_user => p_check_login_user,
2453 p_resource_id => p_resource_id,
2454 p_role_id => l_role_id,
2455 p_include_group_flag => p_include_group_flag,
2456 p_check_effective_date => FND_API.G_TRUE,
2457 x_result_flag => x_result_flag
2458 );
2459 END IF;
2460 END Can_SetupDistRule;
2461 --------------------------------------------------------------------------------
2462 ---------------------------------- GROUP ROLE ---------------------------------
2463 --------------------------------------------------------------------------------
2464 PROCEDURE Add_GroupRole
2465 (
2466 p_api_version IN NUMBER,
2467 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2468 p_commit IN VARCHAR2 := FND_API.G_FALSE,
2469 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2470 x_return_status OUT NOCOPY VARCHAR2,
2471 x_msg_count OUT NOCOPY NUMBER,
2472 x_msg_data OUT NOCOPY VARCHAR2,
2473 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
2474 p_group_id IN NUMBER,
2475 p_role_id IN NUMBER := FND_API.G_MISS_NUM,
2476 p_role_code IN VARCHAR2 := FND_API.G_MISS_CHAR
2477 ) AS
2478 BEGIN
2479 Add_AssignRoleHelper
2480 (
2481 p_api_version => p_api_version,
2482 p_init_msg_list => p_init_msg_list,
2483 p_commit => p_commit,
2484 p_validation_level => p_validation_level,
2485 x_return_status => x_return_status,
2486 x_msg_count => x_msg_count,
2487 x_msg_data => x_msg_data,
2488 p_check_login_user => p_check_login_user,
2489 p_resource_id => p_group_id,
2490 p_resource_type => G_GROUP_ROLE_CODE,
2491 p_role_id => p_role_id,
2492 p_role_code => p_role_code
2493 );
2494 END Add_GroupRole;
2495 --------------------------------------------------------------------------------
2496 PROCEDURE Add_GroupRole
2497 (
2498 p_api_version IN NUMBER,
2499 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2500 p_commit IN VARCHAR2 := FND_API.G_FALSE,
2501 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2502 x_return_status OUT NOCOPY VARCHAR2,
2503 x_msg_count OUT NOCOPY NUMBER,
2504 x_msg_data OUT NOCOPY VARCHAR2,
2505 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
2506 p_group_id IN NUMBER,
2507 p_role_id_varray IN AMV_NUMBER_VARRAY_TYPE
2508 ) AS
2509 l_api_name CONSTANT VARCHAR2(30) := 'Add_GroupRole';
2510 l_api_version CONSTANT NUMBER := 1.0;
2511 l_current_user_id NUMBER;
2512 l_current_login_id NUMBER;
2513 l_current_resource_id NUMBER;
2514 l_current_user_status VARCHAR2(30);
2515 --
2516 l_return_status VARCHAR2(1);
2517 l_admin_flag VARCHAR2(1);
2518 l_count NUMBER;
2519 --
2520 --
2521 BEGIN
2522 -- Standard call to check for call compatibility.
2523 SAVEPOINT Add_GroupRole_Pvt;
2524 IF NOT FND_API.Compatible_API_Call (
2525 l_api_version,
2526 p_api_version,
2527 l_api_name,
2528 G_PKG_NAME) THEN
2529 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2530 END IF;
2531 --Initialize message list if p_init_msg_list is TRUE.
2532 IF FND_API.To_Boolean (p_init_msg_list) THEN
2533 FND_MSG_PUB.initialize;
2534 END IF;
2535 -- Initialize API return status to success
2536 x_return_status := FND_API.G_RET_STS_SUCCESS;
2537 -- Get the current (login) user id.
2538 AMV_UTILITY_PVT.Get_UserInfo(
2539 x_user_id => l_current_user_id,
2540 x_login_id => l_current_login_id,
2541 x_resource_id => l_current_resource_id,
2542 x_user_status => l_current_user_status
2543 );
2544 IF (p_check_login_user = FND_API.G_TRUE) THEN
2545 -- Check if user is login and has the required privilege.
2546 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
2547 -- User is not login.
2548 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2549 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
2550 FND_MSG_PUB.Add;
2551 END IF;
2552 RAISE FND_API.G_EXC_ERROR;
2553 END IF;
2554 AMV_USER_PVT.Is_Administrator
2555 (
2556 p_api_version => 1.0,
2557 x_return_status => x_return_status,
2558 x_msg_count => x_msg_count,
2559 x_msg_data => x_msg_data,
2560 p_check_login_user => FND_API.G_FALSE,
2561 p_resource_id => l_current_resource_id,
2562 x_result_flag => l_admin_flag
2563 );
2564 IF (l_admin_flag <> FND_API.G_TRUE) THEN
2565 -- User is not an administrator.
2566 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2567 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
2568 FND_MSG_PUB.Add;
2569 END IF;
2570 RAISE FND_API.G_EXC_ERROR;
2571 END IF;
2572 END IF;
2573 -- This is to make database happy
2574 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
2575 l_current_login_id := -1;
2576 l_current_user_id := -1;
2577 END IF;
2578 -- Check if the group id is valid
2579 IF (AMV_UTILITY_PVT.IS_GROUPIDVALID(p_group_id) <> TRUE) THEN
2580 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2581 FND_MESSAGE.Set_name('AMV','AMV_INVALID_GROUP_ID');
2582 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_group_id, -1) ) );
2583 FND_MSG_PUB.Add;
2584 END IF;
2585 RAISE FND_API.G_EXC_ERROR;
2586 END IF;
2587
2588 IF (p_role_id_varray IS NULL) THEN
2589 l_count := 0;
2590 ELSE
2591 l_count := p_role_id_varray.count;
2592 END IF;
2593 FOR i IN 1..l_count LOOP
2594 Add_GroupRole
2595 (
2596 p_api_version => p_api_version,
2597 p_commit => p_commit,
2598 p_validation_level => p_validation_level,
2599 x_return_status => l_return_status,
2600 x_msg_count => x_msg_count,
2601 x_msg_data => x_msg_data,
2602 p_check_login_user => FND_API.G_FALSE,
2603 p_group_id => p_group_id,
2604 p_role_id => p_role_id_varray(i)
2605 );
2606 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2607 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2608 ELSIF (l_return_status = FND_API.G_RET_STS_ERROR AND
2609 x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2610 x_return_status := FND_API.G_RET_STS_ERROR;
2611 END IF;
2612 END LOOP;
2613 --Standard call to get message count and if count=1, get the message
2614 FND_MSG_PUB.Count_And_Get (
2615 p_encoded => FND_API.G_FALSE,
2616 p_count => x_msg_count,
2617 p_data => x_msg_data
2618 );
2619 EXCEPTION
2620 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2621 ROLLBACK TO Add_GroupRole_Pvt;
2622 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2623 -- Standard call to get message count and if count=1, get the message
2624 FND_MSG_PUB.Count_And_Get (
2625 p_encoded => FND_API.G_FALSE,
2626 p_count => x_msg_count,
2627 p_data => x_msg_data
2628 );
2629 WHEN FND_API.G_EXC_ERROR THEN
2630 ROLLBACK TO Add_GroupRole_Pvt;
2631 x_return_status := FND_API.G_RET_STS_ERROR;
2632 -- Standard call to get message count and if count=1, get the message
2633 FND_MSG_PUB.Count_And_Get (
2634 p_encoded => FND_API.G_FALSE,
2635 p_count => x_msg_count,
2636 p_data => x_msg_data
2637 );
2638 WHEN OTHERS THEN
2639 ROLLBACK TO Add_GroupRole_Pvt;
2640 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2641 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2642 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
2643 END IF;
2644 -- Standard call to get message count and if count=1, get the message
2645 FND_MSG_PUB.Count_And_Get (
2646 p_encoded => FND_API.G_FALSE,
2647 p_count => x_msg_count,
2648 p_data => x_msg_data
2649 );
2650 END Add_GroupRole;
2651 --------------------------------------------------------------------------------
2652 PROCEDURE Remove_GroupRole
2653 (
2654 p_api_version IN NUMBER,
2655 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2656 p_commit IN VARCHAR2 := FND_API.G_FALSE,
2657 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2658 x_return_status OUT NOCOPY VARCHAR2,
2659 x_msg_count OUT NOCOPY NUMBER,
2660 x_msg_data OUT NOCOPY VARCHAR2,
2661 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
2662 p_group_id IN NUMBER,
2663 p_role_id IN NUMBER := FND_API.G_MISS_NUM,
2664 p_role_code IN VARCHAR2 := FND_API.G_MISS_CHAR
2665 ) AS
2666 l_role_id number;
2667 BEGIN
2668 IF (p_role_id = FND_API.G_MISS_NUM) THEN
2669 l_role_id := Get_RoleId(p_role_code);
2670 ELSE
2671 l_role_id := p_role_id;
2672 END IF;
2673 Remove_RoleHelper
2674 (
2675 p_api_version => p_api_version,
2676 p_init_msg_list => p_init_msg_list,
2677 p_commit => p_commit,
2678 p_validation_level => p_validation_level,
2679 x_return_status => x_return_status,
2680 x_msg_count => x_msg_count,
2681 x_msg_data => x_msg_data,
2682 p_check_login_user => p_check_login_user,
2683 p_resource_id => p_group_id,
2684 p_resource_type => G_GROUP_ROLE_CODE,
2685 p_role_id => l_role_id
2686 );
2687 END Remove_GroupRole;
2688 --------------------------------------------------------------------------------
2689 PROCEDURE Remove_GroupRole
2690 (
2691 p_api_version IN NUMBER,
2692 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2693 p_commit IN VARCHAR2 := FND_API.G_FALSE,
2694 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2695 x_return_status OUT NOCOPY VARCHAR2,
2696 x_msg_count OUT NOCOPY NUMBER,
2697 x_msg_data OUT NOCOPY VARCHAR2,
2698 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
2699 p_group_id IN NUMBER,
2700 p_role_id_varray IN AMV_NUMBER_VARRAY_TYPE
2701 ) AS
2702 l_api_name CONSTANT VARCHAR2(30) := 'Remove_GroupRole';
2703 l_api_version CONSTANT NUMBER := 1.0;
2704 l_current_user_id NUMBER;
2705 l_current_login_id NUMBER;
2706 l_current_resource_id NUMBER;
2707 l_current_user_status VARCHAR2(30);
2708 --
2709 l_admin_flag VARCHAR2(1);
2710 l_count NUMBER;
2711 l_return_status VARCHAR2(1);
2712 l_role_id_varray AMV_NUMBER_VARRAY_TYPE;
2713 l_role_code_varray AMV_CHAR_VARRAY_TYPE;
2714 --
2715 BEGIN
2716 -- Standard call to check for call compatibility.
2717 SAVEPOINT Remove_GroupRole_Pvt;
2718 IF NOT FND_API.Compatible_API_Call (
2719 l_api_version,
2720 p_api_version,
2721 l_api_name,
2722 G_PKG_NAME) THEN
2723 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2724 END IF;
2725 --Initialize message list if p_init_msg_list is TRUE.
2726 IF FND_API.To_Boolean (p_init_msg_list) THEN
2727 FND_MSG_PUB.initialize;
2728 END IF;
2729 -- Initialize API return status to success
2730 x_return_status := FND_API.G_RET_STS_SUCCESS;
2731 -- Get the current (login) user id.
2732 AMV_UTILITY_PVT.Get_UserInfo(
2733 x_user_id => l_current_user_id,
2734 x_login_id => l_current_login_id,
2735 x_resource_id => l_current_resource_id,
2736 x_user_status => l_current_user_status
2737 );
2738 IF (p_check_login_user = FND_API.G_TRUE) THEN
2739 -- Check if user is login and has the required privilege.
2740 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
2741 -- User is not login.
2742 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2743 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
2744 FND_MSG_PUB.Add;
2745 END IF;
2746 RAISE FND_API.G_EXC_ERROR;
2747 END IF;
2748 AMV_USER_PVT.Is_Administrator
2749 (
2750 p_api_version => 1.0,
2751 x_return_status => x_return_status,
2752 x_msg_count => x_msg_count,
2753 x_msg_data => x_msg_data,
2754 p_check_login_user => FND_API.G_FALSE,
2755 p_resource_id => l_current_resource_id,
2756 x_result_flag => l_admin_flag
2757 );
2758 IF (l_admin_flag <> FND_API.G_TRUE) THEN
2759 -- User is not an administrator.
2760 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2761 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
2762 FND_MSG_PUB.Add;
2763 END IF;
2764 RAISE FND_API.G_EXC_ERROR;
2765 END IF;
2766 END IF;
2767 -- This is to make database happy
2768 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
2769 l_current_login_id := -1;
2770 l_current_user_id := -1;
2771 END IF;
2772 -- Check if the Group id is valid
2773 IF (AMV_UTILITY_PVT.IS_GROUPIDVALID(p_group_id) <> TRUE) THEN
2774 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
2775 FND_MESSAGE.Set_name('AMV','AMV_INVALID_GROUP_ID');
2776 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_group_id, -1) ) );
2777 FND_MSG_PUB.Add;
2778 END IF;
2779 RAISE FND_API.G_EXC_ERROR;
2780 END IF;
2781 IF (p_role_id_varray IS NULL OR p_role_id_varray.count = 0) THEN
2782 Get_GroupRoles
2783 (
2784 p_api_version => p_api_version,
2785 x_return_status => l_return_status,
2786 x_msg_count => x_msg_count,
2787 x_msg_data => x_msg_data,
2788 p_check_login_user => FND_API.G_FALSE,
2789 p_group_id => p_group_id,
2790 p_check_effective_date => FND_API.G_FALSE,
2791 x_role_id_varray => l_role_id_varray,
2792 x_role_code_varray => l_role_code_varray
2793 );
2794 IF (l_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2795 l_count := l_role_id_varray.count;
2796 ELSE
2797 l_count := 0;
2798 x_return_status := l_return_status;
2799 END IF;
2800 ELSE
2801 l_count := p_role_id_varray.count;
2802 l_role_id_varray := p_role_id_varray;
2803 END IF;
2804 FOR i IN 1..l_count LOOP
2805 Remove_GroupRole
2806 (
2807 p_api_version => p_api_version,
2808 p_commit => p_commit,
2809 p_validation_level => p_validation_level,
2810 x_return_status => l_return_status,
2811 x_msg_count => x_msg_count,
2812 x_msg_data => x_msg_data,
2813 p_check_login_user => FND_API.G_FALSE,
2814 p_group_id => p_group_id,
2815 p_role_id => l_role_id_varray(i),
2816 p_role_code => null
2817 );
2818 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2819 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2820 ELSIF (l_return_status = FND_API.G_RET_STS_ERROR AND
2821 x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
2822 x_return_status := FND_API.G_RET_STS_ERROR;
2823 END IF;
2824 END LOOP;
2825 --Standard call to get message count and if count=1, get the message
2826 FND_MSG_PUB.Count_And_Get (
2827 p_encoded => FND_API.G_FALSE,
2828 p_count => x_msg_count,
2829 p_data => x_msg_data
2830 );
2831 EXCEPTION
2832 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2833 ROLLBACK TO Remove_GroupRole_Pvt;
2834 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2835 -- Standard call to get message count and if count=1, get the message
2836 FND_MSG_PUB.Count_And_Get (
2837 p_encoded => FND_API.G_FALSE,
2838 p_count => x_msg_count,
2839 p_data => x_msg_data
2840 );
2841 WHEN FND_API.G_EXC_ERROR THEN
2842 ROLLBACK TO Remove_GroupRole_Pvt;
2843 x_return_status := FND_API.G_RET_STS_ERROR;
2844 -- Standard call to get message count and if count=1, get the message
2845 FND_MSG_PUB.Count_And_Get (
2846 p_encoded => FND_API.G_FALSE,
2847 p_count => x_msg_count,
2848 p_data => x_msg_data
2849 );
2850 WHEN OTHERS THEN
2851 ROLLBACK TO Remove_GroupRole_Pvt;
2852 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2853 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2854 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
2855 END IF;
2856 -- Standard call to get message count and if count=1, get the message
2857 FND_MSG_PUB.Count_And_Get (
2858 p_encoded => FND_API.G_FALSE,
2859 p_count => x_msg_count,
2860 p_data => x_msg_data
2861 );
2862 END Remove_GroupRole;
2863 --------------------------------------------------------------------------------
2864 PROCEDURE Replace_GroupRole
2865 (
2866 p_api_version IN NUMBER,
2867 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2868 p_commit IN VARCHAR2 := FND_API.G_FALSE,
2869 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2870 x_return_status OUT NOCOPY VARCHAR2,
2871 x_msg_count OUT NOCOPY NUMBER,
2872 x_msg_data OUT NOCOPY VARCHAR2,
2873 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
2874 p_group_id IN NUMBER,
2875 p_role_code IN VARCHAR2
2876 ) AS
2877 l_role_id_array AMV_NUMBER_VARRAY_TYPE;
2878 BEGIN
2879 Get_RoleIDArray (p_role_code, l_role_id_array);
2880 Replace_GroupRole
2881 (
2882 p_api_version => p_api_version,
2883 p_init_msg_list => p_init_msg_list,
2884 p_commit => p_commit,
2885 p_validation_level => p_validation_level,
2886 x_return_status => x_return_status,
2887 x_msg_count => x_msg_count,
2888 x_msg_data => x_msg_data,
2889 p_check_login_user => p_check_login_user,
2890 p_group_id => p_group_id,
2891 p_role_id_varray => l_role_id_array
2892 );
2893 END Replace_GroupRole;
2894 --------------------------------------------------------------------------------
2895 PROCEDURE Replace_GroupRole
2896 (
2897 p_api_version IN NUMBER,
2898 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
2899 p_commit IN VARCHAR2 := FND_API.G_FALSE,
2900 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2901 x_return_status OUT NOCOPY VARCHAR2,
2902 x_msg_count OUT NOCOPY NUMBER,
2903 x_msg_data OUT NOCOPY VARCHAR2,
2904 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
2905 p_group_id IN NUMBER,
2906 p_role_id_varray IN AMV_NUMBER_VARRAY_TYPE
2907 ) AS
2908 l_api_name CONSTANT VARCHAR2(30) := 'Replace_GroupRole';
2909 l_api_version CONSTANT NUMBER := 1.0;
2910 l_current_user_id NUMBER;
2911 l_current_login_id NUMBER;
2912 l_current_resource_id NUMBER;
2913 l_current_user_status VARCHAR2(30);
2914 --
2915 l_count NUMBER;
2916 l_temp NUMBER;
2917 l_return_status VARCHAR2(1);
2918 l_date DATE;
2919 --
2920 BEGIN
2921 -- Standard call to check for call compatibility.
2922 SAVEPOINT Replace_GroupRole_Pvt;
2923 x_return_status := FND_API.G_RET_STS_SUCCESS;
2924 --Remove the existing roles
2925 --Remove the existing roles
2926 Remove_GroupRole
2927 (
2928 p_api_version => p_api_version,
2929 p_init_msg_list => p_init_msg_list,
2930 p_validation_level => p_validation_level,
2931 x_return_status => l_return_status,
2932 x_msg_count => x_msg_count,
2933 x_msg_data => x_msg_data,
2934 p_check_login_user => p_check_login_user,
2935 p_group_id => p_group_id,
2936 p_role_id_varray => null
2937 );
2938 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2939 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2940 ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2941 RAISE FND_API.G_EXC_ERROR;
2942 END IF;
2943 Add_GroupRole
2944 (
2945 p_api_version => p_api_version,
2946 p_commit => p_commit,
2947 p_validation_level => p_validation_level,
2948 x_return_status => l_return_status,
2949 x_msg_count => x_msg_count,
2950 x_msg_data => x_msg_data,
2951 p_check_login_user => FND_API.G_FALSE,
2952 p_group_id => p_group_id,
2953 p_role_id_varray => p_role_id_varray
2954 );
2955 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
2956 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2957 ELSIF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
2958 RAISE FND_API.G_EXC_ERROR;
2959 END IF;
2960 --Standard call to get message count and if count=1, get the message
2961 FND_MSG_PUB.Count_And_Get (
2962 p_encoded => FND_API.G_FALSE,
2963 p_count => x_msg_count,
2964 p_data => x_msg_data
2965 );
2966 EXCEPTION
2967 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2968 ROLLBACK TO Replace_GroupRole_Pvt;
2969 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2970 -- Standard call to get message count and if count=1, get the message
2971 FND_MSG_PUB.Count_And_Get (
2972 p_encoded => FND_API.G_FALSE,
2973 p_count => x_msg_count,
2974 p_data => x_msg_data
2975 );
2976 WHEN FND_API.G_EXC_ERROR THEN
2977 ROLLBACK TO Replace_GroupRole_Pvt;
2978 x_return_status := FND_API.G_RET_STS_ERROR;
2979 -- Standard call to get message count and if count=1, get the message
2980 FND_MSG_PUB.Count_And_Get (
2981 p_encoded => FND_API.G_FALSE,
2982 p_count => x_msg_count,
2983 p_data => x_msg_data
2984 );
2985 WHEN OTHERS THEN
2986 ROLLBACK TO Replace_GroupRole_Pvt;
2987 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2988 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
2989 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
2990 END IF;
2991 -- Standard call to get message count and if count=1, get the message
2992 FND_MSG_PUB.Count_And_Get (
2993 p_encoded => FND_API.G_FALSE,
2994 p_count => x_msg_count,
2995 p_data => x_msg_data
2996 );
2997 END Replace_GroupRole;
2998 --------------------------------------------------------------------------------
2999 PROCEDURE Get_GroupRoles
3000 (
3001 p_api_version IN NUMBER,
3002 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3003 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3004 x_return_status OUT NOCOPY VARCHAR2,
3005 x_msg_count OUT NOCOPY NUMBER,
3006 x_msg_data OUT NOCOPY VARCHAR2,
3007 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
3008 p_group_id IN NUMBER,
3009 p_check_effective_date IN VARCHAR2 := FND_API.G_TRUE,
3010 x_role_id_varray OUT NOCOPY AMV_NUMBER_VARRAY_TYPE,
3011 x_role_code_varray OUT NOCOPY AMV_CHAR_VARRAY_TYPE
3012 ) AS
3013 l_api_name CONSTANT VARCHAR2(30) := 'Get_GroupRoles';
3014 l_api_version CONSTANT NUMBER := 1.0;
3015 l_current_user_id NUMBER;
3016 l_current_login_id NUMBER;
3017 l_current_resource_id NUMBER;
3018 l_current_user_status VARCHAR2(30);
3019 --
3020 l_count NUMBER := 0;
3021 --
3022 CURSOR Get_GroupRole_csr IS
3023 Select
3024 rol.role_code,
3025 rol.role_id
3026 From jtf_rs_role_relations_vl rel, jtf_rs_roles_vl rol
3027 Where rol.role_id = rel.role_id
3028 And rel.role_resource_id = p_group_id
3029 And rel.role_resource_type = G_GROUP_ROLE_CODE
3030 And rol.role_type_code = G_MES_ROLE_TYPE_NAME
3031 Order by rol.role_code;
3032 --
3033 BEGIN
3034 -- Standard call to check for call compatibility.
3035 IF NOT FND_API.Compatible_API_Call (
3036 l_api_version,
3037 p_api_version,
3038 l_api_name,
3039 G_PKG_NAME) THEN
3040 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3041 END IF;
3042 --Initialize message list if p_init_msg_list is TRUE.
3043 IF FND_API.To_Boolean (p_init_msg_list) THEN
3044 FND_MSG_PUB.initialize;
3045 END IF;
3046 -- Initialize API return status to success
3047 x_return_status := FND_API.G_RET_STS_SUCCESS;
3048 x_role_id_varray := AMV_NUMBER_VARRAY_TYPE();
3049 x_role_code_varray := AMV_CHAR_VARRAY_TYPE();
3050 -- Get the current (login) user id.
3051 AMV_UTILITY_PVT.Get_UserInfo(
3052 x_user_id => l_current_user_id,
3053 x_login_id => l_current_login_id,
3054 x_resource_id => l_current_resource_id,
3055 x_user_status => l_current_user_status
3056 );
3057 IF (p_check_login_user = FND_API.G_TRUE) THEN
3058 -- Check if user is login and has the required privilege.
3059 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
3060 -- User is not login.
3061 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3062 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
3063 FND_MSG_PUB.Add;
3064 END IF;
3065 RAISE FND_API.G_EXC_ERROR;
3066 END IF;
3067 END IF;
3068 -- This is to make database happy
3069 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
3070 l_current_login_id := -1;
3071 l_current_user_id := -1;
3072 END IF;
3073 -- Check if the group id is valid
3074 IF (AMV_UTILITY_PVT.IS_GROUPIDVALID(p_group_id) <> TRUE) THEN
3075 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3076 FND_MESSAGE.Set_name('AMV','AMV_INVALID_GROUP_ID');
3077 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_group_id, -1) ) );
3078 FND_MSG_PUB.Add;
3079 END IF;
3080 RAISE FND_API.G_EXC_ERROR;
3081 END IF;
3082 FOR csr1 IN Get_GroupRole_csr LOOP
3083 l_count := l_count + 1;
3084 x_role_id_varray.extend;
3085 x_role_code_varray.extend;
3086 x_role_id_varray(l_count) := csr1.role_id;
3087 x_role_code_varray(l_count) := csr1.role_code;
3088 END LOOP;
3089 --Standard call to get message count and if count=1, get the message
3090 FND_MSG_PUB.Count_And_Get (
3091 p_encoded => FND_API.G_FALSE,
3092 p_count => x_msg_count,
3093 p_data => x_msg_data
3094 );
3095 EXCEPTION
3096 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3097 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3098 -- Standard call to get message count and if count=1, get the message
3099 FND_MSG_PUB.Count_And_Get (
3100 p_encoded => FND_API.G_FALSE,
3101 p_count => x_msg_count,
3102 p_data => x_msg_data
3103 );
3104 WHEN FND_API.G_EXC_ERROR THEN
3105 x_return_status := FND_API.G_RET_STS_ERROR;
3106 -- Standard call to get message count and if count=1, get the message
3107 FND_MSG_PUB.Count_And_Get (
3108 p_encoded => FND_API.G_FALSE,
3109 p_count => x_msg_count,
3110 p_data => x_msg_data
3111 );
3112 WHEN OTHERS THEN
3113 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3114 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3115 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3116 END IF;
3117 -- Standard call to get message count and if count=1, get the message
3118 FND_MSG_PUB.Count_And_Get (
3119 p_encoded => FND_API.G_FALSE,
3120 p_count => x_msg_count,
3121 p_data => x_msg_data
3122 );
3123 END Get_GroupRoles;
3124 --------------------------------------------------------------------------------
3125 --------------------------------------------------------------------------------
3126 PROCEDURE Check_GroupRole
3127 (
3128 p_api_version IN NUMBER,
3129 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3130 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3131 x_return_status OUT NOCOPY VARCHAR2,
3132 x_msg_count OUT NOCOPY NUMBER,
3133 x_msg_data OUT NOCOPY VARCHAR2,
3134 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
3135 p_group_id IN NUMBER,
3136 p_role_id IN NUMBER,
3137 p_check_effective_date IN VARCHAR2 := FND_API.G_TRUE,
3138 x_result_flag OUT NOCOPY VARCHAR2
3139 ) AS
3140 l_api_name CONSTANT VARCHAR2(30) := 'Check_GroupRole';
3141 l_api_version CONSTANT NUMBER := 1.0;
3142 l_current_user_id NUMBER;
3143 l_current_login_id NUMBER;
3144 l_current_resource_id NUMBER;
3145 l_current_user_status VARCHAR2(30);
3146 --
3147 l_temp NUMBER;
3148 --
3149 CURSOR Get_GroupRole_csr IS
3150 Select
3151 role_relate_id
3152 From jtf_rs_role_relations_vl
3153 Where role_id = p_role_id
3154 And role_resource_id = p_group_id
3155 And role_resource_type = G_GROUP_ROLE_CODE
3156 ;
3157 --
3158 CURSOR Get_GroupRole2_csr IS
3159 Select
3160 r.role_relate_id
3161 From jtf_rs_role_relations_vl r, jtf_rs_groups_vl g
3162 Where r.role_id = p_role_id
3163 And r.role_resource_id = p_group_id
3164 And r.role_resource_type = G_GROUP_ROLE_CODE
3165 And r.start_date_active < sysdate
3166 And nvl(r.end_date_active, sysdate-1) < sysdate
3167 And g.group_id = p_group_id
3168 And g.start_date_active < sysdate
3169 And nvl(g.end_date_active, sysdate-1) < sysdate;
3170 --
3171 BEGIN
3172 -- Standard call to check for call compatibility.
3173 IF NOT FND_API.Compatible_API_Call (
3174 l_api_version,
3175 p_api_version,
3176 l_api_name,
3177 G_PKG_NAME) THEN
3178 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3179 END IF;
3180 --Initialize message list if p_init_msg_list is TRUE.
3181 IF FND_API.To_Boolean (p_init_msg_list) THEN
3182 FND_MSG_PUB.initialize;
3183 END IF;
3184 -- Initialize API return status to success
3185 x_return_status := FND_API.G_RET_STS_SUCCESS;
3186 x_result_flag := FND_API.G_FALSE;
3187 -- Get the current (login) user id.
3188 AMV_UTILITY_PVT.Get_UserInfo(
3189 x_user_id => l_current_user_id,
3190 x_login_id => l_current_login_id,
3191 x_resource_id => l_current_resource_id,
3192 x_user_status => l_current_user_status
3193 );
3194 IF (p_check_login_user = FND_API.G_TRUE) THEN
3195 -- Check if user is login and has the required privilege.
3196 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
3197 -- User is not login.
3198 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3199 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
3200 FND_MSG_PUB.Add;
3201 END IF;
3202 RAISE FND_API.G_EXC_ERROR;
3203 END IF;
3204 END IF;
3205 -- Check if the resource id is valid
3206 IF (AMV_UTILITY_PVT.IS_GROUPIDVALID(p_group_id) <> TRUE) THEN
3207 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3208 FND_MESSAGE.Set_name('AMV','AMV_INVALID_GROUP_ID');
3209 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_group_id, -1) ) );
3210 FND_MSG_PUB.Add;
3211 END IF;
3212 RAISE FND_API.G_EXC_ERROR;
3213 END IF;
3214 IF (p_check_effective_date = FND_API.G_TRUE) THEN
3215 OPEN Get_GroupRole2_csr;
3216 FETCH Get_GroupRole2_csr INTO l_temp;
3217 IF (Get_GroupRole2_csr%FOUND) THEN
3218 x_result_flag := FND_API.G_TRUE;
3219 ELSE
3220 x_result_flag := FND_API.G_FALSE;
3221 END IF;
3222 CLOSE Get_GroupRole2_csr;
3223 ELSE
3224 OPEN Get_GroupRole_csr;
3225 FETCH Get_GroupRole_csr INTO l_temp;
3226 IF (Get_GroupRole_csr%FOUND) THEN
3227 x_result_flag := FND_API.G_TRUE;
3228 ELSE
3229 x_result_flag := FND_API.G_FALSE;
3230 END IF;
3231 CLOSE Get_GroupRole_csr;
3232 END IF;
3233 --Standard call to get message count and if count=1, get the message
3234 FND_MSG_PUB.Count_And_Get (
3235 p_encoded => FND_API.G_FALSE,
3236 p_count => x_msg_count,
3237 p_data => x_msg_data
3238 );
3239 EXCEPTION
3240 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3241 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3242 -- Standard call to get message count and if count=1, get the message
3243 FND_MSG_PUB.Count_And_Get (
3244 p_encoded => FND_API.G_FALSE,
3245 p_count => x_msg_count,
3246 p_data => x_msg_data
3247 );
3248 WHEN FND_API.G_EXC_ERROR THEN
3249 x_return_status := FND_API.G_RET_STS_ERROR;
3250 -- Standard call to get message count and if count=1, get the message
3251 FND_MSG_PUB.Count_And_Get (
3252 p_encoded => FND_API.G_FALSE,
3253 p_count => x_msg_count,
3254 p_data => x_msg_data
3255 );
3256 WHEN OTHERS THEN
3257 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3258 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3259 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3260 END IF;
3261 -- Standard call to get message count and if count=1, get the message
3262 FND_MSG_PUB.Count_And_Get (
3263 p_encoded => FND_API.G_FALSE,
3264 p_count => x_msg_count,
3265 p_data => x_msg_data
3266 );
3267 END Check_GroupRole;
3268 --------------------------------------------------------------------------------
3269 ---------------------------------------- GROUP ---------------------------------
3270 --------------------------------------------------------------------------------
3271 PROCEDURE Add_Group
3272 (
3273 p_api_version IN NUMBER,
3274 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3275 p_commit IN VARCHAR2 := FND_API.G_FALSE,
3276 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3277 x_return_status OUT NOCOPY VARCHAR2,
3278 x_msg_count OUT NOCOPY NUMBER,
3279 x_msg_data OUT NOCOPY VARCHAR2,
3280 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
3281 p_group_name IN VARCHAR2,
3282 p_group_desc IN VARCHAR2 := NULL,
3283 p_group_usage IN VARCHAR2,
3284 p_email_address IN VARCHAR2 := NULL,
3285 p_start_date IN DATE := NULL,
3286 p_end_date IN DATE := NULL,
3287 x_group_id OUT NOCOPY NUMBER
3288 ) AS
3289 l_api_name CONSTANT VARCHAR2(30) := 'Add_Group';
3290 l_api_version CONSTANT NUMBER := 1.0;
3291 l_current_user_id NUMBER;
3292 l_current_login_id NUMBER;
3293 l_current_resource_id NUMBER;
3294 l_current_user_status VARCHAR2(30);
3295 --
3296 l_admin_flag VARCHAR2(1);
3297 l_group_id NUMBER;
3298 l_usage_id NUMBER;
3299 l_group_number NUMBER;
3300 l_channel_id NUMBER;
3301 l_channel_record AMV_CHANNEL_PVT.AMV_CHANNEL_OBJ_TYPE;
3302 l_start_date DATE;
3303 l_end_date DATE;
3304 l_group_desc VARCHAR2(2000);
3305 l_email_address VARCHAR2(2000);
3306 --
3307 CURSOR Check_Group_csr IS
3308 Select g.group_id
3309 From jtf_rs_groups_vl g, jtf_rs_group_usages usg
3310 Where g.group_name = p_group_name
3311 And g.start_date_active < sysdate
3312 And nvl(g.end_date_active, sysdate+1) > sysdate
3313 And usg.group_id = g.group_id
3314 And usg.usage = p_group_usage
3315 ;
3316 --
3317 BEGIN
3318 -- Standard call to check for call compatibility.
3319 SAVEPOINT Add_Group_Pvt;
3320 IF NOT FND_API.Compatible_API_Call (
3321 l_api_version,
3322 p_api_version,
3323 l_api_name,
3324 G_PKG_NAME) THEN
3325 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3326 END IF;
3327 --Initialize message list if p_init_msg_list is TRUE.
3328 IF FND_API.To_Boolean (p_init_msg_list) THEN
3329 FND_MSG_PUB.initialize;
3330 END IF;
3331 -- Initialize API return status to success
3332 x_return_status := FND_API.G_RET_STS_SUCCESS;
3333 -- Get the current (login) user id.
3334 AMV_UTILITY_PVT.Get_UserInfo(
3335 x_user_id => l_current_user_id,
3336 x_login_id => l_current_login_id,
3337 x_resource_id => l_current_resource_id,
3338 x_user_status => l_current_user_status
3339 );
3340
3341 IF (p_check_login_user = FND_API.G_TRUE) THEN
3342 -- Check if user is login and has the required privilege.
3343 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
3344 -- User is not login.
3345 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3346 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
3347 FND_MSG_PUB.Add;
3348 END IF;
3349 RAISE FND_API.G_EXC_ERROR;
3350 END IF;
3351 AMV_USER_PVT.Is_Administrator
3352 (
3353 p_api_version => 1.0,
3354 x_return_status => x_return_status,
3355 x_msg_count => x_msg_count,
3356 x_msg_data => x_msg_data,
3357 p_check_login_user => FND_API.G_FALSE,
3358 p_resource_id => l_current_resource_id,
3359 x_result_flag => l_admin_flag
3360 );
3361 IF (l_admin_flag <> FND_API.G_TRUE) THEN
3362 -- User is not an administrator.
3363 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3364 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
3365 FND_MSG_PUB.Add;
3366 END IF;
3367 RAISE FND_API.G_EXC_ERROR;
3368 END IF;
3369 END IF;
3370 -- This is to make database happy
3371 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
3372 l_current_login_id := -1;
3373 l_current_user_id := -1;
3374 END IF;
3375 -- Check if the group name is unique
3376 OPEN Check_Group_csr;
3377 FETCH Check_Group_csr INTO l_group_id;
3378 IF (Check_Group_csr%FOUND) THEN
3379 CLOSE Check_Group_csr;
3380 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3381 FND_MESSAGE.Set_name('AMV','AMV_DUPLICATE_GROUP_NAME');
3382 FND_MESSAGE.Set_Token('NAME', p_group_name );
3383 FND_MSG_PUB.Add;
3384 END IF;
3385 RAISE FND_API.G_EXC_ERROR;
3386 ELSE
3387 CLOSE Check_Group_csr;
3388 END IF;
3389 IF (p_start_date is null OR p_start_date = FND_API.G_MISS_DATE) THEN
3390 l_start_date := sysdate;
3391 ELSE
3392 l_start_date := p_start_date;
3393 END IF;
3394 IF (p_end_date is null OR p_end_date = FND_API.G_MISS_DATE) THEN
3395 l_end_date := null;
3396 ELSE
3397 l_end_date := p_end_date;
3398 END IF;
3399 IF (p_group_desc is null OR p_group_desc = FND_API.G_MISS_CHAR) THEN
3400 l_group_desc := null;
3401 ELSE
3402 l_group_desc := p_group_desc;
3403 END IF;
3404 IF (p_email_address is null OR p_email_address = FND_API.G_MISS_CHAR) THEN
3405 l_email_address := null;
3406 ELSE
3407 l_email_address := p_email_address;
3408 END IF;
3409 jtf_rs_groups_pub.create_resource_group
3410 (
3411 p_api_version => 1.0,
3412 p_commit => FND_API.G_FALSE,
3413 p_group_name => p_group_name,
3414 p_group_desc => l_group_desc,
3415 p_email_address => l_email_address,
3416 p_start_date_active => l_start_date,
3417 p_end_date_active => l_end_date,
3418 x_return_status => x_return_status,
3419 x_msg_count => x_msg_count,
3420 x_msg_data => x_msg_data,
3421 x_group_id => x_group_id,
3422 x_group_number => l_group_number
3423 );
3424 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3425 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3426 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR ) THEN
3427 RAISE FND_API.G_EXC_ERROR;
3428 END IF;
3429 -- Add group usage.
3430 jtf_rs_group_usages_pub.create_group_usage
3431 (
3432 p_api_version => 1.0,
3433 p_group_id => x_group_id,
3434 p_group_number => l_group_number,
3435 p_usage => p_group_usage,
3436 x_return_status => x_return_status,
3437 x_msg_count => x_msg_count,
3438 x_msg_data => x_msg_data,
3439 x_group_usage_id => l_usage_id
3440 );
3441 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3442 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3443 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR ) THEN
3444 RAISE FND_API.G_EXC_ERROR;
3445 END IF;
3446 -- create group channel
3447
3448 l_channel_record.channel_id := FND_API.G_MISS_NUM;
3449 l_channel_record.object_version_number := FND_API.G_MISS_NUM;
3450 l_channel_record.channel_name := FND_API.G_MISS_CHAR;
3451 l_channel_record.description := FND_API.G_MISS_CHAR;
3452 l_channel_record.channel_type := 'GROUP';
3453 l_channel_record.channel_category_id := FND_API.G_MISS_NUM;
3454 l_channel_record.status := 'ACTIVE';
3455 l_channel_record.owner_user_id := l_current_resource_id;
3456 l_channel_record.default_approver_user_id := l_current_resource_id;
3457 l_channel_record.effective_start_date := l_start_date;
3458 l_channel_record.expiration_date := l_end_date;
3459 l_channel_record.access_level_type := 'PRIVATE';
3460 l_channel_record.pub_need_approval_flag := FND_API.G_MISS_CHAR;
3461 l_channel_record.sub_need_approval_flag := FND_API.G_MISS_CHAR;
3462 l_channel_record.match_on_all_criteria_flag := FND_API.G_MISS_CHAR;
3463 l_channel_record.match_on_keyword_flag := FND_API.G_MISS_CHAR;
3464 l_channel_record.match_on_author_flag := FND_API.G_MISS_CHAR;
3465 l_channel_record.match_on_perspective_flag := FND_API.G_MISS_CHAR;
3466 l_channel_record.match_on_item_type_flag := FND_API.G_MISS_CHAR;
3467 l_channel_record.match_on_content_type_flag := FND_API.G_MISS_CHAR;
3468 l_channel_record.match_on_time_flag := FND_API.G_MISS_CHAR;
3469 l_channel_record.application_id := 520;
3470 l_channel_record.external_access_flag := FND_API.G_MISS_CHAR;
3471 l_channel_record.item_match_count := FND_API.G_MISS_NUM;
3472 l_channel_record.last_match_time := FND_API.G_MISS_DATE;
3473 l_channel_record.notification_interval_type := FND_API.G_MISS_CHAR;
3474 l_channel_record.last_notification_time := FND_API.G_MISS_DATE;
3475 l_channel_record.attribute_category := FND_API.G_MISS_CHAR;
3476 l_channel_record.attribute1 := FND_API.G_MISS_CHAR;
3477 l_channel_record.attribute2 := FND_API.G_MISS_CHAR;
3478 l_channel_record.attribute3 := FND_API.G_MISS_CHAR;
3479 l_channel_record.attribute4 := FND_API.G_MISS_CHAR;
3480 l_channel_record.attribute5 := FND_API.G_MISS_CHAR;
3481 l_channel_record.attribute6 := FND_API.G_MISS_CHAR;
3482 l_channel_record.attribute7 := FND_API.G_MISS_CHAR;
3483 l_channel_record.attribute8 := FND_API.G_MISS_CHAR;
3484 l_channel_record.attribute9 := FND_API.G_MISS_CHAR;
3485 l_channel_record.attribute10 := FND_API.G_MISS_CHAR;
3486 l_channel_record.attribute11 := FND_API.G_MISS_CHAR;
3487 l_channel_record.attribute12 := FND_API.G_MISS_CHAR;
3488 l_channel_record.attribute13 := FND_API.G_MISS_CHAR;
3489 l_channel_record.attribute14 := FND_API.G_MISS_CHAR;
3490 l_channel_record.attribute15 := FND_API.G_MISS_CHAR;
3491
3492 /*
3493 l_channel_record := AMV_CHANNEL_OBJ_TYPE
3494 (
3495 FND_API.G_MISS_NUM, --CHANNEL_ID
3496 FND_API.G_MISS_NUM, --OBJECT_VERSION_NUMBER
3497 FND_API.G_MISS_CHAR, --CHANNEL_NAME
3498 FND_API.G_MISS_CHAR, --DESCRIPTION
3499 'GROUP', --CHANNEL_TYPE
3500 FND_API.G_MISS_NUM, --CHANNEL_CATEGORY_ID
3501 'ACTIVE', --STATUS
3502 l_current_resource_id, --OWNER_USER_ID
3503 l_current_resource_id, --DEFAULT_APPROVER_USER_ID
3504 l_start_date, --EFFECTIVE_START_DATE
3505 l_end_date, --EXPIRATION_DATE
3506 'PRIVATE', --ACCESS_LEVEL_TYPE
3507 FND_API.G_MISS_CHAR, --PUB_NEED_APPROVAL_FLAG
3508 FND_API.G_MISS_CHAR, --SUB_NEED_APPROVAL_FLAG
3509 FND_API.G_MISS_CHAR, --MATCH_ON_ALL_CRITERIA_FLAG
3510 FND_API.G_MISS_CHAR, --MATCH_ON_KEYWORD_FLAG
3511 FND_API.G_MISS_CHAR, --MATCH_ON_AUTHOR_FLAG
3512 FND_API.G_MISS_CHAR, --MATCH_ON_PERSPECTIVE_FLAG
3513 FND_API.G_MISS_CHAR, --MATCH_ON_ITEM_TYPE_FLAG
3514 FND_API.G_MISS_CHAR, --MATCH_ON_CONTENT_TYPE_FLAG
3515 FND_API.G_MISS_CHAR, --MATCH_ON_TIME_FLAG
3516 520,
3517 FND_API.G_MISS_CHAR, --EXTERNAL_ACCESS_FLAG
3518 FND_API.G_MISS_NUM, --ITEM_MATCH_COUNT
3519 FND_API.G_MISS_DATE, --LAST_MATCH_TIME
3520 FND_API.G_MISS_CHAR, --NOTIFICATION_INTERVAL_TYPE
3521 FND_API.G_MISS_DATE, --LAST_NOTIFICATION_TIME
3522 FND_API.G_MISS_CHAR, --ATTRIBUTE_CATEGORY
3523 FND_API.G_MISS_CHAR, --ATTRIBUTE1
3524 FND_API.G_MISS_CHAR, --ATTRIBUTE2
3525 FND_API.G_MISS_CHAR, --ATTRIBUTE3
3526 FND_API.G_MISS_CHAR, --ATTRIBUTE4
3527 FND_API.G_MISS_CHAR, --ATTRIBUTE5
3528 FND_API.G_MISS_CHAR, --ATTRIBUTE6
3529 FND_API.G_MISS_CHAR, --ATTRIBUTE7
3530 FND_API.G_MISS_CHAR, --ATTRIBUTE8
3531 FND_API.G_MISS_CHAR, --ATTRIBUTE9
3532 FND_API.G_MISS_CHAR, --ATTRIBUTE10
3533 FND_API.G_MISS_CHAR, --ATTRIBUTE11
3534 FND_API.G_MISS_CHAR, --ATTRIBUTE12
3535 FND_API.G_MISS_CHAR, --ATTRIBUTE13
3536 FND_API.G_MISS_CHAR, --ATTRIBUTE14
3537 FND_API.G_MISS_CHAR --ATTRIBUTE15
3538 );
3539 */
3540 amv_channel_pvt.Add_GroupChannel
3541 (
3542 p_api_version => p_api_version,
3543 x_return_status => x_return_status,
3544 x_msg_count => x_msg_count,
3545 x_msg_data => x_msg_data,
3546 p_check_login_user => p_check_login_user,
3547 p_group_id => x_group_id,
3548 p_channel_record => l_channel_record,
3549 x_channel_id => l_channel_id
3550 );
3551 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3552 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3553 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR ) THEN
3554 RAISE FND_API.G_EXC_ERROR;
3555 END IF;
3556 IF FND_API.To_Boolean ( p_commit ) THEN
3557 COMMIT WORK;
3558 END IF;
3559 --Standard call to get message count and if count=1, get the message
3560 FND_MSG_PUB.Count_And_Get (
3561 p_encoded => FND_API.G_FALSE,
3562 p_count => x_msg_count,
3563 p_data => x_msg_data
3564 );
3565 EXCEPTION
3566 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3567 ROLLBACK TO Add_Group_Pvt;
3568 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3569 -- Standard call to get message count and if count=1, get the message
3570 FND_MSG_PUB.Count_And_Get (
3571 p_encoded => FND_API.G_FALSE,
3572 p_count => x_msg_count,
3573 p_data => x_msg_data
3574 );
3575 WHEN FND_API.G_EXC_ERROR THEN
3576 ROLLBACK TO Add_Group_Pvt;
3577 x_return_status := FND_API.G_RET_STS_ERROR;
3578 -- Standard call to get message count and if count=1, get the message
3579 FND_MSG_PUB.Count_And_Get (
3580 p_encoded => FND_API.G_FALSE,
3581 p_count => x_msg_count,
3582 p_data => x_msg_data
3583 );
3584 WHEN OTHERS THEN
3585 ROLLBACK TO Add_Group_Pvt;
3586 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3587 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3588 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3589 END IF;
3590 -- Standard call to get message count and if count=1, get the message
3591 FND_MSG_PUB.Count_And_Get (
3592 p_encoded => FND_API.G_FALSE,
3593 p_count => x_msg_count,
3594 p_data => x_msg_data
3595 );
3596 END Add_Group;
3597 --------------------------------------------------------------------------------
3598 PROCEDURE Update_Group
3599 (
3600 p_api_version IN NUMBER,
3601 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3602 p_commit IN VARCHAR2 := FND_API.G_FALSE,
3603 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3604 x_return_status OUT NOCOPY VARCHAR2,
3605 x_msg_count OUT NOCOPY NUMBER,
3606 x_msg_data OUT NOCOPY VARCHAR2,
3607 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
3608 p_group_id IN NUMBER,
3609 p_new_group_name IN VARCHAR2 := FND_API.G_MISS_CHAR,
3610 p_new_group_desc IN VARCHAR2 := FND_API.G_MISS_CHAR,
3611 p_group_usage IN VARCHAR2 := G_MES_GROUP_USAGE,
3612 p_email_address IN VARCHAR2 := FND_API.G_MISS_CHAR,
3613 p_new_start_date IN DATE := FND_API.G_MISS_DATE,
3614 p_new_end_date IN DATE := FND_API.G_MISS_DATE
3615 ) AS
3616 l_api_name CONSTANT VARCHAR2(30) := 'Update_Group';
3617 l_api_version CONSTANT NUMBER := 1.0;
3618 l_current_user_id NUMBER;
3619 l_current_login_id NUMBER;
3620 l_current_resource_id NUMBER;
3621 l_current_user_status VARCHAR2(30);
3622 --
3623 l_admin_flag VARCHAR2(1);
3624 l_group_id NUMBER;
3625 l_group_number VARCHAR2(30) := null; -- dummy
3626 l_object_version_num NUMBER;
3627 l_channel_id NUMBER;
3628 --
3629 CURSOR Get_Version_csr IS
3630 Select object_version_number
3631 From jtf_rs_groups_vl
3632 Where group_id = p_group_id
3633 ;
3634 CURSOR Check_Group_csr(p_name IN VARCHAR2) IS
3635 Select g.group_id
3636 From jtf_rs_groups_vl g, jtf_rs_group_usages usg
3637 Where g.group_name = p_name
3638 And usg.group_id = g.group_id
3639 And usg.usage = p_group_usage
3640 ;
3641 CURSOR Get_GroupChannelId(p_g_id IN NUMBER) IS
3642 Select subscribing_to_id channel_id
3643 From amv_u_my_channels
3644 Where user_or_group_id = p_g_id
3645 And user_or_group_type = G_GROUP_ARC_TYPE
3646 And subscribing_to_type = G_CHAN_ARC_TYPE
3647 And subscription_reason_type = 'ENFORCED'
3648 ;
3649 --
3650 BEGIN
3651 -- Standard call to check for call compatibility.
3652 SAVEPOINT Update_Group_Pvt;
3653 IF NOT FND_API.Compatible_API_Call (
3654 l_api_version,
3655 p_api_version,
3656 l_api_name,
3657 G_PKG_NAME) THEN
3658 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3659 END IF;
3660 --Initialize message list if p_init_msg_list is TRUE.
3661 IF FND_API.To_Boolean (p_init_msg_list) THEN
3662 FND_MSG_PUB.initialize;
3663 END IF;
3664 -- Initialize API return status to success
3665 x_return_status := FND_API.G_RET_STS_SUCCESS;
3666 -- Get the current (login) user id.
3667 AMV_UTILITY_PVT.Get_UserInfo(
3668 x_user_id => l_current_user_id,
3669 x_login_id => l_current_login_id,
3670 x_resource_id => l_current_resource_id,
3671 x_user_status => l_current_user_status
3672 );
3673 IF (p_check_login_user = FND_API.G_TRUE) THEN
3674 -- Check if user is login and has the required privilege.
3675 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
3676 -- User is not login.
3677 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3678 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
3679 FND_MSG_PUB.Add;
3680 END IF;
3681 RAISE FND_API.G_EXC_ERROR;
3682 END IF;
3683 AMV_USER_PVT.Is_Administrator
3684 (
3685 p_api_version => 1.0,
3686 x_return_status => x_return_status,
3687 x_msg_count => x_msg_count,
3688 x_msg_data => x_msg_data,
3689 p_check_login_user => FND_API.G_FALSE,
3690 p_resource_id => l_current_resource_id,
3691 x_result_flag => l_admin_flag
3692 );
3693 IF (l_admin_flag <> FND_API.G_TRUE) THEN
3694 -- User is not an administrator.
3695 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3696 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
3697 FND_MSG_PUB.Add;
3698 END IF;
3699 RAISE FND_API.G_EXC_ERROR;
3700 END IF;
3701 END IF;
3702 -- This is to make database happy
3703 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
3704 l_current_login_id := -1;
3705 l_current_user_id := -1;
3706 END IF;
3707 -- Check if the group id is valid
3708 IF (AMV_UTILITY_PVT.IS_GROUPIDVALID(p_group_id) <> TRUE) THEN
3709 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3710 FND_MESSAGE.Set_name('AMV','AMV_INVALID_GROUP_ID');
3711 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_group_id, -1) ) );
3712 FND_MSG_PUB.Add;
3713 END IF;
3714 RAISE FND_API.G_EXC_ERROR;
3715 END IF;
3716 -- Check if the group name is unique
3717 IF (p_new_group_name <> FND_API.G_MISS_CHAR) THEN
3718 OPEN Check_Group_csr(p_new_group_name);
3719 FETCH Check_Group_csr INTO l_group_id;
3720 IF (Check_Group_csr%FOUND) THEN
3721 CLOSE Check_Group_csr;
3722 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3723 FND_MESSAGE.Set_name('AMV','AMV_DUPLICATE_GROUP_NAME');
3724 FND_MESSAGE.Set_Token('NAME', p_new_group_name );
3725 FND_MSG_PUB.Add;
3726 END IF;
3727 RAISE FND_API.G_EXC_ERROR;
3728 ELSE
3729 CLOSE Check_Group_csr;
3730 END IF;
3731 END IF;
3732 OPEN Get_Version_csr;
3733 FETCH Get_Version_csr INTO l_object_version_num;
3734 CLOSE Get_Version_csr;
3735 jtf_rs_groups_pub.update_resource_group
3736 (
3737 p_api_version => p_api_version,
3738 p_group_id => p_group_id,
3739 p_group_number => null,
3740 p_group_name => p_new_group_name,
3741 p_group_desc => p_new_group_desc,
3742 p_email_address => p_email_address,
3743 p_start_date_active => p_new_start_date,
3744 p_end_date_active => p_new_end_date,
3745 p_object_version_num => l_object_version_num,
3746 x_return_status => x_return_status,
3747 x_msg_count => x_msg_count,
3748 x_msg_data => x_msg_data
3749 );
3750 IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3751 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3752 ELSIF (x_return_status = FND_API.G_RET_STS_ERROR ) THEN
3753 RAISE FND_API.G_EXC_ERROR;
3754 END IF;
3755 IF (p_new_start_date <> FND_API.G_MISS_DATE OR
3756 p_new_end_date <> FND_API.G_MISS_DATE OR
3757 p_new_group_name <> FND_API.G_MISS_CHAR) THEN
3758 OPEN Get_GroupChannelId(p_group_id);
3759 FETCH Get_GroupChannelId Into l_channel_id;
3760 IF (Get_GroupChannelId%FOUND) THEN
3761 CLOSE Get_GroupChannelId;
3762 IF (p_new_start_date <> FND_API.G_MISS_DATE OR
3763 p_new_end_date <> FND_API.G_MISS_DATE) THEN
3764 update amv_c_channels_b set
3765 EFFECTIVE_START_DATE = DECODE(p_new_start_date,
3766 FND_API.G_MISS_DATE,
3767 EFFECTIVE_START_DATE,
3768 p_new_start_date),
3769 EXPIRATION_DATE = DECODE(p_new_start_date,
3770 FND_API.G_MISS_DATE,
3771 EXPIRATION_DATE,
3772 p_new_start_date),
3773 LAST_UPDATE_DATE = sysdate,
3774 LAST_UPDATED_BY = l_current_user_id,
3775 LAST_UPDATE_LOGIN = l_current_login_id,
3776 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER + 1
3777 where CHANNEL_ID = l_channel_id;
3778 END IF;
3779 IF (p_new_group_name <> FND_API.G_MISS_CHAR) THEN
3780 update amv_c_channels_tl set
3781 CHANNEL_NAME = p_new_group_name,
3782 LAST_UPDATE_DATE = sysdate,
3783 LAST_UPDATED_BY = l_current_user_id,
3784 LAST_UPDATE_LOGIN = l_current_login_id,
3785 SOURCE_LANG = userenv('LANG')
3786 where CHANNEL_ID = l_channel_id
3787 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
3788 END IF;
3789 ELSE
3790 CLOSE Get_GroupChannelId;
3791 END IF;
3792 END IF;
3793 IF FND_API.To_Boolean ( p_commit ) THEN
3794 COMMIT WORK;
3795 END IF;
3796 --Standard call to get message count and if count=1, get the message
3797 FND_MSG_PUB.Count_And_Get (
3798 p_encoded => FND_API.G_FALSE,
3799 p_count => x_msg_count,
3800 p_data => x_msg_data
3801 );
3802 EXCEPTION
3803 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3804 ROLLBACK TO Update_Group_Pvt;
3805 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3806 -- Standard call to get message count and if count=1, get the message
3807 FND_MSG_PUB.Count_And_Get (
3808 p_encoded => FND_API.G_FALSE,
3809 p_count => x_msg_count,
3810 p_data => x_msg_data
3811 );
3812 WHEN FND_API.G_EXC_ERROR THEN
3813 ROLLBACK TO Update_Group_Pvt;
3814 x_return_status := FND_API.G_RET_STS_ERROR;
3815 -- Standard call to get message count and if count=1, get the message
3816 FND_MSG_PUB.Count_And_Get (
3817 p_encoded => FND_API.G_FALSE,
3818 p_count => x_msg_count,
3819 p_data => x_msg_data
3820 );
3821 WHEN OTHERS THEN
3822 ROLLBACK TO Update_Group_Pvt;
3823 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3824 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3825 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3826 END IF;
3827 -- Standard call to get message count and if count=1, get the message
3828 FND_MSG_PUB.Count_And_Get (
3829 p_encoded => FND_API.G_FALSE,
3830 p_count => x_msg_count,
3831 p_data => x_msg_data
3832 );
3833 END Update_Group;
3834 --------------------------------------------------------------------------------
3835 PROCEDURE Delete_Group
3836 (
3837 p_api_version IN NUMBER,
3838 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3839 p_commit IN VARCHAR2 := FND_API.G_FALSE,
3840 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3841 x_return_status OUT NOCOPY VARCHAR2,
3842 x_msg_count OUT NOCOPY NUMBER,
3843 x_msg_data OUT NOCOPY VARCHAR2,
3844 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
3845 p_group_id IN NUMBER := FND_API.G_MISS_NUM,
3846 p_group_name IN VARCHAR2 := FND_API.G_MISS_CHAR
3847 ) AS
3848 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Group';
3849 l_api_version CONSTANT NUMBER := 1.0;
3850 l_current_user_id NUMBER;
3851 l_current_login_id NUMBER;
3852 l_current_resource_id NUMBER;
3853 l_current_user_status VARCHAR2(30);
3854 --
3855 l_admin_flag VARCHAR2(1);
3856 l_group_id NUMBER;
3857 l_channel_id NUMBER;
3858 --
3859 CURSOR Get_GroupID_csr(p_name IN VARCHAR2) IS
3860 Select group_id
3861 From jtf_rs_groups_vl
3862 Where group_name = p_name
3863 ;
3864 CURSOR Get_ChannelID_csr(p_grp_id IN NUMBER) IS
3865 SELECT CHANNEL_ID
3866 FROM AMV_C_CHANNELS_TL
3867 WHERE LANGUAGE = userenv('LANG') and
3868 CHANNEL_NAME = (select group_name from
3869 jtf_rs_groups_tl where group_id = p_grp_id and language = userenv('LANG'));
3870
3871 --
3872 BEGIN
3873 SAVEPOINT Delete_Group_Pvt;
3874 IF NOT FND_API.Compatible_API_Call (
3875 l_api_version,
3876 p_api_version,
3877 l_api_name,
3878 G_PKG_NAME) THEN
3879 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3880 END IF;
3881 --Initialize message list if p_init_msg_list is TRUE.
3882 IF FND_API.To_Boolean (p_init_msg_list) THEN
3883 FND_MSG_PUB.initialize;
3884 END IF;
3885
3886 -- Initialize API return status to success
3887 x_return_status := FND_API.G_RET_STS_SUCCESS;
3888 -- Check if the group id is valid
3889 IF (p_group_id IS NOT NULL AND p_group_id <> FND_API.G_MISS_NUM) THEN
3890 IF (AMV_UTILITY_PVT.IS_GROUPIDVALID(p_group_id) <> TRUE) THEN
3891 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3892 FND_MESSAGE.Set_name('AMV','AMV_INVALID_GROUP_ID');
3893 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_group_id, -1) ) );
3894 FND_MSG_PUB.Add;
3895 END IF;
3896 RAISE FND_API.G_EXC_ERROR;
3897 ELSE
3898 l_group_id := p_group_id;
3899 END IF;
3900 ELSIF (p_group_name IS NOT NULL AND
3901 p_group_name <> FND_API.G_MISS_CHAR) THEN
3902 -- Check if the group name is valid
3903 OPEN Get_GroupID_csr(p_group_name);
3904 FETCH Get_GroupID_csr INTO l_group_id;
3905 IF (Get_GroupID_csr%NOTFOUND) THEN
3906 CLOSE Get_GroupID_csr;
3907 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3908 FND_MESSAGE.Set_name('AMV','AMV_INVALID_GROUP_NAME');
3909 FND_MESSAGE.Set_Token('NAME', p_group_name );
3910 FND_MSG_PUB.Add;
3911 END IF;
3912 RAISE FND_API.G_EXC_ERROR;
3913 ELSE
3914 CLOSE Get_GroupID_csr;
3915 END IF;
3916 ELSE
3917 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
3918 FND_MESSAGE.Set_name('AMV','AMV_NO_GROUP_NAME_OR_ID');
3919 FND_MSG_PUB.Add;
3920 END IF;
3921 RAISE FND_API.G_EXC_ERROR;
3922 END IF;
3923 --Now do the job.
3924 Delete from amv_u_access
3925 Where user_or_group_id = l_group_id
3926 And User_OR_group_type = G_GROUP_ARC_TYPE;
3927 --
3928 Delete from amv_u_my_channels
3929 Where user_or_group_id = l_group_id
3930 And User_OR_group_type = G_GROUP_ARC_TYPE;
3931
3932 -- Remove channel from channels
3933 OPEN Get_ChannelID_csr(l_group_id);
3934
3935 FETCH Get_ChannelID_csr INTO l_channel_id;
3936 IF (Get_ChannelID_csr%NOTFOUND) THEN
3937 raise no_data_found;
3938 CLOSE Get_ChannelID_csr;
3939 ELSE
3940 AMV_C_CHANNELS_PKG.DELETE_ROW(l_channel_id);
3941 CLOSE Get_ChannelID_csr;
3942 END IF;
3943
3944 Update_Group
3945 (
3946 p_api_version => p_api_version,
3947 p_init_msg_list => p_init_msg_list,
3948 p_commit => p_commit,
3949 p_validation_level => p_validation_level,
3950 x_return_status => x_return_status,
3951 x_msg_count => x_msg_count,
3952 x_msg_data => x_msg_data,
3953 p_check_login_user => p_check_login_user,
3954 p_group_id => l_group_id,
3955 p_new_group_name => FND_API.G_MISS_CHAR,
3956 p_new_group_desc => FND_API.G_MISS_CHAR,
3957 p_email_address => FND_API.G_MISS_CHAR,
3958 p_new_start_date => sysdate -2,
3959 p_new_end_date => sysdate -1
3960 );
3961 --Standard call to get message count and if count=1, get the message
3962 FND_MSG_PUB.Count_And_Get (
3963 p_encoded => FND_API.G_FALSE,
3964 p_count => x_msg_count,
3965 p_data => x_msg_data
3966 );
3967 EXCEPTION
3968 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3969 ROLLBACK TO Delete_Group_Pvt;
3970 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3971 -- Standard call to get message count and if count=1, get the message
3972 FND_MSG_PUB.Count_And_Get (
3973 p_encoded => FND_API.G_FALSE,
3974 p_count => x_msg_count,
3975 p_data => x_msg_data
3976 );
3977 WHEN FND_API.G_EXC_ERROR THEN
3978 ROLLBACK TO Delete_Group_Pvt;
3979 x_return_status := FND_API.G_RET_STS_ERROR;
3980 -- Standard call to get message count and if count=1, get the message
3981 FND_MSG_PUB.Count_And_Get (
3982 p_encoded => FND_API.G_FALSE,
3983 p_count => x_msg_count,
3984 p_data => x_msg_data
3985 );
3986 WHEN OTHERS THEN
3987 ROLLBACK TO Delete_Group_Pvt;
3988 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3989 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3990 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
3991 END IF;
3992 -- Standard call to get message count and if count=1, get the message
3993 FND_MSG_PUB.Count_And_Get (
3994 p_encoded => FND_API.G_FALSE,
3995 p_count => x_msg_count,
3996 p_data => x_msg_data
3997 );
3998 END Delete_Group;
3999 --------------------------------------------------------------------------------
4000 PROCEDURE Get_Group
4001 (
4002 p_api_version IN NUMBER,
4003 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4004 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4005 x_return_status OUT NOCOPY VARCHAR2,
4006 x_msg_count OUT NOCOPY NUMBER,
4007 x_msg_data OUT NOCOPY VARCHAR2,
4008 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
4009 p_group_id IN NUMBER,
4010 x_group_obj OUT NOCOPY AMV_GROUP_OBJ_TYPE
4011 ) AS
4012 l_api_name CONSTANT VARCHAR2(30) := 'Get_GROUP';
4013 l_api_version CONSTANT NUMBER := 1.0;
4014 l_current_user_id NUMBER;
4015 l_current_login_id NUMBER;
4016 l_current_resource_id NUMBER;
4017 l_current_user_status VARCHAR2(30);
4018 --
4019 CURSOR Get_GroupObj_csr IS
4020 Select
4021 group_id,
4022 group_name,
4023 object_version_number,
4024 email_address,
4025 group_desc,
4026 start_date_active,
4027 end_date_active
4028 From jtf_rs_groups_vl
4029 Where group_id = p_group_id
4030 ;
4031 --
4032 l_group_info Get_GroupObj_csr%ROWTYPE;
4033 BEGIN
4034 -- Standard call to check for call compatibility.
4035 IF NOT FND_API.Compatible_API_Call (
4036 l_api_version,
4037 p_api_version,
4038 l_api_name,
4039 G_PKG_NAME) THEN
4040 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4041 END IF;
4042 --Initialize message list if p_init_msg_list is TRUE.
4043 IF FND_API.To_Boolean (p_init_msg_list) THEN
4044 FND_MSG_PUB.initialize;
4045 END IF;
4046 -- Initialize API return status to success
4047 x_return_status := FND_API.G_RET_STS_SUCCESS;
4048 -- Get the current (login) user id.
4049 AMV_UTILITY_PVT.Get_UserInfo(
4050 x_user_id => l_current_user_id,
4051 x_login_id => l_current_login_id,
4052 x_resource_id => l_current_resource_id,
4053 x_user_status => l_current_user_status
4054 );
4055 IF (p_check_login_user = FND_API.G_TRUE) THEN
4056 -- Check if user is login and has the required privilege.
4057 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
4058 -- User is not login.
4059 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4060 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
4061 FND_MSG_PUB.Add;
4062 END IF;
4063 RAISE FND_API.G_EXC_ERROR;
4064 END IF;
4065 END IF;
4066 -- This is to make database happy
4067 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
4068 l_current_login_id := -1;
4069 l_current_user_id := -1;
4070 END IF;
4071 --
4072 OPEN Get_GroupObj_csr;
4073 FETCH Get_GroupObj_csr INTO l_group_info;
4074 IF (Get_GroupObj_csr%FOUND) THEN
4075 CLOSE Get_GroupObj_csr;
4076
4077 x_group_obj.group_id := l_group_info.group_id;
4078 x_group_obj.group_name := l_group_info.group_name;
4079 x_group_obj.object_version_number := l_group_info.object_version_number;
4080 x_group_obj.email_address := l_group_info.email_address;
4081 x_group_obj.description := l_group_info.group_desc;
4082 x_group_obj.effective_start_date := l_group_info.start_date_active;
4083 x_group_obj.expiration_date := l_group_info.end_date_active;
4084
4085 /*
4086 x_group_obj := AMV_GROUP_OBJ_TYPE
4087 (
4088 l_group_info.group_id,
4089 l_group_info.group_name,
4090 l_group_info.object_version_number,
4091 l_group_info.email_address,
4092 l_group_info.group_desc,
4093 l_group_info.start_date_active,
4094 l_group_info.end_date_active
4095 );
4096 */
4097 ELSE
4098 CLOSE Get_GroupObj_csr;
4099 RAISE FND_API.G_EXC_ERROR;
4100 END IF;
4101 --Standard call to get message count and if count=1, get the message
4102 FND_MSG_PUB.Count_And_Get (
4103 p_encoded => FND_API.G_FALSE,
4104 p_count => x_msg_count,
4105 p_data => x_msg_data
4106 );
4107 EXCEPTION
4108 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4109 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4110 -- Standard call to get message count and if count=1, get the message
4111 FND_MSG_PUB.Count_And_Get (
4112 p_encoded => FND_API.G_FALSE,
4113 p_count => x_msg_count,
4114 p_data => x_msg_data
4115 );
4116 WHEN FND_API.G_EXC_ERROR THEN
4117 x_return_status := FND_API.G_RET_STS_ERROR;
4118 -- Standard call to get message count and if count=1, get the message
4119 FND_MSG_PUB.Count_And_Get (
4120 p_encoded => FND_API.G_FALSE,
4121 p_count => x_msg_count,
4122 p_data => x_msg_data
4123 );
4124 WHEN OTHERS THEN
4125 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4126 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4127 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
4128 END IF;
4129 -- Standard call to get message count and if count=1, get the message
4130 FND_MSG_PUB.Count_And_Get (
4131 p_encoded => FND_API.G_FALSE,
4132 p_count => x_msg_count,
4133 p_data => x_msg_data
4134 );
4135 END Get_Group;
4136 --------------------------------------------------------------------------------
4137 PROCEDURE Find_Group
4138 (
4139 p_api_version IN NUMBER,
4140 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4141 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4142 x_return_status OUT NOCOPY VARCHAR2,
4143 x_msg_count OUT NOCOPY NUMBER,
4144 x_msg_data OUT NOCOPY VARCHAR2,
4145 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
4146 p_resource_id IN NUMBER := FND_API.G_MISS_NUM,
4147 p_group_name IN VARCHAR2 := FND_API.G_MISS_CHAR,
4148 p_group_desc IN VARCHAR2 := FND_API.G_MISS_CHAR,
4149 p_group_email IN VARCHAR2 := FND_API.G_MISS_CHAR,
4150 p_group_usage IN VARCHAR2,
4151 p_subset_request_obj IN AMV_REQUEST_OBJ_TYPE,
4152 x_subset_return_obj OUT NOCOPY AMV_RETURN_OBJ_TYPE,
4153 x_group_obj_array OUT NOCOPY AMV_GROUP_OBJ_VARRAY
4154 ) AS
4155 l_api_name CONSTANT VARCHAR2(30) := 'Find_Group';
4156 l_api_version CONSTANT NUMBER := 1.0;
4157 l_current_user_id NUMBER;
4158 l_current_login_id NUMBER;
4159 l_current_resource_id NUMBER;
4160 l_current_user_status VARCHAR2(30);
4161 --
4162 l_cursor CursorType;
4163 l_sql_statement VARCHAR2(2000);
4164 l_sql_statement2 VARCHAR2(2000);
4165 l_where_clause VARCHAR2(2000);
4166 l_total_count NUMBER := 1;
4167 l_fetch_count NUMBER := 0;
4168 l_start_with NUMBER;
4169 l_total_record_count NUMBER;
4170 --
4171 l_group_id NUMBER;
4172 l_group_name VARCHAR2(80);
4173 l_group_version NUMBER;
4174 l_group_email_addr VARCHAR2(240);
4175 l_group_desc VARCHAR2(2000);
4176 l_start_date DATE;
4177 l_end_date DATE;
4178 --
4179 BEGIN
4180 -- Standard call to check for call compatibility.
4181 IF NOT FND_API.Compatible_API_Call (
4182 l_api_version,
4183 p_api_version,
4184 l_api_name,
4185 G_PKG_NAME) THEN
4186 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4187 END IF;
4188 --Initialize message list if p_init_msg_list is TRUE.
4189 IF FND_API.To_Boolean (p_init_msg_list) THEN
4190 FND_MSG_PUB.initialize;
4191 END IF;
4192 -- Initialize API return status to success
4193 x_return_status := FND_API.G_RET_STS_SUCCESS;
4194 -- Get the current (login) user id.
4195 AMV_UTILITY_PVT.Get_UserInfo(
4196 x_user_id => l_current_user_id,
4197 x_login_id => l_current_login_id,
4198 x_resource_id => l_current_resource_id,
4199 x_user_status => l_current_user_status
4200 );
4201 IF (p_check_login_user = FND_API.G_TRUE) THEN
4202 -- Check if user is login and has the required privilege.
4203 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
4204 -- User is not login.
4205 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4206 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
4207 FND_MSG_PUB.Add;
4208 END IF;
4209 RAISE FND_API.G_EXC_ERROR;
4210 END IF;
4211 END IF;
4212 -- This is to make database happy
4213 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
4214 l_current_login_id := -1;
4215 l_current_user_id := -1;
4216 END IF;
4217 --
4218 -- Now create SQL statement and find the results:
4219 IF (p_resource_id IS NULL OR p_resource_id = FND_API.G_MISS_NUM) THEN
4220 l_sql_statement :=
4221 'Select ' ||
4222 'g.group_id, ' ||
4223 'g.group_name, ' ||
4224 'g.object_version_number, ' ||
4225 'g.email_address, ' ||
4226 'g.group_desc, ' ||
4227 'g.start_date_active, ' ||
4228 'g.end_date_active ' ||
4229 'From jtf_rs_groups_vl g, jtf_rs_group_usages usg ';
4230 l_sql_statement2 :=
4231 'Select count(*) ' ||
4232 'From jtf_rs_groups_vl g, jtf_rs_group_usages usg ';
4233 l_where_clause := 'Where g.start_date_active < sysdate ' ||
4234 'And nvl(g.end_date_active, sysdate+1) > sysdate ' ||
4235 'And usg.group_id = g.group_id ' ||
4236 'And usg.usage = ''' || p_group_usage || ''' ';
4237 ELSE
4238 l_sql_statement :=
4239 'Select ' ||
4240 'g.group_id, ' ||
4241 'g.group_name, ' ||
4242 'g.object_version_number, ' ||
4243 'g.email_address, ' ||
4244 'g.group_desc, ' ||
4245 'g.start_date_active, ' ||
4246 'g.end_date_active ' ||
4247 'From jtf_rs_groups_vl g, jtf_rs_group_members m, ' ||
4248 ' jtf_rs_group_usages usg ';
4249 l_sql_statement2 :=
4250 'Select count(*) ' ||
4251 'From jtf_rs_groups_vl g, jtf_rs_group_members m, ' ||
4252 ' jtf_rs_group_usages usg ';
4253 l_where_clause := 'Where g.group_id = m.group_id ' ||
4254 'And m.delete_flag <> ''Y'' ' ||
4255 'And m.resource_id = ' || p_resource_id || ' ' ||
4256 'And g.start_date_active < sysdate ' ||
4257 'And nvl(g.end_date_active, sysdate+1) > sysdate ' ||
4258 'And usg.group_id = g.group_id ' ||
4259 'And usg.usage = ''' || p_group_usage || ''' ';
4260 END IF;
4261 IF (p_group_name IS NOT NULL AND
4262 p_group_name <> FND_API.G_MISS_CHAR) THEN
4263 l_where_clause := l_where_clause ||
4264 'And g.group_name like ''' || p_group_name || ''' ';
4265 END IF;
4266 IF (p_group_desc IS NOT NULL AND
4267 p_group_desc <> FND_API.G_MISS_CHAR) THEN
4268 l_where_clause := l_where_clause ||
4269 'And g.group_desc Like ''' || p_group_desc || ''' ';
4270 END IF;
4271 IF (p_group_email IS NOT NULL AND
4272 p_group_email <> FND_API.G_MISS_CHAR) THEN
4273 l_where_clause := l_where_clause ||
4274 'And g.email_address Like ''' || p_group_email || ''' ';
4275 END IF;
4276 l_sql_statement := l_sql_statement ||
4277 l_where_clause || 'ORDER BY g.group_name ';
4278 l_sql_statement2 := l_sql_statement2 ||
4279 l_where_clause;
4280 IF (G_DEBUG = TRUE) THEN
4281 AMV_UTILITY_PVT.PRINT_DEBUG_MESSAGE(l_sql_statement);
4282 END IF;
4283 --Execute the SQL statements to get the total count:
4284 IF (p_subset_request_obj.return_total_count_flag = FND_API.G_TRUE) THEN
4285 OPEN l_cursor FOR l_sql_statement2;
4286 FETCH l_cursor INTO l_total_record_count;
4287 CLOSE l_cursor;
4288 END IF;
4289 --Execute the SQL statements to get records
4290 l_start_with := p_subset_request_obj.start_record_position;
4291 x_group_obj_array := AMV_GROUP_OBJ_VARRAY();
4292 OPEN l_cursor FOR l_sql_statement;
4293 LOOP
4294 FETCH l_cursor INTO
4295 l_group_id,
4296 l_group_name,
4297 l_group_version,
4298 l_group_email_addr,
4299 l_group_desc,
4300 l_start_date,
4301 l_end_date;
4302 EXIT WHEN l_cursor%NOTFOUND;
4303 IF (l_start_with <= l_total_count AND
4304 l_fetch_count < p_subset_request_obj.records_requested) THEN
4305 l_fetch_count := l_fetch_count + 1;
4306 x_group_obj_array.extend;
4307 x_group_obj_array(l_fetch_count).group_id := l_group_id;
4308 x_group_obj_array(l_fetch_count).group_name := l_group_name;
4309 x_group_obj_array(l_fetch_count).object_version_number := l_group_version;
4310 x_group_obj_array(l_fetch_count).email_address := l_group_email_addr;
4311 x_group_obj_array(l_fetch_count).description := l_group_desc;
4312 x_group_obj_array(l_fetch_count).effective_start_date := l_start_date;
4313 x_group_obj_array(l_fetch_count).expiration_date := l_end_date;
4314
4315 /*
4316 x_group_obj_array(l_fetch_count) :=
4317 AMV_GROUP_OBJ_TYPE
4318 (
4319 l_group_id,
4320 l_group_name,
4321 l_group_version,
4322 l_group_email_addr,
4323 l_group_desc,
4324 l_start_date,
4325 l_end_date
4326 );
4327 */
4328 END IF;
4329 IF (l_fetch_count >= p_subset_request_obj.records_requested) THEN
4330 exit;
4331 END IF;
4332 l_total_count := l_total_count + 1;
4333 END LOOP;
4334 CLOSE l_cursor;
4335
4336 x_subset_return_obj.returned_record_count := l_fetch_count;
4337 x_subset_return_obj.next_record_position := p_subset_request_obj.start_record_position + l_fetch_count;
4338 x_subset_return_obj.total_record_count := l_total_record_count;
4339
4340 /*
4341 x_subset_return_obj := AMV_RETURN_OBJ_TYPE
4342 (
4343 l_fetch_count,
4344 p_subset_request_obj.start_record_position + l_fetch_count,
4345 l_total_record_count
4346 );
4347 */
4348 --Standard call to get message count and if count=1, get the message
4349 FND_MSG_PUB.Count_And_Get (
4350 p_encoded => FND_API.G_FALSE,
4351 p_count => x_msg_count,
4352 p_data => x_msg_data
4353 );
4354 EXCEPTION
4355 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4356 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4357 -- Standard call to get message count and if count=1, get the message
4358 FND_MSG_PUB.Count_And_Get (
4359 p_encoded => FND_API.G_FALSE,
4360 p_count => x_msg_count,
4361 p_data => x_msg_data
4362 );
4363 WHEN FND_API.G_EXC_ERROR THEN
4364 x_return_status := FND_API.G_RET_STS_ERROR;
4365 -- Standard call to get message count and if count=1, get the message
4366 FND_MSG_PUB.Count_And_Get (
4367 p_encoded => FND_API.G_FALSE,
4368 p_count => x_msg_count,
4369 p_data => x_msg_data
4370 );
4371 WHEN OTHERS THEN
4372 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4373 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4374 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
4375 END IF;
4376 -- Standard call to get message count and if count=1, get the message
4377 FND_MSG_PUB.Count_And_Get (
4378 p_encoded => FND_API.G_FALSE,
4379 p_count => x_msg_count,
4380 p_data => x_msg_data
4381 );
4382 END Find_Group;
4383 --------------------------------------------------------------------------------
4384 PROCEDURE Find_Group
4385 (
4386 p_api_version IN NUMBER,
4387 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4388 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4389 x_return_status OUT NOCOPY VARCHAR2,
4390 x_msg_count OUT NOCOPY NUMBER,
4391 x_msg_data OUT NOCOPY VARCHAR2,
4392 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
4393 p_group_id IN NUMBER := FND_API.G_MISS_NUM,
4394 p_group_name IN VARCHAR2 := FND_API.G_MISS_CHAR,
4395 p_group_usage IN VARCHAR2,
4396 p_subset_request_obj IN AMV_REQUEST_OBJ_TYPE,
4397 x_subset_return_obj OUT NOCOPY AMV_RETURN_OBJ_TYPE,
4398 x_group_obj_array OUT NOCOPY AMV_GROUP_OBJ_VARRAY,
4399 x_role_code_varray OUT NOCOPY AMV_CHAR_VARRAY_TYPE
4400 ) AS
4401 l_api_name CONSTANT VARCHAR2(30) := 'Find_Group';
4402 l_api_version CONSTANT NUMBER := 1.0;
4403 l_current_user_id NUMBER;
4404 l_current_login_id NUMBER;
4405 l_current_resource_id NUMBER;
4406 l_current_user_status VARCHAR2(30);
4407 --
4408 l_cursor CursorType;
4409 l_sql_statement VARCHAR2(2000);
4410 l_sql_statement2 VARCHAR2(2000);
4411 l_where_clause VARCHAR2(2000);
4412 l_total_count NUMBER := 1;
4413 l_fetch_count NUMBER := 0;
4414 l_start_with NUMBER;
4415 l_total_record_count NUMBER;
4416 --
4417 l_group_id NUMBER;
4418 l_group_name VARCHAR2(80);
4419 l_group_version NUMBER;
4420 l_group_email_addr VARCHAR2(240);
4421 l_group_desc VARCHAR2(2000);
4422 l_start_date DATE;
4423 l_end_date DATE;
4424 --
4425 BEGIN
4426 -- Standard call to check for call compatibility.
4427 IF NOT FND_API.Compatible_API_Call (
4428 l_api_version,
4429 p_api_version,
4430 l_api_name,
4431 G_PKG_NAME) THEN
4432 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4433 END IF;
4434 --Initialize message list if p_init_msg_list is TRUE.
4435 IF FND_API.To_Boolean (p_init_msg_list) THEN
4436 FND_MSG_PUB.initialize;
4437 END IF;
4438 -- Initialize API return status to success
4439 x_return_status := FND_API.G_RET_STS_SUCCESS;
4440 -- Get the current (login) user id.
4441 AMV_UTILITY_PVT.Get_UserInfo(
4442 x_user_id => l_current_user_id,
4443 x_login_id => l_current_login_id,
4444 x_resource_id => l_current_resource_id,
4445 x_user_status => l_current_user_status
4446 );
4447 IF (p_check_login_user = FND_API.G_TRUE) THEN
4448 -- Check if user is login and has the required privilege.
4449 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
4450 -- User is not login.
4451 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4452 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
4453 FND_MSG_PUB.Add;
4454 END IF;
4455 RAISE FND_API.G_EXC_ERROR;
4456 END IF;
4457 END IF;
4458 -- This is to make database happy
4459 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
4460 l_current_login_id := -1;
4461 l_current_user_id := -1;
4462 END IF;
4463 --
4464 -- Now create SQL statement and find the results:
4465 l_sql_statement :=
4466 'Select ' ||
4467 'g.group_id, ' ||
4468 'g.group_name, ' ||
4469 'g.object_version_number, ' ||
4470 'g.email_address, ' ||
4471 'g.group_desc, ' ||
4472 'g.start_date_active, ' ||
4473 'g.end_date_active ' ||
4474 'From jtf_rs_groups_vl g, jtf_rs_group_usages usg ';
4475 l_sql_statement2 :=
4476 'Select count(*) ' ||
4477 'From jtf_rs_groups_vl g, jtf_rs_group_usages usg ';
4478 l_where_clause := 'Where g.start_date_active < sysdate ' ||
4479 'And nvl(g.end_date_active, sysdate+1) > sysdate ' ||
4480 'And usg.group_id = g.group_id ' ||
4481 'And usg.usage = ''' || p_group_usage || ''' ';
4482 IF (p_group_id = FND_API.G_MISS_NUM) THEN
4483 l_where_clause := l_where_clause ||
4484 'And g.group_name like ''' || p_group_name || ''' ';
4485 ELSE
4486 l_where_clause := l_where_clause ||
4487 'And g.group_id = ' || p_group_id || ' ';
4488 END IF;
4489 l_sql_statement := l_sql_statement ||
4490 l_where_clause || 'ORDER BY g.group_name ';
4491 l_sql_statement2 := l_sql_statement2 ||
4492 l_where_clause;
4493 IF (G_DEBUG = TRUE) THEN
4494 AMV_UTILITY_PVT.PRINT_DEBUG_MESSAGE(l_sql_statement);
4495 END IF;
4496 --Execute the SQL statements to get the total count:
4497 IF (p_subset_request_obj.return_total_count_flag = FND_API.G_TRUE) THEN
4498 OPEN l_cursor FOR l_sql_statement2;
4499 FETCH l_cursor INTO l_total_record_count;
4500 CLOSE l_cursor;
4501 END IF;
4502 --Execute the SQL statements to get records
4503 l_start_with := p_subset_request_obj.start_record_position;
4504 x_group_obj_array := AMV_GROUP_OBJ_VARRAY();
4505 x_role_code_varray := AMV_CHAR_VARRAY_TYPE();
4506 OPEN l_cursor FOR l_sql_statement;
4507 LOOP
4508 FETCH l_cursor INTO
4509 l_group_id,
4510 l_group_name,
4511 l_group_version,
4512 l_group_email_addr,
4513 l_group_desc,
4514 l_start_date,
4515 l_end_date;
4516 EXIT WHEN l_cursor%NOTFOUND;
4517 IF (l_start_with <= l_total_count AND
4518 l_fetch_count < p_subset_request_obj.records_requested) THEN
4519 l_fetch_count := l_fetch_count + 1;
4520 x_group_obj_array.extend;
4521 x_group_obj_array(l_fetch_count).group_id := l_group_id;
4522 x_group_obj_array(l_fetch_count).group_name := l_group_name;
4523 x_group_obj_array(l_fetch_count).object_version_number := l_group_version;
4524 x_group_obj_array(l_fetch_count).email_address := l_group_email_addr;
4525 x_group_obj_array(l_fetch_count).description := l_group_desc;
4526 x_group_obj_array(l_fetch_count).effective_start_date := l_start_date;
4527 x_group_obj_array(l_fetch_count).expiration_date := l_end_date;
4528
4529 /*
4530 x_group_obj_array(l_fetch_count) :=
4531 AMV_GROUP_OBJ_TYPE
4532 (
4533 l_group_id,
4534 l_group_name,
4535 l_group_version,
4536 l_group_email_addr,
4537 l_group_desc,
4538 l_start_date,
4539 l_end_date
4540 );
4541 */
4542
4543 --Get group roles:
4544 x_role_code_varray.extend;
4545 x_role_code_varray(l_fetch_count) :=
4546 Get_Role(l_group_id, G_GROUP_ROLE_CODE);
4547 END IF;
4548 IF (l_fetch_count >= p_subset_request_obj.records_requested) THEN
4549 exit;
4550 END IF;
4551 l_total_count := l_total_count + 1;
4552 END LOOP;
4553 CLOSE l_cursor;
4554 x_subset_return_obj.returned_record_count := l_fetch_count;
4555 x_subset_return_obj.next_record_position := p_subset_request_obj.start_record_position + l_fetch_count;
4556 x_subset_return_obj.total_record_count := l_total_record_count;
4557
4558 /*
4559 x_subset_return_obj := AMV_RETURN_OBJ_TYPE
4560 (
4561 l_fetch_count,
4562 p_subset_request_obj.start_record_position + l_fetch_count,
4563 l_total_record_count
4564 );
4565 */
4566 --Standard call to get message count and if count=1, get the message
4567 FND_MSG_PUB.Count_And_Get (
4568 p_encoded => FND_API.G_FALSE,
4569 p_count => x_msg_count,
4570 p_data => x_msg_data
4571 );
4572 EXCEPTION
4573 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4574 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4575 -- Standard call to get message count and if count=1, get the message
4576 FND_MSG_PUB.Count_And_Get (
4577 p_encoded => FND_API.G_FALSE,
4578 p_count => x_msg_count,
4579 p_data => x_msg_data
4580 );
4581 WHEN FND_API.G_EXC_ERROR THEN
4582 x_return_status := FND_API.G_RET_STS_ERROR;
4583 -- Standard call to get message count and if count=1, get the message
4584 FND_MSG_PUB.Count_And_Get (
4585 p_encoded => FND_API.G_FALSE,
4586 p_count => x_msg_count,
4587 p_data => x_msg_data
4588 );
4589 WHEN OTHERS THEN
4590 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4591 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4592 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
4593 END IF;
4594 -- Standard call to get message count and if count=1, get the message
4595 FND_MSG_PUB.Count_And_Get (
4596 p_encoded => FND_API.G_FALSE,
4597 p_count => x_msg_count,
4598 p_data => x_msg_data
4599 );
4600 END Find_Group;
4601 --------------------------------------------------------------------------------
4602 --------------------------- GROUP MEMBERSHIP ----------------------------------
4603 --------------------------------------------------------------------------------
4604 PROCEDURE Add_GroupMember
4605 (
4606 p_api_version IN NUMBER,
4607 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4608 p_commit IN VARCHAR2 := FND_API.G_FALSE,
4609 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4610 x_return_status OUT NOCOPY VARCHAR2,
4611 x_msg_count OUT NOCOPY NUMBER,
4612 x_msg_data OUT NOCOPY VARCHAR2,
4613 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
4614 p_group_id IN NUMBER,
4615 p_resource_id IN NUMBER
4616 ) AS
4617 l_api_name CONSTANT VARCHAR2(30) := 'Add_GroupMember';
4618 l_api_version CONSTANT NUMBER := 1.0;
4619 l_current_user_id NUMBER;
4620 l_current_login_id NUMBER;
4621 l_current_resource_id NUMBER;
4622 l_current_user_status VARCHAR2(30);
4623 --
4624 l_admin_flag VARCHAR2(1);
4625 l_temp NUMBER;
4626 --
4627 CURSOR Check_GroupMember_csr IS
4628 Select group_member_id
4629 From jtf_rs_group_members
4630 Where resource_id = p_resource_id
4631 And group_id = p_group_id
4632 And delete_flag <> 'Y';
4633 --
4634 --
4635 BEGIN
4636 -- Standard call to check for call compatibility.
4637 SAVEPOINT Add_GroupMember_Pvt;
4638 IF NOT FND_API.Compatible_API_Call (
4639 l_api_version,
4640 p_api_version,
4641 l_api_name,
4642 G_PKG_NAME) THEN
4643 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4644 END IF;
4645 --Initialize message list if p_init_msg_list is TRUE.
4646 IF FND_API.To_Boolean (p_init_msg_list) THEN
4647 FND_MSG_PUB.initialize;
4648 END IF;
4649 -- Initialize API return status to success
4650 x_return_status := FND_API.G_RET_STS_SUCCESS;
4651 -- Get the current (login) user id.
4652 AMV_UTILITY_PVT.Get_UserInfo(
4653 x_user_id => l_current_user_id,
4654 x_login_id => l_current_login_id,
4655 x_resource_id => l_current_resource_id,
4656 x_user_status => l_current_user_status
4657 );
4658 IF (p_check_login_user = FND_API.G_TRUE) THEN
4659 -- Check if user is login and has the required privilege.
4660 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
4661 -- User is not login.
4662 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4663 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
4664 FND_MSG_PUB.Add;
4665 END IF;
4666 RAISE FND_API.G_EXC_ERROR;
4667 END IF;
4668 AMV_USER_PVT.Is_Administrator
4669 (
4670 p_api_version => 1.0,
4671 x_return_status => x_return_status,
4672 x_msg_count => x_msg_count,
4673 x_msg_data => x_msg_data,
4674 p_check_login_user => FND_API.G_FALSE,
4675 p_resource_id => l_current_resource_id,
4676 x_result_flag => l_admin_flag
4677 );
4678 IF (l_admin_flag <> FND_API.G_TRUE) THEN
4679 -- User is not an administrator.
4680 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4681 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
4682 FND_MSG_PUB.Add;
4683 END IF;
4684 RAISE FND_API.G_EXC_ERROR;
4685 END IF;
4686 END IF;
4687 -- This is to make database happy
4688 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
4689 l_current_login_id := -1;
4690 l_current_user_id := -1;
4691 END IF;
4692 -- Check if the group id is valid
4693 IF (AMV_UTILITY_PVT.IS_GROUPIDVALID(p_group_id) <> TRUE) THEN
4694 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4695 FND_MESSAGE.Set_name('AMV','AMV_INVALID_GROUP_ID');
4696 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_group_id, -1) ) );
4697 FND_MSG_PUB.Add;
4698 END IF;
4699 RAISE FND_API.G_EXC_ERROR;
4700 END IF;
4701 -- Check if the resource id is valid
4702 IF (AMV_UTILITY_PVT.IS_RESOURCEIDVALID(p_resource_id) <> TRUE) THEN
4703 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4704 FND_MESSAGE.Set_name('AMV','AMV_INVALID_RESOURCE_ID');
4705 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_resource_id, -1) ) );
4706 FND_MSG_PUB.Add;
4707 END IF;
4708 RAISE FND_API.G_EXC_ERROR;
4709 END IF;
4710 --
4711 OPEN Check_GroupMember_csr;
4712 FETCH Check_GroupMember_csr INTO l_temp;
4713 IF (Check_GroupMember_csr%NOTFOUND) THEN
4714 CLOSE Check_GroupMember_csr;
4715 jtf_rs_group_members_pub.create_resource_group_members
4716 (
4717 p_api_version => 1.0,
4718 p_commit => p_commit,
4719 p_group_id => p_group_id,
4720 p_group_number => null,
4721 p_resource_id => p_resource_id,
4722 p_resource_number => null,
4723 x_return_status => x_return_status,
4724 x_msg_count => x_msg_count,
4725 x_msg_data => x_msg_data,
4726 x_group_member_id => l_temp
4727 );
4728 ELSE
4729 CLOSE Check_groupMember_csr;
4730 END IF;
4731 --Standard call to get message count and if count=1, get the message
4732 FND_MSG_PUB.Count_And_Get (
4733 p_encoded => FND_API.G_FALSE,
4734 p_count => x_msg_count,
4735 p_data => x_msg_data
4736 );
4737 EXCEPTION
4738 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4739 ROLLBACK TO Add_groupMember_Pvt;
4740 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4741 -- Standard call to get message count and if count=1, get the message
4742 FND_MSG_PUB.Count_And_Get (
4743 p_encoded => FND_API.G_FALSE,
4744 p_count => x_msg_count,
4745 p_data => x_msg_data
4746 );
4747 WHEN FND_API.G_EXC_ERROR THEN
4748 ROLLBACK TO Add_groupMember_Pvt;
4749 x_return_status := FND_API.G_RET_STS_ERROR;
4750 -- Standard call to get message count and if count=1, get the message
4751 FND_MSG_PUB.Count_And_Get (
4752 p_encoded => FND_API.G_FALSE,
4753 p_count => x_msg_count,
4754 p_data => x_msg_data
4755 );
4756 WHEN OTHERS THEN
4757 ROLLBACK TO Add_groupMember_Pvt;
4758 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4759 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4760 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
4761 END IF;
4762 -- Standard call to get message count and if count=1, get the message
4763 FND_MSG_PUB.Count_And_Get (
4764 p_encoded => FND_API.G_FALSE,
4765 p_count => x_msg_count,
4766 p_data => x_msg_data
4767 );
4768 END Add_groupMember;
4769 --------------------------------------------------------------------------------
4770 PROCEDURE Add_GroupMember
4771 (
4772 p_api_version IN NUMBER,
4773 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4774 p_commit IN VARCHAR2 := FND_API.G_FALSE,
4775 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4776 x_return_status OUT NOCOPY VARCHAR2,
4777 x_msg_count OUT NOCOPY NUMBER,
4778 x_msg_data OUT NOCOPY VARCHAR2,
4779 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
4780 p_group_id IN NUMBER,
4781 p_resource_id_varray IN AMV_NUMBER_VARRAY_TYPE
4782 ) AS
4783 l_api_name CONSTANT VARCHAR2(30) := 'Add_GroupMember';
4784 l_api_version CONSTANT NUMBER := 1.0;
4785 l_current_user_id NUMBER;
4786 l_current_login_id NUMBER;
4787 l_current_resource_id NUMBER;
4788 l_current_user_status VARCHAR2(30);
4789 --
4790 l_admin_flag VARCHAR2(1);
4791 l_return_status VARCHAR2(1);
4792 l_msg_count NUMBER;
4793 l_msg_data VARCHAR2(2000);
4794 l_temp NUMBER;
4795 --
4796 BEGIN
4797 -- Standard call to check for call compatibility.
4798 SAVEPOINT Add_GroupMember_Pvt;
4799 IF NOT FND_API.Compatible_API_Call (
4800 l_api_version,
4801 p_api_version,
4802 l_api_name,
4803 G_PKG_NAME) THEN
4804 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4805 END IF;
4806 --Initialize message list if p_init_msg_list is TRUE.
4807 IF FND_API.To_Boolean (p_init_msg_list) THEN
4808 FND_MSG_PUB.initialize;
4809 END IF;
4810 -- Initialize API return status to success
4811 x_return_status := FND_API.G_RET_STS_SUCCESS;
4812 -- Get the current (login) user id.
4813 AMV_UTILITY_PVT.Get_UserInfo(
4814 x_user_id => l_current_user_id,
4815 x_login_id => l_current_login_id,
4816 x_resource_id => l_current_resource_id,
4817 x_user_status => l_current_user_status
4818 );
4819 IF (p_check_login_user = FND_API.G_TRUE) THEN
4820 -- Check if user is login and has the required privilege.
4821 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
4822 -- User is not login.
4823 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4824 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
4825 FND_MSG_PUB.Add;
4826 END IF;
4827 RAISE FND_API.G_EXC_ERROR;
4828 END IF;
4829 AMV_USER_PVT.Is_Administrator
4830 (
4831 p_api_version => 1.0,
4832 x_return_status => x_return_status,
4833 x_msg_count => x_msg_count,
4834 x_msg_data => x_msg_data,
4835 p_check_login_user => FND_API.G_FALSE,
4836 p_resource_id => l_current_resource_id,
4837 x_result_flag => l_admin_flag
4838 );
4839 IF (l_admin_flag <> FND_API.G_TRUE) THEN
4840 -- User is not an administrator.
4841 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4842 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
4843 FND_MSG_PUB.Add;
4844 END IF;
4845 RAISE FND_API.G_EXC_ERROR;
4846 END IF;
4847 END IF;
4848 -- This is to make database happy
4849 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
4850 l_current_login_id := -1;
4851 l_current_user_id := -1;
4852 END IF;
4853 -- Check if the group id is valid
4854 IF (AMV_UTILITY_PVT.IS_GROUPIDVALID(p_group_id) <> TRUE) THEN
4855 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4856 FND_MESSAGE.Set_name('AMV','AMV_INVALID_GROUP_ID');
4857 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_group_id, -1) ) );
4858 FND_MSG_PUB.Add;
4859 END IF;
4860 RAISE FND_API.G_EXC_ERROR;
4861 END IF;
4862 FOR i IN 1..p_resource_id_varray.count LOOP
4863 Add_GroupMember
4864 (
4865 p_api_version => p_api_version,
4866 p_commit => p_commit,
4867 p_validation_level => p_validation_level,
4868 x_return_status => l_return_status,
4869 x_msg_count => x_msg_count,
4870 x_msg_data => x_msg_data,
4871 p_check_login_user => FND_API.G_FALSE,
4872 p_group_id => p_group_id,
4873 p_resource_id => p_resource_id_varray(i)
4874 );
4875 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
4876 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4877 ELSIF (l_return_status = FND_API.G_RET_STS_ERROR AND
4878 x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4879 x_return_status := FND_API.G_RET_STS_ERROR;
4880 END IF;
4881 END LOOP;
4882 --Standard call to get message count and if count=1, get the message
4883 FND_MSG_PUB.Count_And_Get (
4884 p_encoded => FND_API.G_FALSE,
4885 p_count => x_msg_count,
4886 p_data => x_msg_data
4887 );
4888 EXCEPTION
4889 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4890 ROLLBACK TO Add_groupMember_Pvt;
4891 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4892 -- Standard call to get message count and if count=1, get the message
4893 FND_MSG_PUB.Count_And_Get (
4894 p_encoded => FND_API.G_FALSE,
4895 p_count => x_msg_count,
4896 p_data => x_msg_data
4897 );
4898 WHEN FND_API.G_EXC_ERROR THEN
4899 ROLLBACK TO Add_groupMember_Pvt;
4900 x_return_status := FND_API.G_RET_STS_ERROR;
4901 -- Standard call to get message count and if count=1, get the message
4902 FND_MSG_PUB.Count_And_Get (
4903 p_encoded => FND_API.G_FALSE,
4904 p_count => x_msg_count,
4905 p_data => x_msg_data
4906 );
4907 WHEN OTHERS THEN
4908 ROLLBACK TO Add_groupMember_Pvt;
4909 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4910 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4911 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
4912 END IF;
4913 -- Standard call to get message count and if count=1, get the message
4914 FND_MSG_PUB.Count_And_Get (
4915 p_encoded => FND_API.G_FALSE,
4916 p_count => x_msg_count,
4917 p_data => x_msg_data
4918 );
4919 END Add_groupMember;
4920 --------------------------------------------------------------------------------
4921 PROCEDURE Remove_GroupMember
4922 (
4923 p_api_version IN NUMBER,
4924 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4925 p_commit IN VARCHAR2 := FND_API.G_FALSE,
4926 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4927 x_return_status OUT NOCOPY VARCHAR2,
4928 x_msg_count OUT NOCOPY NUMBER,
4929 x_msg_data OUT NOCOPY VARCHAR2,
4930 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
4931 p_group_id IN NUMBER,
4932 p_resource_id IN NUMBER
4933 ) AS
4934 l_api_name CONSTANT VARCHAR2(30) := 'Remove_GroupMember';
4935 l_api_version CONSTANT NUMBER := 1.0;
4936 l_current_user_id NUMBER;
4937 l_current_login_id NUMBER;
4938 l_current_resource_id NUMBER;
4939 l_current_user_status VARCHAR2(30);
4940 --
4941 l_admin_flag VARCHAR2(1);
4942 l_version NUMBER;
4943 --
4944 CURSOR Check_GroupMember_csr IS
4945 Select object_version_number
4946 From jtf_rs_group_members
4947 Where resource_id = p_resource_id
4948 And group_id = p_group_id
4949 And delete_flag <> 'Y';
4950 --
4951 BEGIN
4952 -- Standard call to check for call compatibility.
4953 SAVEPOINT Remove_GroupMember_Pvt;
4954 IF NOT FND_API.Compatible_API_Call (
4955 l_api_version,
4956 p_api_version,
4957 l_api_name,
4958 G_PKG_NAME) THEN
4959 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4960 END IF;
4961 --Initialize message list if p_init_msg_list is TRUE.
4962 IF FND_API.To_Boolean (p_init_msg_list) THEN
4963 FND_MSG_PUB.initialize;
4964 END IF;
4965 -- Initialize API return status to success
4966 x_return_status := FND_API.G_RET_STS_SUCCESS;
4967 -- Get the current (login) user id.
4968 AMV_UTILITY_PVT.Get_UserInfo(
4969 x_user_id => l_current_user_id,
4970 x_login_id => l_current_login_id,
4971 x_resource_id => l_current_resource_id,
4972 x_user_status => l_current_user_status
4973 );
4974 IF (p_check_login_user = FND_API.G_TRUE) THEN
4975 -- Check if user is login and has the required privilege.
4976 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
4977 -- User is not login.
4978 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4979 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
4980 FND_MSG_PUB.Add;
4981 END IF;
4982 RAISE FND_API.G_EXC_ERROR;
4983 END IF;
4984 AMV_USER_PVT.Is_Administrator
4985 (
4986 p_api_version => 1.0,
4987 x_return_status => x_return_status,
4988 x_msg_count => x_msg_count,
4989 x_msg_data => x_msg_data,
4990 p_check_login_user => FND_API.G_FALSE,
4991 p_resource_id => l_current_resource_id,
4992 x_result_flag => l_admin_flag
4993 );
4994 IF (l_admin_flag <> FND_API.G_TRUE) THEN
4995 -- User is not an administrator.
4996 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
4997 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
4998 FND_MSG_PUB.Add;
4999 END IF;
5000 RAISE FND_API.G_EXC_ERROR;
5001 END IF;
5002 END IF;
5003 -- This is to make database happy
5004 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
5005 l_current_login_id := -1;
5006 l_current_user_id := -1;
5007 END IF;
5008 OPEN Check_GroupMember_csr;
5009 FETCH Check_GroupMember_csr INTO l_version;
5010 IF (Check_GroupMember_csr%FOUND) THEN
5011 CLOSE Check_GroupMember_csr;
5012 jtf_rs_group_members_pub.delete_resource_group_members
5013 (
5014 p_api_version => 1.0,
5015 p_commit => p_commit,
5016 p_group_id => p_group_id,
5017 p_group_number => null,
5018 p_resource_id => p_resource_id,
5019 p_resource_number => null,
5020 p_object_version_num => l_version,
5021 x_return_status => x_return_status,
5022 x_msg_count => x_msg_count,
5023 x_msg_data => x_msg_data
5024 );
5025 ELSE
5026 CLOSE Check_groupMember_csr;
5027 END IF;
5028 --Standard call to get message count and if count=1, get the message
5029 FND_MSG_PUB.Count_And_Get (
5030 p_encoded => FND_API.G_FALSE,
5031 p_count => x_msg_count,
5032 p_data => x_msg_data
5033 );
5034 EXCEPTION
5035 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5036 ROLLBACK TO Remove_GroupMember_Pvt;
5037 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5038 -- Standard call to get message count and if count=1, get the message
5039 FND_MSG_PUB.Count_And_Get (
5040 p_encoded => FND_API.G_FALSE,
5041 p_count => x_msg_count,
5042 p_data => x_msg_data
5043 );
5044 WHEN FND_API.G_EXC_ERROR THEN
5045 ROLLBACK TO Remove_GroupMember_Pvt;
5046 x_return_status := FND_API.G_RET_STS_ERROR;
5047 -- Standard call to get message count and if count=1, get the message
5048 FND_MSG_PUB.Count_And_Get (
5049 p_encoded => FND_API.G_FALSE,
5050 p_count => x_msg_count,
5051 p_data => x_msg_data
5052 );
5053 WHEN OTHERS THEN
5054 ROLLBACK TO Remove_GroupMember_Pvt;
5055 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5056 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
5057 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
5058 END IF;
5059 -- Standard call to get message count and if count=1, get the message
5060 FND_MSG_PUB.Count_And_Get (
5061 p_encoded => FND_API.G_FALSE,
5062 p_count => x_msg_count,
5063 p_data => x_msg_data
5064 );
5065 END Remove_GroupMember;
5066 --------------------------------------------------------------------------------
5067 PROCEDURE Remove_GroupMember
5068 (
5069 p_api_version IN NUMBER,
5070 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5071 p_commit IN VARCHAR2 := FND_API.G_FALSE,
5072 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
5073 x_return_status OUT NOCOPY VARCHAR2,
5074 x_msg_count OUT NOCOPY NUMBER,
5075 x_msg_data OUT NOCOPY VARCHAR2,
5076 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
5077 p_group_id IN NUMBER,
5078 p_resource_id_varray IN AMV_NUMBER_VARRAY_TYPE
5079 ) AS
5080 l_api_name CONSTANT VARCHAR2(30) := 'Remove_GroupMember';
5081 l_api_version CONSTANT NUMBER := 1.0;
5082 l_current_user_id NUMBER;
5083 l_current_login_id NUMBER;
5084 l_current_resource_id NUMBER;
5085 l_current_user_status VARCHAR2(30);
5086 --
5087 l_admin_flag VARCHAR2(1);
5088 l_return_status VARCHAR2(1);
5089 l_msg_count NUMBER;
5090 l_msg_data VARCHAR2(2000);
5091 l_temp NUMBER;
5092 l_count NUMBER;
5093 --
5094 BEGIN
5095 -- Standard call to check for call compatibility.
5096 SAVEPOINT Remove_GroupMember_Pvt;
5097 IF NOT FND_API.Compatible_API_Call (
5098 l_api_version,
5099 p_api_version,
5100 l_api_name,
5101 G_PKG_NAME) THEN
5102 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5103 END IF;
5104 --Initialize message list if p_init_msg_list is TRUE.
5105 IF FND_API.To_Boolean (p_init_msg_list) THEN
5106 FND_MSG_PUB.initialize;
5107 END IF;
5108 -- Initialize API return status to success
5109 x_return_status := FND_API.G_RET_STS_SUCCESS;
5110 -- Get the current (login) user id.
5111 AMV_UTILITY_PVT.Get_UserInfo(
5112 x_user_id => l_current_user_id,
5113 x_login_id => l_current_login_id,
5114 x_resource_id => l_current_resource_id,
5115 x_user_status => l_current_user_status
5116 );
5117 IF (p_check_login_user = FND_API.G_TRUE) THEN
5118 -- Check if user is login and has the required privilege.
5119 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
5120 -- User is not login.
5121 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5122 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
5123 FND_MSG_PUB.Add;
5124 END IF;
5125 RAISE FND_API.G_EXC_ERROR;
5126 END IF;
5127 AMV_USER_PVT.Is_Administrator
5128 (
5129 p_api_version => 1.0,
5130 x_return_status => x_return_status,
5131 x_msg_count => x_msg_count,
5132 x_msg_data => x_msg_data,
5133 p_check_login_user => FND_API.G_FALSE,
5134 p_resource_id => l_current_resource_id,
5135 x_result_flag => l_admin_flag
5136 );
5137 IF (l_admin_flag <> FND_API.G_TRUE) THEN
5138 -- User is not an administrator.
5139 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5140 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
5141 FND_MSG_PUB.Add;
5142 END IF;
5143 RAISE FND_API.G_EXC_ERROR;
5144 END IF;
5145 END IF;
5146 -- This is to make database happy
5147 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
5148 l_current_login_id := -1;
5149 l_current_user_id := -1;
5150 END IF;
5151 -- Check if the group id is valid
5152 IF (AMV_UTILITY_PVT.IS_GROUPIDVALID(p_group_id) <> TRUE) THEN
5153 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5154 FND_MESSAGE.Set_name('AMV','AMV_INVALID_GROUP_ID');
5155 FND_MESSAGE.Set_Token('ID', TO_CHAR( NVL(p_group_id, -1) ) );
5156 FND_MSG_PUB.Add;
5157 END IF;
5158 RAISE FND_API.G_EXC_ERROR;
5159 END IF;
5160 IF (p_resource_id_varray IS NULL) THEN
5161 l_count := 0;
5162 ELSE
5163 l_count := p_resource_id_varray.count;
5164 END IF;
5165 FOR i IN 1..l_count LOOP
5166 Remove_GroupMember
5167 (
5168 p_api_version => p_api_version,
5169 p_commit => p_commit,
5170 p_validation_level => p_validation_level,
5171 x_return_status => l_return_status,
5172 x_msg_count => x_msg_count,
5173 x_msg_data => x_msg_data,
5174 p_check_login_user => FND_API.G_FALSE,
5175 p_resource_id => p_resource_id_varray(i),
5176 p_group_id => p_group_id
5177 );
5178 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5179 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5180 ELSIF (l_return_status = FND_API.G_RET_STS_ERROR AND
5181 x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
5182 x_return_status := FND_API.G_RET_STS_ERROR;
5183 END IF;
5184 END LOOP;
5185 --Standard call to get message count and if count=1, get the message
5186 FND_MSG_PUB.Count_And_Get (
5187 p_encoded => FND_API.G_FALSE,
5188 p_count => x_msg_count,
5189 p_data => x_msg_data
5190 );
5191 EXCEPTION
5192 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5193 ROLLBACK TO Remove_GroupMember_Pvt;
5194 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5195 -- Standard call to get message count and if count=1, get the message
5196 FND_MSG_PUB.Count_And_Get (
5197 p_encoded => FND_API.G_FALSE,
5198 p_count => x_msg_count,
5199 p_data => x_msg_data
5200 );
5201 WHEN FND_API.G_EXC_ERROR THEN
5202 ROLLBACK TO Remove_GroupMember_Pvt;
5203 x_return_status := FND_API.G_RET_STS_ERROR;
5204 -- Standard call to get message count and if count=1, get the message
5205 FND_MSG_PUB.Count_And_Get (
5206 p_encoded => FND_API.G_FALSE,
5207 p_count => x_msg_count,
5208 p_data => x_msg_data
5209 );
5210 WHEN OTHERS THEN
5211 ROLLBACK TO Remove_GroupMember_Pvt;
5212 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5213 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
5214 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
5215 END IF;
5216 -- Standard call to get message count and if count=1, get the message
5217 FND_MSG_PUB.Count_And_Get (
5218 p_encoded => FND_API.G_FALSE,
5219 p_count => x_msg_count,
5220 p_data => x_msg_data
5221 );
5222 END Remove_GroupMember;
5223 --------------------------------------------------------------------------------
5224 PROCEDURE Check_GroupMember
5225 (
5226 p_api_version IN NUMBER,
5227 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5228 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
5229 x_return_status OUT NOCOPY VARCHAR2,
5230 x_msg_count OUT NOCOPY NUMBER,
5231 x_msg_data OUT NOCOPY VARCHAR2,
5232 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
5233 p_group_id IN NUMBER,
5234 p_resource_id IN NUMBER,
5235 x_result_flag OUT NOCOPY VARCHAR2
5236 ) AS
5237 l_api_name CONSTANT VARCHAR2(30) := 'Check_GroupMember';
5238 l_api_version CONSTANT NUMBER := 1.0;
5239 l_current_user_id NUMBER;
5240 l_current_login_id NUMBER;
5241 l_current_resource_id NUMBER;
5242 l_current_user_status VARCHAR2(30);
5243 --
5244 l_temp NUMBER;
5245 --
5246 CURSOR Check_GroupMember_csr IS
5247 Select m.group_member_id
5248 From jtf_rs_group_members m, jtf_rs_groups_vl g
5249 Where m.resource_id = p_resource_id
5250 And m.group_id = p_group_id
5251 And m.delete_flag <> 'Y'
5252 And g.group_id = p_group_id
5253 And g.start_date_active < sysdate
5254 And nvl(g.end_date_active, sysdate+1) > sysdate
5255 ;
5256 --
5257 BEGIN
5258 -- Standard call to check for call compatibility.
5259 SAVEPOINT Add_GroupMember_Pvt;
5260 IF NOT FND_API.Compatible_API_Call (
5261 l_api_version,
5262 p_api_version,
5263 l_api_name,
5264 G_PKG_NAME) THEN
5265 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5266 END IF;
5267 --Initialize message list if p_init_msg_list is TRUE.
5268 IF FND_API.To_Boolean (p_init_msg_list) THEN
5269 FND_MSG_PUB.initialize;
5270 END IF;
5271 -- Initialize API return status to success
5272 x_return_status := FND_API.G_RET_STS_SUCCESS;
5273 x_result_flag := FND_API.G_FALSE;
5274 -- Get the current (login) user id.
5275 AMV_UTILITY_PVT.Get_UserInfo(
5276 x_user_id => l_current_user_id,
5277 x_login_id => l_current_login_id,
5278 x_resource_id => l_current_resource_id,
5279 x_user_status => l_current_user_status
5280 );
5281 IF (p_check_login_user = FND_API.G_TRUE) THEN
5282 -- Check if user is login and has the required privilege.
5283 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
5284 -- User is not login.
5285 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5286 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
5287 FND_MSG_PUB.Add;
5288 END IF;
5289 RAISE FND_API.G_EXC_ERROR;
5290 END IF;
5291 END IF;
5292 OPEN Check_GroupMember_csr;
5293 FETCH Check_GroupMember_csr INTO l_temp;
5294 IF (Check_GroupMember_csr%FOUND) THEN
5295 x_result_flag := FND_API.G_TRUE;
5296 END IF;
5297 CLOSE Check_groupMember_csr;
5298 --Standard call to get message count and if count=1, get the message
5299 FND_MSG_PUB.Count_And_Get (
5300 p_encoded => FND_API.G_FALSE,
5301 p_count => x_msg_count,
5302 p_data => x_msg_data
5303 );
5304 EXCEPTION
5305 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5306 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5307 -- Standard call to get message count and if count=1, get the message
5308 FND_MSG_PUB.Count_And_Get (
5309 p_encoded => FND_API.G_FALSE,
5310 p_count => x_msg_count,
5311 p_data => x_msg_data
5312 );
5313 WHEN FND_API.G_EXC_ERROR THEN
5314 x_return_status := FND_API.G_RET_STS_ERROR;
5315 -- Standard call to get message count and if count=1, get the message
5316 FND_MSG_PUB.Count_And_Get (
5317 p_encoded => FND_API.G_FALSE,
5318 p_count => x_msg_count,
5319 p_data => x_msg_data
5320 );
5321 WHEN OTHERS THEN
5322 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5323 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
5324 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
5325 END IF;
5326 -- Standard call to get message count and if count=1, get the message
5327 FND_MSG_PUB.Count_And_Get (
5328 p_encoded => FND_API.G_FALSE,
5329 p_count => x_msg_count,
5330 p_data => x_msg_data
5331 );
5332 END Check_GroupMember;
5333 --------------------------------------------------------------------------------
5334 ---------------------------------- ACCESS ----------------------------------
5335 --------------------------------------------------------------------------------
5336 PROCEDURE Update_Access
5337 (
5338 p_api_version IN NUMBER,
5339 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5340 p_commit IN VARCHAR2 := FND_API.G_FALSE,
5341 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
5342 x_return_status OUT NOCOPY VARCHAR2,
5343 x_msg_count OUT NOCOPY NUMBER,
5344 x_msg_data OUT NOCOPY VARCHAR2,
5345 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
5346 p_access_obj IN AMV_ACCESS_OBJ_TYPE
5347 ) AS
5348 l_api_name CONSTANT VARCHAR2(30) := 'Update_Access';
5349 l_api_version CONSTANT NUMBER := 1.0;
5350 l_current_user_id NUMBER;
5351 l_current_login_id NUMBER;
5352 l_current_resource_id NUMBER;
5353 l_current_user_status VARCHAR2(30);
5354 --
5355 l_admin_flag VARCHAR2(1);
5356 l_access_obj AMV_ACCESS_OBJ_TYPE := p_access_obj;
5357 l_temp NUMBER;
5358 --
5359 CURSOR Get_AccessId_csr IS
5360 Select access_id
5361 From amv_u_access
5362 Where user_or_group_id = l_access_obj.user_or_group_id
5363 And user_or_group_type = l_access_obj.user_or_group_type
5364 And access_to_table_record_id = l_access_obj.access_to_table_record_id
5365 And access_to_table_code = l_access_obj.access_to_table_code;
5366 --
5367 BEGIN
5368 -- Standard call to check for call compatibility.
5369 SAVEPOINT Update_Access_Pvt;
5370 IF NOT FND_API.Compatible_API_Call (
5371 l_api_version,
5372 p_api_version,
5373 l_api_name,
5374 G_PKG_NAME) THEN
5375 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5376 END IF;
5377 --Initialize message list if p_init_msg_list is TRUE.
5378 IF FND_API.To_Boolean (p_init_msg_list) THEN
5379 FND_MSG_PUB.initialize;
5380 END IF;
5381 -- Initialize API return status to success
5382 x_return_status := FND_API.G_RET_STS_SUCCESS;
5383 -- Get the current (login) user id.
5384 AMV_UTILITY_PVT.Get_UserInfo(
5385 x_user_id => l_current_user_id,
5386 x_login_id => l_current_login_id,
5387 x_resource_id => l_current_resource_id,
5388 x_user_status => l_current_user_status
5389 );
5390 IF (p_check_login_user = FND_API.G_TRUE) THEN
5391 -- Check if user is login and has the required privilege.
5392 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
5393 -- User is not login.
5394 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5395 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
5396 FND_MSG_PUB.Add;
5397 END IF;
5398 RAISE FND_API.G_EXC_ERROR;
5399 END IF;
5400 -- We might not need this one.
5401 AMV_USER_PVT.Is_Administrator
5402 (
5403 p_api_version => 1.0,
5404 x_return_status => x_return_status,
5405 x_msg_count => x_msg_count,
5406 x_msg_data => x_msg_data,
5407 p_check_login_user => FND_API.G_FALSE,
5408 p_resource_id => l_current_resource_id,
5409 x_result_flag => l_admin_flag
5410 );
5411 IF (l_admin_flag <> FND_API.G_TRUE) THEN
5412 -- User is not an administrator.
5413 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5414 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
5415 FND_MSG_PUB.Add;
5416 END IF;
5417 RAISE FND_API.G_EXC_ERROR;
5418 END IF;
5419 END IF;
5420 -- This is to make database happy
5421 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
5422 l_current_login_id := -1;
5423 l_current_user_id := -1;
5424 END IF;
5425 IF (l_access_obj.access_id IS NULL) THEN
5426 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5427 FND_MESSAGE.Set_name('AMV','AMV_NULL_ACCESS_OBJ');
5428 FND_MSG_PUB.Add;
5429 END IF;
5430 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5431 END IF;
5432
5433 OPEN Get_AccessId_csr;
5434 FETCH Get_AccessId_csr INTO l_temp;
5435 IF (Get_AccessId_csr%FOUND) THEN
5436 CLOSE Get_AccessId_csr;
5437 l_access_obj.access_id := l_temp;
5438 ELSE
5439 CLOSE Get_AccessId_csr;
5440 l_access_obj.access_id := FND_API.G_MISS_NUM;
5441 END IF;
5442 IF (l_access_obj.access_id = FND_API.G_MISS_NUM) THEN
5443 IF (l_access_obj.user_or_group_type = G_GROUP_ARC_TYPE) THEN
5444 -- Check if the Group id is valid
5445 IF (AMV_UTILITY_PVT.IS_GROUPIDVALID(l_access_obj.user_or_group_id)
5446 <> TRUE) THEN
5447 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5448 FND_MESSAGE.Set_name('AMV','AMV_INVALID_GROUP_ID');
5449 FND_MESSAGE.Set_Token('ID',
5450 TO_CHAR( NVL(l_access_obj.user_or_group_id,-1)) );
5451 FND_MSG_PUB.Add;
5452 END IF;
5453 RAISE FND_API.G_EXC_ERROR;
5454 END IF;
5455 ELSIF (l_access_obj.user_or_group_type = G_USER_ARC_TYPE) THEN
5456 -- Check if the resource id is valid
5457 IF (AMV_UTILITY_PVT.IS_RESOURCEIDVALID(l_access_obj.user_or_group_id)
5458 <> TRUE) THEN
5459 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5460 FND_MESSAGE.Set_name('AMV','AMV_INVALID_RESOURCE_ID');
5461 FND_MESSAGE.Set_Token('ID',
5462 TO_CHAR( NVL(l_access_obj.user_or_group_id,-1)) );
5463 FND_MSG_PUB.Add;
5464 END IF;
5465 RAISE FND_API.G_EXC_ERROR;
5466 END IF;
5467 ELSE
5468 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5469 FND_MESSAGE.Set_name('AMV','AMV_WRONG_ACCESS_USER_TYPE');
5470 FND_MSG_PUB.Add;
5471 END IF;
5472 RAISE FND_API.G_EXC_ERROR;
5473 END IF;
5474 IF (l_access_obj.access_to_table_code = G_ITEM_ARC_TYPE) THEN
5475 -- Check if the item id is valid
5476 IF (AMV_UTILITY_PVT.IS_ITEMIDVALID(
5477 l_access_obj.access_to_table_record_id) <> TRUE) THEN
5478 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5479 FND_MESSAGE.Set_name('AMV','AMV_INVALID_ITEM_ID');
5480 FND_MESSAGE.Set_Token('ID',
5481 TO_CHAR( NVL(l_access_obj.access_to_table_record_id,-1)) );
5482 FND_MSG_PUB.Add;
5483 END IF;
5484 RAISE FND_API.G_EXC_ERROR;
5485 END IF;
5486 ELSIF (l_access_obj.access_to_table_code = G_CHAN_ARC_TYPE) THEN
5487 -- Check if the channel id is valid
5488 IF (AMV_UTILITY_PVT.IS_CHANNELIDVALID(
5489 l_access_obj.access_to_table_record_id) <> TRUE) THEN
5490 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5491 FND_MESSAGE.Set_name('AMV','AMV_INVALID_CHANEL_ID');
5492 FND_MESSAGE.Set_Token('ID',
5493 TO_CHAR( NVL(l_access_obj.access_to_table_record_id,-1)) );
5494 FND_MSG_PUB.Add;
5495 END IF;
5496 RAISE FND_API.G_EXC_ERROR;
5497 END IF;
5498 ELSIF (l_access_obj.access_to_table_code = G_CATE_ARC_TYPE) THEN
5499 -- Check if the category id is valid
5500 IF (AMV_UTILITY_PVT.IS_CATEGORYIDVALID(
5501 l_access_obj.access_to_table_record_id) <> TRUE) THEN
5502 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5503 FND_MESSAGE.Set_name('AMV','AMV_INVALID_CATEGORY_ID');
5504 FND_MESSAGE.Set_Token('ID',
5505 TO_CHAR( NVL(l_access_obj.access_to_table_record_id,-1)) );
5506 FND_MSG_PUB.Add;
5507 END IF;
5508 RAISE FND_API.G_EXC_ERROR;
5509 END IF;
5510 ELSIF (l_access_obj.access_to_table_code = G_APPL_ARC_TYPE) THEN
5511 -- Check if the application id is valid
5512 IF (AMV_UTILITY_PVT.IS_APPLIDVALID(
5513 l_access_obj.access_to_table_record_id) <> TRUE) THEN
5514 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5515 FND_MESSAGE.Set_name('AMV','AMV_INVALID_APPLICATION_ID');
5516 FND_MESSAGE.Set_Token('ID',
5517 TO_CHAR( NVL(l_access_obj.access_to_table_record_id,-1)) );
5518 FND_MSG_PUB.Add;
5519 END IF;
5520 RAISE FND_API.G_EXC_ERROR;
5521 END IF;
5522 ELSE
5523 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5524 FND_MESSAGE.Set_name('AMV','AMV_WRONG_ACCESS_TABLE_TYPE');
5525 FND_MSG_PUB.Add;
5526 END IF;
5527 RAISE FND_API.G_EXC_ERROR;
5528 END IF;
5529 IF (l_access_obj.effective_start_date = FND_API.G_MISS_DATE
5530 OR l_access_obj.effective_start_date IS NULL) THEN
5531 l_access_obj.effective_start_date := sysdate;
5532 END IF;
5533 IF (l_access_obj.expiration_date = FND_API.G_MISS_DATE) THEN
5534 l_access_obj.expiration_date := null;
5535 END IF;
5536 IF (l_access_obj.can_view_flag IS NULL OR
5537 l_access_obj.can_view_flag <> FND_API.G_TRUE) THEN
5538 l_access_obj.can_view_flag := FND_API.G_FALSE;
5539 END IF;
5540 IF (l_access_obj.can_create_flag IS NULL OR
5541 l_access_obj.can_create_flag <> FND_API.G_TRUE) THEN
5542 l_access_obj.can_create_flag := FND_API.G_FALSE;
5543 END IF;
5544 IF (l_access_obj.can_delete_flag IS NULL OR
5545 l_access_obj.can_delete_flag <> FND_API.G_TRUE) THEN
5546 l_access_obj.can_delete_flag := FND_API.G_FALSE;
5547 END IF;
5548 IF (l_access_obj.can_update_flag IS NULL OR
5549 l_access_obj.can_update_flag <> FND_API.G_TRUE) THEN
5550 l_access_obj.can_update_flag := FND_API.G_FALSE;
5551 END IF;
5552 IF (l_access_obj.can_create_dist_rule_flag IS NULL OR
5553 l_access_obj.can_create_dist_rule_flag <> FND_API.G_TRUE) THEN
5554 l_access_obj.can_create_dist_rule_flag := FND_API.G_FALSE;
5555 END IF;
5556 IF (l_access_obj.chl_approver_flag IS NULL OR
5557 l_access_obj.chl_approver_flag <> FND_API.G_TRUE) THEN
5558 l_access_obj.chl_approver_flag := FND_API.G_FALSE;
5559 END IF;
5560 IF (l_access_obj.chl_required_flag IS NULL OR
5561 l_access_obj.chl_required_flag <> FND_API.G_TRUE) THEN
5562 l_access_obj.chl_required_flag := FND_API.G_FALSE;
5563 END IF;
5564 IF (l_access_obj.chl_required_need_notif_flag IS NULL OR
5565 l_access_obj.chl_required_need_notif_flag <> FND_API.G_TRUE) THEN
5566 l_access_obj.chl_required_need_notif_flag := FND_API.G_FALSE;
5567 END IF;
5568 --Now let the helper do the real job.
5569 Add_Access_helper
5570 (
5571 p_access_obj => l_access_obj,
5572 x_return_status => x_return_status,
5573 x_access_id => l_temp
5574 );
5575 ELSE
5576 IF (l_access_obj.effective_start_date IS NULL) THEN
5577 l_access_obj.effective_start_date := FND_API.G_MISS_DATE;
5578 END IF;
5579 IF (l_access_obj.can_view_flag IS NULL) THEN
5580 l_access_obj.can_view_flag := FND_API.G_MISS_CHAR;
5581 END IF;
5582 IF (l_access_obj.can_create_flag IS NULL) THEN
5583 l_access_obj.can_create_flag := FND_API.G_MISS_CHAR;
5584 END IF;
5585 IF (l_access_obj.can_delete_flag IS NULL) THEN
5586 l_access_obj.can_delete_flag := FND_API.G_MISS_CHAR;
5587 END IF;
5588 IF (l_access_obj.can_update_flag IS NULL) THEN
5589 l_access_obj.can_update_flag := FND_API.G_MISS_CHAR;
5590 END IF;
5591 IF (l_access_obj.can_create_dist_rule_flag IS NULL ) THEN
5592 l_access_obj.can_create_dist_rule_flag := FND_API.G_MISS_CHAR;
5593 END IF;
5594 IF (l_access_obj.chl_approver_flag IS NULL ) THEN
5595 l_access_obj.chl_approver_flag := FND_API.G_MISS_CHAR;
5596 END IF;
5597 IF (l_access_obj.chl_required_flag IS NULL ) THEN
5598 l_access_obj.chl_required_flag := FND_API.G_MISS_CHAR;
5599 END IF;
5600 IF (l_access_obj.chl_required_need_notif_flag IS NULL ) THEN
5601 l_access_obj.chl_required_need_notif_flag := FND_API.G_MISS_CHAR;
5602 END IF;
5603 --Now let the helper do the real job.
5604 Update_Access_helper
5605 (
5606 p_access_obj => l_access_obj,
5607 x_return_status => x_return_status
5608 );
5609 END IF;
5610 IF FND_API.To_Boolean ( p_commit ) THEN
5611 COMMIT WORK;
5612 END IF;
5613 --Standard call to get message count and if count=1, get the message
5614 FND_MSG_PUB.Count_And_Get (
5615 p_encoded => FND_API.G_FALSE,
5616 p_count => x_msg_count,
5617 p_data => x_msg_data
5618 );
5619 EXCEPTION
5620 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5621 ROLLBACK TO Update_Access_Pvt;
5622 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5623 -- Standard call to get message count and if count=1, get the message
5624 FND_MSG_PUB.Count_And_Get (
5625 p_encoded => FND_API.G_FALSE,
5626 p_count => x_msg_count,
5627 p_data => x_msg_data
5628 );
5629 WHEN FND_API.G_EXC_ERROR THEN
5630 ROLLBACK TO Update_Access_Pvt;
5631 x_return_status := FND_API.G_RET_STS_ERROR;
5632 -- Standard call to get message count and if count=1, get the message
5633 FND_MSG_PUB.Count_And_Get (
5634 p_encoded => FND_API.G_FALSE,
5635 p_count => x_msg_count,
5636 p_data => x_msg_data
5637 );
5638 WHEN OTHERS THEN
5639 ROLLBACK TO Update_Access_Pvt;
5640 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5641 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
5642 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
5643 END IF;
5644 -- Standard call to get message count and if count=1, get the message
5645 FND_MSG_PUB.Count_And_Get (
5646 p_encoded => FND_API.G_FALSE,
5647 p_count => x_msg_count,
5648 p_data => x_msg_data
5649 );
5650 END Update_Access;
5651 --------------------------------------------------------------------------------
5652 PROCEDURE Update_Access
5653 (
5654 p_api_version IN NUMBER,
5655 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5656 p_commit IN VARCHAR2 := FND_API.G_FALSE,
5657 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
5658 x_return_status OUT NOCOPY VARCHAR2,
5659 x_msg_count OUT NOCOPY NUMBER,
5660 x_msg_data OUT NOCOPY VARCHAR2,
5661 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
5662 p_access_obj_array IN AMV_ACCESS_OBJ_VARRAY
5663 ) AS
5664 l_api_name CONSTANT VARCHAR2(30) := 'Update_Access';
5665 l_api_version CONSTANT NUMBER := 1.0;
5666 l_current_user_id NUMBER;
5667 l_current_login_id NUMBER;
5668 l_current_resource_id NUMBER;
5669 l_current_user_status VARCHAR2(30);
5670 --
5671 l_return_status VARCHAR2(1);
5672 l_count NUMBER;
5673 l_admin_flag VARCHAR2(1);
5674 --
5675 BEGIN
5676 -- Standard call to check for call compatibility.
5677 SAVEPOINT Update_Access_Pvt;
5678 IF NOT FND_API.Compatible_API_Call (
5679 l_api_version,
5680 p_api_version,
5681 l_api_name,
5682 G_PKG_NAME) THEN
5683 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5684 END IF;
5685 --Initialize message list if p_init_msg_list is TRUE.
5686 IF FND_API.To_Boolean (p_init_msg_list) THEN
5687 FND_MSG_PUB.initialize;
5688 END IF;
5689 -- Initialize API return status to success
5690 x_return_status := FND_API.G_RET_STS_SUCCESS;
5691 -- Get the current (login) user id.
5692 AMV_UTILITY_PVT.Get_UserInfo(
5693 x_user_id => l_current_user_id,
5694 x_login_id => l_current_login_id,
5695 x_resource_id => l_current_resource_id,
5696 x_user_status => l_current_user_status
5697 );
5698 IF (p_check_login_user = FND_API.G_TRUE) THEN
5699 -- Check if user is login and has the required privilege.
5700 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
5701 -- User is not login.
5702 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5703 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
5704 FND_MSG_PUB.Add;
5705 END IF;
5706 RAISE FND_API.G_EXC_ERROR;
5707 END IF;
5708 -- We might not need this one.
5709 AMV_USER_PVT.Is_Administrator
5710 (
5711 p_api_version => 1.0,
5712 x_return_status => x_return_status,
5713 x_msg_count => x_msg_count,
5714 x_msg_data => x_msg_data,
5715 p_check_login_user => FND_API.G_FALSE,
5716 p_resource_id => l_current_resource_id,
5717 x_result_flag => l_admin_flag
5718 );
5719 IF (l_admin_flag <> FND_API.G_TRUE) THEN
5720 -- User is not an administrator.
5721 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
5722 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_HAVE_PRIVILEGE');
5723 FND_MSG_PUB.Add;
5724 END IF;
5725 RAISE FND_API.G_EXC_ERROR;
5726 END IF;
5727 END IF;
5728 -- This is to make database happy
5729 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
5730 l_current_login_id := -1;
5731 l_current_user_id := -1;
5732 END IF;
5733 IF (p_access_obj_array IS NULL) THEN
5734 l_count := 0;
5735 ELSE
5736 l_count := p_access_obj_array.count;
5737 END IF;
5738 FOR i IN 1..l_count LOOP
5739 Update_Access
5740 (
5741 p_api_version => p_api_version,
5742 p_commit => p_commit,
5743 p_validation_level => p_validation_level,
5744 x_return_status => l_return_status,
5745 x_msg_count => x_msg_count,
5746 x_msg_data => x_msg_data,
5747 p_check_login_user => FND_API.G_FALSE,
5748 p_access_obj => p_access_obj_array(i)
5749 );
5750 IF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
5751 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5752 ELSIF (l_return_status = FND_API.G_RET_STS_ERROR AND
5753 x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
5754 x_return_status := FND_API.G_RET_STS_ERROR;
5755 END IF;
5756 END LOOP;
5757 --Standard call to get message count and if count=1, get the message
5758 FND_MSG_PUB.Count_And_Get (
5759 p_encoded => FND_API.G_FALSE,
5760 p_count => x_msg_count,
5761 p_data => x_msg_data
5762 );
5763 EXCEPTION
5764 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5765 ROLLBACK TO Update_Access_Pvt;
5766 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5767 -- Standard call to get message count and if count=1, get the message
5768 FND_MSG_PUB.Count_And_Get (
5769 p_encoded => FND_API.G_FALSE,
5770 p_count => x_msg_count,
5771 p_data => x_msg_data
5772 );
5773 WHEN FND_API.G_EXC_ERROR THEN
5774 ROLLBACK TO Update_Access_Pvt;
5775 x_return_status := FND_API.G_RET_STS_ERROR;
5776 -- Standard call to get message count and if count=1, get the message
5777 FND_MSG_PUB.Count_And_Get (
5778 p_encoded => FND_API.G_FALSE,
5779 p_count => x_msg_count,
5780 p_data => x_msg_data
5781 );
5782 WHEN OTHERS THEN
5783 ROLLBACK TO Update_Access_Pvt;
5784 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5785 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
5786 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
5787 END IF;
5788 -- Standard call to get message count and if count=1, get the message
5789 FND_MSG_PUB.Count_And_Get (
5790 p_encoded => FND_API.G_FALSE,
5791 p_count => x_msg_count,
5792 p_data => x_msg_data
5793 );
5794 END Update_Access;
5795 --------------------------------------------------------------------------------
5796 PROCEDURE Update_ResourceApplAccess
5797 (
5798 p_api_version IN NUMBER,
5799 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5800 p_commit IN VARCHAR2 := FND_API.G_FALSE,
5801 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
5802 x_return_status OUT NOCOPY VARCHAR2,
5803 x_msg_count OUT NOCOPY NUMBER,
5804 x_msg_data OUT NOCOPY VARCHAR2,
5805 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
5806 p_resource_id IN NUMBER,
5807 p_application_id IN NUMBER,
5808 p_access_flag_obj IN AMV_ACCESS_FLAG_OBJ_TYPE
5809 ) AS
5810 l_access_obj AMV_ACCESS_OBJ_TYPE;
5811 BEGIN
5812
5813 l_access_obj.ACCESS_ID := FND_API.G_MISS_NUM;
5814 l_access_obj.OBJECT_VERSION_NUMBER := 1;
5815 l_access_obj.ACCESS_TO_TABLE_CODE := p_application_id;
5816 l_access_obj.ACCESS_TO_TABLE_RECORD_ID := G_APPL_ARC_TYPE;
5817 l_access_obj.USER_OR_GROUP_ID := p_resource_id;
5818 l_access_obj.USER_OR_GROUP_TYPE := G_USER_ARC_TYPE;
5819 l_access_obj.EFFECTIVE_START_DATE := sysdate;
5820 l_access_obj.EXPIRATION_DATE := null;
5821 l_access_obj.CAN_VIEW_FLAG := p_access_flag_obj.can_view_flag;
5822 l_access_obj.CAN_CREATE_FLAG := p_access_flag_obj.can_create_flag;
5823 l_access_obj.CAN_DELETE_FLAG := p_access_flag_obj.can_delete_flag;
5824 l_access_obj.CAN_UPDATE_FLAG := p_access_flag_obj.can_update_flag;
5825 l_access_obj.CAN_CREATE_DIST_RULE_FLAG := p_access_flag_obj.can_create_dist_rule_flag;
5826 l_access_obj.CHL_APPROVER_FLAG := p_access_flag_obj.chl_approver_flag;
5827 l_access_obj.CHL_REQUIRED_FLAG := p_access_flag_obj.chl_required_flag;
5828 l_access_obj.CHL_REQUIRED_NEED_NOTIF_FLAG := p_access_flag_obj.chl_required_need_notif_flag;
5829 /*
5830 l_access_obj := AMV_ACCESS_OBJ_TYPE
5831 (
5832 FND_API.G_MISS_NUM,
5833 1,
5834 p_application_id,
5835 G_APPL_ARC_TYPE,
5836 p_resource_id,
5837 G_USER_ARC_TYPE,
5838 sysdate,
5839 null,
5840 p_access_flag_obj.can_view_flag,
5841 p_access_flag_obj.can_create_flag,
5842 p_access_flag_obj.can_delete_flag,
5843 p_access_flag_obj.can_update_flag,
5844 p_access_flag_obj.can_create_dist_rule_flag,
5845 p_access_flag_obj.chl_approver_flag,
5846 p_access_flag_obj.chl_required_flag,
5847 p_access_flag_obj.chl_required_need_notif_flag
5848 );
5849 */
5850 Update_Access
5851 (
5852 p_api_version => p_api_version,
5853 p_init_msg_list => p_init_msg_list,
5854 p_commit => p_commit,
5855 p_validation_level => p_validation_level,
5856 x_return_status => x_return_status,
5857 x_msg_count => x_msg_count,
5858 x_msg_data => x_msg_data,
5859 p_check_login_user => p_check_login_user,
5860 p_access_obj => l_access_obj
5861 );
5862 END Update_ResourceApplAccess;
5863 --------------------------------------------------------------------------------
5864 PROCEDURE Update_ResourceChanAccess
5865 (
5866 p_api_version IN NUMBER,
5867 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5868 p_commit IN VARCHAR2 := FND_API.G_FALSE,
5869 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
5870 x_return_status OUT NOCOPY VARCHAR2,
5871 x_msg_count OUT NOCOPY NUMBER,
5872 x_msg_data OUT NOCOPY VARCHAR2,
5873 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
5874 p_resource_id IN NUMBER,
5875 p_channel_id IN NUMBER,
5876 p_access_flag_obj IN AMV_ACCESS_FLAG_OBJ_TYPE
5877 ) AS
5878 l_access_obj AMV_ACCESS_OBJ_TYPE;
5879 BEGIN
5880 l_access_obj.ACCESS_ID := FND_API.G_MISS_NUM;
5881 l_access_obj.OBJECT_VERSION_NUMBER := 1;
5882 l_access_obj.ACCESS_TO_TABLE_CODE := p_channel_id;
5883 l_access_obj.ACCESS_TO_TABLE_RECORD_ID := G_CHAN_ARC_TYPE;
5884 l_access_obj.USER_OR_GROUP_ID := p_resource_id;
5885 l_access_obj.USER_OR_GROUP_TYPE := G_USER_ARC_TYPE;
5886 l_access_obj.EFFECTIVE_START_DATE := sysdate;
5887 l_access_obj.EXPIRATION_DATE := null;
5888 l_access_obj.CAN_VIEW_FLAG := p_access_flag_obj.can_view_flag;
5889 l_access_obj.CAN_CREATE_FLAG := p_access_flag_obj.can_create_flag;
5890 l_access_obj.CAN_DELETE_FLAG := p_access_flag_obj.can_delete_flag;
5891 l_access_obj.CAN_UPDATE_FLAG := p_access_flag_obj.can_update_flag;
5892 l_access_obj.CAN_CREATE_DIST_RULE_FLAG := p_access_flag_obj.can_create_dist_rule_flag;
5893 l_access_obj.CHL_APPROVER_FLAG := p_access_flag_obj.chl_approver_flag;
5894 l_access_obj.CHL_REQUIRED_FLAG := p_access_flag_obj.chl_required_flag;
5895 l_access_obj.CHL_REQUIRED_NEED_NOTIF_FLAG := p_access_flag_obj.chl_required_need_notif_flag;
5896
5897 /*
5898 l_access_obj := AMV_ACCESS_OBJ_TYPE
5899 (
5900 FND_API.G_MISS_NUM,
5901 1,
5902 p_channel_id,
5903 G_CHAN_ARC_TYPE,
5904 p_resource_id,
5905 G_USER_ARC_TYPE,
5906 sysdate,
5907 null,
5908 p_access_flag_obj.can_view_flag,
5909 p_access_flag_obj.can_create_flag,
5910 p_access_flag_obj.can_delete_flag,
5911 p_access_flag_obj.can_update_flag,
5912 p_access_flag_obj.can_create_dist_rule_flag,
5913 p_access_flag_obj.chl_approver_flag,
5914 p_access_flag_obj.chl_required_flag,
5915 p_access_flag_obj.chl_required_need_notif_flag
5916 );
5917 */
5918 Update_Access
5919 (
5920 p_api_version => p_api_version,
5921 p_init_msg_list => p_init_msg_list,
5922 p_commit => p_commit,
5923 p_validation_level => p_validation_level,
5924 x_return_status => x_return_status,
5925 x_msg_count => x_msg_count,
5926 x_msg_data => x_msg_data,
5927 p_check_login_user => p_check_login_user,
5928 p_access_obj => l_access_obj
5929 );
5930 END Update_ResourceChanAccess;
5931 --------------------------------------------------------------------------------
5932 PROCEDURE Update_ResourceCateAccess
5933 (
5934 p_api_version IN NUMBER,
5935 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5936 p_commit IN VARCHAR2 := FND_API.G_FALSE,
5937 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
5938 x_return_status OUT NOCOPY VARCHAR2,
5939 x_msg_count OUT NOCOPY NUMBER,
5940 x_msg_data OUT NOCOPY VARCHAR2,
5941 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
5942 p_resource_id IN NUMBER,
5943 p_category_id IN NUMBER,
5944 p_access_flag_obj IN AMV_ACCESS_FLAG_OBJ_TYPE
5945 ) AS
5946 l_access_obj AMV_ACCESS_OBJ_TYPE;
5947 BEGIN
5948 l_access_obj.ACCESS_ID := FND_API.G_MISS_NUM;
5949 l_access_obj.OBJECT_VERSION_NUMBER := 1;
5950 l_access_obj.ACCESS_TO_TABLE_CODE := p_category_id;
5951 l_access_obj.ACCESS_TO_TABLE_RECORD_ID := G_CATE_ARC_TYPE;
5952 l_access_obj.USER_OR_GROUP_ID := p_resource_id;
5953 l_access_obj.USER_OR_GROUP_TYPE := G_USER_ARC_TYPE;
5954 l_access_obj.EFFECTIVE_START_DATE := sysdate;
5955 l_access_obj.EXPIRATION_DATE := null;
5956 l_access_obj.CAN_VIEW_FLAG := p_access_flag_obj.can_view_flag;
5957 l_access_obj.CAN_CREATE_FLAG := p_access_flag_obj.can_create_flag;
5958 l_access_obj.CAN_DELETE_FLAG := p_access_flag_obj.can_delete_flag;
5959 l_access_obj.CAN_UPDATE_FLAG := p_access_flag_obj.can_update_flag;
5960 l_access_obj.CAN_CREATE_DIST_RULE_FLAG := p_access_flag_obj.can_create_dist_rule_flag;
5961 l_access_obj.CHL_APPROVER_FLAG := p_access_flag_obj.chl_approver_flag;
5962 l_access_obj.CHL_REQUIRED_FLAG := p_access_flag_obj.chl_required_flag;
5963 l_access_obj.CHL_REQUIRED_NEED_NOTIF_FLAG := p_access_flag_obj.chl_required_need_notif_flag;
5964
5965 /*
5966 l_access_obj := AMV_ACCESS_OBJ_TYPE
5967 (
5968 FND_API.G_MISS_NUM,
5969 1,
5970 p_category_id,
5971 G_CATE_ARC_TYPE,
5972 p_resource_id,
5973 G_USER_ARC_TYPE,
5974 sysdate,
5975 null,
5976 p_access_flag_obj.can_view_flag,
5977 p_access_flag_obj.can_create_flag,
5978 p_access_flag_obj.can_delete_flag,
5979 p_access_flag_obj.can_update_flag,
5980 p_access_flag_obj.can_create_dist_rule_flag,
5981 p_access_flag_obj.chl_approver_flag,
5982 p_access_flag_obj.chl_required_flag,
5983 p_access_flag_obj.chl_required_need_notif_flag
5984 );
5985 */
5986 Update_Access
5987 (
5988 p_api_version => p_api_version,
5989 p_init_msg_list => p_init_msg_list,
5990 p_commit => p_commit,
5991 p_validation_level => p_validation_level,
5992 x_return_status => x_return_status,
5993 x_msg_count => x_msg_count,
5994 x_msg_data => x_msg_data,
5995 p_check_login_user => p_check_login_user,
5996 p_access_obj => l_access_obj
5997 );
5998 END Update_ResourceCateAccess;
5999 --------------------------------------------------------------------------------
6000 PROCEDURE Update_ResourceItemAccess
6001 (
6002 p_api_version IN NUMBER,
6003 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6004 p_commit IN VARCHAR2 := FND_API.G_FALSE,
6005 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6006 x_return_status OUT NOCOPY VARCHAR2,
6007 x_msg_count OUT NOCOPY NUMBER,
6008 x_msg_data OUT NOCOPY VARCHAR2,
6009 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
6010 p_resource_id IN NUMBER,
6011 p_item_id IN NUMBER,
6012 p_access_flag_obj IN AMV_ACCESS_FLAG_OBJ_TYPE
6013 ) AS
6014 l_access_obj AMV_ACCESS_OBJ_TYPE;
6015 BEGIN
6016 l_access_obj.ACCESS_ID := FND_API.G_MISS_NUM;
6017 l_access_obj.OBJECT_VERSION_NUMBER := 1;
6018 l_access_obj.ACCESS_TO_TABLE_CODE := p_item_id;
6019 l_access_obj.ACCESS_TO_TABLE_RECORD_ID := G_ITEM_ARC_TYPE;
6020 l_access_obj.USER_OR_GROUP_ID := p_resource_id;
6021 l_access_obj.USER_OR_GROUP_TYPE := G_USER_ARC_TYPE;
6022 l_access_obj.EFFECTIVE_START_DATE := sysdate;
6023 l_access_obj.EXPIRATION_DATE := null;
6024 l_access_obj.CAN_VIEW_FLAG := p_access_flag_obj.can_view_flag;
6025 l_access_obj.CAN_CREATE_FLAG := p_access_flag_obj.can_create_flag;
6026 l_access_obj.CAN_DELETE_FLAG := p_access_flag_obj.can_delete_flag;
6027 l_access_obj.CAN_UPDATE_FLAG := p_access_flag_obj.can_update_flag;
6028 l_access_obj.CAN_CREATE_DIST_RULE_FLAG := p_access_flag_obj.can_create_dist_rule_flag;
6029 l_access_obj.CHL_APPROVER_FLAG := p_access_flag_obj.chl_approver_flag;
6030 l_access_obj.CHL_REQUIRED_FLAG := p_access_flag_obj.chl_required_flag;
6031 l_access_obj.CHL_REQUIRED_NEED_NOTIF_FLAG := p_access_flag_obj.chl_required_need_notif_flag;
6032
6033 /*
6034 l_access_obj := AMV_ACCESS_OBJ_TYPE
6035 (
6036 FND_API.G_MISS_NUM,
6037 1,
6038 p_item_id,
6039 G_ITEM_ARC_TYPE,
6040 p_resource_id,
6041 G_USER_ARC_TYPE,
6042 sysdate,
6043 null,
6044 p_access_flag_obj.can_view_flag,
6045 p_access_flag_obj.can_create_flag,
6046 p_access_flag_obj.can_delete_flag,
6047 p_access_flag_obj.can_update_flag,
6048 p_access_flag_obj.can_create_dist_rule_flag,
6049 p_access_flag_obj.chl_approver_flag,
6050 p_access_flag_obj.chl_required_flag,
6051 p_access_flag_obj.chl_required_need_notif_flag
6052 );
6053 */
6054 Update_Access
6055 (
6056 p_api_version => p_api_version,
6057 p_init_msg_list => p_init_msg_list,
6058 p_commit => p_commit,
6059 p_validation_level => p_validation_level,
6060 x_return_status => x_return_status,
6061 x_msg_count => x_msg_count,
6062 x_msg_data => x_msg_data,
6063 p_check_login_user => p_check_login_user,
6064 p_access_obj => l_access_obj
6065 );
6066 END Update_ResourceItemAccess;
6067 --------------------------------------------------------------------------------
6068 PROCEDURE Update_GroupApplAccess
6069 (
6070 p_api_version IN NUMBER,
6071 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6072 p_commit IN VARCHAR2 := FND_API.G_FALSE,
6073 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6074 x_return_status OUT NOCOPY VARCHAR2,
6075 x_msg_count OUT NOCOPY NUMBER,
6076 x_msg_data OUT NOCOPY VARCHAR2,
6077 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
6078 p_resource_id IN NUMBER,
6079 p_group_id IN NUMBER,
6080 p_application_id IN NUMBER,
6081 p_access_flag_obj IN AMV_ACCESS_FLAG_OBJ_TYPE
6082 ) AS
6083 l_access_obj AMV_ACCESS_OBJ_TYPE;
6084 BEGIN
6085 l_access_obj.ACCESS_ID := FND_API.G_MISS_NUM;
6086 l_access_obj.OBJECT_VERSION_NUMBER := 1;
6087 l_access_obj.ACCESS_TO_TABLE_CODE := p_application_id;
6088 l_access_obj.ACCESS_TO_TABLE_RECORD_ID := G_APPL_ARC_TYPE;
6089 l_access_obj.USER_OR_GROUP_ID := p_group_id;
6090 l_access_obj.USER_OR_GROUP_TYPE := G_GROUP_ARC_TYPE;
6091 l_access_obj.EFFECTIVE_START_DATE := sysdate;
6092 l_access_obj.EXPIRATION_DATE := null;
6093 l_access_obj.CAN_VIEW_FLAG := p_access_flag_obj.can_view_flag;
6094 l_access_obj.CAN_CREATE_FLAG := p_access_flag_obj.can_create_flag;
6095 l_access_obj.CAN_DELETE_FLAG := p_access_flag_obj.can_delete_flag;
6096 l_access_obj.CAN_UPDATE_FLAG := p_access_flag_obj.can_update_flag;
6097 l_access_obj.CAN_CREATE_DIST_RULE_FLAG := p_access_flag_obj.can_create_dist_rule_flag;
6098 l_access_obj.CHL_APPROVER_FLAG := p_access_flag_obj.chl_approver_flag;
6099 l_access_obj.CHL_REQUIRED_FLAG := p_access_flag_obj.chl_required_flag;
6100 l_access_obj.CHL_REQUIRED_NEED_NOTIF_FLAG := p_access_flag_obj.chl_required_need_notif_flag;
6101
6102 /*
6103 l_access_obj := AMV_ACCESS_OBJ_TYPE
6104 (
6105 FND_API.G_MISS_NUM,
6106 1,
6107 p_application_id,
6108 G_APPL_ARC_TYPE,
6109 p_group_id,
6110 G_GROUP_ARC_TYPE,
6111 sysdate,
6112 null,
6113 p_access_flag_obj.can_view_flag,
6114 p_access_flag_obj.can_create_flag,
6115 p_access_flag_obj.can_delete_flag,
6116 p_access_flag_obj.can_update_flag,
6117 p_access_flag_obj.can_create_dist_rule_flag,
6118 p_access_flag_obj.chl_approver_flag,
6119 p_access_flag_obj.chl_required_flag,
6120 p_access_flag_obj.chl_required_need_notif_flag
6121 );
6122 */
6123 Update_Access
6124 (
6125 p_api_version => p_api_version,
6126 p_init_msg_list => p_init_msg_list,
6127 p_commit => p_commit,
6128 p_validation_level => p_validation_level,
6129 x_return_status => x_return_status,
6130 x_msg_count => x_msg_count,
6131 x_msg_data => x_msg_data,
6132 p_check_login_user => p_check_login_user,
6133 p_access_obj => l_access_obj
6134 );
6135 END Update_GroupApplAccess;
6136 --------------------------------------------------------------------------------
6137 PROCEDURE Update_GroupChanAccess
6138 (
6139 p_api_version IN NUMBER,
6140 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6141 p_commit IN VARCHAR2 := FND_API.G_FALSE,
6142 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6143 x_return_status OUT NOCOPY VARCHAR2,
6144 x_msg_count OUT NOCOPY NUMBER,
6145 x_msg_data OUT NOCOPY VARCHAR2,
6146 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
6147 p_group_id IN NUMBER,
6148 p_channel_id IN NUMBER,
6149 p_access_flag_obj IN AMV_ACCESS_FLAG_OBJ_TYPE
6150 ) AS
6151 l_access_obj AMV_ACCESS_OBJ_TYPE;
6152 BEGIN
6153 l_access_obj.ACCESS_ID := FND_API.G_MISS_NUM;
6154 l_access_obj.OBJECT_VERSION_NUMBER := 1;
6155 l_access_obj.ACCESS_TO_TABLE_CODE := p_channel_id;
6156 l_access_obj.ACCESS_TO_TABLE_RECORD_ID := G_CHAN_ARC_TYPE;
6157 l_access_obj.USER_OR_GROUP_ID := p_group_id;
6158 l_access_obj.USER_OR_GROUP_TYPE := G_GROUP_ARC_TYPE;
6159 l_access_obj.EFFECTIVE_START_DATE := sysdate;
6160 l_access_obj.EXPIRATION_DATE := null;
6161 l_access_obj.CAN_VIEW_FLAG := p_access_flag_obj.can_view_flag;
6162 l_access_obj.CAN_CREATE_FLAG := p_access_flag_obj.can_create_flag;
6163 l_access_obj.CAN_DELETE_FLAG := p_access_flag_obj.can_delete_flag;
6164 l_access_obj.CAN_UPDATE_FLAG := p_access_flag_obj.can_update_flag;
6165 l_access_obj.CAN_CREATE_DIST_RULE_FLAG := p_access_flag_obj.can_create_dist_rule_flag;
6166 l_access_obj.CHL_APPROVER_FLAG := p_access_flag_obj.chl_approver_flag;
6167 l_access_obj.CHL_REQUIRED_FLAG := p_access_flag_obj.chl_required_flag;
6168 l_access_obj.CHL_REQUIRED_NEED_NOTIF_FLAG := p_access_flag_obj.chl_required_need_notif_flag;
6169
6170 /*
6171 l_access_obj := AMV_ACCESS_OBJ_TYPE
6172 (
6173 FND_API.G_MISS_NUM,
6174 1,
6175 p_channel_id,
6176 G_CHAN_ARC_TYPE,
6177 p_group_id,
6178 G_GROUP_ARC_TYPE,
6179 sysdate,
6180 null,
6181 p_access_flag_obj.can_view_flag,
6182 p_access_flag_obj.can_create_flag,
6183 p_access_flag_obj.can_delete_flag,
6184 p_access_flag_obj.can_update_flag,
6185 p_access_flag_obj.can_create_dist_rule_flag,
6186 p_access_flag_obj.chl_approver_flag,
6187 p_access_flag_obj.chl_required_flag,
6188 p_access_flag_obj.chl_required_need_notif_flag
6189 );
6190 */
6191 Update_Access
6192 (
6193 p_api_version => p_api_version,
6194 p_init_msg_list => p_init_msg_list,
6195 p_commit => p_commit,
6196 p_validation_level => p_validation_level,
6197 x_return_status => x_return_status,
6198 x_msg_count => x_msg_count,
6199 x_msg_data => x_msg_data,
6200 p_check_login_user => p_check_login_user,
6201 p_access_obj => l_access_obj
6202 );
6203 END Update_GroupChanAccess;
6204 --------------------------------------------------------------------------------
6205 PROCEDURE Update_GroupCateAccess
6206 (
6207 p_api_version IN NUMBER,
6208 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6209 p_commit IN VARCHAR2 := FND_API.G_FALSE,
6210 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6211 x_return_status OUT NOCOPY VARCHAR2,
6212 x_msg_count OUT NOCOPY NUMBER,
6213 x_msg_data OUT NOCOPY VARCHAR2,
6214 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
6215 p_group_id IN NUMBER,
6216 p_category_id IN NUMBER,
6217 p_access_flag_obj IN AMV_ACCESS_FLAG_OBJ_TYPE
6218 ) AS
6219 l_access_obj AMV_ACCESS_OBJ_TYPE;
6220 BEGIN
6221 l_access_obj.ACCESS_ID := FND_API.G_MISS_NUM;
6222 l_access_obj.OBJECT_VERSION_NUMBER := 1;
6223 l_access_obj.ACCESS_TO_TABLE_CODE := p_category_id;
6224 l_access_obj.ACCESS_TO_TABLE_RECORD_ID := G_CATE_ARC_TYPE;
6225 l_access_obj.USER_OR_GROUP_ID := p_group_id;
6226 l_access_obj.USER_OR_GROUP_TYPE := G_GROUP_ARC_TYPE;
6227 l_access_obj.EFFECTIVE_START_DATE := sysdate;
6228 l_access_obj.EXPIRATION_DATE := null;
6229 l_access_obj.CAN_VIEW_FLAG := p_access_flag_obj.can_view_flag;
6230 l_access_obj.CAN_CREATE_FLAG := p_access_flag_obj.can_create_flag;
6231 l_access_obj.CAN_DELETE_FLAG := p_access_flag_obj.can_delete_flag;
6232 l_access_obj.CAN_UPDATE_FLAG := p_access_flag_obj.can_update_flag;
6233 l_access_obj.CAN_CREATE_DIST_RULE_FLAG := p_access_flag_obj.can_create_dist_rule_flag;
6234 l_access_obj.CHL_APPROVER_FLAG := p_access_flag_obj.chl_approver_flag;
6235 l_access_obj.CHL_REQUIRED_FLAG := p_access_flag_obj.chl_required_flag;
6236 l_access_obj.CHL_REQUIRED_NEED_NOTIF_FLAG := p_access_flag_obj.chl_required_need_notif_flag;
6237
6238 /*
6239 l_access_obj := AMV_ACCESS_OBJ_TYPE
6240 (
6241 FND_API.G_MISS_NUM,
6242 1,
6243 p_category_id,
6244 G_CATE_ARC_TYPE,
6245 p_group_id,
6246 G_GROUP_ARC_TYPE,
6247 sysdate,
6248 null,
6249 p_access_flag_obj.can_view_flag,
6250 p_access_flag_obj.can_create_flag,
6251 p_access_flag_obj.can_delete_flag,
6252 p_access_flag_obj.can_update_flag,
6253 p_access_flag_obj.can_create_dist_rule_flag,
6254 p_access_flag_obj.chl_approver_flag,
6255 p_access_flag_obj.chl_required_flag,
6256 p_access_flag_obj.chl_required_need_notif_flag
6257 );
6258 */
6259 Update_Access
6260 (
6261 p_api_version => p_api_version,
6262 p_init_msg_list => p_init_msg_list,
6263 p_commit => p_commit,
6264 p_validation_level => p_validation_level,
6265 x_return_status => x_return_status,
6266 x_msg_count => x_msg_count,
6267 x_msg_data => x_msg_data,
6268 p_check_login_user => p_check_login_user,
6269 p_access_obj => l_access_obj
6270 );
6271 END Update_GroupCateAccess;
6272 --------------------------------------------------------------------------------
6273 PROCEDURE Update_GroupItemAccess
6274 (
6275 p_api_version IN NUMBER,
6276 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6277 p_commit IN VARCHAR2 := FND_API.G_FALSE,
6278 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6279 x_return_status OUT NOCOPY VARCHAR2,
6280 x_msg_count OUT NOCOPY NUMBER,
6281 x_msg_data OUT NOCOPY VARCHAR2,
6282 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
6283 p_group_id IN NUMBER,
6284 p_item_id IN NUMBER,
6285 p_access_flag_obj IN AMV_ACCESS_FLAG_OBJ_TYPE
6286 ) AS
6287 l_access_obj AMV_ACCESS_OBJ_TYPE;
6288 BEGIN
6289 l_access_obj.ACCESS_ID := FND_API.G_MISS_NUM;
6290 l_access_obj.OBJECT_VERSION_NUMBER := 1;
6291 l_access_obj.ACCESS_TO_TABLE_CODE := p_item_id;
6292 l_access_obj.ACCESS_TO_TABLE_RECORD_ID := G_ITEM_ARC_TYPE;
6293 l_access_obj.USER_OR_GROUP_ID := p_group_id;
6294 l_access_obj.USER_OR_GROUP_TYPE := G_GROUP_ARC_TYPE;
6295 l_access_obj.EFFECTIVE_START_DATE := sysdate;
6296 l_access_obj.EXPIRATION_DATE := null;
6297 l_access_obj.CAN_VIEW_FLAG := p_access_flag_obj.can_view_flag;
6298 l_access_obj.CAN_CREATE_FLAG := p_access_flag_obj.can_create_flag;
6299 l_access_obj.CAN_DELETE_FLAG := p_access_flag_obj.can_delete_flag;
6300 l_access_obj.CAN_UPDATE_FLAG := p_access_flag_obj.can_update_flag;
6301 l_access_obj.CAN_CREATE_DIST_RULE_FLAG := p_access_flag_obj.can_create_dist_rule_flag;
6302 l_access_obj.CHL_APPROVER_FLAG := p_access_flag_obj.chl_approver_flag;
6303 l_access_obj.CHL_REQUIRED_FLAG := p_access_flag_obj.chl_required_flag;
6304 l_access_obj.CHL_REQUIRED_NEED_NOTIF_FLAG := p_access_flag_obj.chl_required_need_notif_flag;
6305
6306 /*
6307 l_access_obj := AMV_ACCESS_OBJ_TYPE
6308 (
6309 FND_API.G_MISS_NUM,
6310 1,
6311 p_item_id,
6312 G_ITEM_ARC_TYPE,
6313 p_group_id,
6314 G_GROUP_ARC_TYPE,
6315 sysdate,
6316 null,
6317 p_access_flag_obj.can_view_flag,
6318 p_access_flag_obj.can_create_flag,
6319 p_access_flag_obj.can_delete_flag,
6320 p_access_flag_obj.can_update_flag,
6321 p_access_flag_obj.can_create_dist_rule_flag,
6322 p_access_flag_obj.chl_approver_flag,
6323 p_access_flag_obj.chl_required_flag,
6324 p_access_flag_obj.chl_required_need_notif_flag
6325 );
6326 */
6327 Update_Access
6328 (
6329 p_api_version => p_api_version,
6330 p_init_msg_list => p_init_msg_list,
6331 p_commit => p_commit,
6332 p_validation_level => p_validation_level,
6333 x_return_status => x_return_status,
6334 x_msg_count => x_msg_count,
6335 x_msg_data => x_msg_data,
6336 p_check_login_user => p_check_login_user,
6337 p_access_obj => l_access_obj
6338 );
6339 END Update_GroupItemAccess;
6340 --------------------------------------------------------------------------------
6341 --------------------------------------------------------------------------------
6342 PROCEDURE Get_ChannelAccess
6343 (
6344 p_api_version IN NUMBER,
6345 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6346 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6347 x_return_status OUT NOCOPY VARCHAR2,
6348 x_msg_count OUT NOCOPY NUMBER,
6349 x_msg_data OUT NOCOPY VARCHAR2,
6350 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
6351 p_user_or_group_id IN NUMBER,
6352 p_user_or_group_type IN VARCHAR2,
6353 x_channel_name_varray OUT NOCOPY AMV_CHAR_VARRAY_TYPE,
6354 x_access_obj_varray OUT NOCOPY AMV_ACCESS_OBJ_VARRAY
6355 ) AS
6356 l_api_name CONSTANT VARCHAR2(30) := 'Get_ChannelAccess';
6357 l_api_version CONSTANT NUMBER := 1.0;
6358 l_current_user_id NUMBER;
6359 l_current_login_id NUMBER;
6360 l_current_resource_id NUMBER;
6361 l_current_user_status VARCHAR2(30);
6362 l_count NUMBER;
6363 --
6364 CURSOR Get_ChannelAccess_csr IS
6365 Select
6366 C.CHANNEL_NAME,
6367 U.ACCESS_TO_TABLE_RECORD_ID,
6368 U.ACCESS_ID,
6369 U.OBJECT_VERSION_NUMBER,
6370 U.EFFECTIVE_START_DATE,
6371 U.EXPIRATION_DATE,
6372 U.CAN_VIEW_FLAG,
6373 U.CAN_CREATE_FLAG,
6374 U.CAN_DELETE_FLAG,
6375 U.CAN_UPDATE_FLAG,
6376 U.CAN_CREATE_DIST_RULE_FLAG,
6377 U.CHL_APPROVER_FLAG,
6378 U.CHL_REQUIRED_FLAG,
6379 U.CHL_REQUIRED_NEED_NOTIF_FLAG
6380 From amv_u_access u, amv_c_channels_vl c
6381 Where u.user_or_group_id = p_user_or_group_id
6382 And u.user_or_group_type = p_user_or_group_type
6383 And access_to_table_code = G_CHAN_ARC_TYPE
6384 And u.access_to_table_record_id = c.channel_id;
6385 --
6386 BEGIN
6387 -- Standard call to check for call compatibility.
6388 IF NOT FND_API.Compatible_API_Call (
6389 l_api_version,
6390 p_api_version,
6391 l_api_name,
6392 G_PKG_NAME) THEN
6393 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6394 END IF;
6395 --Initialize message list if p_init_msg_list is TRUE.
6396 IF FND_API.To_Boolean (p_init_msg_list) THEN
6397 FND_MSG_PUB.initialize;
6398 END IF;
6399 -- Initialize API return status to success
6400 x_return_status := FND_API.G_RET_STS_SUCCESS;
6401 -- Get the current (login) user id.
6402 AMV_UTILITY_PVT.Get_UserInfo(
6403 x_user_id => l_current_user_id,
6404 x_login_id => l_current_login_id,
6405 x_resource_id => l_current_resource_id,
6406 x_user_status => l_current_user_status
6407 );
6408 IF (p_check_login_user = FND_API.G_TRUE) THEN
6409 -- Check if user is login and has the required privilege.
6410 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
6411 -- User is not login.
6412 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6413 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
6414 FND_MSG_PUB.Add;
6415 END IF;
6416 RAISE FND_API.G_EXC_ERROR;
6417 END IF;
6418 END IF;
6419 x_channel_name_varray := AMV_CHAR_VARRAY_TYPE();
6420 x_access_obj_varray := AMV_ACCESS_OBJ_VARRAY();
6421 l_count := 0;
6422 FOR cur IN Get_ChannelAccess_csr LOOP
6423 l_count := l_count + 1;
6424 x_channel_name_varray.extend;
6425 x_channel_name_varray(l_count) := cur.CHANNEL_NAME;
6426
6427 x_access_obj_varray.extend;
6428 x_access_obj_varray(l_count).ACCESS_ID := cur.ACCESS_ID;
6429 x_access_obj_varray(l_count).OBJECT_VERSION_NUMBER := cur.OBJECT_VERSION_NUMBER;
6430 x_access_obj_varray(l_count).ACCESS_TO_TABLE_CODE := G_CHAN_ARC_TYPE;
6431 x_access_obj_varray(l_count).ACCESS_TO_TABLE_RECORD_ID := cur.ACCESS_TO_TABLE_RECORD_ID;
6432 x_access_obj_varray(l_count).USER_OR_GROUP_ID := p_user_or_group_id;
6433 x_access_obj_varray(l_count).USER_OR_GROUP_TYPE := p_user_or_group_type;
6434 x_access_obj_varray(l_count).EFFECTIVE_START_DATE := cur.EFFECTIVE_START_DATE;
6435 x_access_obj_varray(l_count).EXPIRATION_DATE := cur.EXPIRATION_DATE;
6436 x_access_obj_varray(l_count).CAN_VIEW_FLAG := cur.CAN_VIEW_FLAG;
6437 x_access_obj_varray(l_count).CAN_CREATE_FLAG := cur.CAN_CREATE_FLAG;
6438 x_access_obj_varray(l_count).CAN_DELETE_FLAG := cur.CAN_DELETE_FLAG;
6439 x_access_obj_varray(l_count).CAN_UPDATE_FLAG := cur.CAN_UPDATE_FLAG;
6440 x_access_obj_varray(l_count).CAN_CREATE_DIST_RULE_FLAG := cur.CAN_CREATE_DIST_RULE_FLAG;
6441 x_access_obj_varray(l_count).CHL_APPROVER_FLAG := cur.CHL_APPROVER_FLAG;
6442 x_access_obj_varray(l_count).CHL_REQUIRED_FLAG := cur.CHL_REQUIRED_FLAG;
6443 x_access_obj_varray(l_count).CHL_REQUIRED_NEED_NOTIF_FLAG := cur.CHL_REQUIRED_NEED_NOTIF_FLAG;
6444 /*
6445 x_access_obj_varray(l_count) := AMV_ACCESS_OBJ_TYPE(
6446 cur.ACCESS_ID,
6447 cur.OBJECT_VERSION_NUMBER,
6448 G_CHAN_ARC_TYPE,
6449 cur.ACCESS_TO_TABLE_RECORD_ID,
6450 p_user_or_group_id,
6451 p_user_or_group_type,
6452 cur.EFFECTIVE_START_DATE,
6453 cur.EXPIRATION_DATE,
6454 cur.CAN_VIEW_FLAG,
6455 cur.CAN_CREATE_FLAG,
6456 cur.CAN_DELETE_FLAG,
6457 cur.CAN_UPDATE_FLAG,
6458 cur.CAN_CREATE_DIST_RULE_FLAG,
6459 cur.CHL_APPROVER_FLAG,
6460 cur.CHL_REQUIRED_FLAG,
6461 cur.CHL_REQUIRED_NEED_NOTIF_FLAG
6462 );
6463 */
6464 END LOOP;
6465 --Standard call to get message count and if count=1, get the message
6466 FND_MSG_PUB.Count_And_Get (
6467 p_encoded => FND_API.G_FALSE,
6468 p_count => x_msg_count,
6469 p_data => x_msg_data
6470 );
6471 EXCEPTION
6472 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6473 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6474 -- Standard call to get message count and if count=1, get the message
6475 FND_MSG_PUB.Count_And_Get (
6476 p_encoded => FND_API.G_FALSE,
6477 p_count => x_msg_count,
6478 p_data => x_msg_data
6479 );
6480 WHEN FND_API.G_EXC_ERROR THEN
6481 x_return_status := FND_API.G_RET_STS_ERROR;
6482 -- Standard call to get message count and if count=1, get the message
6483 FND_MSG_PUB.Count_And_Get (
6484 p_encoded => FND_API.G_FALSE,
6485 p_count => x_msg_count,
6486 p_data => x_msg_data
6487 );
6488 WHEN OTHERS THEN
6489 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6490 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
6491 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
6492 END IF;
6493 -- Standard call to get message count and if count=1, get the message
6494 FND_MSG_PUB.Count_And_Get (
6495 p_encoded => FND_API.G_FALSE,
6496 p_count => x_msg_count,
6497 p_data => x_msg_data
6498 );
6499 END Get_ChannelAccess;
6500 --------------------------------------------------------------------------------
6501 PROCEDURE Get_AccessPerChannel
6502 (
6503 p_api_version IN NUMBER,
6504 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6505 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6506 x_return_status OUT NOCOPY VARCHAR2,
6507 x_msg_count OUT NOCOPY NUMBER,
6508 x_msg_data OUT NOCOPY VARCHAR2,
6509 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
6510 p_channel_id IN NUMBER,
6511 p_user_or_group_type IN VARCHAR2,
6512 x_name_varray OUT NOCOPY AMV_CHAR_VARRAY_TYPE,
6513 x_access_obj_varray OUT NOCOPY AMV_ACCESS_OBJ_VARRAY
6514 ) AS
6515 l_api_name CONSTANT VARCHAR2(30) := 'Get_AccessPerChannel';
6516 l_api_version CONSTANT NUMBER := 1.0;
6517 l_current_user_id NUMBER;
6518 l_current_login_id NUMBER;
6519 l_current_resource_id NUMBER;
6520 l_current_user_status VARCHAR2(30);
6521 l_count NUMBER;
6522 --
6523 CURSOR Get_GroupAccessPerChannel_csr IS
6524 Select
6525 G.GROUP_NAME NAME,
6526 U.USER_OR_GROUP_ID,
6527 U.USER_OR_GROUP_TYPE,
6528 U.ACCESS_TO_TABLE_RECORD_ID,
6529 U.ACCESS_TO_TABLE_CODE,
6530 U.ACCESS_ID,
6531 U.OBJECT_VERSION_NUMBER,
6532 U.EFFECTIVE_START_DATE,
6533 U.EXPIRATION_DATE,
6534 U.CAN_VIEW_FLAG,
6535 U.CAN_CREATE_FLAG,
6536 U.CAN_DELETE_FLAG,
6537 U.CAN_UPDATE_FLAG,
6538 U.CAN_CREATE_DIST_RULE_FLAG,
6539 U.CHL_APPROVER_FLAG,
6540 U.CHL_REQUIRED_FLAG,
6541 U.CHL_REQUIRED_NEED_NOTIF_FLAG
6542 From amv_u_access u, jtf_rs_groups_vl g
6543 Where u.user_or_group_id = g.group_id
6544 And u.user_or_group_type = G_GROUP_ARC_TYPE
6545 And access_to_table_code = G_CHAN_ARC_TYPE
6546 And u.access_to_table_record_id = p_channel_id;
6547 --
6548 CURSOR Get_UserAccessPerChannel_csr IS
6549 Select
6550 R.LAST_NAME || ', ' || R.FIRST_NAME NAME,
6551 U.USER_OR_GROUP_ID,
6552 U.USER_OR_GROUP_TYPE,
6553 U.ACCESS_TO_TABLE_RECORD_ID,
6554 U.ACCESS_TO_TABLE_CODE,
6555 U.ACCESS_ID,
6556 U.OBJECT_VERSION_NUMBER,
6557 U.EFFECTIVE_START_DATE,
6558 U.EXPIRATION_DATE,
6559 U.CAN_VIEW_FLAG,
6560 U.CAN_CREATE_FLAG,
6561 U.CAN_DELETE_FLAG,
6562 U.CAN_UPDATE_FLAG,
6563 U.CAN_CREATE_DIST_RULE_FLAG,
6564 U.CHL_APPROVER_FLAG,
6565 U.CHL_REQUIRED_FLAG,
6566 U.CHL_REQUIRED_NEED_NOTIF_FLAG
6567 From amv_u_access u, amv_rs_all_res_extns_vl r
6568 Where u.user_or_group_id = r.resource_id
6569 And u.user_or_group_type = G_USER_ARC_TYPE
6570 And access_to_table_code = G_CHAN_ARC_TYPE
6571 And u.access_to_table_record_id = p_channel_id;
6572 --
6573 BEGIN
6574 -- Standard call to check for call compatibility.
6575 IF NOT FND_API.Compatible_API_Call (
6576 l_api_version,
6577 p_api_version,
6578 l_api_name,
6579 G_PKG_NAME) THEN
6580 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6581 END IF;
6582 --Initialize message list if p_init_msg_list is TRUE.
6583 IF FND_API.To_Boolean (p_init_msg_list) THEN
6584 FND_MSG_PUB.initialize;
6585 END IF;
6586 -- Initialize API return status to success
6587 x_return_status := FND_API.G_RET_STS_SUCCESS;
6588 -- Get the current (login) user id.
6589 AMV_UTILITY_PVT.Get_UserInfo(
6590 x_user_id => l_current_user_id,
6591 x_login_id => l_current_login_id,
6592 x_resource_id => l_current_resource_id,
6593 x_user_status => l_current_user_status
6594 );
6595 IF (p_check_login_user = FND_API.G_TRUE) THEN
6596 -- Check if user is login and has the required privilege.
6597 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
6598 -- User is not login.
6599 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6600 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
6601 FND_MSG_PUB.Add;
6602 END IF;
6603 RAISE FND_API.G_EXC_ERROR;
6604 END IF;
6605 END IF;
6606 x_name_varray := AMV_CHAR_VARRAY_TYPE();
6607 x_access_obj_varray := AMV_ACCESS_OBJ_VARRAY();
6608 l_count := 0;
6609 IF (p_user_or_group_type = G_GROUP_ARC_TYPE) THEN
6610 FOR cur IN Get_GroupAccessPerChannel_csr LOOP
6611 l_count := l_count + 1;
6612 x_name_varray.extend;
6613 x_name_varray(l_count) := cur.NAME;
6614
6615 x_access_obj_varray.extend;
6616 x_access_obj_varray(l_count).ACCESS_ID := cur.ACCESS_ID;
6617 x_access_obj_varray(l_count).OBJECT_VERSION_NUMBER := cur.OBJECT_VERSION_NUMBER;
6618 x_access_obj_varray(l_count).ACCESS_TO_TABLE_CODE := cur.ACCESS_TO_TABLE_CODE;
6619 x_access_obj_varray(l_count).ACCESS_TO_TABLE_RECORD_ID := cur.ACCESS_TO_TABLE_RECORD_ID;
6620 x_access_obj_varray(l_count).USER_OR_GROUP_ID := cur.USER_OR_GROUP_ID;
6621 x_access_obj_varray(l_count).USER_OR_GROUP_TYPE := cur.USER_OR_GROUP_TYPE;
6622 x_access_obj_varray(l_count).EFFECTIVE_START_DATE := cur.EFFECTIVE_START_DATE;
6623 x_access_obj_varray(l_count).EXPIRATION_DATE := cur.EXPIRATION_DATE;
6624 x_access_obj_varray(l_count).CAN_VIEW_FLAG := cur.CAN_VIEW_FLAG;
6625 x_access_obj_varray(l_count).CAN_CREATE_FLAG := cur.CAN_CREATE_FLAG;
6626 x_access_obj_varray(l_count).CAN_DELETE_FLAG := cur.CAN_DELETE_FLAG;
6627 x_access_obj_varray(l_count).CAN_UPDATE_FLAG := cur.CAN_UPDATE_FLAG;
6628 x_access_obj_varray(l_count).CAN_CREATE_DIST_RULE_FLAG := cur.CAN_CREATE_DIST_RULE_FLAG;
6629 x_access_obj_varray(l_count).CHL_APPROVER_FLAG := cur.CHL_APPROVER_FLAG;
6630 x_access_obj_varray(l_count).CHL_REQUIRED_FLAG := cur.CHL_REQUIRED_FLAG;
6631 x_access_obj_varray(l_count).CHL_REQUIRED_NEED_NOTIF_FLAG := cur.CHL_REQUIRED_NEED_NOTIF_FLAG;
6632
6633 /*
6634 x_access_obj_varray(l_count) := AMV_ACCESS_OBJ_TYPE(
6635 cur.ACCESS_ID,
6636 cur.OBJECT_VERSION_NUMBER,
6637 cur.ACCESS_TO_TABLE_CODE,
6638 cur.ACCESS_TO_TABLE_RECORD_ID,
6639 cur.USER_OR_GROUP_ID,
6640 cur.USER_OR_GROUP_TYPE,
6641 cur.EFFECTIVE_START_DATE,
6642 cur.EXPIRATION_DATE,
6643 cur.CAN_VIEW_FLAG,
6644 cur.CAN_CREATE_FLAG,
6645 cur.CAN_DELETE_FLAG,
6646 cur.CAN_UPDATE_FLAG,
6647 cur.CAN_CREATE_DIST_RULE_FLAG,
6648 cur.CHL_APPROVER_FLAG,
6649 cur.CHL_REQUIRED_FLAG,
6650 cur.CHL_REQUIRED_NEED_NOTIF_FLAG
6651 );
6652 */
6653 END LOOP;
6654 ELSIF ( p_user_or_group_type = G_USER_ARC_TYPE) THEN
6655 FOR cur IN Get_UserAccessPerChannel_csr LOOP
6656 l_count := l_count + 1;
6657 x_name_varray.extend;
6658 x_name_varray(l_count) := cur.NAME;
6659
6660 x_access_obj_varray.extend;
6661 x_access_obj_varray(l_count).ACCESS_ID := cur.ACCESS_ID;
6662 x_access_obj_varray(l_count).OBJECT_VERSION_NUMBER := cur.OBJECT_VERSION_NUMBER;
6663 x_access_obj_varray(l_count).ACCESS_TO_TABLE_CODE := cur.ACCESS_TO_TABLE_CODE;
6664 x_access_obj_varray(l_count).ACCESS_TO_TABLE_RECORD_ID := cur.ACCESS_TO_TABLE_RECORD_ID;
6665 x_access_obj_varray(l_count).USER_OR_GROUP_ID := cur.USER_OR_GROUP_ID;
6666 x_access_obj_varray(l_count).USER_OR_GROUP_TYPE := cur.USER_OR_GROUP_TYPE;
6667 x_access_obj_varray(l_count).EFFECTIVE_START_DATE := cur.EFFECTIVE_START_DATE;
6668 x_access_obj_varray(l_count).EXPIRATION_DATE := cur.EXPIRATION_DATE;
6669 x_access_obj_varray(l_count).CAN_VIEW_FLAG := cur.CAN_VIEW_FLAG;
6670 x_access_obj_varray(l_count).CAN_CREATE_FLAG := cur.CAN_CREATE_FLAG;
6671 x_access_obj_varray(l_count).CAN_DELETE_FLAG := cur.CAN_DELETE_FLAG;
6672 x_access_obj_varray(l_count).CAN_UPDATE_FLAG := cur.CAN_UPDATE_FLAG;
6673 x_access_obj_varray(l_count).CAN_CREATE_DIST_RULE_FLAG := cur.CAN_CREATE_DIST_RULE_FLAG;
6674 x_access_obj_varray(l_count).CHL_APPROVER_FLAG := cur.CHL_APPROVER_FLAG;
6675 x_access_obj_varray(l_count).CHL_REQUIRED_FLAG := cur.CHL_REQUIRED_FLAG;
6676 x_access_obj_varray(l_count).CHL_REQUIRED_NEED_NOTIF_FLAG := cur.CHL_REQUIRED_NEED_NOTIF_FLAG;
6677 /*
6678 x_access_obj_varray(l_count) := AMV_ACCESS_OBJ_TYPE(
6679 cur.ACCESS_ID,
6680 cur.OBJECT_VERSION_NUMBER,
6681 cur.ACCESS_TO_TABLE_CODE,
6682 cur.ACCESS_TO_TABLE_RECORD_ID,
6683 cur.USER_OR_GROUP_ID,
6684 cur.USER_OR_GROUP_TYPE,
6685 cur.EFFECTIVE_START_DATE,
6686 cur.EXPIRATION_DATE,
6687 cur.CAN_VIEW_FLAG,
6688 cur.CAN_CREATE_FLAG,
6689 cur.CAN_DELETE_FLAG,
6690 cur.CAN_UPDATE_FLAG,
6691 cur.CAN_CREATE_DIST_RULE_FLAG,
6692 cur.CHL_APPROVER_FLAG,
6693 cur.CHL_REQUIRED_FLAG,
6694 cur.CHL_REQUIRED_NEED_NOTIF_FLAG
6695 );
6696 */
6697 END LOOP;
6698 END IF;
6699 --Standard call to get message count and if count=1, get the message
6700 FND_MSG_PUB.Count_And_Get (
6701 p_encoded => FND_API.G_FALSE,
6702 p_count => x_msg_count,
6703 p_data => x_msg_data
6704 );
6705 EXCEPTION
6706 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6707 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6708 -- Standard call to get message count and if count=1, get the message
6709 FND_MSG_PUB.Count_And_Get (
6710 p_encoded => FND_API.G_FALSE,
6711 p_count => x_msg_count,
6712 p_data => x_msg_data
6713 );
6714 WHEN FND_API.G_EXC_ERROR THEN
6715 x_return_status := FND_API.G_RET_STS_ERROR;
6716 -- Standard call to get message count and if count=1, get the message
6717 FND_MSG_PUB.Count_And_Get (
6718 p_encoded => FND_API.G_FALSE,
6719 p_count => x_msg_count,
6720 p_data => x_msg_data
6721 );
6722 WHEN OTHERS THEN
6723 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6724 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
6725 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
6726 END IF;
6727 -- Standard call to get message count and if count=1, get the message
6728 FND_MSG_PUB.Count_And_Get (
6729 p_encoded => FND_API.G_FALSE,
6730 p_count => x_msg_count,
6731 p_data => x_msg_data
6732 );
6733 END Get_AccessPerChannel;
6734 --------------------------------------------------------------------------------
6735 --------------------------------------------------------------------------------
6736 PROCEDURE Get_BusinessObjectAccess
6737 (
6738 p_api_version IN NUMBER,
6739 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6740 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6741 x_return_status OUT NOCOPY VARCHAR2,
6742 x_msg_count OUT NOCOPY NUMBER,
6743 x_msg_data OUT NOCOPY VARCHAR2,
6744 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
6745 p_user_or_group_id IN NUMBER,
6746 p_user_or_group_type IN VARCHAR2,
6747 p_business_object_id IN NUMBER,
6748 p_business_object_type IN VARCHAR2,
6749 x_access_obj OUT NOCOPY AMV_ACCESS_OBJ_TYPE
6750 ) AS
6751 l_api_name CONSTANT VARCHAR2(30) := 'Get_BusinessObjectAccess';
6752 l_api_version CONSTANT NUMBER := 1.0;
6753 l_current_user_id NUMBER;
6754 l_current_login_id NUMBER;
6755 l_current_resource_id NUMBER;
6756 l_current_user_status VARCHAR2(30);
6757 --
6758 CURSOR Get_Access_csr IS
6759 Select
6760 ACCESS_ID,
6761 OBJECT_VERSION_NUMBER,
6762 EFFECTIVE_START_DATE,
6763 EXPIRATION_DATE,
6764 CAN_VIEW_FLAG,
6765 CAN_CREATE_FLAG,
6766 CAN_DELETE_FLAG,
6767 CAN_UPDATE_FLAG,
6768 CAN_CREATE_DIST_RULE_FLAG,
6769 CHL_APPROVER_FLAG,
6770 CHL_REQUIRED_FLAG,
6771 CHL_REQUIRED_NEED_NOTIF_FLAG
6772 From amv_u_access
6773 Where user_or_group_id = p_user_or_group_id
6774 And user_or_group_type = p_user_or_group_type
6775 And access_to_table_record_id = p_business_object_id
6776 And access_to_table_code = p_business_object_type;
6777 --
6778 BEGIN
6779 -- Standard call to check for call compatibility.
6780 IF NOT FND_API.Compatible_API_Call (
6781 l_api_version,
6782 p_api_version,
6783 l_api_name,
6784 G_PKG_NAME) THEN
6785 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6786 END IF;
6787 --Initialize message list if p_init_msg_list is TRUE.
6788 IF FND_API.To_Boolean (p_init_msg_list) THEN
6789 FND_MSG_PUB.initialize;
6790 END IF;
6791 -- Initialize API return status to success
6792 x_return_status := FND_API.G_RET_STS_SUCCESS;
6793
6794 x_access_obj.ACCESS_ID := FND_API.G_MISS_NUM;
6795 x_access_obj.OBJECT_VERSION_NUMBER := -1;
6796 x_access_obj.ACCESS_TO_TABLE_CODE := p_business_object_type;
6797 x_access_obj.ACCESS_TO_TABLE_RECORD_ID := p_business_object_id;
6798 x_access_obj.USER_OR_GROUP_ID := p_user_or_group_id;
6799 x_access_obj.USER_OR_GROUP_TYPE := p_user_or_group_type;
6800 x_access_obj.EFFECTIVE_START_DATE := null;
6801 x_access_obj.EXPIRATION_DATE := null;
6802 x_access_obj.CAN_VIEW_FLAG := FND_API.G_FALSE;
6803 x_access_obj.CAN_CREATE_FLAG := FND_API.G_FALSE;
6804 x_access_obj.CAN_DELETE_FLAG := FND_API.G_FALSE;
6805 x_access_obj.CAN_UPDATE_FLAG := FND_API.G_FALSE;
6806 x_access_obj.CAN_CREATE_DIST_RULE_FLAG := FND_API.G_FALSE;
6807 x_access_obj.CHL_APPROVER_FLAG := FND_API.G_FALSE;
6808 x_access_obj.CHL_REQUIRED_FLAG := FND_API.G_FALSE;
6809 x_access_obj.CHL_REQUIRED_NEED_NOTIF_FLAG := FND_API.G_FALSE;
6810
6811 /*
6812 x_access_obj := AMV_ACCESS_OBJ_TYPE
6813 (
6814 FND_API.G_MISS_NUM,
6815 -1,
6816 p_business_object_type,
6817 p_business_object_id,
6818 p_user_or_group_id,
6819 p_user_or_group_type,
6820 null,
6821 null,
6822 FND_API.G_FALSE,
6823 FND_API.G_FALSE,
6824 FND_API.G_FALSE,
6825 FND_API.G_FALSE,
6826 FND_API.G_FALSE,
6827 FND_API.G_FALSE,
6828 FND_API.G_FALSE,
6829 FND_API.G_FALSE
6830 );
6831 */
6832 -- Get the current (login) user id.
6833 AMV_UTILITY_PVT.Get_UserInfo(
6834 x_user_id => l_current_user_id,
6835 x_login_id => l_current_login_id,
6836 x_resource_id => l_current_resource_id,
6837 x_user_status => l_current_user_status
6838 );
6839 IF (p_check_login_user = FND_API.G_TRUE) THEN
6840 -- Check if user is login and has the required privilege.
6841 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
6842 -- User is not login.
6843 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
6844 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
6845 FND_MSG_PUB.Add;
6846 END IF;
6847 RAISE FND_API.G_EXC_ERROR;
6848 END IF;
6849 END IF;
6850 OPEN Get_Access_csr;
6851 FETCH Get_Access_csr INTO
6852 x_access_obj.ACCESS_ID,
6853 x_access_obj.OBJECT_VERSION_NUMBER,
6854 x_access_obj.EFFECTIVE_START_DATE,
6855 x_access_obj.EXPIRATION_DATE,
6856 x_access_obj.CAN_VIEW_FLAG,
6857 x_access_obj.CAN_CREATE_FLAG,
6858 x_access_obj.CAN_DELETE_FLAG,
6859 x_access_obj.CAN_UPDATE_FLAG,
6860 x_access_obj.CAN_CREATE_DIST_RULE_FLAG,
6861 x_access_obj.CHL_APPROVER_FLAG,
6862 x_access_obj.CHL_REQUIRED_FLAG,
6863 x_access_obj.CHL_REQUIRED_NEED_NOTIF_FLAG;
6864 CLOSE Get_Access_csr;
6865 --Standard call to get message count and if count=1, get the message
6866 FND_MSG_PUB.Count_And_Get (
6867 p_encoded => FND_API.G_FALSE,
6868 p_count => x_msg_count,
6869 p_data => x_msg_data
6870 );
6871 EXCEPTION
6872 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6873 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6874 -- Standard call to get message count and if count=1, get the message
6875 FND_MSG_PUB.Count_And_Get (
6876 p_encoded => FND_API.G_FALSE,
6877 p_count => x_msg_count,
6878 p_data => x_msg_data
6879 );
6880 WHEN FND_API.G_EXC_ERROR THEN
6881 x_return_status := FND_API.G_RET_STS_ERROR;
6882 -- Standard call to get message count and if count=1, get the message
6883 FND_MSG_PUB.Count_And_Get (
6884 p_encoded => FND_API.G_FALSE,
6885 p_count => x_msg_count,
6886 p_data => x_msg_data
6887 );
6888 WHEN OTHERS THEN
6889 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6890 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
6891 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
6892 END IF;
6893 -- Standard call to get message count and if count=1, get the message
6894 FND_MSG_PUB.Count_And_Get (
6895 p_encoded => FND_API.G_FALSE,
6896 p_count => x_msg_count,
6897 p_data => x_msg_data
6898 );
6899 END Get_BusinessObjectAccess;
6900 --------------------------------------------------------------------------------
6901 PROCEDURE Get_BusinessObjectAccess
6902 (
6903 p_api_version IN NUMBER,
6904 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6905 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6906 x_return_status OUT NOCOPY VARCHAR2,
6907 x_msg_count OUT NOCOPY NUMBER,
6908 x_msg_data OUT NOCOPY VARCHAR2,
6909 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
6910 p_include_group_flag IN VARCHAR2 := FND_API.G_TRUE,
6911 p_check_effective_date IN VARCHAR2 := FND_API.G_TRUE,
6912 p_user_or_group_id IN NUMBER,
6913 p_user_or_group_type IN VARCHAR2,
6914 p_business_object_id IN NUMBER,
6915 p_business_object_type IN VARCHAR2,
6916 x_access_flag_obj OUT NOCOPY AMV_ACCESS_FLAG_OBJ_TYPE
6917 ) AS
6918 l_api_name CONSTANT VARCHAR2(30) := 'Get_BusinessObjectAccess';
6919 l_api_version CONSTANT NUMBER := 1.0;
6920 l_current_user_id NUMBER;
6921 l_current_login_id NUMBER;
6922 l_current_resource_id NUMBER;
6923 l_current_user_status VARCHAR2(30);
6924 --
6925 l_start_date DATE;
6926 l_end_date DATE;
6927 --
6928 CURSOR Get_ChannelEffDate_csr(p_id IN NUMBER) IS
6929 Select
6930 effective_start_date,
6931 expiration_date
6932 From amv_c_channels_b
6933 Where channel_id = p_id;
6934 --
6935 CURSOR Get_ItemEffDate_csr(p_id IN NUMBER) IS
6936 Select
6937 actual_avail_from_date effective_start_date,
6938 actual_avail_to_date expiration_date
6939 From ams_deliverables_all_b
6940 Where deliverable_id = p_id;
6941 --
6942 CURSOR Get_Access_csr IS
6943 Select
6944 CAN_VIEW_FLAG,
6945 CAN_CREATE_FLAG,
6946 CAN_DELETE_FLAG,
6947 CAN_UPDATE_FLAG,
6948 CAN_CREATE_DIST_RULE_FLAG,
6949 CHL_APPROVER_FLAG,
6950 CHL_REQUIRED_FLAG,
6951 CHL_REQUIRED_NEED_NOTIF_FLAG
6952 From amv_u_access
6953 Where user_or_group_id = p_user_or_group_id
6954 And user_or_group_type = p_user_or_group_type
6955 And access_to_table_record_id = p_business_object_id
6956 And access_to_table_code = p_business_object_type;
6957 --
6958 CURSOR Get_ResourceAccess_csr IS
6959 Select A.CAN_VIEW_FLAG,
6960 A.CAN_CREATE_FLAG,
6961 A.CAN_DELETE_FLAG,
6962 A.CAN_UPDATE_FLAG,
6963 A.CAN_CREATE_DIST_RULE_FLAG,
6964 A.CHL_APPROVER_FLAG,
6965 A.CHL_REQUIRED_FLAG,
6966 A.CHL_REQUIRED_NEED_NOTIF_FLAG
6967 From amv_u_access a
6968 , jtf_rs_resource_extns r
6969 Where a.user_or_group_id = p_user_or_group_id
6970 And a.user_or_group_type = G_USER_ARC_TYPE
6971 And a.access_to_table_record_id = p_business_object_id
6972 And a.access_to_table_code = p_business_object_type
6973 And nvl(a.effective_start_date, sysdate-1) < sysdate
6974 And nvl(a.expiration_date, sysdate+1) > sysdate
6975 And r.resource_id = a.user_or_group_id
6976 --And r.active_flag = 'Y'
6977 ;
6978 --
6979 CURSOR Get_GroupAccess_csr IS
6980 Select
6981 A.CAN_VIEW_FLAG,
6982 A.CAN_CREATE_FLAG,
6983 A.CAN_DELETE_FLAG,
6984 A.CAN_UPDATE_FLAG,
6985 A.CAN_CREATE_DIST_RULE_FLAG,
6986 A.CHL_APPROVER_FLAG,
6987 A.CHL_REQUIRED_FLAG,
6988 A.CHL_REQUIRED_NEED_NOTIF_FLAG
6989 From amv_u_access a, jtf_rs_groups_vl g
6990 Where a.user_or_group_id = p_user_or_group_id
6991 And a.user_or_group_type = G_GROUP_ARC_TYPE
6992 And a.access_to_table_record_id = p_business_object_id
6993 And a.access_to_table_code = p_business_object_type
6994 And nvl(a.effective_start_date, sysdate-1) < sysdate
6995 And nvl(a.expiration_date, sysdate+1) > sysdate
6996 And g.group_id = a.user_or_group_id
6997 And nvl(g.start_date_active, sysdate-1) < sysdate
6998 And nvl(g.end_date_active, sysdate+1) > sysdate;
6999 --
7000 CURSOR Get_AllGroupAccess_csr IS
7001 Select
7002 A.CAN_VIEW_FLAG,
7003 A.CAN_CREATE_FLAG,
7004 A.CAN_DELETE_FLAG,
7005 A.CAN_UPDATE_FLAG,
7006 A.CAN_CREATE_DIST_RULE_FLAG,
7007 A.CHL_APPROVER_FLAG,
7008 A.CHL_REQUIRED_FLAG,
7009 A.CHL_REQUIRED_NEED_NOTIF_FLAG
7010 From amv_u_access a, jtf_rs_group_members m
7011 Where a.access_to_table_record_id = p_business_object_id
7012 And a.access_to_table_code = p_business_object_type
7013 And a.user_or_group_type = G_GROUP_ARC_TYPE
7014 And a.user_or_group_id = m.group_id
7015 And m.resource_id = p_user_or_group_id;
7016 --
7017 CURSOR Get_AllGroupAccess2_csr IS
7018 Select
7019 A.CAN_VIEW_FLAG,
7020 A.CAN_CREATE_FLAG,
7021 A.CAN_DELETE_FLAG,
7022 A.CAN_UPDATE_FLAG,
7023 A.CAN_CREATE_DIST_RULE_FLAG,
7024 A.CHL_APPROVER_FLAG,
7025 A.CHL_REQUIRED_FLAG,
7026 A.CHL_REQUIRED_NEED_NOTIF_FLAG
7027 From amv_u_access a, jtf_rs_group_members m, jtf_rs_groups_vl g
7028 Where a.access_to_table_record_id = p_business_object_id
7029 And a.access_to_table_code =p_business_object_type
7030 And nvl(a.effective_start_date, sysdate-1) < sysdate
7031 And nvl(a.expiration_date, sysdate+1) > sysdate
7032 And a.user_or_group_type = G_GROUP_ARC_TYPE
7033 And a.user_or_group_id = m.group_id
7034 And m.resource_id = p_user_or_group_id
7035 --And nvl(m.start_date_active, sysdate-1) < sysdate
7036 --And nvl(m.end_date_active, sysdate+1) > sysdate
7037 And g.group_id = m.group_id
7038 And nvl(g.start_date_active, sysdate-1) < sysdate
7039 And nvl(g.end_date_active, sysdate+1) > sysdate;
7040 --
7041 BEGIN
7042 -- Standard call to check for call compatibility.
7043 IF NOT FND_API.Compatible_API_Call (
7044 l_api_version,
7045 p_api_version,
7046 l_api_name,
7047 G_PKG_NAME) THEN
7048 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7049 END IF;
7050 --Initialize message list if p_init_msg_list is TRUE.
7051 IF FND_API.To_Boolean (p_init_msg_list) THEN
7052 FND_MSG_PUB.initialize;
7053 END IF;
7054 -- Initialize API return status to success
7055 x_return_status := FND_API.G_RET_STS_SUCCESS;
7056
7057 x_access_flag_obj.CAN_VIEW_FLAG := FND_API.G_FALSE;
7058 x_access_flag_obj.CAN_CREATE_FLAG := FND_API.G_FALSE;
7059 x_access_flag_obj.CAN_DELETE_FLAG := FND_API.G_FALSE;
7060 x_access_flag_obj.CAN_UPDATE_FLAG := FND_API.G_FALSE;
7061 x_access_flag_obj.CAN_CREATE_DIST_RULE_FLAG := FND_API.G_FALSE;
7062 x_access_flag_obj.CHL_APPROVER_FLAG := FND_API.G_FALSE;
7063 x_access_flag_obj.CHL_REQUIRED_FLAG := FND_API.G_FALSE;
7064 x_access_flag_obj.CHL_REQUIRED_NEED_NOTIF_FLAG := FND_API.G_FALSE;
7065
7066 /*
7067 x_access_flag_obj := AMV_ACCESS_FLAG_OBJ_TYPE
7068 (
7069 FND_API.G_FALSE,
7070 FND_API.G_FALSE,
7071 FND_API.G_FALSE,
7072 FND_API.G_FALSE,
7073 FND_API.G_FALSE,
7074 FND_API.G_FALSE,
7075 FND_API.G_FALSE,
7076 FND_API.G_FALSE
7077 );
7078 */
7079 -- Get the current (login) user id.
7080 AMV_UTILITY_PVT.Get_UserInfo(
7081 x_user_id => l_current_user_id,
7082 x_login_id => l_current_login_id,
7083 x_resource_id => l_current_resource_id,
7084 x_user_status => l_current_user_status
7085 );
7086 IF (p_check_login_user = FND_API.G_TRUE) THEN
7087 -- Check if user is login and has the required privilege.
7088 IF (l_current_login_id = FND_API.G_MISS_NUM) THEN
7089 -- User is not login.
7090 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
7091 FND_MESSAGE.Set_name('AMV','AMV_USER_NOT_LOGIN');
7092 FND_MSG_PUB.Add;
7093 END IF;
7094 RAISE FND_API.G_EXC_ERROR;
7095 END IF;
7096 END IF;
7097 -- Check the effective date for the business object:
7098 -- Application, channel, category, and item
7099 IF (p_check_effective_date = FND_API.G_TRUE) THEN
7100 IF (p_business_object_type = G_ITEM_ARC_TYPE) THEN
7101 l_start_date := sysdate+1;
7102 l_end_date := sysdate-1;
7103 OPEN Get_ItemEffDate_csr(p_business_object_id);
7104 FETCH Get_ItemEffDate_csr INTO l_start_date, l_end_date;
7105 CLOSE Get_ItemEffDate_csr;
7106 IF (l_start_date > sysdate OR l_end_date < sysdate) THEN
7107 --Standard call to get message count and if count=1, get the message
7108 FND_MSG_PUB.Count_And_Get (
7109 p_encoded => FND_API.G_FALSE,
7110 p_count => x_msg_count,
7111 p_data => x_msg_data
7112 );
7113 return;
7114 END IF;
7115 ELSIF (p_business_object_type = G_CHAN_ARC_TYPE) THEN
7116 l_start_date := sysdate+1;
7117 l_end_date := sysdate-1;
7118 OPEN Get_ChannelEffDate_csr(p_business_object_id);
7119 FETCH Get_ChannelEffDate_csr INTO l_start_date, l_end_date;
7120 CLOSE Get_ChannelEffDate_csr;
7121 IF (l_start_date > sysdate OR l_end_date < sysdate) THEN
7122 --Standard call to get message count and if count=1, get the message
7123 FND_MSG_PUB.Count_And_Get (
7124 p_encoded => FND_API.G_FALSE,
7125 p_count => x_msg_count,
7126 p_data => x_msg_data
7127 );
7128 return;
7129 END IF;
7130 ELSIF (p_business_object_type = G_CATE_ARC_TYPE) THEN
7131 null; -- There are no effective date in category
7132 ELSIF (p_business_object_type = G_APPL_ARC_TYPE) THEN
7133 null; -- There are no effective date in application
7134 END IF;
7135 END IF; --IF (p_check_effective_date = FND_API.G_TRUE)
7136 --
7137 IF (p_check_effective_date = FND_API.G_TRUE) THEN
7138 IF (p_user_or_group_type = G_GROUP_ARC_TYPE) THEN
7139 OPEN Get_GroupAccess_csr;
7140 FETCH Get_GroupAccess_csr INTO
7141 x_access_flag_obj.CAN_VIEW_FLAG,
7142 x_access_flag_obj.CAN_CREATE_FLAG,
7143 x_access_flag_obj.CAN_DELETE_FLAG,
7144 x_access_flag_obj.CAN_UPDATE_FLAG,
7145 x_access_flag_obj.CAN_CREATE_DIST_RULE_FLAG,
7146 x_access_flag_obj.CHL_APPROVER_FLAG,
7147 x_access_flag_obj.CHL_REQUIRED_FLAG,
7148 x_access_flag_obj.CHL_REQUIRED_NEED_NOTIF_FLAG;
7149 CLOSE Get_GroupAccess_csr;
7150 ELSIF (p_user_or_group_type = G_USER_ARC_TYPE) THEN
7151 OPEN Get_ResourceAccess_csr;
7152 FETCH Get_ResourceAccess_csr INTO
7153 x_access_flag_obj.CAN_VIEW_FLAG,
7154 x_access_flag_obj.CAN_CREATE_FLAG,
7155 x_access_flag_obj.CAN_DELETE_FLAG,
7156 x_access_flag_obj.CAN_UPDATE_FLAG,
7157 x_access_flag_obj.CAN_CREATE_DIST_RULE_FLAG,
7158 x_access_flag_obj.CHL_APPROVER_FLAG,
7159 x_access_flag_obj.CHL_REQUIRED_FLAG,
7160 x_access_flag_obj.CHL_REQUIRED_NEED_NOTIF_FLAG;
7161 CLOSE Get_ResourceAccess_csr;
7162 IF (p_include_group_flag = FND_API.G_TRUE) THEN
7163 FOR csr1 IN Get_AllGroupAccess2_csr LOOP
7164 IF (csr1.CAN_VIEW_FLAG = FND_API.G_TRUE) THEN
7165 x_access_flag_obj.CAN_VIEW_FLAG := FND_API.G_TRUE;
7166 END IF;
7167 IF (csr1.CAN_CREATE_FLAG = FND_API.G_TRUE) THEN
7168 x_access_flag_obj.CAN_CREATE_FLAG := FND_API.G_TRUE;
7169 END IF;
7170 IF (csr1.CAN_DELETE_FLAG = FND_API.G_TRUE) THEN
7171 x_access_flag_obj.CAN_DELETE_FLAG := FND_API.G_TRUE;
7172 END IF;
7173 IF (csr1.CAN_UPDATE_FLAG = FND_API.G_TRUE) THEN
7174 x_access_flag_obj.CAN_UPDATE_FLAG := FND_API.G_TRUE;
7175 END IF;
7176 IF (csr1.CAN_CREATE_DIST_RULE_FLAG = FND_API.G_TRUE) THEN
7177 x_access_flag_obj.CAN_CREATE_DIST_RULE_FLAG :=
7178 FND_API.G_TRUE;
7179 END IF;
7180 IF (csr1.CHL_APPROVER_FLAG = FND_API.G_TRUE) THEN
7181 x_access_flag_obj.CHL_APPROVER_FLAG := FND_API.G_TRUE;
7182 END IF;
7183 IF (csr1.CHL_REQUIRED_FLAG = FND_API.G_TRUE) THEN
7184 x_access_flag_obj.CHL_REQUIRED_FLAG := FND_API.G_TRUE;
7185 END IF;
7186 IF (csr1.CHL_REQUIRED_NEED_NOTIF_FLAG = FND_API.G_TRUE) THEN
7187 x_access_flag_obj.CHL_REQUIRED_NEED_NOTIF_FLAG :=
7188 FND_API.G_TRUE;
7189 END IF;
7190 END LOOP;
7191 END IF; --IF (p_include_group_flag = FND_API.G_TRUE)
7192 END IF; --ELSIF (p_user_or_group_type = G_USER_ARC_TYPE)
7193 ELSE
7194 OPEN Get_Access_csr;
7195 FETCH Get_Access_csr INTO
7196 x_access_flag_obj.CAN_VIEW_FLAG,
7197 x_access_flag_obj.CAN_CREATE_FLAG,
7198 x_access_flag_obj.CAN_DELETE_FLAG,
7199 x_access_flag_obj.CAN_UPDATE_FLAG,
7200 x_access_flag_obj.CAN_CREATE_DIST_RULE_FLAG,
7201 x_access_flag_obj.CHL_APPROVER_FLAG,
7202 x_access_flag_obj.CHL_REQUIRED_FLAG,
7203 x_access_flag_obj.CHL_REQUIRED_NEED_NOTIF_FLAG;
7204 CLOSE Get_Access_csr;
7205 --
7206 IF (p_user_or_group_type = G_USER_ARC_TYPE AND
7207 p_include_group_flag = FND_API.G_TRUE) THEN
7208 FOR csr1 IN Get_AllGroupAccess_csr LOOP
7209 IF (csr1.CAN_VIEW_FLAG = FND_API.G_TRUE) THEN
7210 x_access_flag_obj.CAN_VIEW_FLAG := FND_API.G_TRUE;
7211 END IF;
7212 IF (csr1.CAN_CREATE_FLAG = FND_API.G_TRUE) THEN
7213 x_access_flag_obj.CAN_CREATE_FLAG := FND_API.G_TRUE;
7214 END IF;
7215 IF (csr1.CAN_DELETE_FLAG = FND_API.G_TRUE) THEN
7216 x_access_flag_obj.CAN_DELETE_FLAG := FND_API.G_TRUE;
7217 END IF;
7218 IF (csr1.CAN_UPDATE_FLAG = FND_API.G_TRUE) THEN
7219 x_access_flag_obj.CAN_UPDATE_FLAG := FND_API.G_TRUE;
7220 END IF;
7221 IF (csr1.CAN_CREATE_DIST_RULE_FLAG = FND_API.G_TRUE) THEN
7222 x_access_flag_obj.CAN_CREATE_DIST_RULE_FLAG := FND_API.G_TRUE;
7223 END IF;
7224 IF (csr1.CHL_APPROVER_FLAG = FND_API.G_TRUE) THEN
7225 x_access_flag_obj.CHL_APPROVER_FLAG := FND_API.G_TRUE;
7226 END IF;
7227 IF (csr1.CHL_REQUIRED_FLAG = FND_API.G_TRUE) THEN
7228 x_access_flag_obj.CHL_REQUIRED_FLAG := FND_API.G_TRUE;
7229 END IF;
7230 IF (csr1.CHL_REQUIRED_NEED_NOTIF_FLAG = FND_API.G_TRUE) THEN
7231 x_access_flag_obj.CHL_REQUIRED_NEED_NOTIF_FLAG :=
7232 FND_API.G_TRUE;
7233 END IF;
7234 END LOOP;
7235 END IF;
7236 END IF; --IF (p_check_effective_date = FND_API.G_TRUE)
7237 --Standard call to get message count and if count=1, get the message
7238 FND_MSG_PUB.Count_And_Get (
7239 p_encoded => FND_API.G_FALSE,
7240 p_count => x_msg_count,
7241 p_data => x_msg_data
7242 );
7243 EXCEPTION
7244 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7245 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7246 -- Standard call to get message count and if count=1, get the message
7247 FND_MSG_PUB.Count_And_Get (
7248 p_encoded => FND_API.G_FALSE,
7249 p_count => x_msg_count,
7250 p_data => x_msg_data
7251 );
7252 WHEN FND_API.G_EXC_ERROR THEN
7253 x_return_status := FND_API.G_RET_STS_ERROR;
7254 -- Standard call to get message count and if count=1, get the message
7255 FND_MSG_PUB.Count_And_Get (
7256 p_encoded => FND_API.G_FALSE,
7257 p_count => x_msg_count,
7258 p_data => x_msg_data
7259 );
7260 WHEN OTHERS THEN
7261 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7262 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
7263 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME,l_api_name);
7264 END IF;
7265 -- Standard call to get message count and if count=1, get the message
7266 FND_MSG_PUB.Count_And_Get (
7267 p_encoded => FND_API.G_FALSE,
7268 p_count => x_msg_count,
7269 p_data => x_msg_data
7270 );
7271 END Get_BusinessObjectAccess;
7272 --------------------------------------------------------------------------------
7273 PROCEDURE Get_ResourceApplAccess
7274 (
7275 p_api_version IN NUMBER,
7276 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7277 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
7278 x_return_status OUT NOCOPY VARCHAR2,
7279 x_msg_count OUT NOCOPY NUMBER,
7280 x_msg_data OUT NOCOPY VARCHAR2,
7281 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
7282 p_include_group_flag IN VARCHAR2 := FND_API.G_TRUE,
7283 p_resource_id IN NUMBER,
7284 p_application_id IN NUMBER,
7285 x_access_flag_obj OUT NOCOPY AMV_ACCESS_FLAG_OBJ_TYPE
7286 ) AS
7287 BEGIN
7288 Get_BusinessObjectAccess
7289 (
7290 p_api_version => p_api_version,
7291 p_init_msg_list => p_init_msg_list,
7292 p_validation_level => p_validation_level,
7293 x_return_status => x_return_status,
7294 x_msg_count => x_msg_count,
7295 x_msg_data => x_msg_data,
7296 p_check_login_user => p_check_login_user,
7297 p_include_group_flag => p_include_group_flag,
7298 p_user_or_group_id => p_resource_id,
7299 p_user_or_group_type => G_USER_ARC_TYPE,
7300 p_business_object_id => p_application_id,
7301 p_business_object_type => G_APPL_ARC_TYPE,
7302 x_access_flag_obj => x_access_flag_obj
7303 );
7304
7305 END Get_ResourceApplAccess;
7306 --------------------------------------------------------------------------------
7307 PROCEDURE Get_ResourceChanAccess
7308 (
7309 p_api_version IN NUMBER,
7310 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7311 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
7312 x_return_status OUT NOCOPY VARCHAR2,
7313 x_msg_count OUT NOCOPY NUMBER,
7314 x_msg_data OUT NOCOPY VARCHAR2,
7315 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
7316 p_include_group_flag IN VARCHAR2 := FND_API.G_TRUE,
7317 p_resource_id IN NUMBER,
7318 p_channel_id IN NUMBER,
7319 x_access_flag_obj OUT NOCOPY AMV_ACCESS_FLAG_OBJ_TYPE
7320 ) AS
7321 BEGIN
7322 Get_BusinessObjectAccess
7323 (
7324 p_api_version => p_api_version,
7325 p_init_msg_list => p_init_msg_list,
7326 p_validation_level => p_validation_level,
7327 x_return_status => x_return_status,
7328 x_msg_count => x_msg_count,
7329 x_msg_data => x_msg_data,
7330 p_check_login_user => p_check_login_user,
7331 p_include_group_flag => p_include_group_flag,
7332 p_user_or_group_id => p_resource_id,
7333 p_user_or_group_type => G_USER_ARC_TYPE,
7334 p_business_object_id => p_channel_id,
7335 p_business_object_type => G_CHAN_ARC_TYPE,
7336 x_access_flag_obj => x_access_flag_obj
7337 );
7338 END Get_ResourceChanAccess;
7339 --------------------------------------------------------------------------------
7340 PROCEDURE Get_ResourceCateAccess
7341 (
7342 p_api_version IN NUMBER,
7343 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7344 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
7345 x_return_status OUT NOCOPY VARCHAR2,
7346 x_msg_count OUT NOCOPY NUMBER,
7347 x_msg_data OUT NOCOPY VARCHAR2,
7348 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
7349 p_include_group_flag IN VARCHAR2 := FND_API.G_TRUE,
7350 p_resource_id IN NUMBER,
7351 p_category_id IN NUMBER,
7352 x_access_flag_obj OUT NOCOPY AMV_ACCESS_FLAG_OBJ_TYPE
7353 ) AS
7354 BEGIN
7355 Get_BusinessObjectAccess
7356 (
7357 p_api_version => p_api_version,
7358 p_init_msg_list => p_init_msg_list,
7359 p_validation_level => p_validation_level,
7360 x_return_status => x_return_status,
7361 x_msg_count => x_msg_count,
7362 x_msg_data => x_msg_data,
7363 p_check_login_user => p_check_login_user,
7364 p_include_group_flag => p_include_group_flag,
7365 p_user_or_group_id => p_resource_id,
7366 p_user_or_group_type => G_USER_ARC_TYPE,
7367 p_business_object_id => p_category_id,
7368 p_business_object_type => G_CATE_ARC_TYPE,
7369 x_access_flag_obj => x_access_flag_obj
7370 );
7371 END Get_ResourceCateAccess;
7372 --------------------------------------------------------------------------------
7373 PROCEDURE Get_ResourceItemAccess
7374 (
7375 p_api_version IN NUMBER,
7376 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7377 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
7378 x_return_status OUT NOCOPY VARCHAR2,
7379 x_msg_count OUT NOCOPY NUMBER,
7380 x_msg_data OUT NOCOPY VARCHAR2,
7381 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
7382 p_include_group_flag IN VARCHAR2 := FND_API.G_TRUE,
7383 p_resource_id IN NUMBER,
7384 p_item_id IN NUMBER,
7385 x_access_flag_obj OUT NOCOPY AMV_ACCESS_FLAG_OBJ_TYPE
7386 ) AS
7387 BEGIN
7388 Get_BusinessObjectAccess
7389 (
7390 p_api_version => p_api_version,
7391 p_init_msg_list => p_init_msg_list,
7392 p_validation_level => p_validation_level,
7393 x_return_status => x_return_status,
7394 x_msg_count => x_msg_count,
7395 x_msg_data => x_msg_data,
7396 p_check_login_user => p_check_login_user,
7397 p_include_group_flag => p_include_group_flag,
7398 p_user_or_group_id => p_resource_id,
7399 p_user_or_group_type => G_USER_ARC_TYPE,
7400 p_business_object_id => p_item_id,
7401 p_business_object_type => G_ITEM_ARC_TYPE,
7402 x_access_flag_obj => x_access_flag_obj
7403 );
7404 END Get_ResourceItemAccess;
7405 --------------------------------------------------------------------------------
7406 PROCEDURE Get_GroupApplAccess
7407 (
7408 p_api_version IN NUMBER,
7409 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7410 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
7411 x_return_status OUT NOCOPY VARCHAR2,
7412 x_msg_count OUT NOCOPY NUMBER,
7413 x_msg_data OUT NOCOPY VARCHAR2,
7414 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
7415 p_group_id IN NUMBER,
7416 p_application_id IN NUMBER,
7417 x_access_flag_obj OUT NOCOPY AMV_ACCESS_FLAG_OBJ_TYPE
7418 ) AS
7419 BEGIN
7420 Get_BusinessObjectAccess
7421 (
7422 p_api_version => p_api_version,
7423 p_init_msg_list => p_init_msg_list,
7424 p_validation_level => p_validation_level,
7425 x_return_status => x_return_status,
7426 x_msg_count => x_msg_count,
7427 x_msg_data => x_msg_data,
7428 p_check_login_user => p_check_login_user,
7429 p_include_group_flag => FND_API.G_FALSE,
7430 p_user_or_group_id => p_group_id,
7431 p_user_or_group_type => G_GROUP_ARC_TYPE,
7432 p_business_object_id => p_application_id,
7433 p_business_object_type => G_APPL_ARC_TYPE,
7434 x_access_flag_obj => x_access_flag_obj
7435 );
7436 END Get_GroupApplAccess;
7437 --------------------------------------------------------------------------------
7438 PROCEDURE Get_GroupChanAccess
7439 (
7440 p_api_version IN NUMBER,
7441 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7442 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
7443 x_return_status OUT NOCOPY VARCHAR2,
7444 x_msg_count OUT NOCOPY NUMBER,
7445 x_msg_data OUT NOCOPY VARCHAR2,
7446 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
7447 p_group_id IN NUMBER,
7448 p_channel_id IN NUMBER,
7449 x_access_flag_obj OUT NOCOPY AMV_ACCESS_FLAG_OBJ_TYPE
7450 ) AS
7451 BEGIN
7452 Get_BusinessObjectAccess
7453 (
7454 p_api_version => p_api_version,
7455 p_init_msg_list => p_init_msg_list,
7456 p_validation_level => p_validation_level,
7457 x_return_status => x_return_status,
7458 x_msg_count => x_msg_count,
7459 x_msg_data => x_msg_data,
7460 p_check_login_user => p_check_login_user,
7461 p_include_group_flag => FND_API.G_FALSE,
7462 p_user_or_group_id => p_group_id,
7463 p_user_or_group_type => G_GROUP_ARC_TYPE,
7464 p_business_object_id => p_channel_id,
7465 p_business_object_type => G_CHAN_ARC_TYPE,
7466 x_access_flag_obj => x_access_flag_obj
7467 );
7468 END Get_GroupChanAccess;
7469 --------------------------------------------------------------------------------
7470 PROCEDURE Get_GroupCateAccess
7471 (
7472 p_api_version IN NUMBER,
7473 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7474 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
7475 x_return_status OUT NOCOPY VARCHAR2,
7476 x_msg_count OUT NOCOPY NUMBER,
7477 x_msg_data OUT NOCOPY VARCHAR2,
7478 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
7479 p_group_id IN NUMBER,
7480 p_category_id IN NUMBER,
7481 x_access_flag_obj OUT NOCOPY AMV_ACCESS_FLAG_OBJ_TYPE
7482 ) AS
7483 BEGIN
7484 Get_BusinessObjectAccess
7485 (
7486 p_api_version => p_api_version,
7487 p_init_msg_list => p_init_msg_list,
7488 p_validation_level => p_validation_level,
7489 x_return_status => x_return_status,
7490 x_msg_count => x_msg_count,
7491 x_msg_data => x_msg_data,
7492 p_check_login_user => p_check_login_user,
7493 p_include_group_flag => FND_API.G_FALSE,
7494 p_user_or_group_id => p_group_id,
7495 p_user_or_group_type => G_GROUP_ARC_TYPE,
7496 p_business_object_id => p_category_id,
7497 p_business_object_type => G_CATE_ARC_TYPE,
7498 x_access_flag_obj => x_access_flag_obj
7499 );
7500 END Get_GroupCateAccess;
7501 --------------------------------------------------------------------------------
7502 PROCEDURE Get_ResourceItemAccess
7503 (
7504 p_api_version IN NUMBER,
7505 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7506 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
7507 x_return_status OUT NOCOPY VARCHAR2,
7508 x_msg_count OUT NOCOPY NUMBER,
7509 x_msg_data OUT NOCOPY VARCHAR2,
7510 p_check_login_user IN VARCHAR2 := FND_API.G_TRUE,
7511 p_group_id IN NUMBER,
7512 p_item_id IN NUMBER,
7513 x_access_flag_obj OUT NOCOPY AMV_ACCESS_FLAG_OBJ_TYPE
7514 ) AS
7515 BEGIN
7516 Get_BusinessObjectAccess
7517 (
7518 p_api_version => p_api_version,
7519 p_init_msg_list => p_init_msg_list,
7520 p_validation_level => p_validation_level,
7521 x_return_status => x_return_status,
7522 x_msg_count => x_msg_count,
7523 x_msg_data => x_msg_data,
7524 p_check_login_user => p_check_login_user,
7525 p_include_group_flag => FND_API.G_FALSE,
7526 p_user_or_group_id => p_group_id,
7527 p_user_or_group_type => G_GROUP_ARC_TYPE,
7528 p_business_object_id => p_item_id,
7529 p_business_object_type => G_ITEM_ARC_TYPE,
7530 x_access_flag_obj => x_access_flag_obj
7531 );
7532 END Get_ResourceItemAccess;
7533 --------------------------------------------------------------------------------
7534 END amv_user_pvt;