[Home] [Help]
PACKAGE BODY: APPS.AMS_ACTRESOURCE_PVT
Source
1 PACKAGE BODY AMS_ActResource_PVT as
5 -- NAME
2 /*$Header: amsvrscb.pls 120.0 2005/05/31 14:50:17 appldev noship $*/
3
4 /*****************************************************************************************/
6 -- AMS_ActResource_PVT
7 --
8 -- HISTORY
9 -- 1/1/2000 rvaka CREATED
10 -- 02/20/2002 gmadana Rewritten the Package as we are doing Role-Resource relations
11 -- are we are using HZ_PARTIES instead of ams_jtf_rs_emp_v.
12 -- 05/28/2002 gmadana Added code in Validate_Act_Rsc_Record
13 -- 08/05/2002 gmadana Added valiadtions with event start date time
14 -- event end date time.
15 -- 08/18/2002 gmadana Bug # 2518686. Added time validations with session
16 -- 08/19/2002 gmadana Resources cannot be created/updated/deleted
17 -- for the event schedules which are cancelled/completed/
18 -- archived/on_hold.
19 -- 08/23/2002 gmadana Bug # 2518686
20 -- 04/28/2003 dbiswas Bug #2924115. Removed if then else statements for Validate_Act_Rsc_Record
21 -- 24-Mar-2005 sikalyan SQL Repository BugFix 4256877
22 /*****************************************************************************************/
23
24 G_PACKAGE_NAME CONSTANT VARCHAR2(30) :='AMS_ActResource_PVT';
25 G_FILE_NAME CONSTANT VARCHAR2(12) :='amsvrscb.pls';
26
27 -- Debug mode
28 g_debug boolean := FALSE;
29 g_debug boolean := TRUE;
30 --
31
32 AMS_DEBUG_HIGH_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
33 AMS_DEBUG_LOW_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
34 AMS_DEBUG_MEDIUM_ON CONSTANT boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
35
36 PROCEDURE Check_Resource_Booked (
37 p_act_Resource_rec IN act_Resource_rec_type,
38 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
39 x_return_status OUT NOCOPY VARCHAR2
40 );
41
42 -- Procedure AND function declarations.
43 /*****************************************************************************************/
44 -- Start of Comments
45 --
46 -- NAME
47 -- Create_Act_Resource
48 --
49 -- PURPOSE
50 -- This procedure is to create a Resource record that satisfy caller needs
51 --
52 -- HISTORY
53 -- 02/20/2002 gmadana created
54 --
55 /*****************************************************************************************/
56
57 PROCEDURE Create_Act_Resource
58 ( p_api_version IN NUMBER,
59 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
60 p_commit IN VARCHAR2 := FND_API.G_FALSE,
61 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
62 x_return_status OUT NOCOPY VARCHAR2,
63 x_msg_count OUT NOCOPY NUMBER,
64 x_msg_data OUT NOCOPY VARCHAR2,
65 p_act_Resource_rec IN act_Resource_rec_type,
66 x_act_resource_id OUT NOCOPY NUMBER
67 ) IS
68
69 l_api_name CONSTANT VARCHAR2(30) := 'Create_Act_Resource';
70 l_api_version CONSTANT NUMBER := 1.0;
71 l_full_name CONSTANT VARCHAR2(60) := G_PACKAGE_NAME || '.' || l_api_name;
72 l_return_status VARCHAR2(1);
73 l_act_Resource_rec act_Resource_rec_type := p_act_Resource_rec;
74 l_date DATE;
75 l_startdate DATE;
76 l_enddate DATE;
77 l_strTime VARCHAR2(30);
78 l_strDate VARCHAR2(30);
79
80 CURSOR C_act_resource_id IS
81 SELECT ams_act_resources_s.NEXTVAL
82 FROM dual;
83
84 CURSOR c_get_object_date(id_in IN NUMBER, type_in IN VARCHAR2) is
85 SELECT start_date_time FROM ams_agendas_b
86 WHERE agenda_id = id_in
87 AND agenda_type = type_in;
88
89 CURSOR c_get_sys_stat_code(id_in IN NUMBER) is
90 SELECT system_status_code FROM ams_user_statuses_v
91 WHERE user_status_id = id_in;
92
93 BEGIN
94 -- Standard Start of API savepoint
95 SAVEPOINT Create_Act_Resource_PVT;
96
97 -- Standard call to check for call compatibility.
98 IF NOT FND_API.Compatible_API_Call ( l_api_version,
99 p_api_version,
100 l_api_name,
101 G_PACKAGE_NAME)
102 THEN
103 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
104 END IF;
105
106 -- Initialize message list IF p_init_msg_list is set to TRUE.
107 IF FND_API.to_Boolean( p_init_msg_list )
108 THEN
109 FND_MSG_PUB.initialize;
110 END IF;
111
112 -- Initialize API return status to success
113 x_return_status := FND_API.G_RET_STS_SUCCESS;
114
115 ----------------------- validate -----------------------
116 IF (AMS_DEBUG_HIGH_ON) THEN
117
118 AMS_Utility_PVT.debug_message(l_full_name ||': validate');
119 END IF;
120 if (l_act_Resource_rec.arc_act_resource_used_by = 'SESSION')
121 THEN
122 OPEN c_get_object_date(l_act_Resource_rec.act_resource_used_by_id, l_act_Resource_rec.arc_act_resource_used_by);
123 FETCH c_get_object_date into l_date;
124 CLOSE c_get_object_date;
125
126 l_strDate := TO_CHAR(l_date, 'DD-MON-RRRR');
127 l_strTime := TO_CHAR(l_act_Resource_rec.start_date_time, 'HH24:MI');
128 l_strDate := l_strDate || ' ' || l_strTime;
129 l_startdate := TO_DATE (l_strDate, 'DD-MM-YYYY HH24:MI');
130 l_act_Resource_rec.start_date_time := l_startdate;
131 IF (AMS_DEBUG_HIGH_ON) THEN
132
133 AMS_Utility_PVT.debug_message('l_start_date ' ||to_char(l_startdate,'DD-MON-RRRR HH24:MI'));
134 END IF;
135
139 l_strTime := TO_CHAR(l_act_Resource_rec.end_date_time, 'HH24:MI');
136 l_strDate := NULL;
137 l_strTime := NULL;
138 l_strDate := TO_CHAR(l_date, 'DD-MON-RRRR');
140 l_strDate := l_strDate ||' '|| l_strTime;
141 l_enddate := TO_DATE (l_strDate, 'DD-MM-YYYY HH24:MI');
142 l_act_Resource_rec.end_date_time := l_enddate;
143 IF (AMS_DEBUG_HIGH_ON) THEN
144
145 AMS_Utility_PVT.debug_message('l_end_date ' ||to_char(l_enddate,'DD-MON-RRRR HH24:MI'));
146 END IF;
147
148
149 IF (AMS_DEBUG_HIGH_ON) THEN
150
151
152
153
154
155 AMS_Utility_PVT.debug_message('l_start_date ' ||to_char(l_startdate,'DD-MON-RRRR HH24:MI'));
156
157
158 END IF;
159 END IF;
160
161 OPEN c_get_sys_stat_code(l_act_Resource_rec.user_status_id);
162 FETCH c_get_sys_stat_code into l_act_Resource_rec.system_status_code;
163 CLOSE c_get_sys_stat_code;
164
165 Validate_Act_Resource
166 ( p_api_version => 1.0
167 ,p_init_msg_list => p_init_msg_list
168 ,p_validation_level => p_validation_level
169 ,x_return_status => l_return_status
170 ,x_msg_count => x_msg_count
171 ,x_msg_data => x_msg_data
172 ,p_act_Resource_rec => l_act_Resource_rec
173 );
174
175 IF l_return_status = FND_API.G_RET_STS_ERROR
176 THEN
177 RAISE FND_API.G_EXC_ERROR;
178 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
179 THEN
180 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
181 END IF;
182
183 ----------------------------create----------------------------
184 -- Get ID for activity delivery method FROM sequence.
185 OPEN c_act_resource_id;
186 FETCH c_act_resource_id INTO l_act_Resource_rec.activity_resource_id;
187 CLOSE c_act_resource_id;
188
189
190
191 INSERT INTO AMS_ACT_RESOURCES
192 (
193 activity_resource_id,
194 last_update_date,
195 last_updated_by,
196 creation_date,
197 created_by,
198 last_update_login,
199 object_version_number,
200 act_resource_used_by_id,
201 arc_act_resource_used_by,
202 resource_id,
203 role_cd,
204 user_status_id,
205 SYSTEM_STATUS_CODE,
206 start_date_time,
207 end_date_time,
208 description,
209 --TOP_LEVEL_PARENT_ID
210 --TOP_LEVEL_PARENT_TYPE
211 attribute_category,
212 attribute1,
213 attribute2,
214 attribute3,
215 attribute4,
216 attribute5,
217 attribute6,
218 attribute7,
219 attribute8,
220 attribute9,
221 attribute10,
222 attribute11,
223 attribute12,
224 attribute13,
225 attribute14,
226 attribute15
227 )
228 VALUES
229 (
230 l_act_resource_rec.activity_resource_id,
231 sysdate,
232 FND_GLOBAL.User_Id,
233 sysdate,
234 FND_GLOBAL.User_Id,
235 FND_GLOBAL.Conc_Login_Id,
236 1, -- object_version_number
237 l_act_Resource_rec.act_resource_used_by_id,
238 l_act_Resource_rec.arc_act_resource_used_by,
239 l_act_Resource_rec.resource_id,
240 l_act_Resource_rec.role_cd,
241 l_act_resource_rec.user_status_id,
242 l_act_resource_rec.system_status_code,
243 l_act_resource_rec.start_date_time,
244 l_act_resource_rec.end_date_time,
245 l_act_resource_rec.description,
246 --l_act_resource_rec.top_level_parent_id,
247 --l_act_resource_rec.top_level_parent_type,
248 l_act_Resource_rec.attribute_category,
249 l_act_Resource_rec.attribute1,
250 l_act_Resource_rec.attribute2,
251 l_act_Resource_rec.attribute3,
252 l_act_Resource_rec.attribute4,
253 l_act_Resource_rec.attribute5,
254 l_act_Resource_rec.attribute6,
255 l_act_Resource_rec.attribute7,
256 l_act_Resource_rec.attribute8,
257 l_act_Resource_rec.attribute9,
258 l_act_Resource_rec.attribute10,
259 l_act_Resource_rec.attribute11,
260 l_act_Resource_rec.attribute12,
261 l_act_Resource_rec.attribute13,
262 l_act_Resource_rec.attribute14,
263 l_act_Resource_rec.attribute15
264 );
265 -- set OUT value
266 x_act_resource_id := l_act_Resource_rec.activity_resource_id;
267
268 -- Standard check of p_commit.
269 IF FND_API.To_Boolean ( p_commit )
270 THEN
271 COMMIT WORK;
272 END IF;
273 -- Standard call to get message count AND IF count is 1, get message info.
274 FND_MSG_PUB.Count_AND_Get
275 ( p_count => x_msg_count,
276 p_data => x_msg_data,
277 p_encoded => FND_API.G_FALSE
278 );
279 EXCEPTION
280 WHEN FND_API.G_EXC_ERROR THEN
281 ROLLBACK TO Create_Act_Resource_PVT;
282 x_return_status := FND_API.G_RET_STS_ERROR ;
283 FND_MSG_PUB.Count_AND_Get
284 ( p_count => x_msg_count,
285 p_data => x_msg_data,
286 p_encoded => FND_API.G_FALSE
287 );
288 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
289 -- ROLLBACK TO Create_Act_Resource_PVT;
290 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
291 FND_MSG_PUB.Count_AND_Get
292 ( p_count => x_msg_count,
293 p_data => x_msg_data,
294 p_encoded => FND_API.G_FALSE
295 );
296 WHEN OTHERS THEN
297 ROLLBACK TO Create_Act_Resource_PVT;
298 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
299 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
300 THEN
301 FND_MSG_PUB.Add_Exc_Msg( G_PACKAGE_NAME,l_api_name);
302 END IF;
303
304 FND_MSG_PUB.Count_AND_Get
305 ( p_count => x_msg_count,
306 p_data => x_msg_data,
307 p_encoded => FND_API.G_FALSE
308 );
309
310 END Create_Act_Resource;
311
312 /*****************************************************************************************/
313 -- Start of Comments
314 --
315 -- NAME
316 -- Update_Act_Resource
317 --
318 -- PURPOSE
319 -- This procedure is to update a Resource record that satisfy caller needs
320 --
321 -- HISTORY
322 -- 02/20/2002 gmadana created
323 --
324 /*****************************************************************************************/
325
326 PROCEDURE Update_Act_Resource
327 ( p_api_version IN NUMBER,
328 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
329 p_commit IN VARCHAR2 := FND_API.G_FALSE,
330 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
331 x_return_status OUT NOCOPY VARCHAR2,
332 x_msg_count OUT NOCOPY NUMBER,
333 x_msg_data OUT NOCOPY VARCHAR2,
334 p_act_Resource_rec IN act_Resource_rec_type
335 ) IS
336
337 l_api_name CONSTANT VARCHAR2(30) := 'Update_Act_Resource';
338 l_api_version CONSTANT NUMBER := 1.0;
339 l_return_status VARCHAR2(1); -- Return value FROM procedures
340 l_act_Resource_rec act_Resource_rec_type;
341 l_date DATE;
342 l_startdate DATE;
343 l_enddate DATE;
344 l_strTime VARCHAR2(30);
345 l_strDate VARCHAR2(30);
346
347 CURSOR c_get_object_date(id_in IN NUMBER, type_in IN VARCHAR2) is
348 SELECT start_date_time FROM ams_agendas_b
349 WHERE agenda_id = id_in
350 AND agenda_type = type_in;
351
352 CURSOR c_get_sys_stat_code(id_in IN NUMBER) is
353 SELECT system_status_code FROM ams_user_statuses_v
354 WHERE user_status_id = id_in;
355
356 BEGIN
357 -- Standard Start of API savepoint
358 SAVEPOINT Update_Act_Resource_PVT;
359 -- Standard call to check for call compatibility.
360 IF NOT FND_API.Compatible_API_Call ( l_api_version,
361 p_api_version,
362 l_api_name,
363 G_PACKAGE_NAME)
364 THEN
365 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
366 END IF;
367
368 -- Initialize message list IF p_init_msg_list is set to TRUE.
369 IF FND_API.to_Boolean( p_init_msg_list ) THEN
370 FND_MSG_PUB.initialize;
371 END IF;
372
373 -- Initialize API return status to success
374 x_return_status := FND_API.G_RET_STS_SUCCESS;
375
376 complete_act_Resource_rec(
377 p_act_Resource_rec,
378 l_act_Resource_rec
379 );
380
381 if (l_act_Resource_rec.arc_act_resource_used_by = 'SESSION')
382 THEN
383 OPEN c_get_object_date(l_act_Resource_rec.act_resource_used_by_id, l_act_Resource_rec.arc_act_resource_used_by);
384 FETCH c_get_object_date into l_date;
385 CLOSE c_get_object_date;
386
387 l_strDate := TO_CHAR(l_date, 'dd-mon-rrrr');
388 l_strTime := TO_CHAR(l_act_Resource_rec.start_date_time, 'HH24:MI');
389 l_strDate := l_strDate || ' ' || l_strTime;
390 l_startdate := TO_DATE (l_strDate, 'DD-MM-YYYY HH24:MI');
394 AMS_Utility_PVT.debug_message('l_start_date ' ||to_char(l_startdate,'DD-MON-RRRR HH24:MI'));
391 l_act_Resource_rec.start_date_time := l_startdate;
392 IF (AMS_DEBUG_HIGH_ON) THEN
393
395 END IF;
396
397 l_strDate := NULL;
398 l_strTime := NULL;
399 l_strDate := TO_CHAR(l_date, 'dd-mon-rrrr');
400 l_strTime := TO_CHAR(l_act_Resource_rec.end_date_time, 'HH24:MI');
401 l_strDate := l_strDate ||' '|| l_strTime;
402 l_enddate := TO_DATE (l_strDate, 'DD-MM-YYYY HH24:MI');
403 l_act_Resource_rec.end_date_time := l_enddate;
404 IF (AMS_DEBUG_HIGH_ON) THEN
405
406 AMS_Utility_PVT.debug_message('l_end_date ' ||to_char(l_enddate,'DD-MON-RRRR HH24:MI'));
407 END IF;
408
409
410 IF (AMS_DEBUG_HIGH_ON) THEN
411
412
413
414
415
416 AMS_Utility_PVT.debug_message('l_start_date ' ||to_char(l_startdate,'DD-MON-RRRR HH24:MI'));
417
418
419 END IF;
420 end if;
421
422 OPEN c_get_sys_stat_code(l_act_Resource_rec.user_status_id);
423 FETCH c_get_sys_stat_code into l_act_Resource_rec.system_status_code;
424 CLOSE c_get_sys_stat_code;
425
426
427 IF (AMS_DEBUG_HIGH_ON) THEN
428
429
430
431
432
433 AMS_Utility_PVT.debug_message(l_api_name||': check items');
434
435
436 END IF;
437
438 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item
439 THEN
440 Validate_Act_Resource_Items
441 ( p_act_Resource_rec => l_act_Resource_rec,
442 p_validation_mode => JTF_PLSQL_API.g_update,
443 x_return_status => l_return_status
444 );
445 -- If any errors happen abort API.
446 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
447 THEN
448 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
449 ELSIF l_return_status = FND_API.G_RET_STS_ERROR
450 THEN
451 RAISE FND_API.G_EXC_ERROR;
452 END IF;
453 END IF;
454
455 -- If any errors happen abort API.
456 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
457 THEN
458 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
459 ELSIF l_return_status = FND_API.G_RET_STS_ERROR
460 THEN
461 RAISE FND_API.G_EXC_ERROR;
462 END IF;
463
464 -------------- Perform the database operation UPDATE----------------------
465
466 update AMS_ACT_RESOURCES
467 set
468 last_update_date = sysdate
469 ,last_updated_by = FND_GLOBAL.User_Id
470 ,last_update_login = FND_GLOBAL.Conc_Login_Id
471 ,object_version_number = l_act_Resource_rec.object_version_number+1
472 ,act_resource_used_by_id = l_act_resource_rec.act_resource_used_by_id
473 ,arc_act_resource_used_by = l_act_resource_rec.arc_act_resource_used_by
474 ,resource_id = l_act_resource_rec.resource_id
475 ,role_cd = l_act_resource_rec.role_cd
476 ,user_status_id = l_act_resource_rec.user_status_id
477 ,system_status_code = l_act_resource_rec.system_status_code
478 ,start_date_time = l_act_resource_rec.start_date_time
479 ,end_date_time = l_act_resource_rec.end_date_time
480 ,description = l_act_resource_rec.description
481 --,top_level_parten_id = l_act_resource_rec.top_level_parten_id
482 --,top_level_parten_type = l_act_resource_rec.top_level_parten_type
483 ,attribute_category = l_act_Resource_rec.attribute_category
484 ,attribute1 = l_act_Resource_rec.attribute1
485 ,attribute2 = l_act_Resource_rec.attribute2
486 ,attribute3 = l_act_Resource_rec.attribute3
487 ,attribute4 = l_act_Resource_rec.attribute4
488 ,attribute5 = l_act_Resource_rec.attribute5
489 ,attribute6 = l_act_Resource_rec.attribute6
490 ,attribute7 = l_act_Resource_rec.attribute7
491 ,attribute8 = l_act_Resource_rec.attribute8
492 ,attribute9 = l_act_Resource_rec.attribute9
493 ,attribute10 = l_act_Resource_rec.attribute10
494 ,attribute11 = l_act_Resource_rec.attribute11
495 ,attribute12 = l_act_Resource_rec.attribute12
496 ,attribute13 = l_act_Resource_rec.attribute13
497 ,attribute14 = l_act_Resource_rec.attribute14
498 ,attribute15 = l_act_Resource_rec.attribute15
499 WHERE activity_resource_id = l_act_Resource_rec.activity_resource_id
500 AND object_version_number = l_act_Resource_rec.object_version_number;
501
502 IF (SQL%NOTFOUND)
503 THEN
504 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
505 THEN -- MMSG
506 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
507 FND_MSG_PUB.Add;
508 END IF;
509 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
510 END IF;
511
512 -- Standard check of p_commit.
513 IF FND_API.To_Boolean ( p_commit )
514 THEN
515 COMMIT WORK;
516 END IF;
517 -- Standard call to get message count AND IF count is 1, get message info.
518 FND_MSG_PUB.Count_AND_Get
519 ( p_count => x_msg_count,
520 p_data => x_msg_data,
521 p_encoded => FND_API.G_FALSE
522 );
523 EXCEPTION
524 WHEN FND_API.G_EXC_ERROR THEN
525 ROLLBACK TO Update_Act_Resource_PVT;
526 x_return_status := FND_API.G_RET_STS_ERROR ;
527 FND_MSG_PUB.Count_AND_Get
528 ( p_count => x_msg_count,
529 p_data => x_msg_data,
530 p_encoded => FND_API.G_FALSE
531 );
532
533 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
534 ROLLBACK TO Update_Act_Resource_PVT;
535 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
536 FND_MSG_PUB.Count_AND_Get
537 ( p_count => x_msg_count,
541
538 p_data => x_msg_data,
539 p_encoded => FND_API.G_FALSE
540 );
542 WHEN OTHERS THEN
543 ROLLBACK TO Update_Act_Resource_PVT;
544 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
545 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
546 THEN
547 FND_MSG_PUB.Add_Exc_Msg( G_PACKAGE_NAME,l_api_name);
548 END IF;
549
550 FND_MSG_PUB.Count_AND_Get
551 ( p_count => x_msg_count,
552 p_data => x_msg_data,
553 p_encoded => FND_API.G_FALSE
554 );
555
556 END Update_Act_Resource;
557
558 /*****************************************************************************************/
559 -- Start of Comments
560 --
561 -- NAME
562 -- Delete_Act_Resource
563 --
564 -- PURPOSE
565 -- This procedure is to delete a resource record that satisfy caller needs
566 --
567 -- HISTORY
568 -- 02/20/2002 gmadana created
569 --
570 /*****************************************************************************************/
571
572 PROCEDURE Delete_Act_Resource
573 ( p_api_version IN NUMBER,
574 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
575 p_commit IN VARCHAR2 := FND_API.G_FALSE,
576 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
577 x_return_status OUT NOCOPY VARCHAR2,
578 x_msg_count OUT NOCOPY NUMBER,
579 x_msg_data OUT NOCOPY VARCHAR2,
580 p_act_Resource_id IN NUMBER,
581 p_object_version IN NUMBER
582 ) IS
583
584 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Act_Resource';
585 l_api_version CONSTANT NUMBER := 1.0;
586 l_return_status VARCHAR2(1);
587 l_act_resource_id NUMBER := p_act_Resource_id;
588 l_role_relate_id NUMBER;
589
590
591 BEGIN
592 -- Standard Start of API savepoint
593 SAVEPOINT Delete_Act_Resource_PVT;
594
595 -- Standard call to check for call compatibility.
596 IF NOT FND_API.Compatible_API_Call ( l_api_version,
597 p_api_version,
598 l_api_name,
599 G_PACKAGE_NAME)
600 THEN
601 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
602 END IF;
603
604 -- Initialize message list IF p_init_msg_list is set to TRUE.
605 IF FND_API.to_Boolean( p_init_msg_list )
606 THEN
607 FND_MSG_PUB.initialize;
608 END IF;
609
610 -- Initialize API return status to success
611 x_return_status := FND_API.G_RET_STS_SUCCESS;
612
613 ------------------------------- Perform the database operation---------------
614
615 DELETE FROM ams_act_resources
616 WHERE ACTIVITY_RESOURCE_ID = p_act_Resource_id
617 AND p_object_version = p_object_version;
618
619 IF (SQL%NOTFOUND) THEN
620 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
621 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
622 FND_MSG_PUB.add;
623 END IF;
624 RAISE FND_API.g_exc_error;
625 END IF;
626
627
628 -- Standard check of p_commit.
629 IF FND_API.To_Boolean ( p_commit )
630 THEN
631 COMMIT WORK;
632 END IF;
633
634 -- Standard call to get message count AND IF count is 1, get message info.
635 FND_MSG_PUB.Count_AND_Get
636 ( p_count => x_msg_count,
637 p_data => x_msg_data,
638 p_encoded => FND_API.G_FALSE
639 );
640 EXCEPTION
641 WHEN FND_API.G_EXC_ERROR THEN
642 ROLLBACK TO Delete_Act_Resource_PVT;
643 x_return_status := FND_API.G_RET_STS_ERROR ;
644 FND_MSG_PUB.Count_AND_Get
645 ( p_count => x_msg_count,
646 p_data => x_msg_data,
647 p_encoded => FND_API.G_FALSE
648 );
649 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
650 ROLLBACK TO Delete_Act_Resource_PVT;
651 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
652 FND_MSG_PUB.Count_AND_Get
653 ( p_count => x_msg_count,
654 p_data => x_msg_data,
655 p_encoded => FND_API.G_FALSE
656 );
657
658 WHEN OTHERS THEN
659 ROLLBACK TO Delete_Act_Resource_PVT;
660 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
661
662 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
663 THEN
664 FND_MSG_PUB.Add_Exc_Msg( G_PACKAGE_NAME,l_api_name);
665 END IF;
666
667 FND_MSG_PUB.Count_AND_Get
668 ( p_count => x_msg_count,
669 p_data => x_msg_data,
670 p_encoded => FND_API.G_FALSE
671 );
672
673 END Delete_Act_Resource;
674
675 /*****************************************************************************************/
676 -- Start of Comments
677 --
678 -- NAME
679 -- Lock_Act_Resource
680 --
681 -- PURPOSE
682 -- This procedure is to lock a delivery method record that satisfy caller needs
683 --
684 -- HISTORY
685 -- 02/20/2002 gmadana created
686 --
687 /*****************************************************************************************/
688
689 PROCEDURE Lock_Act_Resource
690 ( p_api_version IN NUMBER,
691 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
692 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
693 x_return_status OUT NOCOPY VARCHAR2,
694 x_msg_count OUT NOCOPY NUMBER,
695 x_msg_data OUT NOCOPY VARCHAR2,
696 p_act_resource_id IN NUMBER,
697 p_object_version IN NUMBER
698 ) IS
699 l_api_name CONSTANT VARCHAR2(30) := 'Lock_Act_Resource';
700 l_api_version CONSTANT NUMBER := 1.0;
701 l_return_status VARCHAR2(1);
702 l_act_resource_id NUMBER;
703
704 CURSOR c_act_resource IS
705 SELECT activity_resource_id
706 FROM AMS_ACT_RESOURCES
707 WHERE activity_resource_id = p_act_resource_id
708 AND object_version_number = p_object_version
709 FOR UPDATE of activity_resource_id NOWAIT;
710
711 BEGIN
712 -- Standard call to check for call compatibility.
713 IF NOT FND_API.Compatible_API_Call ( l_api_version,
714 p_api_version,
715 l_api_name,
716 G_PACKAGE_NAME)
717 THEN
718 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
719 END IF;
720
721 -- Initialize message list if p_init_msg_list is set to TRUE.
722 IF FND_API.to_Boolean( p_init_msg_list )
723 THEN
724 FND_MSG_PUB.initialize;
725 END IF;
726
727 -- Initialize API return status to success
728 x_return_status := FND_API.G_RET_STS_SUCCESS;
729
730 OPEN c_act_resource;
731 FETCH c_act_resource INTO l_act_resource_id;
732
733 IF (c_act_resource%NOTFOUND)
734 THEN
735 CLOSE c_act_resource;
736
737 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_ERROR)
738 THEN
739 FND_MESSAGE.Set_Name('AMS', 'AMS_API_RECORD_NOT_FOUND');
740 FND_MSG_PUB.Add;
741 END IF;
742
743 RAISE FND_API.G_EXC_ERROR;
744 END IF;
745 CLOSE c_act_resource;
746 --
747 -- END of API body.
748 --
749 -- Standard call to get message count AND IF count is 1, get message info.
750 FND_MSG_PUB.Count_AND_Get
751 ( p_count => x_msg_count,
752 p_data => x_msg_data,
753 p_encoded => FND_API.G_FALSE
754 );
755 EXCEPTION
756 WHEN FND_API.G_EXC_ERROR THEN
757 x_return_status := FND_API.G_RET_STS_ERROR ;
758 FND_MSG_PUB.Count_AND_Get
759 ( p_count => x_msg_count,
760 p_data => x_msg_data,
761 p_encoded => FND_API.G_FALSE
762 );
763 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
764 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
765 FND_MSG_PUB.Count_AND_Get
766 ( p_count => x_msg_count,
767 p_data => x_msg_data,
768 p_encoded => FND_API.G_FALSE
769 );
770 WHEN AMS_Utility_PVT.resource_locked THEN
771 x_return_status := FND_API.g_ret_sts_error;
772 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
773 FND_MESSAGE.set_name('AMS', 'AMS_API_RESOURCE_LOCKED');
774 FND_MSG_PUB.add;
775 END IF;
776
777 FND_MSG_PUB.Count_AND_Get
778 ( p_count => x_msg_count,
779 p_data => x_msg_data,
780 p_encoded => FND_API.G_FALSE
781 );
782 WHEN OTHERS THEN
783 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
784 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
785 THEN
786 FND_MSG_PUB.Add_Exc_Msg( G_PACKAGE_NAME,l_api_name);
787 END IF;
788
789 FND_MSG_PUB.Count_AND_Get
790 ( p_count => x_msg_count,
791 p_data => x_msg_data,
792 p_encoded => FND_API.G_FALSE
793 );
794 END Lock_Act_Resource;
795
796 /*****************************************************************************************/
797 -- Start of Comments
798 --
799 -- NAME
800 -- Validate_Act_Resource
801 --
802 -- PURPOSE
803 -- This procedure is to validate an activity resource record
804 --
805 -- HISTORY
806 -- 02/20/2002 gmadana created
807 --
808 /*****************************************************************************************/
809
810 PROCEDURE Validate_Act_Resource
811 ( p_api_version IN NUMBER,
812 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
813 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
814 x_return_status OUT NOCOPY VARCHAR2,
815 x_msg_count OUT NOCOPY NUMBER,
816 x_msg_data OUT NOCOPY VARCHAR2,
817 p_act_Resource_rec IN act_Resource_rec_type
818 ) IS
819
820 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Act_Resource';
821 l_api_version CONSTANT NUMBER := 1.0;
822 l_full_name CONSTANT VARCHAR2(60) := G_PACKAGE_NAME || '.' || l_api_name;
823 l_return_status VARCHAR2(1);
824 l_act_Resource_rec act_Resource_rec_type := p_act_Resource_rec;
825 l_default_act_resource_rec act_Resource_rec_type;
826 l_act_resource_id NUMBER;
827
828
829 BEGIN
830 -- Standard call to check for call compatibility.
831 IF NOT FND_API.Compatible_API_Call ( l_api_version,
832 p_api_version,
833 l_api_name,
834 G_PACKAGE_NAME)
835 THEN
836 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
837 END IF;
838
839 -- Initialize message list if p_init_msg_list is set to TRUE.
840 IF FND_API.to_Boolean( p_init_msg_list ) THEN
841 FND_MSG_PUB.initialize;
842 END IF;
843
844 -- Initialize API return status to success
845 x_return_status := FND_API.G_RET_STS_SUCCESS;
846
847 IF (AMS_DEBUG_HIGH_ON) THEN
848
849
850
851 AMS_Utility_PVT.debug_message(l_full_name||': check items');
852
853 END IF;
854 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_item
855 THEN
856 Validate_Act_Resource_Items
857 ( p_act_Resource_rec => l_act_Resource_rec,
858 p_validation_mode => JTF_PLSQL_API.g_create,
859 x_return_status => l_return_status
860 );
861
862 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR
863 THEN
864 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
865 ELSIF l_return_status = FND_API.G_RET_STS_ERROR
866 THEN
867 RAISE FND_API.G_EXC_ERROR;
868 END IF;
869 END IF;
870
871 -- Perform cross attribute validation AND missing attribute checks. Record
872 -- level validation.
873 IF (AMS_DEBUG_HIGH_ON) THEN
874
875 AMS_Utility_PVT.debug_message(l_full_name||': check record level');
876 END IF;
877 IF p_validation_level >= JTF_PLSQL_API.g_valid_level_record
878 THEN
879 Validate_Act_Rsc_Record(
880 p_act_Resource_rec => l_act_Resource_rec,
881 x_return_status => l_return_status
882 );
883
884 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
885 RAISE FND_API.G_EXC_ERROR;
886 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
887 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
888 END IF;
889
890 END IF;
891
892 -------------------- finish --------------------------
893 FND_MSG_PUB.count_and_get(
894 p_encoded => FND_API.g_false,
895 p_count => x_msg_count,
896 p_data => x_msg_data
897 );
898 EXCEPTION
899 WHEN FND_API.G_EXC_ERROR THEN
900 x_return_status := FND_API.G_RET_STS_ERROR ;
901 FND_MSG_PUB.Count_AND_Get
902 ( p_count => x_msg_count,
903 p_data => x_msg_data,
904 p_encoded => FND_API.G_FALSE
905 );
906 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
907 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
908 FND_MSG_PUB.Count_AND_Get
909 ( p_count => x_msg_count,
910 p_data => x_msg_data,
911 p_encoded => FND_API.G_FALSE
912 );
913 WHEN OTHERS THEN
914 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
915 IF FND_MSG_PUB.Check_Msg_Level ( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR )
916 THEN
917 FND_MSG_PUB.Add_Exc_Msg( G_PACKAGE_NAME,l_api_name);
918 END IF;
919
920 FND_MSG_PUB.Count_AND_Get
921 ( p_count => x_msg_count,
922 p_data => x_msg_data,
923 p_encoded => FND_API.G_FALSE
924 );
925 END Validate_Act_Resource;
926
927 /*****************************************************************************************/
928 -- PROCEDURE
929 -- check_Act_Rsc_uk_items
930 --
931 -- HISTORY
932 -- 02/20/2002 gmadana Created.
933 /*****************************************************************************************/
934 PROCEDURE check_Act_Rsc_uk_items(
935 p_act_Resource_rec IN act_Resource_rec_type,
936 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
937 x_return_status OUT NOCOPY VARCHAR2
938 )
939 IS
940 l_valid_flag VARCHAR2(1);
941 l_dummy NUMBER;
942
943 BEGIN
944 x_return_status := FND_API.g_ret_sts_success;
945
946 -- For create_act_resource, when activity_resource_id is passed in, we need to
947 -- check if this activity_resource_id is unique.
948
949 IF p_validation_mode = JTF_PLSQL_API.g_create
950 AND p_act_Resource_rec.activity_resource_id IS NOT NULL
951 THEN
952 IF AMS_Utility_PVT.check_uniqueness(
953 'ams_act_resources_v',
954 'activity_resource_id = ' || p_act_Resource_rec.activity_resource_id
955 ) = FND_API.g_false
956 THEN
957 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
958 FND_MESSAGE.set_name('AMS', 'AMS_RES_DUPLICATE_ID');
959 FND_MSG_PUB.add;
960 END IF;
961 x_return_status := FND_API.g_ret_sts_error;
962 RETURN;
963 END IF;
964 END IF;
965
966
967
968
969 END check_Act_Rsc_uk_items;
970
971 /*****************************************************************************************/
972 -- PROCEDURE
973 -- check_Act_Rsc_req_items
974 --
975 -- HISTORY
976 -- 02/20/2002 gmadana Created.
977 /*****************************************************************************************/
978 PROCEDURE check_Act_Rsc_req_items(
979 p_act_Resource_rec IN act_Resource_rec_type,
980 x_return_status OUT NOCOPY VARCHAR2
981 )
982 IS
983
984 l_coordinator_id NUMBER;
985
986 CURSOR c_primary_coordinator(l_session_id IN NUMBER) IS
987 SELECT coordinator_id
988 FROM ams_agendas_v
989 WHERE agenda_id = l_session_id;
990
991 BEGIN
992
993 x_return_status := FND_API.g_ret_sts_success;
994
995
996 ------------------------ user_status_id --------------------------
997 IF (p_act_Resource_rec.user_status_id IS NULL OR
998 p_act_Resource_rec.user_status_id = FND_API.g_miss_num)
999 THEN
1000 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1001 FND_MESSAGE.set_name('AMS', 'AMS_EVO_NO_USER_STATUS_ID');
1002 FND_MSG_PUB.add;
1003 END IF;
1004 x_return_status := FND_API.g_ret_sts_error;
1005 END IF;
1006
1007 ------------------------ application_id --------------------------
1008 /* IF (p_act_Resource_rec.application_id IS NULL OR
1009 p_act_Resource_rec.application_id = FND_API.g_miss_num)
1010 THEN
1011 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1012 FND_MESSAGE.set_name('AMS', 'AMS_API_NO_APPLICATION_ID');
1013 FND_MSG_PUB.add;
1014 END IF;
1015 x_return_status := FND_API.g_ret_sts_error;
1016 RETURN;
1017 END IF; */
1018
1019 ------------------------ resource_id--------------------------
1020 IF (p_act_Resource_rec.resource_id IS NULL OR
1021 p_act_Resource_rec.resource_id = FND_API.g_miss_num)
1022 THEN
1023 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1024 FND_MESSAGE.set_name('AMS', 'AMS_ACT_RSC_NO_RESOURCE_ID');
1025 FND_MSG_PUB.add;
1026 END IF;
1027 x_return_status := FND_API.g_ret_sts_error;
1028 RETURN;
1029 ELSE
1030 /* The Session coordinator cannot be booked again at Resource level as
1031 coordinator.
1032 */
1033 OPEN c_primary_coordinator(p_act_Resource_rec.act_resource_used_by_id);
1034 FETCH c_primary_coordinator INTO l_coordinator_id;
1035 CLOSE c_primary_coordinator;
1036
1037 IF( l_coordinator_id = p_act_Resource_rec.resource_id AND p_act_Resource_rec.role_cd = 'COORDINATOR')
1038 THEN
1039 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1040 FND_MESSAGE.set_name('AMS', 'AMS_SAME_COORDINATOR_PRESENT');
1041 FND_MSG_PUB.add;
1042 END IF;
1043 x_return_status := FND_API.g_ret_sts_error;
1044 RETURN;
1045 END IF;
1046 END IF;
1047
1048 ------------------------ role_cd--------------------------
1049 IF (p_act_Resource_rec.role_cd IS NULL OR
1050 p_act_Resource_rec.role_cd = FND_API.g_miss_char)
1051 THEN
1052 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1053 FND_MESSAGE.set_name('AMS', 'AMS_NO_ROLE_CD');
1054 FND_MSG_PUB.add;
1055 END IF;
1056 x_return_status := FND_API.g_ret_sts_error;
1057 RETURN;
1058 END IF;
1059
1060 ------------ ACT_RESOURCE_USED_BY_ID -------------------------------------
1061 IF (p_act_Resource_rec.act_resource_used_by_id = FND_API.G_MISS_NUM OR
1062 p_act_Resource_rec.act_resource_used_by_id IS NULL)
1063 THEN
1064 IF FND_MSG_PUB.check_msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1065 THEN
1066 FND_MESSAGE.set_name('AMS', 'AMS_ACT_RSC_NO_USEDBYID');
1067 FND_MSG_PUB.add;
1068 END IF;
1069 x_return_status := FND_API.G_RET_STS_ERROR;
1070 RETURN;
1071 END IF;
1072
1073 ------------ ACT_RESOURCE_USED_BY_ -------------------------------------
1074 IF (p_act_Resource_rec.ARC_ACT_RESOURCE_USED_BY = FND_API.G_MISS_CHAR OR
1075 p_act_Resource_rec.ARC_ACT_RESOURCE_USED_BY IS NULL)
1076 THEN
1077 -- missing required fields
1078 IF FND_MSG_PUB.check_msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1079 THEN -- MMSG
1080 FND_MESSAGE.set_name('AMS', 'AMS_ACT_RSC_NO_USEDBY');
1081 FND_MSG_PUB.add;
1082 END IF;
1083 x_return_status := FND_API.G_RET_STS_ERROR;
1084 -- If any error happens abort API.
1085 RETURN;
1086 END IF;
1087
1088
1089 END check_Act_Rsc_req_items;
1090
1091
1092 /*****************************************************************************************/
1093 -- PROCEDURE
1094 -- check_Act_Rsc_fk_items
1095 --
1096 -- HISTORY
1097 -- 02/20/2002 gmadana Created.
1098 /*****************************************************************************************/
1099 PROCEDURE check_Act_Rsc_fk_items(
1100 p_act_Resource_rec IN act_Resource_rec_type,
1101 x_return_status OUT NOCOPY VARCHAR2
1102 )
1103 IS
1104 l_table_name VARCHAR2(30);
1105 l_pk_name VARCHAR2(30);
1106 l_pk_value VARCHAR2(30);
1107 l_pk_data_type NUMBER;
1108 l_additional_where_clause VARCHAR2(4000);
1109 l_where_clause VARCHAR2(80) := NULL;
1110
1111 BEGIN
1112 x_return_status := FND_API.g_ret_sts_success;
1113
1114
1115 /*--------------------- application_id ------------------------
1116 IF p_act_Resource_rec.application_id <> FND_API.g_miss_num AND
1117 p_act_Resource_rec.application_id is NOT NULL
1118 THEN
1119 IF AMS_Utility_PVT.check_fk_exists(
1120 'fnd_application',
1121 'application_id',
1122 p_act_Resource_rec.application_id
1123 ) = FND_API.g_false
1124 THEN
1125 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1126 THEN
1127 FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_APP_ID');
1128 FND_MSG_PUB.add;
1129 END IF;
1130 x_return_status := FND_API.g_ret_sts_error;
1131 RETURN;
1132 END IF;
1133 END IF; */
1134
1135 ----------------------- user_status_id ------------------------
1136 IF p_act_Resource_rec.user_status_id <> FND_API.g_miss_num
1137 AND p_act_Resource_rec.user_status_id IS NOT NULL THEN
1138 IF AMS_Utility_PVT.check_fk_exists(
1139 'ams_user_statuses_b',
1140 'user_status_id',
1141 p_act_Resource_rec.user_status_id
1142 ) = FND_API.g_false
1143 THEN
1144 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1145 THEN
1146 FND_MESSAGE.set_name('AMS', 'AMS_EVO_BAD_USER_ST_ID');
1147 FND_MSG_PUB.add;
1148 END IF;
1149
1150 x_return_status := FND_API.g_ret_sts_error;
1151 RETURN;
1152 END IF;
1153 END IF;
1154
1155 --------------- RESOURCE_ID -------------------------
1156 IF p_act_Resource_rec.resource_id <> FND_API.g_miss_num
1157 THEN
1158 l_table_name := 'HZ_PARTIES';
1159 l_pk_name := 'PARTY_ID';
1160 l_pk_value := p_act_Resource_rec.resource_id;
1161 IF AMS_Utility_PVT.Check_FK_Exists (
1162 p_table_name => l_table_name
1163 ,p_pk_name => l_pk_name
1164 ,p_pk_value => l_pk_value
1165 ) = FND_API.G_FALSE
1166 THEN
1167 IF FND_MSG_PUB.check_msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1168 THEN
1169 FND_MESSAGE.set_name('AMS', 'AMS_ACT_RSC_BAD_RESOURCE');
1170 FND_MSG_PUB.add;
1171 END IF;
1172 x_return_status := FND_API.G_RET_STS_ERROR;
1173 -- If any errors happen abort API/Procedure.
1174 RETURN;
1175 END IF; -- check_fk_exists
1176 END IF;
1177
1178 ---------- ACT_RESOURCE_USED_BY_ID-----------------------------
1179 IF p_act_resource_rec.ACT_RESOURCE_USED_BY_ID <> FND_API.g_miss_num
1180 THEN
1181 IF p_act_Resource_rec.arc_act_resource_used_by ='SESSION'
1182 THEN
1183 l_table_name := 'AMS_AGENDAS_B';
1184 l_pk_name := 'AGENDA_ID';
1185 ELSIF (p_act_Resource_rec.arc_act_resource_used_by = 'EVEO' OR p_act_Resource_rec.arc_act_resource_used_by = 'EONE')
1186 THEN
1187 l_table_name := 'AMS_EVENT_OFFERS_ALL_B';
1188 l_pk_name := 'EVENT_OFFER_ID';
1189 END IF;
1190
1191 l_pk_value := p_act_Resource_rec.act_resource_used_by_id;
1192 IF AMS_Utility_PVT.Check_FK_Exists (
1193 p_table_name => l_table_name
1194 ,p_pk_name => l_pk_name
1195 ,p_pk_value => l_pk_value
1196 ) = FND_API.G_FALSE
1197 THEN
1198 IF FND_MSG_PUB.check_msg_level (FND_MSG_PUB.G_MSG_LVL_ERROR)
1199 THEN
1200 FND_MESSAGE.set_name('AMS', 'AMS_ACT_RSC_INVALID_REFERENCE');
1201 FND_MSG_PUB.add;
1202 END IF;
1203 x_return_status := FND_API.G_RET_STS_ERROR;
1204 -- If any errors happen abort API/Procedure.
1205 RETURN;
1206 END IF; -- check_fk_exists
1207 END IF;
1208
1209 END check_Act_Rsc_fk_items;
1210
1211 /*****************************************************************************************/
1212 -- PROCEDURE
1213 -- check_Act_Rsc_lookup_items
1214 --
1215 -- HISTORY
1216 -- 02/20/2002 gmadana Created.
1217 /*****************************************************************************************/
1218 PROCEDURE check_Act_Rsc_lookup_items(
1219 p_act_Resource_rec IN act_Resource_rec_type,
1220 x_return_status OUT NOCOPY VARCHAR2
1221 )
1222 IS
1223 BEGIN
1224
1225 x_return_status := FND_API.g_ret_sts_success;
1226
1227 ----------------------- role_code ------------------------
1228 IF p_act_Resource_rec.role_cd <> FND_API.g_miss_char
1229 AND p_act_Resource_rec.role_cd IS NOT NULL
1230 THEN
1231 IF AMS_Utility_PVT.check_lookup_exists(
1232 p_lookup_type => 'AMS_EVENT_ROLE',
1233 p_lookup_code => p_act_Resource_rec.role_cd
1234 ) = FND_API.g_false
1235 THEN
1236 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1237 THEN
1238 FND_MESSAGE.set_name('AMS', 'AMS_BAD_ROLE_TYPE');
1239 FND_MSG_PUB.add;
1240 END IF;
1241 x_return_status := FND_API.g_ret_sts_error;
1242 RETURN;
1243 END IF;
1244 END IF;
1245
1246 ----------------------- status ------------------------
1247 IF p_act_Resource_rec.system_status_code <> FND_API.g_miss_char
1248 AND p_act_Resource_rec.system_status_code IS NOT NULL
1249 THEN
1250 IF AMS_Utility_PVT.check_lookup_exists(
1251 p_lookup_type => 'AMS_EVENT_AGENDA_STATUS',
1252 p_lookup_code => p_act_Resource_rec.system_status_code
1253 ) = FND_API.g_false
1254 THEN
1255 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1256 THEN
1257 FND_MESSAGE.set_name('AMS', 'AMS_EVENT_BAD_USER_STATUS');
1258 FND_MSG_PUB.add;
1259 END IF;
1260 x_return_status := FND_API.g_ret_sts_error;
1261 RETURN;
1262 END IF;
1263 END IF;
1264
1265 ---------------- ARC_ACT_RESOURCE_USED_BY ------------
1266 IF p_act_Resource_rec.ARC_ACT_RESOURCE_USED_BY <> FND_API.g_miss_char THEN
1267 IF AMS_Utility_PVT.check_lookup_exists(
1268 p_lookup_type => 'AMS_SYS_ARC_QUALIFIER',
1269 p_lookup_code => p_act_Resource_rec.ARC_ACT_RESOURCE_USED_BY
1270 ) = FND_API.g_false
1271 THEN
1272 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1273 THEN
1274 FND_MESSAGE.set_name('AMS', 'AMS_ACT_RSC_BAD_SYS_ARC');
1275 FND_MSG_PUB.add;
1276 END IF;
1277 x_return_status := FND_API.g_ret_sts_error;
1278 RETURN;
1279 END IF;
1280 END IF;
1281
1282
1283 END check_Act_Rsc_lookup_items;
1284
1285
1286 /*****************************************************************************************/
1287 -- PROCEDURE
1288 -- check_Act_Rsc_flag_items
1289 --
1290 -- HISTORY
1291 -- 02/20/2002 gmadana Created
1292 /*****************************************************************************************/
1293
1294 PROCEDURE check_Act_Rsc_flag_items(
1295 p_act_Resource_rec IN act_Resource_rec_type,
1296 x_return_status OUT NOCOPY VARCHAR2
1297 )
1298 IS
1299 BEGIN
1300
1301 x_return_status := FND_API.g_ret_sts_success;
1302
1303
1304 ----------------------- primary_flag ------------------------
1305 /* IF p_act_Resource_rec.primary_flag <> FND_API.g_miss_char
1306 AND p_act_Resource_rec.primary_flag IS NOT NULL
1307 THEN
1308 IF AMS_Utility_PVT.is_Y_or_N(p_act_Resource_rec.primary_flag) = FND_API.g_false
1309 THEN
1310 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1311 THEN
1312 FND_MESSAGE.set_name('AMS', 'AMS_OBJ_BAD_PRIMARY_FLAG');
1313 FND_MSG_PUB.add;
1314 END IF;
1315 x_return_status := FND_API.g_ret_sts_error;
1316 RETURN;
1317 END IF;
1318 END IF; */
1319
1320
1321 END check_Act_Rsc_flag_items;
1322
1323 /*****************************************************************************************/
1324 --
1325 -- NAME
1326 -- Validate_Act_Resource_Items
1327 --
1328 -- PURPOSE
1329 -- This procedure is to validate Resource items
1330 --
1331 /*****************************************************************************************/
1332
1333 PROCEDURE Validate_Act_Resource_Items
1334 ( p_act_Resource_rec IN act_Resource_rec_type,
1335 p_validation_mode IN VARCHAR2 := JTF_PLSQL_API.g_create,
1336 x_return_status OUT NOCOPY VARCHAR2
1337 ) IS
1338
1339 l_table_name VARCHAR2(30);
1340 l_pk_name VARCHAR2(30);
1341 l_pk_value VARCHAR2(30);
1342 l_where_clause VARCHAR2(2000);
1343 l_start_date DATE;
1344 l_end_date DATE;
1345 l_resource_id NUMBER;
1346 l_res_start_date DATE;
1347 l_res_end_date DATE;
1348 l_parent_start_date DATE;
1349 l_parent_end_date DATE;
1350 l_event_start_date DATE;
1351 l_event_end_date DATE;
1352 l_count NUMBER;
1353
1354 /* Commented Out
1355 l_res_start_time DATE;
1356 l_res_end_time DATE;
1357 l_parent_start_time DATE;
1358 l_parent_end_time DATE;
1359 */
1360
1361 CURSOR get_session_date (id_in in NUMBER,type_in IN VARCHAR2)is
1362 SELECT start_date_time, end_date_time
1363 FROM AMS_agendas_b
1364 WHERE agenda_id = id_in
1365 AND agenda_TYPE = type_in;
1366
1367 CURSOR get_event_date (id_in in NUMBER,type_in IN VARCHAR2)is
1368 SELECT event_start_date_time, event_end_date_time
1369 FROM ams_event_offers_all_b
1370 WHERE event_offer_id = id_in
1371 AND event_object_type = type_in;
1372
1373 CURSOR c_event_status IS
1374 SELECT count(event_offer_id)
1375 FROM ams_event_offers_all_b
1376 WHERE system_status_code IN ('COMPLETED', 'CANCELLED', 'ON_HOLD','ARCHIVED','CLOSED')
1377 AND event_offer_id = p_act_Resource_rec.act_resource_used_by_id;
1378
1379 CURSOR c_parent_status IS
1380 SELECT count(event_offer_id)
1381 FROM ams_event_offers_all_b
1382 WHERE system_status_code IN ('COMPLETED', 'CANCELLED', 'ON_HOLD','ARCHIVED','CLOSED')
1383 AND event_offer_id = ( SELECT parent_id
1384 FROM ams_agendas_b
1385 WHERE agenda_id = ( SELECT parent_id
1386 FROM ams_agendas_b
1387 WHERE agenda_id = p_act_Resource_rec.act_resource_used_by_id));
1388
1389
1390 BEGIN
1391 -- Initialize API/Procedure return status to success
1392 x_return_status := FND_API.G_RET_STS_SUCCESS;
1393
1394 IF(p_act_Resource_rec.arc_act_resource_used_by = 'SESSION')
1395 THEN
1396 OPEN get_session_date(p_act_Resource_rec.act_resource_used_by_id,p_act_Resource_rec.arc_act_resource_used_by);
1397 FETCH get_session_date into l_parent_start_date, l_parent_end_date;
1398 CLOSE get_session_date;
1399
1403
1400 OPEN c_parent_status;
1401 FETCH c_parent_status INTO l_count;
1402 CLOSE c_parent_status;
1404 IF(l_count > 0)
1405 THEN
1406 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR)
1407 THEN
1408 Fnd_Message.set_name('AMS', 'AMS_NO_RESOURCE');
1409 Fnd_Msg_Pub.ADD;
1410 END IF;
1411 RAISE FND_API.g_exc_error;
1412 END IF;
1413
1414 IF p_act_Resource_rec.start_date_time < l_parent_start_date
1415 THEN
1416 FND_MESSAGE.set_name('AMS', 'AMS_RES_STTIME_LS_SES_STTIME');
1417 FND_MSG_PUB.add;
1418 RAISE FND_API.g_exc_error;
1419 ELSIF p_act_Resource_rec.end_date_time > l_parent_end_date
1420 THEN
1421 FND_MESSAGE.set_name('AMS', 'AMS_RES_EDTIME_GT_SES_EDTIME');
1422 FND_MSG_PUB.add;
1423 RAISE FND_API.g_exc_error;
1424 END IF;
1425
1426 ELSIF(p_act_Resource_rec.arc_act_resource_used_by = 'EVEO'
1427 OR p_act_Resource_rec.arc_act_resource_used_by = 'EONE')
1428 THEN
1429 OPEN get_event_date(p_act_Resource_rec.act_resource_used_by_id,p_act_Resource_rec.arc_act_resource_used_by);
1430 FETCH get_event_date into l_parent_start_date, l_parent_end_date;
1431 CLOSE get_event_date;
1432
1433 OPEN c_event_status;
1434 FETCH c_event_status INTO l_count;
1435 CLOSE c_event_status;
1436
1437 IF(l_count > 0)
1438 THEN
1439 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.G_MSG_LVL_ERROR)
1440 THEN
1441 Fnd_Message.set_name('AMS', 'AMS_NO_RESOURCE');
1442 Fnd_Msg_Pub.ADD;
1443 END IF;
1444 RAISE FND_API.g_exc_error;
1445 END IF;
1446
1447 l_res_start_date := TO_DATE(TO_CHAR(p_act_Resource_rec.start_date_time,'DD:MM:YYYY'),'DD:MM:YYYY');
1448 l_res_end_date := TO_DATE(TO_CHAR(p_act_Resource_rec.end_date_time,'DD:MM:YYYY'),'DD:MM:YYYY');
1449 l_start_date := TO_DATE(TO_CHAR(l_parent_start_date,'DD:MM:YYYY'),'DD:MM:YYYY');
1450 l_end_date := TO_DATE(TO_CHAR(l_parent_end_date,'DD:MM:YYYY'),'DD:MM:YYYY');
1451
1452 IF l_res_start_date < l_start_date
1453 THEN
1454 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1455 THEN
1456 FND_MESSAGE.set_name('AMS', 'AMS_RES_SD_GT_PRNT_SD');
1457 FND_MSG_PUB.add;
1458 END IF;
1459 x_return_status := FND_API.g_ret_sts_error;
1460 RETURN;
1461 ELSIF l_res_start_date > l_end_date
1462 THEN
1463 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1464 THEN
1465 FND_MESSAGE.set_name('AMS', 'AMS_RES_SD_ST_PRNT_ED');
1466 FND_MSG_PUB.add;
1467 END IF;
1468 x_return_status := FND_API.g_ret_sts_error;
1469 RETURN;
1470 ELSIF l_res_start_date = l_start_date
1471 THEN
1472 IF ( TO_CHAR(p_act_Resource_rec.start_date_time,'HH24:MI') <> '00:00'
1473 AND
1474 TO_CHAR(l_parent_start_date,'HH24:MI') <> '00:00'
1475 AND p_act_Resource_rec.start_date_time < l_parent_start_date )
1476 THEN
1477 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1478 THEN
1479 FND_MESSAGE.set_name('AMS', 'AMS_RES_STTIME_LS_EVN_STTIME');
1480 FND_MSG_PUB.add;
1481 END IF;
1482 x_return_status := FND_API.g_ret_sts_error;
1483 RETURN;
1484 END IF;
1485 END IF;
1486
1487 IF l_res_end_date < l_start_date
1488 THEN
1489 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1490 THEN
1491 FND_MESSAGE.set_name('AMS', 'AMS_RES_ED_GT_PRNT_SD');
1492 FND_MSG_PUB.add;
1493 END IF;
1494 x_return_status := FND_API.g_ret_sts_error;
1495 RETURN;
1496 ELSIF l_res_end_date > l_end_date
1497 THEN
1498 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1499 FND_MESSAGE.set_name('AMS', 'AMS_RES_ED_LT_PRNT_ED');
1500 FND_MSG_PUB.add;
1501 END IF;
1502 x_return_status := FND_API.g_ret_sts_error;
1503 RETURN;
1504 ELSIF l_res_end_date = l_end_date
1505 THEN
1506 IF (TO_CHAR(p_act_Resource_rec.end_date_time,'HH24:MI') <> '00:00'
1507 AND
1508 TO_CHAR(l_parent_end_date,'HH24:MI') <> '00:00'
1509 AND p_act_Resource_rec.end_date_time > l_parent_end_date)
1510 THEN
1511 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1512 THEN
1513 FND_MESSAGE.set_name('AMS', 'AMS_RES_EDTIME_GT_EVN_EDTIME');
1514 FND_MSG_PUB.add;
1515 END IF;
1516 x_return_status := FND_API.g_ret_sts_error;
1517 RETURN;
1518 END IF;
1519 END IF;
1520
1521 END IF;
1522
1523
1524 /* Commented OUT NOCOPY
1525 l_res_start_time := TO_DATE(TO_CHAR(p_act_Resource_rec.start_date_time,'HH24:MI'),'HH24:MI');
1526 l_res_end_time := TO_DATE(TO_CHAR(p_act_Resource_rec.end_date_time,'HH24:MI'),'HH24:MI');
1527 l_parent_start_time := TO_DATE(TO_CHAR(l_event_start_date,'HH24:MI'),'HH24:MI');
1528 l_parent_end_time := TO_DATE(TO_CHAR(l_event_end_date,'HH24:MI'),'HH24:MI');
1529 IF (AMS_DEBUG_HIGH_ON) THEN
1530
1531 AMS_UTILITY_PVT.debug_message('Resource Start Time' || TO_CHAR(l_res_start_time,'DD-MM-YYYY HH24:MI') );
1532 END IF;
1533 IF (AMS_DEBUG_HIGH_ON) THEN
1534
1535 AMS_UTILITY_PVT.debug_message('Resource End Time' || TO_CHAR(l_res_end_time,'DD-MM-YYYY HH24:MI') );
1536 END IF;
1537 IF (AMS_DEBUG_HIGH_ON) THEN
1538
1539 AMS_UTILITY_PVT.debug_message('Parent Start Time' || TO_CHAR(l_parent_start_time,'DD-MM-YYYY HH24:MI') || TO_CHAR(l_event_start_date,'DD-MM-YYYY HH24:MI'));
1540 END IF;
1541 IF (AMS_DEBUG_HIGH_ON) THEN
1542
1543 AMS_UTILITY_PVT.debug_message('Parent End Time' || TO_CHAR(l_parent_End_time,'DD-MM-YYYY HH24:MI') || TO_CHAR(l_event_end_date,'DD-MM-YYYY HH24:MI'));
1544 END IF;
1545 */
1546
1547
1548 --------------------------------------Create mode--------------------------
1549 IF (AMS_DEBUG_HIGH_ON) THEN
1550
1551 AMS_UTILITY_PVT.debug_message('Checking uk_items');
1552 END IF;
1553 check_Act_Rsc_uk_items(
1554 p_act_Resource_rec => p_act_Resource_rec,
1555 p_validation_mode => p_validation_mode,
1556 x_return_status => x_return_status
1557 );
1558
1559 -------------------------- Create or Update Mode ----------------------------
1560 IF (AMS_DEBUG_HIGH_ON) THEN
1561
1562 AMS_UTILITY_PVT.debug_message('Checking req_items');
1563 END IF;
1564 check_Act_Rsc_req_items(
1565 p_act_Resource_rec => p_act_Resource_rec,
1566 x_return_status => x_return_status
1567 );
1568
1569 IF x_return_status <> FND_API.g_ret_sts_success THEN
1570 RETURN;
1571 END IF;
1572
1573 IF (AMS_DEBUG_HIGH_ON) THEN
1574
1575
1576
1577 AMS_UTILITY_PVT.debug_message('Checking fk_items');
1578
1579 END IF;
1580 check_Act_Rsc_fk_items(
1581 p_act_Resource_rec => p_act_Resource_rec,
1582 x_return_status => x_return_status
1583 );
1584 IF x_return_status <> FND_API.g_ret_sts_success THEN
1585 RETURN;
1586 END IF;
1587
1588 IF (AMS_DEBUG_HIGH_ON) THEN
1589
1590
1591
1592 AMS_UTILITY_PVT.debug_message('Checking lookup_items');
1593
1594 END IF;
1595 check_Act_Rsc_lookup_items(
1596 p_act_Resource_rec => p_act_Resource_rec,
1597 x_return_status => x_return_status
1598 );
1599 IF x_return_status <> FND_API.g_ret_sts_success THEN
1600 RETURN;
1601 END IF;
1602
1603 IF (AMS_DEBUG_HIGH_ON) THEN
1604
1605
1606
1607 AMS_UTILITY_PVT.debug_message('Checking flag_items');
1608
1609 END IF;
1610 check_Act_Rsc_flag_items(
1611 p_act_Resource_rec => p_act_Resource_rec,
1612 x_return_status => x_return_status
1613 );
1614 IF x_return_status <> FND_API.g_ret_sts_success THEN
1615 RETURN;
1616 END IF;
1617
1618
1619 /* The End Time has to be greater than Start Time */
1620 IF ( p_act_Resource_rec.start_date_time > p_act_Resource_rec.end_date_time)
1621 THEN
1622 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
1623 THEN
1624 FND_MESSAGE.set_name('AMS', 'AMS_EDTIME_LS_STTIME');
1625 FND_MSG_PUB.add;
1626 END IF;
1627 x_return_status := FND_API.g_ret_sts_error;
1628 RETURN;
1629 END IF;
1630
1631 IF (AMS_DEBUG_HIGH_ON) THEN
1632
1633
1634
1635 AMS_UTILITY_PVT.debug_message('Checking Resource is already booked');
1636
1637 END IF;
1638 check_Resource_booked(
1639 p_act_Resource_rec => p_act_Resource_rec,
1640 p_validation_mode => p_validation_mode,
1641 x_return_status => x_return_status
1642 );
1643 IF x_return_status <> FND_API.g_ret_sts_success THEN
1644 RETURN;
1645 END IF;
1646
1647
1648 END Validate_Act_Resource_Items;
1649
1650
1651 /*****************************************************************************************/
1652 -- Start of Comments
1653 --
1654 -- NAME
1655 -- Validate_Act_Rsc_Record
1656 --
1657 -- PURPOSE
1658 -- This procedure is to validate resource record
1659 --
1660 -- NOTES
1661 --
1662 /*****************************************************************************************/
1663
1664 PROCEDURE Validate_Act_Rsc_Record(
1665 p_act_Resource_rec IN act_Resource_rec_type,
1666 x_return_status OUT NOCOPY VARCHAR2
1667 ) IS
1668
1669 l_api_name CONSTANT VARCHAR2(30) := 'Validate_Act_Rsc_Record';
1670 l_api_version CONSTANT NUMBER := 1.0;
1671 l_return_status VARCHAR2(1);
1672 l_count NUMBER := 0;
1673
1674 BEGIN
1675 -- Standard call to check for call compatibility.
1676 IF NOT FND_API.Compatible_API_Call ( l_api_version,
1677 l_api_version,
1678 l_api_name,
1679 G_PACKAGE_NAME)
1680 THEN
1681 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1682 END IF;
1683
1684 /* dbiswas commented out the following section of if then else code for bug 2924115 on 28-Apr-2003
1685 IF (p_act_Resource_rec.role_cd = 'COORDINATOR' AND
1686 p_act_Resource_rec.system_status_code = 'CONFIRMED')
1687 THEN
1688 BEGIN
1689
1690 SELECT 1 into l_count
1691 FROM ams_act_resources_v
1692 WHERE act_resource_used_by_id = p_act_Resource_rec.act_resource_used_by_id
1693 AND arc_act_resource_used_by = p_act_Resource_rec.arc_act_resource_used_by
1694 AND resource_id = p_act_Resource_rec.resource_id
1695 AND system_status_code = 'CONFIRMED'
1696 -- AND system_status_code = p_act_Resource_rec.system_status_code
1697 AND
1698 (start_date_time BETWEEN p_act_Resource_rec.start_date_time AND p_act_Resource_rec.end_date_time
1699 OR
1700 end_date_time BETWEEN p_act_Resource_rec.start_date_time AND p_act_Resource_rec.end_date_time
1701 OR
1702 p_act_Resource_rec.start_date_time BETWEEN start_date_time AND end_date_time);
1703
1704 EXCEPTION
1705 WHEN NO_DATA_FOUND THEN
1706 l_count := 0;
1707
1708 END;
1709
1710 IF l_count > 0
1711 THEN
1712 IF FND_MSG_PUB.check_msg_level (FND_MSG_PUB.g_msg_lvl_error)
1713 THEN
1714 FND_MESSAGE.set_name ('AMS', 'AMS_SAME_COORDINATOR_PRESENT');
1715 FND_MSG_PUB.add;
1716 END IF;
1717 x_return_status := FND_API.G_RET_STS_ERROR;
1718
1719 ELSE
1720 x_return_status := FND_API.G_RET_STS_SUCCESS;
1721 END IF;
1722
1723 END IF;
1724 end update by dbiswas on Apr 28, 2003
1725 */
1726 x_return_status := FND_API.G_RET_STS_SUCCESS;
1727
1728
1729 END Validate_Act_Rsc_Record;
1730
1731 /*****************************************************************************************/
1732 -- PROCEDURE
1733 -- init_Act_Rsc_Record
1734 --
1735 -- HISTORY
1736 -- 02/20/2002 gmadana Create.
1737 /*****************************************************************************************/
1738 PROCEDURE init_Act_Rsc_Record(
1739 x_act_Resource_rec OUT NOCOPY act_Resource_rec_type
1740 )
1741 IS
1742 BEGIN
1743
1744 x_act_Resource_rec.act_resource_used_by_id := FND_API.g_miss_num;
1745 x_act_Resource_rec.arc_act_resource_used_by := FND_API.g_miss_char;
1746 x_act_Resource_rec.resource_id := FND_API.g_miss_num;
1747 x_act_Resource_rec.role_cd := FND_API.g_miss_char;
1748 x_act_Resource_rec.user_status_id := FND_API.g_miss_num;
1749 x_act_Resource_rec.system_status_code := FND_API.g_miss_char;
1750 x_act_Resource_rec.start_date_time := FND_API.g_miss_date;
1751 x_act_Resource_rec.end_date_time := FND_API.g_miss_date;
1752 x_act_Resource_rec.last_update_date := FND_API.g_miss_date;
1753 x_act_Resource_rec.last_updated_by := FND_API.g_miss_num;
1754 x_act_Resource_rec.creation_date := FND_API.g_miss_date;
1755 x_act_Resource_rec.created_by := FND_API.g_miss_num;
1756 x_act_Resource_rec.last_update_login := FND_API.g_miss_num;
1757 x_act_Resource_rec.object_version_number := FND_API.g_miss_num;
1758 --p_act_Resource_rec.application_id := FND_API.g_miss_num;
1759 x_act_Resource_rec.description := FND_API.g_miss_char;
1760 --x_act_Resource_rec.top_level_parten_id := FND_API.g_miss_num;
1761 --x_act_Resource_rec.top_level_parent_type := FND_API.g_miss_char;
1762 x_act_Resource_rec.attribute_category := FND_API.g_miss_char;
1763 x_act_Resource_rec.attribute1 := FND_API.g_miss_char;
1764 x_act_Resource_rec.attribute2 := FND_API.g_miss_char;
1765 x_act_Resource_rec.attribute3 := FND_API.g_miss_char;
1766 x_act_Resource_rec.attribute4 := FND_API.g_miss_char;
1767 x_act_Resource_rec.attribute5 := FND_API.g_miss_char;
1768 x_act_Resource_rec.attribute6 := FND_API.g_miss_char;
1769 x_act_Resource_rec.attribute7 := FND_API.g_miss_char;
1770 x_act_Resource_rec.attribute8 := FND_API.g_miss_char;
1771 x_act_Resource_rec.attribute9 := FND_API.g_miss_char;
1772 x_act_Resource_rec.attribute10 := FND_API.g_miss_char;
1773 x_act_Resource_rec.attribute11 := FND_API.g_miss_char;
1774 x_act_Resource_rec.attribute12 := FND_API.g_miss_char;
1775 x_act_Resource_rec.attribute13 := FND_API.g_miss_char;
1776 x_act_Resource_rec.attribute14 := FND_API.g_miss_char;
1777 x_act_Resource_rec.attribute15 := FND_API.g_miss_char;
1778
1779 END init_Act_Rsc_Record;
1780
1781
1782 PROCEDURE complete_act_Resource_rec(
1783 p_act_Resource_rec IN act_Resource_rec_type,
1784 x_act_Resource_rec OUT NOCOPY act_Resource_rec_type
1785 ) IS
1786 CURSOR c_resource IS
1787 SELECT *
1788 FROM ams_act_resources
1789 WHERE activity_resource_id = p_act_Resource_rec.activity_resource_id;
1790 l_act_Resource_rec c_resource%ROWTYPE;
1791
1792 BEGIN
1793 x_act_Resource_rec := p_act_Resource_rec;
1794
1795 OPEN c_resource;
1796 FETCH c_resource INTO l_act_Resource_rec;
1797 IF c_resource%NOTFOUND THEN
1798 CLOSE c_resource;
1799 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
1800 FND_MESSAGE.set_name('AMS', 'AMS_API_RECORD_NOT_FOUND');
1801 FND_MSG_PUB.add;
1802 END IF;
1803 RAISE FND_API.g_exc_error;
1804 END IF;
1805 CLOSE c_resource;
1806
1807 /* IF p_act_Resource_rec.application_id = FND_API.g_miss_num THEN
1808 x_act_Resource_rec.application_id := l_act_Resource_rec.application_id;
1809 END IF; */
1810
1811 IF p_act_Resource_rec.created_by = FND_API.g_miss_num THEN
1812 x_act_Resource_rec.created_by := l_act_Resource_rec.created_by;
1813 END IF;
1814
1815 IF p_act_Resource_rec.creation_date = FND_API.g_miss_date THEN
1816 x_act_Resource_rec.creation_date := l_act_Resource_rec.creation_date;
1817 END IF;
1818
1819 IF p_act_Resource_rec.last_updated_by = FND_API.g_miss_num THEN
1820 x_act_Resource_rec.last_updated_by := l_act_Resource_rec.last_updated_by;
1821 END IF;
1822
1823 IF p_act_Resource_rec.last_update_date = FND_API.g_miss_date THEN
1824 x_act_Resource_rec.last_update_date := l_act_Resource_rec.last_update_date;
1825 END IF;
1826
1827
1828 IF p_act_Resource_rec.act_resource_used_by_id = FND_API.g_miss_num THEN
1829 x_act_Resource_rec.act_resource_used_by_id :=l_act_Resource_rec.act_resource_used_by_id;
1830 END IF;
1831
1832 IF p_act_Resource_rec.arc_act_resource_used_by = FND_API.g_miss_char THEN
1833 x_act_Resource_rec.arc_act_resource_used_by := l_act_Resource_rec.arc_act_resource_used_by;
1834 END IF;
1835
1836 IF p_act_Resource_rec.resource_id = FND_API.g_miss_num THEN
1837 x_act_Resource_rec.resource_id := l_act_Resource_rec.resource_id;
1838 END IF;
1839
1840 IF p_act_Resource_rec.role_cd = FND_API.g_miss_char THEN
1841 x_act_Resource_rec.role_cd := l_act_Resource_rec.role_cd;
1842 END IF;
1843
1844
1845 IF p_act_Resource_rec.user_status_id = FND_API.g_miss_num THEN
1846 x_act_Resource_rec.user_status_id := l_act_Resource_rec.user_status_id;
1847 END IF;
1848
1849 IF p_act_Resource_rec.system_status_code = FND_API.g_miss_char THEN
1850 x_act_Resource_rec.system_status_code := l_act_Resource_rec.system_status_code;
1851 END IF;
1852
1853 IF p_act_Resource_rec.start_date_time = FND_API.g_miss_date THEN
1854 x_act_Resource_rec.start_date_time := l_act_Resource_rec.start_date_time;
1855 END IF;
1856
1857 IF p_act_Resource_rec.end_date_time = FND_API.g_miss_date THEN
1858 x_act_Resource_rec.end_date_time := l_act_Resource_rec.end_date_time;
1859 END IF;
1860
1861
1862 IF p_act_Resource_rec.description = FND_API.g_miss_char THEN
1863 x_act_Resource_rec.description := l_act_Resource_rec.description;
1864 END IF;
1865
1866 /* IF p_act_Resource_rec.top_level_parten_id = FND_API.g_miss_num THEN
1867 x_act_Resource_rec.top_level_parten_id := l_act_Resource_rec.top_level_parten_id;
1868 END IF;
1869
1870 IF p_act_Resource_rec.top_level_parten_type = FND_API.g_miss_char THEN
1871 x_act_Resource_rec.top_level_parten_type := l_act_Resource_rec.top_level_parten_type;
1872 END IF;
1873 */
1874 IF p_act_Resource_rec.attribute_category = FND_API.g_miss_char THEN
1875 x_act_Resource_rec.attribute_category := l_act_Resource_rec.attribute_CATEGORY;
1876 END IF;
1877
1878 IF p_act_Resource_rec.attribute1 = FND_API.g_miss_char THEN
1879 x_act_Resource_rec.attribute1 := l_act_Resource_rec.attribute1;
1880 END IF;
1881
1882 IF p_act_Resource_rec.attribute2 = FND_API.g_miss_char THEN
1883 x_act_Resource_rec.attribute2 := l_act_Resource_rec.attribute2;
1884 END IF;
1885
1886 IF p_act_Resource_rec.attribute3 = FND_API.g_miss_char THEN
1887 x_act_Resource_rec.attribute3 := l_act_Resource_rec.attribute3;
1888 END IF;
1889
1890 IF p_act_Resource_rec.attribute4 = FND_API.g_miss_char THEN
1891 x_act_Resource_rec.attribute4 := l_act_Resource_rec.attribute4;
1892 END IF;
1893
1894 IF p_act_Resource_rec.attribute5 = FND_API.g_miss_char THEN
1895 x_act_Resource_rec.attribute5 := l_act_Resource_rec.attribute5;
1896 END IF;
1897
1898 IF p_act_Resource_rec.attribute6 = FND_API.g_miss_char THEN
1899 x_act_Resource_rec.attribute6 := l_act_Resource_rec.attribute6;
1900 END IF;
1901
1902 IF p_act_Resource_rec.attribute7 = FND_API.g_miss_char THEN
1903 x_act_Resource_rec.attribute7 := l_act_Resource_rec.attribute7;
1904 END IF;
1905
1906 IF p_act_Resource_rec.attribute8 = FND_API.g_miss_char THEN
1907 x_act_Resource_rec.attribute8 := l_act_Resource_rec.attribute8;
1908 END IF;
1909
1910 IF p_act_Resource_rec.attribute9 = FND_API.g_miss_char THEN
1911 x_act_Resource_rec.attribute9 := l_act_Resource_rec.attribute9;
1912 END IF;
1913
1914 IF p_act_Resource_rec.attribute10 = FND_API.g_miss_char THEN
1915 x_act_Resource_rec.attribute10 := l_act_Resource_rec.attribute10;
1916 END IF;
1917
1918 IF p_act_Resource_rec.attribute11 = FND_API.g_miss_char THEN
1919 x_act_Resource_rec.attribute11 := l_act_Resource_rec.attribute11;
1920 END IF;
1921
1922 IF p_act_Resource_rec.attribute11 = FND_API.g_miss_char THEN
1923 x_act_Resource_rec.attribute11 := l_act_Resource_rec.attribute11;
1924 END IF;
1925
1926 IF p_act_Resource_rec.attribute12 = FND_API.g_miss_char THEN
1927 x_act_Resource_rec.attribute12 := l_act_Resource_rec.attribute12;
1928 END IF;
1929
1930 IF p_act_Resource_rec.attribute13 = FND_API.g_miss_char THEN
1931 x_act_Resource_rec.attribute13 := l_act_Resource_rec.attribute13;
1932 END IF;
1933
1934 IF p_act_Resource_rec.attribute14 = FND_API.g_miss_char THEN
1935 x_act_Resource_rec.attribute14 := l_act_Resource_rec.attribute14;
1936 END IF;
1937
1938 IF p_act_Resource_rec.attribute15 = FND_API.g_miss_char THEN
1939 x_act_Resource_rec.attribute15 := l_act_Resource_rec.attribute15;
1940 END IF;
1941
1942 END complete_act_Resource_rec;
1943
1944
1945 /*****************************************************************************************/
1946 -- Check_Resource_Booked
1947 -- 02/22/2002 gmadana created.
1948 --
1949 -- This Procedure checks whether the requested resource is already booked.
1950 -- If we are adding resource for a Session, then we have to check whether
1951 -- that resource is added to any Session (all across) or to any Event other
1952 -- than the event for which that session is created.
1953 -- If we are updating resource for a Session, then we have to check whether
1954 -- that resource is added to any Session (all across except itself) or to
1955 -- any Event other than the event for which that session is created.
1956 -- If we are adding a resouce to EVEO/EONE, then you have to check whether that
1957 -- resource is attached to any Event (all across) or to any Sessions which are
1958 -- created for other Events than itself
1959 -- If we are updating a resouce to EVEO/EONE, then you have to check whether that
1960 -- resource is attached to any Event (all across except itself) or to any Sessions
1961 -- which are created for other Events than itself
1962 /*****************************************************************************************/
1963
1964 PROCEDURE Check_Resource_Booked (
1965 p_act_Resource_rec IN act_Resource_rec_Type,
1966 p_validation_mode IN VARCHAR2,
1967 x_return_status OUT NOCOPY VARCHAR2
1968 )
1969 IS
1970 l_start_date DATE;
1971 l_end_date DATE;
1972 l_track_id NUMBER;
1973 l_event_id NUMBER;
1974 l_session_id NUMBER;
1975 l_count NUMBER := 0;
1976 l_event_type VARCHAR2(15);
1977
1978
1979 CURSOR C_check_sessions_create(id_in IN NUMBER) IS
1980 SELECT count(*)
1981 FROM ams_act_resources
1982 WHERE resource_id = id_in
1983 AND arc_act_resource_used_by = 'SESSION'
1984 AND system_status_code = 'CONFIRMED'
1985 AND role_cd <> 'COORDINATOR'
1986 AND( p_act_Resource_rec.start_date_time BETWEEN start_date_time AND end_date_time
1987 OR p_act_Resource_rec.end_date_time BETWEEN start_date_time AND end_date_time
1988 OR start_date_time BETWEEN p_act_Resource_rec.start_date_time AND p_act_Resource_rec.end_date_time);
1989
1990 CURSOR C_check_sessions_update IS
1991 SELECT count(*)
1992 FROM ams_act_resources
1993 WHERE resource_id = p_act_Resource_rec.resource_id
1994 AND activity_resource_id <> p_act_Resource_rec.activity_resource_id
1995 AND arc_act_resource_used_by = 'SESSION'
1996 AND system_status_code = 'CONFIRMED'
1997 AND role_cd <> 'COORDINATOR'
1998 AND (p_act_Resource_rec.start_date_time BETWEEN start_date_time AND end_date_time
1999 OR p_act_Resource_rec.end_date_time BETWEEN start_date_time AND end_date_time
2000 OR start_date_time BETWEEN p_act_Resource_rec.start_date_time AND p_act_Resource_rec.end_date_time);
2001
2002 CURSOR C_check_events_session IS
2003 SELECT count(*)
2004 FROM ams_act_resources
2005 WHERE resource_id = p_act_Resource_rec.resource_id
2006 AND act_resource_used_by_id <> ( SELECT parent_id
2007 FROM ams_agendas_b
2008 WHERE agenda_id = (SELECT parent_id
2009 FROM ams_agendas_b
2010 WHERE agenda_id = p_act_Resource_rec.act_resource_used_by_id))
2011 AND arc_act_resource_used_by IN ('EVEO', 'EONE')
2012 AND system_status_code = 'CONFIRMED'
2013 AND role_cd <> 'COORDINATOR'
2014 AND (p_act_Resource_rec.start_date_time BETWEEN start_date_time AND end_date_time
2015 OR p_act_Resource_rec.end_date_time BETWEEN start_date_time AND end_date_time
2016 OR start_date_time BETWEEN p_act_Resource_rec.start_date_time AND p_act_Resource_rec.end_date_time);
2017
2018
2019 CURSOR C_check_events_create IS
2020 SELECT count(*)
2021 FROM ams_act_resources
2022 WHERE resource_id = p_act_Resource_rec.resource_id
2023 AND arc_act_resource_used_by IN ('EVEO', 'EONE')
2024 AND system_status_code = 'CONFIRMED'
2025 AND role_cd <> 'COORDINATOR'
2026 AND (p_act_Resource_rec.start_date_time BETWEEN start_date_time AND end_date_time
2027 OR p_act_Resource_rec.end_date_time BETWEEN start_date_time AND end_date_time
2028 OR start_date_time BETWEEN p_act_Resource_rec.start_date_time AND p_act_Resource_rec.end_date_time);
2029
2030 CURSOR C_check_events_update IS
2031 SELECT count(*)
2032 FROM ams_act_resources
2033 WHERE resource_id = p_act_Resource_rec.resource_id
2034 AND arc_act_resource_used_by IN ('EVEO', 'EONE')
2035 AND activity_resource_id <> p_act_Resource_rec.activity_resource_id
2036 AND system_status_code = 'CONFIRMED'
2037 AND role_cd <> 'COORDINATOR'
2038 AND (p_act_Resource_rec.start_date_time BETWEEN start_date_time AND end_date_time
2039 OR p_act_Resource_rec.end_date_time BETWEEN start_date_time AND end_date_time
2040 OR start_date_time BETWEEN p_act_Resource_rec.start_date_time AND p_act_Resource_rec.end_date_time);
2041
2042
2043 CURSOR C_check_other_sessions(id_in IN NUMBER) IS
2044 SELECT count(*)
2045 FROM ams_act_resources
2046 WHERE arc_act_resource_used_by = 'SESSION'
2047 AND system_status_code = 'CONFIRMED'
2048 AND role_cd <> 'COORDINATOR'
2049 AND act_resource_used_by_id IN ( SELECT agenda_id
2050 FROM ams_agendas_b
2051 WHERE parent_id <> p_act_Resource_rec.act_resource_used_by_id
2052 AND parent_type IN ('EVEO', 'EONE'))
2053 AND( p_act_Resource_rec.start_date_time BETWEEN start_date_time AND end_date_time
2054 OR p_act_Resource_rec.end_date_time BETWEEN start_date_time AND end_date_time
2055 OR start_date_time BETWEEN p_act_Resource_rec.start_date_time AND p_act_Resource_rec.end_date_time);
2056
2057
2058 BEGIN
2059
2060 --Initialize API return status to success
2061 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
2062
2063 /* If we are adding Corinator, we donot check for availability */
2064
2065 IF (p_act_Resource_rec.role_cd <> 'COORDINATOR' )
2066 THEN
2067 IF(p_act_Resource_rec.arc_act_resource_used_by = 'SESSION')
2068 THEN
2069 IF(p_validation_mode = Jtf_Plsql_Api.g_create)
2070 THEN
2071 /* checking across all the sessions for date overlap */
2072 OPEN C_check_sessions_create(p_act_Resource_rec.resource_id);
2073 FETCH C_check_sessions_create INTO l_count;
2074 CLOSE C_check_sessions_create;
2075 ELSIF(p_validation_mode = Jtf_Plsql_Api.g_update)
2076 THEN
2077 /* checking across all the sessions excluding itself for date overlap */
2078 OPEN C_check_sessions_update;
2079 FETCH C_check_sessions_update INTO l_count;
2080 CLOSE C_check_sessions_update;
2081 END IF;
2082
2083 IF (AMS_DEBUG_HIGH_ON) THEN
2084
2085
2086
2087 AMS_Utility_PVT.debug_message('The resource_id is ' || p_act_Resource_rec.resource_id);
2088
2089 END IF;
2090 IF (AMS_DEBUG_HIGH_ON) THEN
2091
2092 AMS_Utility_PVT.debug_message('The count for sessions/SESSION is ' || l_count);
2093 END IF;
2094 /* If l_count > 0 i.e. there are some existing sessions with date overlap.
2095 So Error out.
2096 */
2097 IF (l_count > 0)
2098 THEN
2099 x_return_status := Fnd_Api.g_ret_sts_error;
2100 GOTO ERROR;
2101 END IF;
2102
2103 /* If there are no sessions with date overlap, then check all
2104 the events excluding its parent event for date overlap
2105 */
2106 OPEN C_check_events_session;
2107 FETCH C_check_events_session INTO l_count;
2108 CLOSE C_check_events_session;
2109
2110 IF (AMS_DEBUG_HIGH_ON) THEN
2111
2112
2113
2114 AMS_Utility_PVT.debug_message('The count for events/SESSION is ' || l_count);
2115
2116 END IF;
2117 /* If l_count > 0 i.e. there are some existing events with date overlap.
2118 So Error out.
2119 */
2120 IF (l_count > 0)
2121 THEN
2122 x_return_status := Fnd_Api.g_ret_sts_error;
2123 GOTO ERROR;
2124 END IF;
2125
2126 ELSIF(p_act_Resource_rec.arc_act_resource_used_by = 'EVEO' OR
2127 p_act_Resource_rec.arc_act_resource_used_by = 'EONE')
2128 THEN
2129 IF(p_validation_mode = Jtf_Plsql_Api.g_create)
2130 THEN
2131 /* checking across all the events for date overlap */
2132 OPEN C_check_events_create;
2133 FETCH C_check_events_create INTO l_count;
2134 CLOSE C_check_events_create;
2135 ELSIF(p_validation_mode = Jtf_Plsql_Api.g_update)
2136 THEN
2137 /* checking across all the events except itself, for date overlap */
2138 OPEN C_check_events_update;
2139 FETCH C_check_events_update INTO l_count;
2140 CLOSE C_check_events_update;
2141 END IF;
2142
2143 IF (AMS_DEBUG_HIGH_ON) THEN
2144
2145
2146
2147 AMS_Utility_PVT.debug_message('The count for events/(EVEO/EONE) is ' || l_count);
2148
2149 END IF;
2150 /* If l_count > 0 i.e. there are some existing events with date overlap.
2151 So Error out.
2152 */
2153 IF (l_count > 0)
2154 THEN
2155 x_return_status := Fnd_Api.g_ret_sts_error;
2156 GOTO ERROR;
2157 END IF;
2158
2159 /* If there are no events with date overlap, then check all
2160 the sessions created for all events excluding those created for
2161 its parent event for date overlap.
2162 */
2163 OPEN C_check_other_sessions(l_session_id);
2164 FETCH C_check_other_sessions INTO l_count;
2165 CLOSE C_check_other_sessions;
2166
2167 IF (AMS_DEBUG_HIGH_ON) THEN
2168
2169
2170
2171 AMS_Utility_PVT.debug_message('The count for Sessions/(EVEO/EONE) is ' || l_count);
2172
2173 END IF;
2174 /* If l_count > 0 i.e. there are some existing sessions with date overlap.
2175 So Error out.
2176 */
2177 IF (l_count > 0)
2178 THEN
2179 x_return_status := Fnd_Api.g_ret_sts_error;
2180 GOTO ERROR;
2181 END IF;
2182
2183 END IF; --IF(p_act_Resource_rec.arc_act_resource_used_by = 'SESSION')
2184
2185 <<ERROR>>
2186 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error)
2187 THEN
2188 IF( x_return_status = Fnd_Api.g_ret_sts_error) -- to avoid flow though
2189 THEN
2190 IF (p_act_Resource_rec.arc_act_resource_used_by = 'SESSION')
2191 THEN
2192 Fnd_Message.set_name('AMS', 'AMS_SESSION_RESOURCE_BOOKED');
2193 ELSE
2194 Fnd_Message.set_name('AMS', 'AMS_RESOURCE_BOOKED');
2195 END IF;
2196 Fnd_Msg_Pub.ADD;
2197 RETURN;
2198 END IF;
2199 END IF;
2200
2201 END IF; --(p_act_Resource_rec.role_cd <> 'COORDINATOR')
2202
2203 END Check_Resource_Booked;
2204
2205 END AMS_ActResource_PVT;