[Home] [Help]
PACKAGE BODY: APPS.AHL_LTP_SPACE_SCHEDULE_PVT
Source
1 PACKAGE BODY AHL_LTP_SPACE_SCHEDULE_PVT AS
2 /* $Header: AHLVSPSB.pls 120.2 2006/05/25 09:51:23 anraj noship $ */
3 --
4 G_PKG_NAME VARCHAR2(30) := 'AHL_LTP_SPACE_SCHEDULE_PVT';
5 G_DEBUG VARCHAR2(1) := AHL_DEBUG_PUB.is_log_enabled;
6 --
7 --
8 -- PACKAGE
9 -- AHL_LTP_SPACE_SCHEDULE_PVT
10 --
11 -- PURPOSE
12 -- This package is a Private API for assigning Spaces to a visit information in
13 -- Advanced Services Online. It contains specification for pl/sql records and tables
14 --
15 --
16 --
17 -- NOTES
18 --
19 --
20 --
21 -- HISTORY
22 -- 02-May-2002 ssurapan Created.
23 --
24 -- Ref cursor
25 TYPE search_visits_csr is REF CURSOR;
26 -- Search query tbl
27 TYPE search_query_tbl IS TABLE OF VARCHAR2(1000) INDEX BY BINARY_INTEGER;
28 --
29 PROCEDURE OPEN_FOR_CURSOR(p_x_ref_csr IN OUT NOCOPY search_visits_csr,
30 p_search_query_tbl IN search_query_tbl,
31 p_sql_str IN VARCHAR2)
32 IS
33 BEGIN
34 --
35 IF G_DEBUG='Y' THEN
36 Ahl_Debug_Pub.debug( 'Inside open for cursor');
37 END IF;
38
39 IF p_search_query_tbl.COUNT = 0 THEN
40 OPEN p_x_ref_csr FOR p_sql_str;
41 ELSIF p_search_query_tbl.COUNT = 1 THEN
42 OPEN p_x_ref_csr FOR p_sql_str USING p_search_query_tbl(1);
43 ELSIF p_search_query_tbl.COUNT = 2 THEN
44 OPEN p_x_ref_csr FOR p_sql_str USING p_search_query_tbl(1),
45 p_search_query_tbl(2);
46 ELSIF p_search_query_tbl.COUNT = 3 THEN
47 OPEN p_x_ref_csr FOR p_sql_str USING p_search_query_tbl(1),
48 p_search_query_tbl(2),
49 p_search_query_tbl(3);
50 ELSIF p_search_query_tbl.COUNT = 4 THEN
51 OPEN p_x_ref_csr FOR p_sql_str USING p_search_query_tbl(1),
52 p_search_query_tbl(2),
53 p_search_query_tbl(3),
54 p_search_query_tbl(4);
55 ELSIF p_search_query_tbl.COUNT = 5 THEN
56 OPEN p_x_ref_csr FOR p_sql_str USING p_search_query_tbl(1),
57 p_search_query_tbl(2),
58 p_search_query_tbl(3),
59 p_search_query_tbl(4),
60 p_search_query_tbl(5);
61 ELSIF p_search_query_tbl.COUNT = 6 THEN
62 OPEN p_x_ref_csr FOR p_sql_str USING p_search_query_tbl(1),
63 p_search_query_tbl(2),
64 p_search_query_tbl(3),
65 p_search_query_tbl(4),
66 p_search_query_tbl(5),
67 p_search_query_tbl(6);
68 ELSIF p_search_query_tbl.COUNT = 7 THEN
69 OPEN p_x_ref_csr FOR p_sql_str USING p_search_query_tbl(1),
70 p_search_query_tbl(2),
71 p_search_query_tbl(3),
72 p_search_query_tbl(4),
73 p_search_query_tbl(5),
74 p_search_query_tbl(6),
75 p_search_query_tbl(7);
76
77 ELSE
78 null;
79 END IF;
80 --
81 IF G_DEBUG='Y' THEN
82 Ahl_Debug_Pub.debug( 'End of open for cursor');
83 END IF;
84 --
85 END OPEN_FOR_CURSOR;
86 -- To get number of visits for Days
87 FUNCTION Get_number_of_Visits
88 (p_plan_id NUMBER,
89 p_plan_flag VARCHAR2,
90 p_space_id NUMBER,
91 p_start_date DATE)
92
93 RETURN NUMBER IS
94
95 -- To get primary plan visits
96 CURSOR number_of_prim_visits_cur (c_plan_id IN NUMBER,
97 c_space_id IN NUMBER,
98 c_visit_id IN NUMBER,
99 c_start_period IN DATE,
100 c_visit_end_date IN DATE)
101 IS
102 SELECT count(*)
103 FROM ahl_space_assignments a,
104 ahl_visits_b b
105 WHERE a.visit_id = c_visit_id
106 AND a.visit_id = b.visit_id
107 AND b.simulation_plan_id = c_plan_id
108 AND a.space_id = c_space_id
109 AND trunc(c_start_period) between trunc(b.start_date_time) and trunc(c_visit_end_date)
110 -- anraj: Consider only visits which are not simulation deleted
111 AND NVL(SIMULATION_DELETE_FLAG,'N') = 'N';
112
113 -- To get simulation visits and primary visits not associated simulated plan
114 CURSOR number_of_sim_visits_cur
115 (c_plan_id IN NUMBER,
116 c_space_id IN NUMBER,
117 c_visit_id IN NUMBER,
118 c_start_period IN DATE,
119 c_visit_end_date IN DATE)
120 IS
121 SELECT count(*)
122 FROM ahl_space_assignments a,
123 ahl_visits_b b
124 WHERE a.visit_id = c_visit_id
125 AND a.visit_id = b.visit_id
126 AND a.space_id = c_space_id
127 AND simulation_plan_id IN (select simulation_plan_id FROM ahl_simulation_plans_vl
128 WHERE primary_plan_flag = 'Y')
129 AND b.visit_id NOT IN (select asso_primary_visit_id from ahl_visits_b
130 WHERE simulation_plan_id = c_plan_id )
131 AND trunc(c_start_period) between trunc(b.start_date_time) and trunc(c_visit_end_date);
132
133 --
134 CURSOR get_visit_cur (c_space_id IN NUMBER)
135 IS
136 SELECT A.visit_id,start_date_time,
137 trunc(b.close_date_time) close_date_time
138 FROM ahl_space_assignments a,
139 ahl_visits_b B
140 WHERE a.visit_id = B.visit_id
141 AND a.space_id = c_space_id
142 -- anraj:Do not consider visits which are deleted or cancelled
143 AND status_code NOT IN('DELETED','CANCELLED');
144 --
145 l_visit_id NUMBER;
146 l_count NUMBER := 0;
147 l_return_status VARCHAR2(1);
148 l_dummy NUMBER := 0;
149 l_msg_count NUMBER;
150 l_msg_data VARCHAR2(2000);
151 l_start_date DATE := TRUNC(p_start_date);
152 l_visit_end_date DATE;
153 l_visit_close_date DATE;
154 l_space_assignment_id NUMBER;
155 l_visit_start_date DATE;
156 l_found BOOLEAN := FALSE;
157 l_ctr NUMBER:=0;
158 BEGIN
159 --
160 OPEN get_visit_cur(p_space_id);
161 LOOP
162 FETCH get_visit_cur INTO l_visit_id,l_visit_start_date,l_visit_close_date;
163 EXIT WHEN get_visit_cur%NOTFOUND;
164 --Assign when close date time exists
165 IF l_visit_close_date IS NOT NULL THEN
166 l_visit_end_date := l_visit_close_date;
167 END IF;
168 --
169 IF p_plan_flag = 'Y' THEN
170 --
171 OPEN number_of_prim_visits_cur(p_plan_id, p_space_id,l_visit_id,l_start_date,
172 TRUNC(NVL(l_visit_end_date,l_visit_start_date)));
173 FETCH number_of_prim_visits_cur INTO l_count;
174 CLOSE number_of_prim_visits_cur;
175
176 ELSE
177 --
178 IF G_DEBUG='Y' THEN
179 Ahl_Debug_Pub.debug( 'afetr simul:'||l_count);
180 END IF;
181 -- simulation visits
182 OPEN number_of_prim_visits_cur(p_plan_id, p_space_id,l_visit_id,l_start_date,
183 TRUNC(NVL(l_visit_end_date,l_visit_start_date)));
184 FETCH number_of_prim_visits_cur INTO l_dummy;
185 CLOSE number_of_prim_visits_cur;
186
187 -- primary visits
188 OPEN number_of_sim_visits_cur(p_plan_id, p_space_id,l_visit_id,l_start_date,
189 TRUNC(NVL(l_visit_end_date,l_visit_start_date)));
190 FETCH number_of_sim_visits_cur INTO l_count;
191 CLOSE number_of_sim_visits_cur;
192
193 IF G_DEBUG='Y' THEN
194 Ahl_Debug_Pub.debug( 'INSIDE COUNT 3:'||l_count);
195 END IF;
196 --
197 END IF;
198 l_ctr:=l_ctr+l_count+l_dummy;
199
200 END LOOP;
201 CLOSE get_visit_cur;
202
203 RETURN l_ctr;
204
205 END Get_number_of_Visits;
206
207 -- To get the visits assigned at department level for Days
208 FUNCTION Get_assigned_dept_Visits
209 (p_plan_id NUMBER,
210 p_plan_flag VARCHAR2,
211 p_department_id NUMBER,
212 p_start_date DATE)
213
214 RETURN NUMBER IS
215
216 -- To get primary plan visits
217 -- This cursor is opened for both visits in the Primary as well as Non_Primary Simulation Plans
218 -- If we are calling this incase of a Primary Visit , this will always return 1
219 -- If we are calling this incase of a Non Primary Simulated Visit
220 -- Will return 0 for the corresponding primary visit, as simulation_plan_id will not be equal to the c_plan_id
221 -- Will return 0 for a visit which does not have a simulated visit
222 -- Will return 1 for the Simulation visit
223 CURSOR number_of_prim_visits_cur
224 ( c_plan_id IN NUMBER,
225 c_visit_id IN NUMBER,
226 c_start_period IN DATE,
227 c_visit_end_date IN DATE,
228 c_dept_id IN NUMBER)
229 IS
230 SELECT count(*)
231 FROM ahl_visits_b
232 WHERE visit_id = c_visit_id
233 AND simulation_plan_id = c_plan_id
234 AND department_id = c_dept_id
235 AND trunc(c_start_period) between trunc(start_date_time) and trunc(c_visit_end_date)
236 -- anraj: Consider only visits which are not simulation deleted
237 AND NVL(SIMULATION_DELETE_FLAG,'N') = 'N';
238
239 -- To get simulation visits and primary visits not associated simulated plan
240 -- This is called for only Non Primary Simulation plans
241 -- Will return 1 for the visits which does not have a corresponding visit in this Simulation plan
242 -- Will retun 0 for all other cases
243 CURSOR number_of_sim_visits_cur
244 (c_plan_id IN NUMBER,
245 c_visit_id IN NUMBER,
246 c_start_period IN DATE,
247 c_visit_end_date IN DATE)
248 IS
249 SELECT count(*)
250 FROM ahl_visits_b
251 WHERE visit_id = c_visit_id
252 AND simulation_plan_id IN (select simulation_plan_id FROM ahl_simulation_plans_vl
253 WHERE primary_plan_flag = 'Y')
254 AND visit_id NOT IN (select asso_primary_visit_id from ahl_visits_b
255 WHERE simulation_plan_id = c_plan_id )
256 AND trunc(c_start_period) between trunc(start_date_time) and trunc(c_visit_end_date);
257
258 --Get all the visits assigned to department (with or without space assignment)
259 CURSOR get_visit_cur (c_dept_id IN NUMBER)
260 IS
261 SELECT visit_id,TRUNC(start_date_time),
262 TRUNC(close_date_time)
263 from ahl_visits_vl
264 WHERE department_id = c_dept_id
265 AND start_date_time IS NOT NULL
266 -- anraj:Do not consider visits which are deleted or cancelled
267 AND status_code NOT IN('DELETED','CANCELLED');
268
269 --
270 l_visit_id NUMBER;
271 l_count NUMBER := 0;
272 l_return_status VARCHAR2(1);
273 l_dummy NUMBER := 0;
274 l_msg_count NUMBER;
275 l_msg_data VARCHAR2(2000);
276 l_start_date DATE := TRUNC(p_start_date);
277 l_visit_end_date DATE;
278 l_visit_close_date DATE;
279 l_space_assignment_id NUMBER;
280 l_visit_start_date DATE;
281 l_found BOOLEAN := FALSE;
282 l_ctr NUMBER:=0;
283 BEGIN
284 --
285 OPEN get_visit_cur(p_department_id);
286 LOOP
287 FETCH get_visit_cur INTO l_visit_id,l_visit_start_date,l_visit_close_date;
288 EXIT WHEN get_visit_cur%NOTFOUND;
289 --Assign when close date time exists
290 IF l_visit_close_date IS NOT NULL THEN
291 l_visit_end_date := l_visit_close_date;
292 ELSE
293 l_visit_end_date := l_visit_start_date;
294 END IF;
295
296 IF p_plan_flag = 'Y' THEN
297 --
298 IF G_DEBUG='Y' THEN
299 Ahl_Debug_Pub.debug( 'after plan flag visit id :'||l_visit_id);
300 Ahl_Debug_Pub.debug( 'after plan flag start date:'||l_start_date);
301 Ahl_Debug_Pub.debug( 'after plan flag visit start date:'||l_visit_start_date);
302 Ahl_Debug_Pub.debug( 'after plan flag visit end date:'||l_visit_end_date);
303 END IF;
304 --
305 OPEN number_of_prim_visits_cur(p_plan_id, l_visit_id,l_start_date,
306 TRUNC(NVL(l_visit_end_date,l_visit_start_date)),p_department_id);
307 FETCH number_of_prim_visits_cur INTO l_count;
308 CLOSE number_of_prim_visits_cur;
309 Ahl_Debug_Pub.debug( 'after primary :'||l_count);
310 ELSE
311 --
312 IF G_DEBUG='Y' THEN
313 Ahl_Debug_Pub.debug( 'afetr simul:'||l_visit_id);
314 END IF;
315 -- simulation visits
316 OPEN number_of_prim_visits_cur(p_plan_id, l_visit_id,l_start_date,
317 TRUNC(NVL(l_visit_end_date,l_visit_start_date)),p_department_id);
318 FETCH number_of_prim_visits_cur INTO l_dummy;
319 CLOSE number_of_prim_visits_cur;
320 -- primary visits
321 OPEN number_of_sim_visits_cur(p_plan_id, l_visit_id,l_start_date,
322 TRUNC(NVL(l_visit_end_date,l_visit_start_date)));
323 FETCH number_of_sim_visits_cur INTO l_count;
324 CLOSE number_of_sim_visits_cur;
325
326 IF G_DEBUG='Y' THEN
327 Ahl_Debug_Pub.debug( 'INSIDE COUNT 3:'||l_count);
328 END IF;
329 --
330 END IF;
331 l_ctr:=l_ctr+l_count+l_dummy;
332 END LOOP;
333 CLOSE get_visit_cur;
334
335 IF G_DEBUG='Y' THEN
336 Ahl_Debug_Pub.debug( 'l_ctr:'||l_ctr);
337 END IF;
338 RETURN l_ctr;
339 END Get_assigned_dept_Visits;
340 --
341
342 FUNCTION Get_Number_of_Dvisits
343 (p_dept_id NUMBER,
344 p_plan_id NUMBER,
345 p_plan_flag VARCHAR2,
346 p_start_date DATE,
347 p_end_date DATE)
348
349 RETURN NUMBER IS
350 -- To get primary plan visits only
351 CURSOR number_of_prim_visits_cur ( c_visit_id IN NUMBER,
352 c_start_date IN DATE,
353 c_end_date IN DATE,
354 c_visit_end_date IN DATE,
355 c_plan_id IN NUMBER)
356 IS
357 SELECT COUNT(*)
358 FROM ahl_visits_b
359 WHERE visit_id = c_visit_id
360 AND simulation_plan_id = c_plan_id
361 AND ( ( (TRUNC(start_date_time) BETWEEN trunc(c_start_date) AND trunc(c_end_date))
362 OR (trunc(c_visit_end_date) BETWEEN trunc(c_start_date) AND trunc(c_end_date)))
363 OR ((c_start_date between trunc(start_date_time) and trunc(c_visit_end_date) )
364 OR trunc(c_end_date) between trunc(start_date_time) and trunc(c_visit_end_date)))
365 -- anraj: Consider only visits which are not simulation deleted
366 AND NVL(SIMULATION_DELETE_FLAG,'N') = 'N';
367 --
368 CURSOR get_visit_cur (c_dept_id IN NUMBER)
369 IS
370 SELECT visit_id,TRUNC(start_date_time),TRUNC(close_date_time)
371 FROM ahl_visits_vl
372 WHERE department_id = c_dept_id
373 AND start_date_time IS NOT NULL
374 -- anraj:Do not consider visits which are deleted or cancelled
375 AND status_code NOT IN('DELETED','CANCELLED');
376
377 -- To get simulation plan visits and primary visits not associated to simulation
378 -- plan
379 CURSOR number_of_sim_visits_cur ( c_visit_id IN NUMBER,
380 c_start_date IN DATE,
381 c_end_date IN DATE,
382 c_visit_end_date IN DATE,
383 c_plan_id IN NUMBER)
384 IS
385 SELECT COUNT(*)
386 FROM ahl_visits_b
387 WHERE visit_id = c_visit_id
388 AND simulation_plan_id in (select simulation_plan_id from ahl_simulation_plans_vl where primary_plan_flag = 'Y')
389 AND visit_id NOT IN (select asso_primary_visit_id from ahl_visits_b WHERE simulation_plan_id = c_plan_id )
390 AND ( ( (TRUNC(start_date_time) BETWEEN trunc(c_start_date) AND trunc(c_end_date))
391 OR (trunc(c_visit_end_date) BETWEEN trunc(c_start_date) AND trunc(c_end_date)))
392 OR ((c_start_date between trunc(start_date_time) and trunc(c_visit_end_date) )
393 OR trunc(c_end_date) between trunc(start_date_time) and trunc(c_visit_end_date)));
394 --
395 l_return_status VARCHAR2(1);
396 l_dummy NUMBER := 0;
397 l_msg_count NUMBER;
398 l_msg_data VARCHAR2(2000);
399 l_count NUMBER;
400 l_visit_id NUMBER;
401 l_visit_start_date DATE;
402 l_start_date DATE := TRUNC(p_start_date)+1;
403 l_end_date DATE := TRUNC(p_end_date);
404 l_visit_end_date DATE;
405 l_visit_close_date DATE;
406 l_simulation_plan_id NUMBER;
407 l_plan_flag VARCHAR2(1);
408 l_ctr NUMBER:=0;
409 BEGIN
410 --
411 OPEN get_visit_cur(p_dept_id);
412 LOOP
413 FETCH get_visit_cur INTO l_visit_id,l_visit_start_date,l_visit_close_date;
414 EXIT WHEN get_visit_cur%NOTFOUND;
415 --
416 IF G_DEBUG='Y' THEN
417 Ahl_Debug_Pub.debug( 'plan id:'||p_plan_id);
418 Ahl_Debug_Pub.debug( 'visit id:'||l_visit_id);
419 END IF;
420 --Assign when close date time exists
421 IF l_visit_close_date IS NOT NULL THEN
422 l_visit_end_date := l_visit_close_date;
423 ELSE
424 l_visit_end_date := l_visit_start_date;
425 END IF;
426
427 IF p_plan_flag = 'Y' THEN
428 OPEN number_of_prim_visits_cur(l_visit_id,
429 l_start_date,
430 l_end_date,
431 TRUNC(NVL(l_visit_end_date,l_visit_start_date)),
432 p_plan_id);
433 FETCH number_of_prim_visits_cur INTO l_count;
434 IF G_DEBUG='Y' THEN
435 Ahl_Debug_Pub.debug( 'ROWCOUNT 2:'||number_of_prim_visits_cur%ROWCOUNT);
436 END IF;
437 CLOSE number_of_prim_visits_cur;
438 --
439 ELSE
440 -- simulated visits
441 OPEN number_of_sim_visits_cur(l_visit_id,
442 l_start_date,
443 l_end_date,
444 TRUNC(NVL(l_visit_end_date,l_visit_start_date)),
445 p_plan_id);
446 FETCH number_of_sim_visits_cur INTO l_count;
447 IF G_DEBUG='Y' THEN
448 Ahl_Debug_Pub.debug( 'ROWCOUNT 2:'||number_of_sim_visits_cur%ROWCOUNT);
449 END IF;
450 --
451 CLOSE number_of_sim_visits_cur;
452 -- Primary visits
453 OPEN number_of_prim_visits_cur(l_visit_id,
454 l_start_date,
455 l_end_date,
456 TRUNC(NVL(l_visit_end_date,l_visit_start_date)),
457 p_plan_id);
458 FETCH number_of_prim_visits_cur INTO l_dummy;
459 --
460 IF G_DEBUG='Y' THEN
461 Ahl_Debug_Pub.debug( 'ROWCOUNT 2:'||number_of_prim_visits_cur%ROWCOUNT);
462 END IF;
463 CLOSE number_of_prim_visits_cur;
464 END IF;
465 l_ctr:=l_ctr+l_count+l_dummy;
466 --
467 END LOOP;
468 CLOSE get_visit_cur;
469 RETURN l_ctr;
470
471 END Get_Number_of_Dvisits;
472 -- To get number of visits
473 FUNCTION Get_count_of_Visits
474 (p_space_id NUMBER,
475 p_plan_id NUMBER,
476 p_plan_flag VARCHAR2,
477 p_start_date DATE,
478 p_end_date DATE)
479
480 RETURN NUMBER IS
481 -- To get primary plan visits only
482 CURSOR number_of_prim_visits_cur (c_visit_id IN NUMBER,
483 c_start_date IN DATE,
484 c_space_id IN NUMBER,
485 c_end_date IN DATE,
486 c_visit_end_date IN DATE,
487 c_plan_id IN NUMBER)
488 IS
489 SELECT COUNT(*)
490 FROM ahl_space_assignments a,ahl_visits_b b
491 WHERE a.visit_id = c_visit_id
492 AND a.visit_id = b.visit_id
493 AND b.simulation_plan_id = c_plan_id
494 AND a.space_id = c_space_id
495 AND (((TRUNC(start_date_time) BETWEEN trunc(c_start_date) AND trunc(c_end_date))
496 OR (trunc(c_visit_end_date) BETWEEN trunc(c_start_date) AND trunc(c_end_date)))
497 OR ((c_start_date between trunc(start_date_time) and trunc(c_visit_end_date) )
498 OR trunc(c_end_date) between trunc(start_date_time) and trunc(c_visit_end_date)))
499 -- anraj: Consider only visits which are not simulation deleted
500 AND NVL(SIMULATION_DELETE_FLAG,'N') = 'N';
501 --
502 CURSOR get_visit_cur (c_space_id IN NUMBER)
503 IS
504 SELECT A.visit_id,
505 start_date_time,
506 trunc(b.close_date_time) close_date_time
507 FROM ahl_space_assignments a,
508 ahl_visits_b B
509 WHERE a.visit_id = B.visit_id
510 AND a.space_id = c_space_id
511 --anraj:Do not consider visits which are deleted or cancelled
512 AND status_code NOT IN('DELETED','CANCELLED');
513
514 -- To get simulation plan visits and primary visits not associated to simulation
515 -- plan
516 CURSOR number_of_sim_visits_cur (c_visit_id IN NUMBER,
517 c_start_date IN DATE,
518 c_space_id IN NUMBER,
519 c_end_date IN DATE,
520 c_visit_end_date IN DATE,
521 c_plan_id IN NUMBER)
522 IS
523 SELECT COUNT(*)
524 FROM ahl_space_assignments a,ahl_visits_b b
525 WHERE a.visit_id = c_visit_id
526 AND a.visit_id = b.visit_id
527 AND b.simulation_plan_id in (select simulation_plan_id
528 from ahl_simulation_plans_vl where primary_plan_flag = 'Y')
529 AND b.visit_id NOT IN (select asso_primary_visit_id from ahl_visits_b
530 WHERE simulation_plan_id = c_plan_id )
531 AND a.space_id = c_space_id
532 AND (((TRUNC(start_date_time) BETWEEN trunc(c_start_date) AND trunc(c_end_date))
533 OR (trunc(c_visit_end_date) BETWEEN trunc(c_start_date) AND trunc(c_end_date)))
534 OR ((c_start_date between trunc(start_date_time) and trunc(c_visit_end_date) )
535 OR trunc(c_end_date) between trunc(start_date_time) and trunc(c_visit_end_date)));
536
537 --
538 l_return_status VARCHAR2(1);
539 l_dummy NUMBER := 0;
540 l_msg_count NUMBER;
541 l_msg_data VARCHAR2(2000);
542 l_count NUMBER;
543 l_visit_id NUMBER;
544 l_visit_start_date DATE;
545 l_start_date DATE := TRUNC(p_start_date)+1;
546 l_end_date DATE := TRUNC(p_end_date);
547 l_visit_end_date DATE;
548 l_visit_close_date DATE;
549 l_simulation_plan_id NUMBER;
550 l_plan_flag VARCHAR2(1);
551 l_ctr NUMBER:=0;
552 BEGIN
553 --
554 OPEN get_visit_cur(p_space_id);
555 LOOP
556 FETCH get_visit_cur INTO l_visit_id,l_visit_start_date,l_visit_close_date;
557 EXIT WHEN get_visit_cur%NOTFOUND;
558 --
559 IF G_DEBUG='Y' THEN
560 Ahl_Debug_Pub.debug( 'plan id:'||p_plan_id);
561 Ahl_Debug_Pub.debug( 'visit id:'||l_visit_id);
562 END IF;
563 --Assign when close date time exists
564 IF l_visit_close_date IS NOT NULL THEN
565 l_visit_end_date := l_visit_close_date;
566 ELSE
567 l_visit_end_date := l_visit_start_date;
568
569 END IF;
570
571 IF p_plan_flag = 'Y' THEN
572 OPEN number_of_prim_visits_cur(l_visit_id,
573 l_start_date,
574 p_space_id,
575 l_end_date,
576 TRUNC(NVL(l_visit_end_date,l_visit_start_date)),
577 p_plan_id);
578 FETCH number_of_prim_visits_cur INTO l_count;
579 IF G_DEBUG='Y' THEN
580 --
581 Ahl_Debug_Pub.debug( 'ROWCOUNT 2:'||number_of_prim_visits_cur%ROWCOUNT);
582 --
583 END IF;
584 CLOSE number_of_prim_visits_cur;
585 --
586 ELSE
587 -- simulated visits
588 OPEN number_of_sim_visits_cur(l_visit_id,
589 l_start_date,
590 p_space_id,
591 l_end_date,
592 TRUNC(NVL(l_visit_end_date,l_visit_start_date)),
593 p_plan_id);
594 FETCH number_of_sim_visits_cur INTO l_count;
595 IF G_DEBUG='Y' THEN
596 --
597 Ahl_Debug_Pub.debug( 'ROWCOUNT 2:'||number_of_sim_visits_cur%ROWCOUNT);
598 END IF;
599 --
600 CLOSE number_of_sim_visits_cur;
601 -- Primary visits
602 OPEN number_of_prim_visits_cur(l_visit_id,
603 l_start_date,
604 p_space_id,
605 l_end_date,
606 TRUNC(NVL(l_visit_end_date,l_visit_start_date)),
607 p_plan_id);
608 FETCH number_of_prim_visits_cur INTO l_dummy;
609 --
610 IF G_DEBUG='Y' THEN
611 --
612 Ahl_Debug_Pub.debug( 'ROWCOUNT 2:'||number_of_prim_visits_cur%ROWCOUNT);
613 END IF;
614 --
615 CLOSE number_of_prim_visits_cur;
616 --
617 END IF;
618 l_ctr:=l_ctr+l_count+l_dummy;
619 --
620 END LOOP;
621 CLOSE get_visit_cur;
622 RETURN l_ctr;
623
624 END Get_count_of_Visits;
625 -- To Check space Unavailability
626 FUNCTION Check_Unavilable_Space
627 (p_space_id NUMBER,
628 p_start_date DATE,
629 p_end_date DATE)
630
631 RETURN BOOLEAN IS
632
633 CURSOR space_unavailable_cur (c_space_id IN NUMBER,
634 c_start_date IN DATE,
635 c_end_date IN DATE)
636 IS
637 SELECT space_unavailability_id
638 FROM ahl_space_unavailable_b
639 WHERE space_id = c_space_id
640 AND (trunc(start_date) between c_start_date and c_end_date
641 or trunc(end_date) between c_start_date and c_end_date);
642 --
643 l_space_unavailability_id NUMBER;
644 l_start_date DATE := trunc(p_start_date);
645 l_end_date DATE := trunc(p_end_date);
646 l_found boolean;
647 BEGIN
648
649 OPEN space_unavailable_cur(p_space_id,l_start_date,l_end_date);
650 LOOP
651 FETCH space_unavailable_cur INTO l_space_unavailability_id;
652 EXIT WHEN space_unavailable_cur%NOTFOUND;
653 IF l_space_unavailability_id IS NOT NULL THEN
654 l_found := TRUE;
655 ELSE
656 l_found := FALSE;
657 END IF;
658 END LOOP;
659 CLOSE space_unavailable_cur;
660 RETURN l_found;
661
662 END Check_Unavilable_Space;
663 -- To Convert lookup code to meaning or vice versa
664 PROCEDURE Check_lookup_name_Or_Id
665 ( p_lookup_type IN FND_LOOKUPS.lookup_type%TYPE,
666 p_lookup_code IN FND_LOOKUPS.lookup_code%TYPE ,
667 p_meaning IN FND_LOOKUPS.meaning%TYPE,
668 p_check_id_flag IN VARCHAR2,
669 x_lookup_code OUT NOCOPY VARCHAR2,
670 x_return_status OUT NOCOPY VARCHAR2)
671 IS
672
673
674 BEGIN
675 IF (p_lookup_code IS NOT NULL) THEN
676 IF (p_check_id_flag = 'Y') THEN
677 SELECT lookup_code INTO x_lookup_code
678 FROM FND_LOOKUP_VALUES_VL
679 WHERE lookup_type = p_lookup_type
680 AND lookup_code = p_lookup_code
681 AND SYSDATE BETWEEN start_date_active
682 AND NVL(end_date_active,SYSDATE);
683 ELSE
684 x_lookup_code := p_lookup_code;
685 END IF;
686 ELSE
687 SELECT lookup_code INTO x_lookup_code
688 FROM FND_LOOKUP_VALUES_VL
689 WHERE lookup_type = p_lookup_type
690 AND meaning = p_meaning
691 AND SYSDATE BETWEEN start_date_active
692 AND NVL(end_date_active,SYSDATE);
693 END IF;
694 x_return_status := FND_API.G_RET_STS_SUCCESS;
695 EXCEPTION
696 WHEN NO_DATA_FOUND THEN
697 x_return_status := FND_API.G_RET_STS_ERROR;
698 WHEN TOO_MANY_ROWS THEN
699 x_return_status := FND_API.G_RET_STS_ERROR;
700 WHEN OTHERS THEN
701 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
702 RAISE;
703 END;
704 --
705 -- To Process Display Perod for Days
706 PROCEDURE Get_UOM_DAYS (
707 p_start_date IN DATE,
708 p_org_id IN NUMBER,
709 p_simulation_plan_id IN NUMBER,
710 p_plan_flag IN VARCHAR2,
711 p_dept_id IN NUMBER default null,
712 p_dept_name IN VARCHAR2 default null,
713 p_space_id IN NUMBER default null,
714 p_space_name IN VARCHAR2 default null,
715 p_space_category IN VARCHAR2 default null,
716 x_scheduled_visits_tbl OUT NOCOPY scheduled_visits_tbl,
717 x_display_rec OUT NOCOPY display_rec_type)
718 IS
719 --
720 CURSOR space_un_cur (c_space_id IN NUMBER,
721 c_date in DATE)
722 IS
723 SELECT space_id
724 FROM AHL_SPACE_UNAVAILABLE_B
725 WHERE space_id = c_space_id
726 AND trunc(c_date) between trunc(start_date) and trunc(end_date);
727
728 --
729 l_sql_string VARCHAR2(30000);
730 l_sql_string1 VARCHAR2(30000);
731 --
732 l_dummy NUMBER;
733 l_count NUMBER;
734 l_found BOOLEAN;
735 l_date varchar2(10);
736 l_start_date DATE := trunc(p_start_date);
737 l_end_date DATE;
738 l_space_id NUMBER;
739 l_visit_type_code VARCHAR2(30);
740 l_inventory_item_id NUMBER;
741 l_idx NUMBER;
742 --
743 l_org_id number;
744 l_department_id NUMBER;
745 l_space_name VARCHAR2(80);
746 l_space_category VARCHAR2(30);
747 l_meaning VARCHAR2(80);
748 l_description VARCHAR2(240);
749 l_dept_code VARCHAR2(10);
750 l_org_name VARCHAR2(240);
751
752 --
753 l_dept_cur search_visits_csr;
754 l_bind_idx NUMBER := 1;
755 l_bind_index NUMBER := 1;
756 l_space_cur search_visits_csr;
757 -- Table of bind variables.
758 l_tempbind_tbl search_query_tbl;
759 l_temp_tbl search_query_tbl;
760 --
761
762 BEGIN
763 --
764 --SELECT Clause
765 l_sql_string := 'select distinct(a.department_id),b.description, b.department_code,c.name';
766 -- From Clause
767 l_sql_string := l_sql_string || ' from ahl_visits_vl a , bom_departments b, hr_all_organization_units c';
768 -- Where Clause
769 l_sql_string := l_sql_string || ' where visit_id not in (select visit_id from ahl_space_assignments)';
770 l_sql_string := l_sql_string || ' and a.department_id = b.department_id';
771 l_sql_string := l_sql_string || ' and a.organization_id = c.organization_id';
772 l_sql_string := l_sql_string || ' and a.department_id is not null';
773 l_sql_string := l_sql_string || ' and a.start_date_time is not null';
774 -- Org id is not null
775 IF p_org_id IS NOT NULL THEN
776 l_sql_string := l_sql_string || ' and a.organization_id = :ORG_ID';
777 l_tempbind_tbl(l_bind_idx) := p_org_id;
778 l_bind_idx := l_bind_idx + 1;
779
780 END IF;
781
782 -- Dept id is not null
783 IF p_dept_name IS NOT NULL THEN
784 l_sql_string := l_sql_string || ' and upper(b.description) like upper(:D' || l_bind_idx || ')';
785 l_tempbind_tbl(l_bind_idx) := p_dept_name;
786 l_bind_idx := l_bind_idx + 1;
787
788 END IF;
789 -- space category is not null
790 IF p_space_category IS NOT NULL THEN
791 l_sql_string := l_sql_string || ' and upper(a.space_category_code) like :SPACE_CATEGORY';
792 l_tempbind_tbl(l_bind_idx) := p_space_category;
793 l_bind_idx := l_bind_idx + 1;
794 END IF;
795
796 --anraj: for getting departments which do not have visits assigned to it
797 -- this is needs to be done only if the user has not specified a category code
798 IF p_space_category IS NULL THEN
799 l_sql_string := l_sql_string || ' UNION select b.department_id, b.description, b.department_code, c.name ' ;
800 l_sql_string := l_sql_string || ' FROM bom_departments b, hr_all_organization_units c, mtl_parameters m ' ;
801 l_sql_string := l_sql_string || ' WHERE b.organization_id = c.organization_id ';
802 l_sql_string := l_sql_string || ' AND m.organization_id = c.organization_id ';
803 l_sql_string := l_sql_string || ' AND b.description is not null ';
804 l_sql_string := l_sql_string || ' AND m.eam_enabled_flag = ''Y'' ';
805
806 -- Dept id is not null
807 IF p_dept_name IS NOT NULL THEN
808 l_sql_string := l_sql_string || ' and upper(b.description) like upper(:D' || l_bind_idx || ')';
809 l_tempbind_tbl(l_bind_idx) := p_dept_name;
810 l_bind_idx := l_bind_idx + 1;
811 END IF;
812
813 IF p_org_id IS NOT NULL THEN
814 l_sql_string := l_sql_string || ' AND b.organization_id = :ORG_ID';
815 l_tempbind_tbl(l_bind_idx) := p_org_id;
816 l_bind_idx := l_bind_idx + 1;
817 END IF;
818
819 l_sql_string := l_sql_string || ' AND b.department_id NOT IN' ;
820 l_sql_string := l_sql_string || ' ( select unique department_id from ahl_visits_b' ;
821 IF p_org_id IS NOT NULL THEN
822 l_sql_string := l_sql_string || ' WHERE organization_id = :ORG_ID';
823 l_tempbind_tbl(l_bind_idx) := p_org_id;
824 l_bind_idx := l_bind_idx + 1;
825 END IF;
826 l_sql_string := l_sql_string || ' AND department_id IS NOT NULL';
827 l_sql_string := l_sql_string || ' AND visit_id NOT IN (SELECT visit_id FROM ahl_space_assignments))';
828 l_sql_string := l_sql_string || ' and exists ( SELECT ''x'' FROM AHL_DEPARTMENT_SHIFTS WHERE DEPARTMENT_ID = B.DEPARTMENT_ID) ' ;
829 END IF;
830
831
832 --
833 AHL_DEBUG_PUB.debug( 'l_sql_string:'||l_sql_string);
834 AHL_DEBUG_PUB.debug( 'p_org_id:'||p_org_id);
835 AHL_DEBUG_PUB.debug( 'p_dept_name:'||p_dept_name);
836 --Space info
837
838 --SELECT Clause
839 l_sql_string1 := ' SELECT distinct(a.space_id), space_name, space_category, meaning,';
840 l_sql_string1 := l_sql_string1 || ' a.bom_department_id, department_code, d.description,';
841 l_sql_string1 := l_sql_string1 || ' a.organization_id, e.name org_name ';
842 -- From Clause
843 l_sql_string1 := l_sql_string1 || ' from ahl_spaces_vl a , ahl_space_assignments b, fnd_lookup_values_vl c,';
844 l_sql_string1 := l_sql_string1 || ' bom_departments d, hr_all_organization_units e ';
845 -- Where Clause
846 l_sql_string1 := l_sql_string1 || ' where c.lookup_type(+) = ''AHL_LTP_SPACE_CATEGORY''';
847 l_sql_string1 := l_sql_string1 || ' and c.lookup_code(+) = a.space_category';
848 l_sql_string1 := l_sql_string1 || ' and a.bom_department_id = d.department_id';
849 l_sql_string1 := l_sql_string1 || ' and a.space_id = b.space_id(+)';
850 l_sql_string1 := l_sql_string1 || ' and a.organization_id = d.organization_id';
851 l_sql_string1 := l_sql_string1 || ' and a.organization_id = e.organization_id';
852
853 -- Org id is not null
854 IF p_org_id IS NOT NULL THEN
855 l_sql_string1 := l_sql_string1 || ' and a.organization_id = :ORG_ID';
856 l_temp_tbl(l_bind_index) := p_org_id;
857 l_bind_index := l_bind_index + 1;
858
859 END IF;
860
861 -- Dept Name is not null
862 IF p_dept_name IS NOT NULL THEN
863 l_sql_string1 := l_sql_string1 || ' and upper(d.description) like upper(:D' || l_bind_index || ')';
864 l_temp_tbl(l_bind_index) := p_dept_name;
865 l_bind_index := l_bind_index + 1;
866 END IF;
867
868
869 -- Space Name is not null
870 IF p_space_name IS NOT NULL THEN
871 l_sql_string1 := l_sql_string1 || ' and upper(a.space_name) like upper (:S' || l_bind_index || ')';
872 l_temp_tbl(l_bind_index) := p_space_name;
873 l_bind_index := l_bind_index + 1;
874 END IF;
875
876 -- Space Category is not null
877 IF p_space_category IS NOT NULL THEN
878 l_sql_string1 := l_sql_string1 || ' and a.space_category = :SPACE_CATEGORY';
879 l_temp_tbl(l_bind_index) := p_space_category;
880 l_bind_index := l_bind_index + 1;
881 END IF;
882
883
884
885 --
886 AHL_DEBUG_PUB.debug( 'l_sql_string1:'||l_sql_string1);
887 AHL_DEBUG_PUB.debug( 'p_org_id:'||p_org_id);
888 AHL_DEBUG_PUB.debug( 'p_space_category:'||p_space_category);
889 AHL_DEBUG_PUB.debug( 'p_dept_name:'||p_dept_name);
890 -- Department details
891 OPEN_FOR_CURSOR(p_x_ref_csr => l_dept_cur,
892 p_search_query_tbl => l_tempbind_tbl,
893 p_sql_str => l_sql_string);
894 --
895 l_idx := 0;
896 LOOP
897 FETCH l_dept_cur INTO l_department_id, l_description, l_dept_code, l_org_name;
898 EXIT WHEN l_dept_cur%NOTFOUND;
899
900 IF (l_department_id IS NOT NULL AND p_space_name IS NULL )THEN
901 --
902 IF l_start_date IS NOT NULL THEN
903 --Initialize count value
904 l_count := 0;
905 --
906 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
907 p_plan_flag,
908 l_department_id,
909 l_start_date);
910
911 AHL_DEBUG_PUB.debug( 'l_count:'||l_count);
912
913 IF l_count = 1 THEN
914 x_scheduled_visits_tbl(l_idx).value_1 := 'S';
915 ELSIF l_count > 1 THEN
916 x_scheduled_visits_tbl(l_idx).value_1 := 'M';
917 ELSE
918 x_scheduled_visits_tbl(l_idx).value_1 := 'A';
919 END IF;
920 x_display_rec.field_1 := to_char( l_start_date ,'dd/mm');
921 x_display_rec.start_period_1 := l_start_date;
922 x_display_rec.end_period_1 := l_start_date;
923 END IF;
924 IF G_DEBUG='Y' THEN
925 AHL_DEBUG_PUB.debug( 'space ID:'||x_scheduled_visits_tbl(l_idx).space_id);
926 AHL_DEBUG_PUB.debug( 'value 1:'||x_scheduled_visits_tbl(l_idx).value_1);
927 --
928 END IF;
929 --
930 IF l_start_date+1 IS NOT NULL THEN
931 --Initialize count value
932 l_count := 0;
933 AHL_DEBUG_PUB.debug( 'before count 2:'||l_count);
934 --
935 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
936 p_plan_flag,
937 l_department_id,
938 l_start_date+1);
939
940 IF G_DEBUG='Y' THEN
941 --
942 AHL_DEBUG_PUB.debug( 'count 2:'||l_count);
943 --
944 END IF;
945 IF l_count = 1 THEN
946 x_scheduled_visits_tbl(l_idx).value_2 := 'S';
947 ELSIF l_count > 1 THEN
948 x_scheduled_visits_tbl(l_idx).value_2 := 'M';
949 ELSE
950 x_scheduled_visits_tbl(l_idx).value_2 := 'A';
951 END IF;
952 x_display_rec.field_2 := to_char( l_start_date + 1 ,'dd/mm');
953 x_display_rec.start_period_2 := l_start_date + 1;
954 x_display_rec.end_period_2 := l_start_date + 1;
955 END IF;
956 --
957 IF l_start_date+2 IS NOT NULL THEN
958 --Initialize count value
959 l_count := 0;
960 --
961 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
962 p_plan_flag,
963 l_department_id,
964 l_start_date+2);
965
966 IF G_DEBUG='Y' THEN
967 AHL_DEBUG_PUB.debug( 'count 3:'||l_count);
968 END IF;
969
970 IF l_count = 1 THEN
971 x_scheduled_visits_tbl(l_idx).value_3 := 'S';
972 ELSIF l_count > 1 THEN
973 x_scheduled_visits_tbl(l_idx).value_3 := 'M';
974 ELSE
975 x_scheduled_visits_tbl(l_idx).value_3 := 'A';
976 END IF;
977 x_display_rec.field_3 := to_char( l_start_date + 2 ,'dd/mm');
978 x_display_rec.start_period_3 := l_start_date + 2;
979 x_display_rec.end_period_3 := l_start_date + 2;
980 END IF;
981 --
982 IF G_DEBUG='Y' THEN
983 AHL_DEBUG_PUB.debug( 'value 3:'||x_scheduled_visits_tbl(l_idx).value_3);
984 END IF;
985 --
986 IF l_start_date+3 IS NOT NULL THEN
987 --Initialize count value
988 l_count := 0;
989 AHL_DEBUG_PUB.debug( 'before count 4:'||l_count);
990 --
991 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
992 p_plan_flag,
993 l_department_id,
994 l_start_date+3);
995
996
997 IF G_DEBUG='Y' THEN
998 AHL_DEBUG_PUB.debug( 'count 4:'||l_count);
999 END IF;
1000
1001 IF l_count = 1 THEN
1002 x_scheduled_visits_tbl(l_idx).value_4 := 'S';
1003 ELSIF l_count > 1 THEN
1004 x_scheduled_visits_tbl(l_idx).value_4 := 'M';
1005 ELSE
1006 x_scheduled_visits_tbl(l_idx).value_4 := 'A';
1007 END IF;
1008 x_display_rec.field_4 := to_char( l_start_date + 3 ,'dd/mm');
1009 x_display_rec.start_period_4 := l_start_date + 3;
1010 x_display_rec.end_period_4 := l_start_date + 3;
1011 END IF;
1012 --
1013 IF G_DEBUG='Y' THEN
1014 AHL_DEBUG_PUB.debug( 'value 4:'||x_scheduled_visits_tbl(l_idx).value_4);
1015 END IF;
1016 --
1017 IF l_start_date+4 IS NOT NULL THEN
1018 --Initialize count value
1019 l_count := 0;
1020
1021 --
1022 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
1023 p_plan_flag,
1024 l_department_id,
1025 l_start_date+4);
1026
1027 IF G_DEBUG='Y' THEN
1028 AHL_DEBUG_PUB.debug( 'count 5:'||l_count);
1029 END IF;
1030
1031 IF l_count = 1 THEN
1032 x_scheduled_visits_tbl(l_idx).value_5 := 'S';
1033 ELSIF l_count > 1 THEN
1034 x_scheduled_visits_tbl(l_idx).value_5 := 'M';
1035 ELSE
1036 x_scheduled_visits_tbl(l_idx).value_5 := 'A';
1037 END IF;
1038 x_display_rec.field_5 := to_char( l_start_date + 4 ,'dd/mm');
1039 x_display_rec.start_period_5 := l_start_date + 4;
1040 x_display_rec.end_period_5 := l_start_date + 4;
1041 END IF;
1042 --
1043 IF G_DEBUG='Y' THEN
1044 AHL_DEBUG_PUB.debug( 'value 5:'||x_scheduled_visits_tbl(l_idx).value_5);
1045 END IF;
1046 --
1047 IF l_start_date+5 IS NOT NULL THEN
1048 --Initialize count value
1049 l_count := 0;
1050 --
1051 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
1052 p_plan_flag,
1053 l_department_id,
1054 l_start_date+5);
1055
1056 IF G_DEBUG='Y' THEN
1057 AHL_DEBUG_PUB.debug( 'count 6:'||l_count);
1058 END IF;
1059
1060 IF l_count = 1 THEN
1061 x_scheduled_visits_tbl(l_idx).value_6 := 'S';
1062 ELSIF l_count > 1 THEN
1063 x_scheduled_visits_tbl(l_idx).value_6 := 'M';
1064 ELSE
1065 x_scheduled_visits_tbl(l_idx).value_6 := 'A';
1066 END IF;
1067 x_display_rec.field_6 := to_char( l_start_date + 5 ,'dd/mm');
1068 x_display_rec.start_period_6 := l_start_date + 5;
1069 x_display_rec.end_period_6 := l_start_date + 5;
1070 END IF;
1071 --
1072 IF G_DEBUG='Y' THEN
1073 AHL_DEBUG_PUB.debug( 'value 6:'||x_scheduled_visits_tbl(l_idx).value_6);
1074 END IF;
1075 --
1076 IF l_start_date+6 IS NOT NULL THEN
1077 --Initialize count value
1078 l_count := 0;
1079 --
1080 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
1081 p_plan_flag,
1082 l_department_id,
1083 l_start_date+6);
1084
1085 IF G_DEBUG='Y' THEN
1086 AHL_DEBUG_PUB.debug( 'count 7:'||l_count);
1087 END IF;
1088
1089 IF l_count = 1 THEN
1090 x_scheduled_visits_tbl(l_idx).value_7 := 'S';
1091 ELSIF l_count > 1 THEN
1092 x_scheduled_visits_tbl(l_idx).value_7 := 'M';
1093 ELSE
1094 x_scheduled_visits_tbl(l_idx).value_7 := 'A';
1095 END IF;
1096 x_display_rec.field_7 := to_char( l_start_date + 6 ,'dd/mm');
1097 x_display_rec.start_period_7 := l_start_date + 6;
1098 x_display_rec.end_period_7 := l_start_date + 6;
1099 END IF;
1100 --
1101 IF G_DEBUG='Y' THEN
1102 AHL_DEBUG_PUB.debug( 'value 7:'||x_scheduled_visits_tbl(l_idx).value_7);
1103 END IF;
1104 --
1105 IF l_start_date+7 IS NOT NULL THEN
1106 --Initialize count value
1107 l_count := 0;
1108 --
1109 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
1110 p_plan_flag,
1111 l_department_id,
1112 l_start_date+7);
1113
1114 IF G_DEBUG='Y' THEN
1115 AHL_DEBUG_PUB.debug( 'count 8:'||l_count);
1116 END IF;
1117
1118 IF l_count = 1 THEN
1119 x_scheduled_visits_tbl(l_idx).value_8 := 'S';
1120 ELSIF l_count > 1 THEN
1121 x_scheduled_visits_tbl(l_idx).value_8 := 'M';
1122 ELSE
1123 x_scheduled_visits_tbl(l_idx).value_8 := 'A';
1124 END IF;
1125 x_display_rec.field_8 := to_char( l_start_date + 7 ,'dd/mm');
1126 x_display_rec.start_period_8 := l_start_date + 7;
1127 x_display_rec.end_period_8 := l_start_date + 7;
1128 END IF;
1129 --
1130 IF G_DEBUG='Y' THEN
1131 AHL_DEBUG_PUB.debug( 'value 8:'||x_scheduled_visits_tbl(l_idx).value_8);
1132 END IF;
1133 --
1134 IF l_start_date+8 IS NOT NULL THEN
1135 --Initialize count value
1136 l_count := 0;
1137 --
1138 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
1139 p_plan_flag,
1140 l_department_id,
1141 l_start_date+8);
1142
1143
1144 IF G_DEBUG='Y' THEN
1145 AHL_DEBUG_PUB.debug( 'count 9:'||l_count);
1146 END IF;
1147
1148 IF l_count = 1 THEN
1149 x_scheduled_visits_tbl(l_idx).value_9 := 'S';
1150 ELSIF l_count > 1 THEN
1151 x_scheduled_visits_tbl(l_idx).value_9 := 'M';
1152 ELSE
1153 x_scheduled_visits_tbl(l_idx).value_9 := 'A';
1154 END IF;
1155 x_display_rec.field_9 := to_char( l_start_date + 8 ,'dd/mm');
1156 x_display_rec.start_period_9 := l_start_date + 8;
1157 x_display_rec.end_period_9 := l_start_date + 8;
1158 END IF;
1159 --
1160 IF G_DEBUG='Y' THEN
1161 AHL_DEBUG_PUB.debug( 'value 9:'||x_scheduled_visits_tbl(l_idx).value_9);
1162 END IF;
1163 --
1164 IF l_start_date+9 IS NOT NULL THEN
1165 --Initialize count value
1166 l_count := 0;
1167 --
1168 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
1169 p_plan_flag,
1170 l_department_id,
1171 l_start_date+9);
1172
1173 IF G_DEBUG='Y' THEN
1174 AHL_DEBUG_PUB.debug( 'count 10:'||l_count);
1175 END IF;
1176
1177 IF l_count = 1 THEN
1178 x_scheduled_visits_tbl(l_idx).value_10 := 'S';
1179 ELSIF l_count > 1 THEN
1180 x_scheduled_visits_tbl(l_idx).value_10 := 'M';
1181 ELSE
1182 x_scheduled_visits_tbl(l_idx).value_10 := 'A';
1183 END IF;
1184 x_display_rec.field_10 := to_char( l_start_date + 9 ,'dd/mm');
1185 x_display_rec.start_period_10 := l_start_date + 9;
1186 x_display_rec.end_period_10 := l_start_date + 9;
1187 END IF;
1188 --
1189 IF G_DEBUG='Y' THEN
1190 AHL_DEBUG_PUB.debug( 'value 10:'||x_scheduled_visits_tbl(l_idx).value_10);
1191 END IF;
1192 --
1193 IF l_start_date+10 IS NOT NULL THEN
1194 --Initialize count value
1195 l_count := 0;
1196 --
1197 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
1198 p_plan_flag,
1199 l_department_id,
1200 l_start_date+10);
1201
1202 IF G_DEBUG='Y' THEN
1203 AHL_DEBUG_PUB.debug( 'count 11:'||l_count);
1204 END IF;
1205
1206 IF l_count = 1 THEN
1207 x_scheduled_visits_tbl(l_idx).value_11 := 'S';
1208 ELSIF l_count > 1 THEN
1209 x_scheduled_visits_tbl(l_idx).value_11 := 'M';
1210 ELSE
1211 x_scheduled_visits_tbl(l_idx).value_11 := 'A';
1212 END IF;
1213 x_display_rec.field_11 := to_char( l_start_date + 10 ,'dd/mm');
1214 x_display_rec.start_period_11 := l_start_date + 10;
1215 x_display_rec.end_period_11 := l_start_date + 10;
1216 END IF;
1217 --
1218 IF G_DEBUG='Y' THEN
1219 AHL_DEBUG_PUB.debug( 'value 11:'||x_scheduled_visits_tbl(l_idx).value_11);
1220 END IF;
1221 --
1222 IF l_start_date+11 IS NOT NULL THEN
1223 --Initialize count value
1224 l_count := 0;
1225 --
1226 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
1227 p_plan_flag,
1228 l_department_id,
1229 l_start_date+11);
1230
1231 IF G_DEBUG='Y' THEN
1232 AHL_DEBUG_PUB.debug( 'count 12:'||l_count);
1233 END IF;
1234
1235 IF l_count = 1 THEN
1236 x_scheduled_visits_tbl(l_idx).value_12 := 'S';
1237 ELSIF l_count > 1 THEN
1238 x_scheduled_visits_tbl(l_idx).value_12 := 'M';
1239 ELSE
1240 x_scheduled_visits_tbl(l_idx).value_12 := 'A';
1241 END IF;
1242 x_display_rec.field_12 := to_char( l_start_date + 11 ,'dd/mm');
1243 x_display_rec.start_period_12 := l_start_date + 11;
1244 x_display_rec.end_period_12 := l_start_date + 11;
1245 END IF;
1246 --
1247 IF G_DEBUG='Y' THEN
1248 AHL_DEBUG_PUB.debug( 'value 12:'||x_scheduled_visits_tbl(l_idx).value_12);
1249 END IF;
1250 --
1251 IF l_start_date+12 IS NOT NULL THEN
1252 --Initialize count value
1253 l_count := 0;
1254 --
1255 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
1256 p_plan_flag,
1257 l_department_id,
1258 l_start_date+12);
1259
1260 IF G_DEBUG='Y' THEN
1261 AHL_DEBUG_PUB.debug( 'count 13:'||l_count);
1262 END IF;
1263
1264 IF l_count = 1 THEN
1265 x_scheduled_visits_tbl(l_idx).value_13 := 'S';
1266 ELSIF l_count > 1 THEN
1267 x_scheduled_visits_tbl(l_idx).value_13 := 'M';
1268 ELSE
1269 x_scheduled_visits_tbl(l_idx).value_13 := 'A';
1270 END IF;
1271 x_display_rec.field_13 := to_char( l_start_date + 12 ,'dd/mm');
1272 x_display_rec.start_period_13 := l_start_date + 12;
1273 x_display_rec.end_period_13 := l_start_date + 12;
1274 END IF;
1275 --
1276 IF G_DEBUG='Y' THEN
1277 AHL_DEBUG_PUB.debug( 'value 13:'||x_scheduled_visits_tbl(l_idx).value_13);
1278 END IF;
1279 --
1280 IF l_start_date+13 IS NOT NULL THEN
1281 --Initialize count value
1282 l_count := 0;
1283
1284 --
1285 l_count := Get_assigned_dept_Visits(p_simulation_plan_id,
1286 p_plan_flag,
1287 l_department_id,
1288 l_start_date+13);
1289
1290 IF G_DEBUG='Y' THEN
1291 AHL_DEBUG_PUB.debug( 'count 14:'||l_count);
1292 END IF;
1293
1294 IF l_count = 1 THEN
1295 x_scheduled_visits_tbl(l_idx).value_14 := 'S';
1296 ELSIF l_count > 1 THEN
1297 x_scheduled_visits_tbl(l_idx).value_14 := 'M';
1298 ELSE
1299 x_scheduled_visits_tbl(l_idx).value_14 := 'A';
1300 END IF;
1301 x_display_rec.field_14 := to_char( l_start_date + 13 ,'dd/mm');
1302 x_display_rec.start_period_14 := l_start_date + 13;
1303 x_display_rec.end_period_14 := l_start_date + 13;
1304 END IF;
1305 --
1306 IF G_DEBUG='Y' THEN
1307 AHL_DEBUG_PUB.debug( 'value 14:'||x_scheduled_visits_tbl(l_idx).value_14);
1308 END IF;
1309 x_scheduled_visits_tbl(l_idx).space_id := null;
1310 x_scheduled_visits_tbl(l_idx).space_name := null;
1311 x_scheduled_visits_tbl(l_idx).department_code := l_dept_code;
1312 x_scheduled_visits_tbl(l_idx).department_name := l_description;
1313 x_scheduled_visits_tbl(l_idx).department_id := l_department_id;
1314 x_scheduled_visits_tbl(l_idx).space_category_mean := null;
1315 x_scheduled_visits_tbl(l_idx).Space_Category := null;
1316 x_scheduled_visits_tbl(l_idx).org_name := l_org_name;
1317 x_display_rec.start_period := l_start_date;
1318 x_display_rec.end_period := x_display_rec.end_period_14;
1319 --
1320 l_idx := l_idx + 1;
1321 END IF; --Dept id
1322
1323 END LOOP;
1324 CLOSE l_dept_cur;
1325 -- Space info
1326
1327 OPEN_FOR_CURSOR(p_x_ref_csr => l_space_cur,
1328 p_search_query_tbl => l_temp_tbl,
1329 p_sql_str => l_sql_string1);
1330 --
1331 LOOP
1332 FETCH l_space_cur INTO l_space_id, l_space_name , l_space_category,
1333 l_meaning, l_department_id,l_dept_code, l_description,
1334 l_org_id, l_org_name;
1335 EXIT WHEN l_space_cur%NOTFOUND;
1336 --
1337 IF l_space_id IS NOT NULL THEN
1338 IF l_start_date IS NOT NULL THEN
1339 --
1340 --Check for space capabilities
1341 l_count := Get_number_of_Visits(p_simulation_plan_id,
1342 p_plan_flag,l_space_id,l_start_date);
1343
1344
1345 IF l_count = 1 THEN
1346 x_scheduled_visits_tbl(l_idx).value_1 := 'S';
1347 ELSIF l_count > 1 THEN
1348 x_scheduled_visits_tbl(l_idx).value_1 := 'M';
1349 ELSIF l_count = 0 THEN
1350 OPEN space_un_cur(l_space_id,l_start_date);
1351 FETCH space_un_cur INTO l_dummy;
1352 IF space_un_cur%FOUND THEN
1353 x_scheduled_visits_tbl(l_idx).value_1 := 'U';
1354 ELSE
1355 x_scheduled_visits_tbl(l_idx).value_1 := 'A';
1356 END IF;
1357 CLOSE space_un_cur;
1358 END IF;
1359 x_display_rec.field_1 := to_char( l_start_date ,'dd/mm');
1360 x_display_rec.start_period_1 := l_start_date;
1361 x_display_rec.end_period_1 := l_start_date;
1362 END IF;
1363 IF G_DEBUG='Y' THEN
1364 --
1365 AHL_DEBUG_PUB.debug( 'space ID:'||x_scheduled_visits_tbl(l_idx).space_id);
1366 AHL_DEBUG_PUB.debug( 'value 1:'||x_scheduled_visits_tbl(l_idx).value_1);
1367 --
1368 END IF;
1369 --
1370 IF l_start_date+1 IS NOT NULL THEN
1371 --
1372 l_count := Get_number_of_Visits(p_simulation_plan_id,
1373 p_plan_flag,l_space_id,l_start_date+1);
1374 IF G_DEBUG='Y' THEN
1375 --
1376 AHL_DEBUG_PUB.debug( 'count 2:'||l_count);
1377 --
1378 END IF;
1379 IF l_count = 1 THEN
1380 x_scheduled_visits_tbl(l_idx).value_2 := 'S';
1381 ELSIF l_count > 1 THEN
1382 x_scheduled_visits_tbl(l_idx).value_2 := 'M';
1383 ELSIF l_count = 0 THEN
1384 OPEN space_un_cur(l_space_id,l_start_date+1);
1385 FETCH space_un_cur INTO l_dummy;
1386 IF space_un_cur%FOUND THEN
1387 x_scheduled_visits_tbl(l_idx).value_2 := 'U';
1388 ELSE
1389 x_scheduled_visits_tbl(l_idx).value_2 := 'A';
1390 END IF;
1391 CLOSE space_un_cur;
1392 END IF;
1393 x_display_rec.field_2 := to_char( l_start_date + 1 ,'dd/mm');
1394 x_display_rec.start_period_2 := l_start_date + 1;
1395 x_display_rec.end_period_2 := l_start_date + 1;
1396 END IF;
1397 --
1398 IF G_DEBUG='Y' THEN
1399 --
1400 AHL_DEBUG_PUB.debug( 'value 2:'||x_scheduled_visits_tbl(l_idx).value_2);
1401 --
1402 END IF;
1403 --
1404 IF l_start_date+2 IS NOT NULL THEN
1405 --
1406 l_count := Get_number_of_Visits(p_simulation_plan_id,
1407 p_plan_flag,l_space_id,l_start_date+2);
1408
1409
1410 IF l_count = 1 THEN
1411 x_scheduled_visits_tbl(l_idx).value_3 := 'S';
1412 ELSIF l_count > 1 THEN
1413 x_scheduled_visits_tbl(l_idx).value_3 := 'M';
1414 ELSIF l_count = 0 THEN
1415 OPEN space_un_cur(l_space_id,l_start_date+2);
1416 FETCH space_un_cur INTO l_dummy;
1417 IF space_un_cur%FOUND THEN
1418 x_scheduled_visits_tbl(l_idx).value_3 := 'U';
1419 ELSE
1420 x_scheduled_visits_tbl(l_idx).value_3 := 'A';
1421 END IF;
1422 CLOSE space_un_cur;
1423 END IF;
1424 x_display_rec.field_3 := to_char( l_start_date + 2 ,'dd/mm');
1425 x_display_rec.start_period_3 := l_start_date + 2;
1426 x_display_rec.end_period_3 := l_start_date + 2;
1427 END IF;
1428 --
1429 IF G_DEBUG='Y' THEN
1430 AHL_DEBUG_PUB.debug( 'value 3:'||x_scheduled_visits_tbl(l_idx).value_3);
1431 END IF;
1432 --
1433 IF l_start_date+3 IS NOT NULL THEN
1434 --
1435 l_count := Get_number_of_Visits(p_simulation_plan_id,
1436 p_plan_flag,l_space_id,l_start_date+3);
1437
1438
1439 IF l_count = 1 THEN
1440 x_scheduled_visits_tbl(l_idx).value_4 := 'S';
1441 ELSIF l_count > 1 THEN
1442 x_scheduled_visits_tbl(l_idx).value_4 := 'M';
1443 ELSIF l_count = 0 THEN
1444 OPEN space_un_cur(l_space_id,l_start_date+3);
1445 FETCH space_un_cur INTO l_dummy;
1446 IF space_un_cur%FOUND THEN
1447 x_scheduled_visits_tbl(l_idx).value_4 := 'U';
1448 ELSE
1449 x_scheduled_visits_tbl(l_idx).value_4 := 'A';
1450 END IF;
1451 CLOSE space_un_cur;
1452 END IF;
1453 x_display_rec.field_4 := to_char( l_start_date + 3 ,'dd/mm');
1454 x_display_rec.start_period_4 := l_start_date + 3;
1455 x_display_rec.end_period_4 := l_start_date + 3;
1456 END IF;
1457 --
1458 IF G_DEBUG='Y' THEN
1459 AHL_DEBUG_PUB.debug( 'value 4:'||x_scheduled_visits_tbl(l_idx).value_4);
1460 END IF;
1461 --
1462 IF l_start_date+4 IS NOT NULL THEN
1463 --
1464 l_count := Get_number_of_Visits(p_simulation_plan_id,
1465 p_plan_flag,l_space_id,l_start_date+4);
1466
1467 IF l_count = 1 THEN
1468 x_scheduled_visits_tbl(l_idx).value_5 := 'S';
1469 ELSIF l_count > 1 THEN
1470 x_scheduled_visits_tbl(l_idx).value_5 := 'M';
1471 ELSIF l_count = 0 THEN
1472 OPEN space_un_cur(l_space_id,l_start_date+4);
1473 FETCH space_un_cur INTO l_dummy;
1474 IF space_un_cur%FOUND THEN
1475 x_scheduled_visits_tbl(l_idx).value_5 := 'U';
1476 ELSE
1477 x_scheduled_visits_tbl(l_idx).value_5 := 'A';
1478 END IF;
1479 CLOSE space_un_cur;
1480 END IF;
1481 x_display_rec.field_5 := to_char( l_start_date + 4 ,'dd/mm');
1482 x_display_rec.start_period_5 := l_start_date + 4;
1483 x_display_rec.end_period_5 := l_start_date + 4;
1484 END IF;
1485 --
1486 IF G_DEBUG='Y' THEN
1487 AHL_DEBUG_PUB.debug( 'value 5:'||x_scheduled_visits_tbl(l_idx).value_5);
1488 END IF;
1489 --
1490 IF l_start_date+5 IS NOT NULL THEN
1491 --
1492 l_count := Get_number_of_Visits(p_simulation_plan_id,
1493 p_plan_flag,l_space_id,l_start_date+5);
1494
1495
1496 IF l_count = 1 THEN
1497 x_scheduled_visits_tbl(l_idx).value_6 := 'S';
1498 ELSIF l_count > 1 THEN
1499 x_scheduled_visits_tbl(l_idx).value_6 := 'M';
1500 ELSIF l_count = 0 THEN
1501 OPEN space_un_cur(l_space_id,l_start_date+5);
1502 FETCH space_un_cur INTO l_dummy;
1503 IF space_un_cur%FOUND THEN
1504 x_scheduled_visits_tbl(l_idx).value_6 := 'U';
1505 ELSE
1506 x_scheduled_visits_tbl(l_idx).value_6 := 'A';
1507 END IF;
1508 CLOSE space_un_cur;
1509 END IF;
1510 x_display_rec.field_6 := to_char( l_start_date + 5 ,'dd/mm');
1511 x_display_rec.start_period_6 := l_start_date + 5;
1512 x_display_rec.end_period_6 := l_start_date + 5;
1513 END IF;
1514 --
1515 IF G_DEBUG='Y' THEN
1516 AHL_DEBUG_PUB.debug( 'value 6:'||x_scheduled_visits_tbl(l_idx).value_6);
1517 END IF;
1518 --
1519 IF l_start_date+6 IS NOT NULL THEN
1520 --
1521 l_count := Get_number_of_Visits(p_simulation_plan_id,
1522 p_plan_flag,l_space_id,l_start_date+6);
1523
1524 IF l_count = 1 THEN
1525 x_scheduled_visits_tbl(l_idx).value_7 := 'S';
1526 ELSIF l_count > 1 THEN
1527 x_scheduled_visits_tbl(l_idx).value_7 := 'M';
1528 ELSIF l_count = 0 THEN
1529 OPEN space_un_cur(l_space_id,l_start_date+6);
1530 FETCH space_un_cur INTO l_dummy;
1531 IF space_un_cur%FOUND THEN
1532 x_scheduled_visits_tbl(l_idx).value_7 := 'U';
1533 ELSE
1534 x_scheduled_visits_tbl(l_idx).value_7 := 'A';
1535 END IF;
1536 CLOSE space_un_cur;
1537 END IF;
1538 x_display_rec.field_7 := to_char( l_start_date + 6 ,'dd/mm');
1539 x_display_rec.start_period_7 := l_start_date + 6;
1540 x_display_rec.end_period_7 := l_start_date + 6;
1541 END IF;
1542 --
1543 IF G_DEBUG='Y' THEN
1544 --
1545 AHL_DEBUG_PUB.debug( 'value 7:'||x_scheduled_visits_tbl(l_idx).value_7);
1546 --
1547 END IF;
1548 --
1549 IF l_start_date+7 IS NOT NULL THEN
1550 --
1551 l_count := Get_number_of_Visits(p_simulation_plan_id,
1552 p_plan_flag,l_space_id,l_start_date+7);
1553
1554 IF l_count = 1 THEN
1555 x_scheduled_visits_tbl(l_idx).value_8 := 'S';
1556 ELSIF l_count > 1 THEN
1557 x_scheduled_visits_tbl(l_idx).value_8 := 'M';
1558 ELSIF l_count = 0 THEN
1559 OPEN space_un_cur(l_space_id,l_start_date+7);
1560 FETCH space_un_cur INTO l_dummy;
1561 IF space_un_cur%FOUND THEN
1562 x_scheduled_visits_tbl(l_idx).value_8 := 'U';
1563 ELSE
1564 x_scheduled_visits_tbl(l_idx).value_8 := 'A';
1565 END IF;
1566 CLOSE space_un_cur;
1567 END IF;
1568 x_display_rec.field_8 := to_char( l_start_date + 7 ,'dd/mm');
1569 x_display_rec.start_period_8 := l_start_date + 7;
1570 x_display_rec.end_period_8 := l_start_date + 7;
1571 END IF;
1572 --
1573 IF G_DEBUG='Y' THEN
1574 AHL_DEBUG_PUB.debug( 'value 8:'||x_scheduled_visits_tbl(l_idx).value_8);
1575 END IF;
1576 --
1577 IF l_start_date+8 IS NOT NULL THEN
1578 --
1579 l_count := Get_number_of_Visits(p_simulation_plan_id,
1580 p_plan_flag,l_space_id,l_start_date+8);
1581
1582
1583 IF l_count = 1 THEN
1584 x_scheduled_visits_tbl(l_idx).value_9 := 'S';
1585 ELSIF l_count > 1 THEN
1586 x_scheduled_visits_tbl(l_idx).value_9 := 'M';
1587 ELSIF l_count = 0 THEN
1588 OPEN space_un_cur(l_space_id,l_start_date+8);
1589 FETCH space_un_cur INTO l_dummy;
1590 IF space_un_cur%FOUND THEN
1591 x_scheduled_visits_tbl(l_idx).value_9 := 'U';
1592 ELSE
1593 x_scheduled_visits_tbl(l_idx).value_9 := 'A';
1594 END IF;
1595 CLOSE space_un_cur;
1596 END IF;
1597 x_display_rec.field_9 := to_char( l_start_date + 8 ,'dd/mm');
1598 x_display_rec.start_period_9 := l_start_date + 8;
1599 x_display_rec.end_period_9 := l_start_date + 8;
1600 END IF;
1601 --
1602 IF G_DEBUG='Y' THEN
1603 AHL_DEBUG_PUB.debug( 'value 9:'||x_scheduled_visits_tbl(l_idx).value_9);
1604 END IF;
1605 --
1606 IF l_start_date+9 IS NOT NULL THEN
1607 --
1608 l_count := Get_number_of_Visits(p_simulation_plan_id,
1609 p_plan_flag,l_space_id,l_start_date+9);
1610
1611 IF l_count = 1 THEN
1612 x_scheduled_visits_tbl(l_idx).value_10 := 'S';
1613 ELSIF l_count > 1 THEN
1614 x_scheduled_visits_tbl(l_idx).value_10 := 'M';
1615 ELSIF l_count = 0 THEN
1616 OPEN space_un_cur(l_space_id,l_start_date+9);
1617 FETCH space_un_cur INTO l_dummy;
1618 IF space_un_cur%FOUND THEN
1619 x_scheduled_visits_tbl(l_idx).value_10 := 'U';
1620 ELSE
1621 x_scheduled_visits_tbl(l_idx).value_10 := 'A';
1622 END IF;
1623 CLOSE space_un_cur;
1624 END IF;
1625 x_display_rec.field_10 := to_char( l_start_date + 9 ,'dd/mm');
1626 x_display_rec.start_period_10 := l_start_date + 9;
1627 x_display_rec.end_period_10 := l_start_date + 9;
1628 END IF;
1629 --
1630 IF G_DEBUG='Y' THEN
1631 AHL_DEBUG_PUB.debug( 'value 10:'||x_scheduled_visits_tbl(l_idx).value_10);
1632 END IF;
1633 --
1634 IF l_start_date+10 IS NOT NULL THEN
1635 --
1636 l_count := Get_number_of_Visits(p_simulation_plan_id,
1637 p_plan_flag,l_space_id,l_start_date+10);
1638
1639 IF l_count = 1 THEN
1640 x_scheduled_visits_tbl(l_idx).value_11 := 'S';
1641 ELSIF l_count > 1 THEN
1642 x_scheduled_visits_tbl(l_idx).value_11 := 'M';
1643 ELSIF l_count = 0 THEN
1644 OPEN space_un_cur(l_space_id,l_start_date+10);
1645 FETCH space_un_cur INTO l_dummy;
1646 IF space_un_cur%FOUND THEN
1647 x_scheduled_visits_tbl(l_idx).value_11 := 'U';
1648 ELSE
1649 x_scheduled_visits_tbl(l_idx).value_11 := 'A';
1650 END IF;
1651 CLOSE space_un_cur;
1652 END IF;
1653 x_display_rec.field_11 := to_char( l_start_date + 10 ,'dd/mm');
1654 x_display_rec.start_period_11 := l_start_date + 10;
1655 x_display_rec.end_period_11 := l_start_date + 10;
1656 END IF;
1657 --
1658 IF G_DEBUG='Y' THEN
1659 AHL_DEBUG_PUB.debug( 'value 11:'||x_scheduled_visits_tbl(l_idx).value_11);
1660 END IF;
1661 --
1662 IF l_start_date+11 IS NOT NULL THEN
1663 --
1664 l_count := Get_number_of_Visits(p_simulation_plan_id,
1665 p_plan_flag,l_space_id,l_start_date+11);
1666
1667 IF l_count = 1 THEN
1668 x_scheduled_visits_tbl(l_idx).value_12 := 'S';
1669 ELSIF l_count > 1 THEN
1670 x_scheduled_visits_tbl(l_idx).value_12 := 'M';
1671 ELSIF l_count = 0 THEN
1672 OPEN space_un_cur(l_space_id,l_start_date+11);
1673 FETCH space_un_cur INTO l_dummy;
1674 IF space_un_cur%FOUND THEN
1675 x_scheduled_visits_tbl(l_idx).value_12 := 'U';
1676 ELSE
1677 x_scheduled_visits_tbl(l_idx).value_12 := 'A';
1678 END IF;
1679 CLOSE space_un_cur;
1680 END IF;
1681 x_display_rec.field_12 := to_char( l_start_date + 11 ,'dd/mm');
1682 x_display_rec.start_period_12 := l_start_date + 11;
1683 x_display_rec.end_period_12 := l_start_date + 11;
1684 END IF;
1685 --
1686 IF G_DEBUG='Y' THEN
1687 AHL_DEBUG_PUB.debug( 'value 12:'||x_scheduled_visits_tbl(l_idx).value_12);
1688 END IF;
1689 --
1690 IF l_start_date+12 IS NOT NULL THEN
1691 --
1692 l_count := Get_number_of_Visits(p_simulation_plan_id,
1693 p_plan_flag,l_space_id,l_start_date+12);
1694
1695 IF l_count = 1 THEN
1696 x_scheduled_visits_tbl(l_idx).value_13 := 'S';
1697 ELSIF l_count > 1 THEN
1698 x_scheduled_visits_tbl(l_idx).value_13 := 'M';
1699 ELSIF l_count = 0 THEN
1700 OPEN space_un_cur(l_space_id,l_start_date+12);
1701 FETCH space_un_cur INTO l_dummy;
1702 IF space_un_cur%FOUND THEN
1703 x_scheduled_visits_tbl(l_idx).value_13 := 'U';
1704 ELSE
1705 x_scheduled_visits_tbl(l_idx).value_13 := 'A';
1706 END IF;
1707 CLOSE space_un_cur;
1708 END IF;
1709 x_display_rec.field_13 := to_char( l_start_date + 12 ,'dd/mm');
1710 x_display_rec.start_period_13 := l_start_date + 12;
1711 x_display_rec.end_period_13 := l_start_date + 12;
1712 END IF;
1713 --
1714 IF G_DEBUG='Y' THEN
1715 AHL_DEBUG_PUB.debug( 'value 13:'||x_scheduled_visits_tbl(l_idx).value_13);
1716 END IF;
1717 --
1718 IF l_start_date+13 IS NOT NULL THEN
1719 --
1720 l_count := Get_number_of_Visits(p_simulation_plan_id,
1721 p_plan_flag, l_space_id,l_start_date+13);
1722
1723 IF l_count = 1 THEN
1724 x_scheduled_visits_tbl(l_idx).value_14 := 'S';
1725 ELSIF l_count > 1 THEN
1726 x_scheduled_visits_tbl(l_idx).value_14 := 'M';
1727 ELSIF l_count = 0 THEN
1728 OPEN space_un_cur(l_space_id,l_start_date+13);
1729 FETCH space_un_cur INTO l_dummy;
1730 IF space_un_cur%FOUND THEN
1731 x_scheduled_visits_tbl(l_idx).value_14 := 'U';
1732 ELSE
1733 x_scheduled_visits_tbl(l_idx).value_14 := 'A';
1734 END IF;
1735 CLOSE space_un_cur;
1736 END IF;
1737 x_display_rec.field_14 := to_char( l_start_date + 13 ,'dd/mm');
1738 x_display_rec.start_period_14 := l_start_date + 13;
1739 x_display_rec.end_period_14 := l_start_date + 13;
1740 END IF;
1741 --
1742 IF G_DEBUG='Y' THEN
1743 AHL_DEBUG_PUB.debug( 'value 14:'||x_scheduled_visits_tbl(l_idx).value_14);
1744 END IF;
1745 --
1746 x_scheduled_visits_tbl(l_idx).space_id := l_space_id;
1747 x_scheduled_visits_tbl(l_idx).space_name := l_space_name;
1748 x_scheduled_visits_tbl(l_idx).department_code := l_dept_code;
1749 x_scheduled_visits_tbl(l_idx).department_name := l_description;
1750 x_scheduled_visits_tbl(l_idx).department_id := l_department_id;
1751 x_scheduled_visits_tbl(l_idx).space_category_mean := l_meaning;
1752 x_scheduled_visits_tbl(l_idx).Space_Category := l_space_category;
1753 x_scheduled_visits_tbl(l_idx).org_name := l_org_name;
1754 x_display_rec.start_period := l_start_date;
1755 x_display_rec.end_period := x_display_rec.end_period_14;
1756
1757 --
1758 l_idx := l_idx + 1;
1759 END IF; --Space id
1760
1761 END LOOP;
1762 CLOSE l_space_cur;
1763 --
1764
1765 END Get_UOM_DAYS;
1766 --
1767 PROCEDURE Get_UOM_WEEKS (
1768 p_start_date IN DATE,
1769 p_org_id IN NUMBER,
1770 p_simulation_plan_id IN NUMBER,
1771 p_plan_flag IN VARCHAR2,
1772 p_dept_id IN NUMBER default null,
1773 p_dept_name IN VARCHAR2 default null,
1774 p_space_id IN NUMBER default null,
1775 p_space_name IN VARCHAR2 default null,
1776 p_space_category IN VARCHAR2 default null,
1777 x_scheduled_visits_tbl OUT NOCOPY scheduled_visits_tbl,
1778 x_display_rec OUT NOCOPY display_rec_type)
1779 IS
1780 --
1781 l_sql_string VARCHAR2(30000);
1782 l_sql_string1 VARCHAR2(30000);
1783 --
1784 l_dummy NUMBER;
1785 l_count NUMBER;
1786 l_found BOOLEAN;
1787 l_date varchar2(10);
1788 l_start_date DATE := trunc(p_start_date);
1789 l_end_date DATE;
1790 l_space_id NUMBER;
1791 l_visit_type_code VARCHAR2(30);
1792 l_inventory_item_id NUMBER;
1793 l_idx NUMBER;
1794 --
1795 l_org_id number;
1796 l_department_id NUMBER;
1797 l_space_name VARCHAR2(80);
1798 l_space_category VARCHAR2(30);
1799 l_meaning VARCHAR2(80);
1800 l_description VARCHAR2(240);
1801 l_dept_code VARCHAR2(10);
1802 l_org_name VARCHAR2(240);
1803
1804 --
1805 l_dept_cur search_visits_csr;
1806 l_bind_idx NUMBER := 1;
1807 l_bind_index NUMBER := 1;
1808 l_space_cur search_visits_csr;
1809 -- Table of bind variables.
1810 l_tempbind_tbl search_query_tbl;
1811 l_temp_tbl search_query_tbl;
1812 --
1813
1814 BEGIN
1815 --
1816
1817 --SELECT Clause
1818 l_sql_string := 'select distinct(a.department_id),b.description, b.department_code,c.name';
1819 -- From Clause
1820 l_sql_string := l_sql_string || ' from ahl_visits_vl a , bom_departments b, hr_all_organization_units c';
1821 -- Where Clause
1822 l_sql_string := l_sql_string || ' where visit_id not in (select visit_id from ahl_space_assignments)';
1823 l_sql_string := l_sql_string || ' and a.department_id = b.department_id';
1824 l_sql_string := l_sql_string || ' and a.organization_id = c.organization_id';
1825 l_sql_string := l_sql_string || ' and a.department_id is not null';
1826 l_sql_string := l_sql_string || ' and a.start_date_time is not null';
1827 -- Org id is not null
1828 IF p_org_id IS NOT NULL THEN
1829 l_sql_string := l_sql_string || ' and a.organization_id = :ORG_ID';
1830 l_tempbind_tbl(l_bind_idx) := p_org_id;
1831 l_bind_idx := l_bind_idx + 1;
1832
1833 END IF;
1834
1835 -- Dept id is not null
1836 IF p_dept_name IS NOT NULL THEN
1837 l_sql_string := l_sql_string || ' and upper(b.description) like upper(:D' || l_bind_idx || ')';
1838 l_tempbind_tbl(l_bind_idx) := p_dept_name;
1839 l_bind_idx := l_bind_idx + 1;
1840
1841 END IF;
1842 -- space category is not null
1843 IF p_space_category IS NOT NULL THEN
1844 l_sql_string := l_sql_string || ' and upper(a.space_category_code) like :SPACE_CATEGORY';
1845 l_tempbind_tbl(l_bind_idx) := p_space_category;
1846 l_bind_idx := l_bind_idx + 1;
1847 END IF;
1848
1849 --anraj: for getting departments which do not have visits assigned to it
1850 -- Needs to be done only if the user has not specified a category code in the search
1851 IF p_space_category IS NULL THEN
1852 l_sql_string := l_sql_string || ' UNION select b.department_id, b.description, b.department_code, c.name ' ;
1853 l_sql_string := l_sql_string || ' FROM bom_departments b, hr_all_organization_units c, mtl_parameters m ' ;
1854 l_sql_string := l_sql_string || ' WHERE b.organization_id = c.organization_id ';
1855 l_sql_string := l_sql_string || ' AND m.organization_id = c.organization_id ';
1856 l_sql_string := l_sql_string || ' AND b.description is not null ';
1857 l_sql_string := l_sql_string || ' AND m.eam_enabled_flag = ''Y'' ';
1858
1859 IF p_org_id IS NOT NULL THEN
1860 l_sql_string := l_sql_string || ' AND b.organization_id = :ORG_ID';
1861 l_tempbind_tbl(l_bind_idx) := p_org_id;
1862 l_bind_idx := l_bind_idx + 1;
1863 END IF;
1864
1865 -- Dept id is not null
1866 IF p_dept_name IS NOT NULL THEN
1867 l_sql_string := l_sql_string || ' and upper(b.description) like upper(:D' || l_bind_idx || ')';
1868 l_tempbind_tbl(l_bind_idx) := p_dept_name;
1869 l_bind_idx := l_bind_idx + 1;
1870 END IF;
1871
1872
1873 l_sql_string := l_sql_string || ' AND b.department_id NOT IN' ;
1874 l_sql_string := l_sql_string || ' ( select unique department_id from ahl_visits_b' ;
1875 IF p_org_id IS NOT NULL THEN
1876 l_sql_string := l_sql_string || ' WHERE organization_id = :ORG_ID';
1877 l_tempbind_tbl(l_bind_idx) := p_org_id;
1878 l_bind_idx := l_bind_idx + 1;
1879 END IF;
1880 l_sql_string := l_sql_string || ' AND department_id IS NOT NULL';
1881 l_sql_string := l_sql_string || ' AND visit_id NOT IN (SELECT visit_id FROM ahl_space_assignments))';
1882 l_sql_string := l_sql_string || ' and exists ( SELECT ''x'' FROM AHL_DEPARTMENT_SHIFTS WHERE DEPARTMENT_ID = B.DEPARTMENT_ID) ' ;
1883 END IF; -- category code null
1884
1885
1886 --
1887 AHL_DEBUG_PUB.debug( 'l_sql_string:'||l_sql_string);
1888 AHL_DEBUG_PUB.debug( 'p_org_id:'||p_org_id);
1889 AHL_DEBUG_PUB.debug( 'p_dept_name:'||p_dept_name);
1890 --Space info
1891
1892 --SELECT Clause
1893 l_sql_string1 := ' SELECT distinct(a.space_id), space_name, space_category, meaning,';
1894 l_sql_string1 := l_sql_string1 || ' a.bom_department_id, department_code, d.description,';
1895 l_sql_string1 := l_sql_string1 || ' a.organization_id, e.name org_name ';
1896 -- From Clause
1897 l_sql_string1 := l_sql_string1 || ' from ahl_spaces_vl a , ahl_space_assignments b, fnd_lookup_values_vl c,';
1898 l_sql_string1 := l_sql_string1 || ' bom_departments d, hr_all_organization_units e ';
1899 -- Where Clause
1900 l_sql_string1 := l_sql_string1 || ' where c.lookup_type(+) = ''AHL_LTP_SPACE_CATEGORY''';
1901 l_sql_string1 := l_sql_string1 || ' and c.lookup_code(+) = a.space_category';
1902 l_sql_string1 := l_sql_string1 || ' and a.bom_department_id = d.department_id';
1903 l_sql_string1 := l_sql_string1 || ' and a.space_id = b.space_id(+)';
1904 l_sql_string1 := l_sql_string1 || ' and a.organization_id = d.organization_id';
1905 l_sql_string1 := l_sql_string1 || ' and a.organization_id = e.organization_id';
1906
1907 -- Org id is not null
1908 IF p_org_id IS NOT NULL THEN
1909 l_sql_string1 := l_sql_string1 || ' and a.organization_id = :ORG_ID';
1910 l_temp_tbl(l_bind_index) := p_org_id;
1911 l_bind_index := l_bind_index + 1;
1912
1913 END IF;
1914
1915 -- Dept Name is not null
1916 IF p_dept_name IS NOT NULL THEN
1917 l_sql_string1 := l_sql_string1 || ' and upper(d.description) like upper(:D' || l_bind_index || ')';
1918 l_temp_tbl(l_bind_index) := p_dept_name;
1919 l_bind_index := l_bind_index + 1;
1920
1921 END IF;
1922
1923
1924 -- Space Name is not null
1925 IF p_space_name IS NOT NULL THEN
1926 l_sql_string1 := l_sql_string1 || ' and upper(a.space_name) like upper (:S' || l_bind_index || ')';
1927 l_temp_tbl(l_bind_index) := p_space_name;
1928 l_bind_index := l_bind_index + 1;
1929
1930 END IF;
1931
1932 -- Space Category is not null
1933 IF p_space_category IS NOT NULL THEN
1934 l_sql_string1 := l_sql_string1 || ' and a.space_category = :SPACE_CATEGORY';
1935 l_temp_tbl(l_bind_index) := p_space_category;
1936 l_bind_index := l_bind_index + 1;
1937
1938 END IF;
1939
1940 AHL_DEBUG_PUB.debug( 'l_sql_string1:'||l_sql_string1);
1941
1942 -- Department details
1943 OPEN_FOR_CURSOR(p_x_ref_csr => l_dept_cur,
1944 p_search_query_tbl => l_tempbind_tbl,
1945 p_sql_str => l_sql_string);
1946 --
1947 l_idx := 0;
1948 LOOP
1949 FETCH l_dept_cur INTO l_department_id, l_description, l_dept_code, l_org_name;
1950 EXIT WHEN l_dept_cur%NOTFOUND;
1951 --
1952 IF (l_department_id IS NOT NULL AND p_space_name IS NULL )THEN
1953 --
1954 IF l_start_date IS NOT NULL THEN
1955 x_display_rec.start_period_1 := l_start_date-1;
1956 x_display_rec.end_period_1 := x_display_rec.start_period_1 + 7;
1957
1958 l_count := Get_Number_of_Dvisits(l_department_id,
1959 p_simulation_plan_id,
1960 p_plan_flag,
1961 x_display_rec.start_period_1,
1962 x_display_rec.end_period_1);
1963 IF G_DEBUG='Y' THEN
1964 AHL_DEBUG_PUB.debug( 'count W1:'||l_count);
1965 END IF;
1966 IF l_count = 1 THEN
1967 x_scheduled_visits_tbl(l_idx).value_1 := 'S';
1968 ELSIF l_count > 1 THEN
1969 x_scheduled_visits_tbl(l_idx).value_1 := 'M';
1970 ELSE
1971 x_scheduled_visits_tbl(l_idx).value_1 := 'A';
1972 END IF;
1973 x_display_rec.field_1 := to_char( l_start_date ,'dd/mm');
1974 x_display_rec.start_period_1 := x_display_rec.start_period_1;
1975 x_display_rec.end_period_1 := x_display_rec.end_period_1;
1976 END IF;
1977
1978 IF G_DEBUG='Y' THEN
1979 AHL_DEBUG_PUB.debug( 'SPACE ID:'||x_scheduled_visits_tbl(l_idx).space_id);
1980 AHL_DEBUG_PUB.debug( 'value 1:'||x_scheduled_visits_tbl(l_idx).value_1);
1981 END IF;
1982 --
1983 IF x_display_rec.end_period_1 IS NOT NULL THEN
1984 x_display_rec.start_period_2 := x_display_rec.end_period_1;
1985 x_display_rec.end_period_2 := x_display_rec.start_period_2 + 7;
1986
1987 l_count := Get_Number_of_Dvisits(l_department_id,
1988 p_simulation_plan_id,
1989 p_plan_flag,
1990 x_display_rec.start_period_2,
1991 x_display_rec.end_period_2);
1992
1993 IF l_count = 1 THEN
1994 x_scheduled_visits_tbl(l_idx).value_2 := 'S';
1995 ELSIF l_count > 1 THEN
1996 x_scheduled_visits_tbl(l_idx).value_2 := 'M';
1997 ELSE
1998 x_scheduled_visits_tbl(l_idx).value_2 := 'A';
1999 END IF;
2000 x_display_rec.field_2 := to_char( x_display_rec.start_period_2 + 1 ,'dd/mm');
2001 x_display_rec.start_period_2 := x_display_rec.start_period_2;
2002 x_display_rec.end_period_2 := x_display_rec.end_period_2;
2003 END IF;
2004 --
2005 IF G_DEBUG='Y' THEN
2006 AHL_DEBUG_PUB.debug( 'value 2:'||x_scheduled_visits_tbl(l_idx).value_2);
2007 END IF;
2008 --
2009 IF x_display_rec.end_period_2 IS NOT NULL THEN
2010 x_display_rec.start_period_3 := x_display_rec.end_period_2;
2011 x_display_rec.end_period_3 := x_display_rec.start_period_3 + 7;
2012 l_count := Get_Number_of_Dvisits(l_department_id,
2013 p_simulation_plan_id,
2014 p_plan_flag,
2015 x_display_rec.start_period_3,
2016 x_display_rec.end_period_3);
2017
2018
2019 IF l_count = 1 THEN
2020 x_scheduled_visits_tbl(l_idx).value_3 := 'S';
2021 ELSIF l_count > 1 THEN
2022 x_scheduled_visits_tbl(l_idx).value_3 := 'M';
2023 ELSE
2024 x_scheduled_visits_tbl(l_idx).value_3 := 'A';
2025 END IF;
2026 x_display_rec.field_3 := to_char( x_display_rec.start_period_3+1 ,'dd/mm');
2027 x_display_rec.start_period_3 := x_display_rec.start_period_3;
2028 x_display_rec.end_period_3 := x_display_rec.end_period_3;
2029 END IF;
2030 --
2031 IF G_DEBUG='Y' THEN
2032 AHL_DEBUG_PUB.debug( 'value 3:'||x_scheduled_visits_tbl(l_idx).value_3);
2033 END IF;
2034 --
2035 IF x_display_rec.end_period_3 IS NOT NULL THEN
2036 x_display_rec.start_period_4 := x_display_rec.end_period_3;
2037 x_display_rec.end_period_4 := x_display_rec.start_period_4+7;
2038 l_count := Get_Number_of_Dvisits(l_department_id,
2039 p_simulation_plan_id,
2040 p_plan_flag,
2041 x_display_rec.start_period_4,
2042 x_display_rec.end_period_4);
2043
2044
2045 IF l_count = 1 THEN
2046 x_scheduled_visits_tbl(l_idx).value_4 := 'S';
2047 ELSIF l_count > 1 THEN
2048 x_scheduled_visits_tbl(l_idx).value_4 := 'M';
2049 ELSE
2050 x_scheduled_visits_tbl(l_idx).value_4 := 'A';
2051 END IF;
2052 x_display_rec.field_4 := to_char( x_display_rec.start_period_4+1 ,'dd/mm');
2053 x_display_rec.start_period_4 := x_display_rec.start_period_4;
2054 x_display_rec.end_period_4 := x_display_rec.end_period_4;
2055 END IF;
2056 --
2057 IF G_DEBUG='Y' THEN
2058 AHL_DEBUG_PUB.debug( 'value 4:'||x_scheduled_visits_tbl(l_idx).value_4);
2059 END IF;
2060 --
2061 IF x_display_rec.end_period_4 IS NOT NULL THEN
2062 x_display_rec.start_period_5 := x_display_rec.end_period_4;
2063 x_display_rec.end_period_5 := x_display_rec.start_period_5+7;
2064
2065 l_count := Get_Number_of_Dvisits(l_department_id,
2066 p_simulation_plan_id,
2067 p_plan_flag,
2068 x_display_rec.start_period_5,
2069 x_display_rec.end_period_5);
2070
2071
2072
2073 IF l_count = 1 THEN
2074 x_scheduled_visits_tbl(l_idx).value_5 := 'S';
2075 ELSIF l_count > 1 THEN
2076 x_scheduled_visits_tbl(l_idx).value_5 := 'M';
2077 ELSE
2078 x_scheduled_visits_tbl(l_idx).value_5 := 'A';
2079 END IF;
2080 x_display_rec.field_5 := to_char( x_display_rec.start_period_5 + 1,'dd/mm');
2081 x_display_rec.start_period_5 := x_display_rec.start_period_5;
2082 x_display_rec.end_period_5 := x_display_rec.end_period_5;
2083 END IF;
2084 --
2085 IF G_DEBUG='Y' THEN
2086 AHL_DEBUG_PUB.debug( 'value 5:'||x_scheduled_visits_tbl(l_idx).value_5);
2087 END IF;
2088 --
2089 IF x_display_rec.end_period_5 IS NOT NULL THEN
2090 x_display_rec.start_period_6 := x_display_rec.end_period_5;
2091 x_display_rec.end_period_6 := x_display_rec.start_period_6+7;
2092
2093 l_count := Get_Number_of_Dvisits(l_department_id,
2094 p_simulation_plan_id,
2095 p_plan_flag,
2096 x_display_rec.start_period_6,
2097 x_display_rec.end_period_6);
2098
2099
2100 IF l_count = 1 THEN
2101 x_scheduled_visits_tbl(l_idx).value_6 := 'S';
2102 ELSIF l_count > 1 THEN
2103 x_scheduled_visits_tbl(l_idx).value_6 := 'M';
2104 ELSE
2105 x_scheduled_visits_tbl(l_idx).value_6 := 'A';
2106 END IF;
2107 x_display_rec.field_6 := to_char( x_display_rec.start_period_6 + 1,'dd/mm');
2108 x_display_rec.start_period_6 := x_display_rec.start_period_6;
2109 x_display_rec.end_period_6 := x_display_rec.end_period_6;
2110 END IF;
2111 --
2112 IF G_DEBUG='Y' THEN
2113 AHL_DEBUG_PUB.debug( 'value 6:'||x_scheduled_visits_tbl(l_idx).value_6);
2114 END IF;
2115 --
2116 IF x_display_rec.end_period_6 IS NOT NULL THEN
2117 x_display_rec.start_period_7 := x_display_rec.end_period_6;
2118 x_display_rec.end_period_7 := x_display_rec.start_period_7 +7;
2119
2120 l_count := Get_Number_of_Dvisits(l_department_id,
2121 p_simulation_plan_id,
2122 p_plan_flag,
2123 x_display_rec.start_period_7,
2124 x_display_rec.end_period_7);
2125
2126
2127 IF l_count = 1 THEN
2128 x_scheduled_visits_tbl(l_idx).value_7 := 'S';
2129 ELSIF l_count > 1 THEN
2130 x_scheduled_visits_tbl(l_idx).value_7 := 'M';
2131 ELSE
2132 x_scheduled_visits_tbl(l_idx).value_7 := 'A';
2133 END IF;
2134 x_display_rec.field_7 := to_char( x_display_rec.start_period_7 + 1,'dd/mm');
2135 x_display_rec.start_period_7 := x_display_rec.start_period_7;
2136 x_display_rec.end_period_7 := x_display_rec.end_period_7;
2137 END IF;
2138 --
2139 IF G_DEBUG='Y' THEN
2140 AHL_DEBUG_PUB.debug( 'value 7:'||x_scheduled_visits_tbl(l_idx).value_7);
2141 END IF;
2142 --
2143 IF x_display_rec.end_period_7 IS NOT NULL THEN
2144 x_display_rec.start_period_8 := x_display_rec.end_period_7;
2145 x_display_rec.end_period_8 := x_display_rec.start_period_8+7;
2146
2147 l_count := Get_Number_of_Dvisits(l_department_id,
2148 p_simulation_plan_id,
2149 p_plan_flag,
2150 x_display_rec.start_period_8,
2151 x_display_rec.end_period_8);
2152
2153
2154 IF l_count = 1 THEN
2155 x_scheduled_visits_tbl(l_idx).value_8 := 'S';
2156 ELSIF l_count > 1 THEN
2157 x_scheduled_visits_tbl(l_idx).value_8 := 'M';
2158 ELSE
2159 x_scheduled_visits_tbl(l_idx).value_8 := 'A';
2160 END IF;
2161 x_display_rec.field_8 := to_char( x_display_rec.start_period_8 + 1,'dd/mm');
2162 x_display_rec.start_period_8 := x_display_rec.start_period_8;
2163 x_display_rec.end_period_8 := x_display_rec.end_period_8;
2164 END IF;
2165 --
2166 IF G_DEBUG='Y' THEN
2167 AHL_DEBUG_PUB.debug( 'value 8:'||x_scheduled_visits_tbl(l_idx).value_8);
2168 END IF;
2169 --
2170 IF x_display_rec.end_period_8 IS NOT NULL THEN
2171 x_display_rec.start_period_9 := x_display_rec.end_period_8;
2172 x_display_rec.end_period_9 := x_display_rec.start_period_9 +7;
2173
2174 l_count := Get_Number_of_Dvisits(l_department_id,
2175 p_simulation_plan_id,
2176 p_plan_flag,
2177 x_display_rec.start_period_9,
2178 x_display_rec.end_period_9);
2179
2180
2181 IF l_count = 1 THEN
2182 x_scheduled_visits_tbl(l_idx).value_9 := 'S';
2183 ELSIF l_count > 1 THEN
2184 x_scheduled_visits_tbl(l_idx).value_9 := 'M';
2185 ELSE
2186 x_scheduled_visits_tbl(l_idx).value_9 := 'A';
2187 END IF;
2188 x_display_rec.field_9 := to_char( x_display_rec.start_period_9 + 1 ,'dd/mm');
2189 x_display_rec.start_period_9 := x_display_rec.start_period_9;
2190 x_display_rec.end_period_9 := x_display_rec.end_period_9;
2191 END IF;
2192 --
2193 IF G_DEBUG='Y' THEN
2194 AHL_DEBUG_PUB.debug( 'value 9:'||x_scheduled_visits_tbl(l_idx).value_9);
2195 END IF;
2196 --
2197 IF x_display_rec.end_period_9 IS NOT NULL THEN
2198 x_display_rec.start_period_10 := x_display_rec.end_period_9;
2199 x_display_rec.end_period_10 := x_display_rec.start_period_10 +7;
2200
2201 l_count := Get_Number_of_Dvisits(l_department_id,
2202 p_simulation_plan_id,
2203 p_plan_flag,
2204 x_display_rec.start_period_10,
2205 x_display_rec.end_period_10);
2206
2207 IF l_count = 1 THEN
2208 x_scheduled_visits_tbl(l_idx).value_10 := 'S';
2209 ELSIF l_count > 1 THEN
2210 x_scheduled_visits_tbl(l_idx).value_10 := 'M';
2211 ELSE
2212 x_scheduled_visits_tbl(l_idx).value_10 := 'A';
2213 END IF;
2214 x_display_rec.field_10 := to_char( x_display_rec.start_period_10 + 1,'dd/mm');
2215 x_display_rec.start_period_10 := x_display_rec.start_period_10;
2216 x_display_rec.end_period_10 := x_display_rec.end_period_10;
2217 END IF;
2218 --
2219 IF G_DEBUG='Y' THEN
2220 AHL_DEBUG_PUB.debug( 'value 10:'||x_scheduled_visits_tbl(l_idx).value_10);
2221 END IF;
2222 --
2223 IF x_display_rec.end_period_10 IS NOT NULL THEN
2224 x_display_rec.start_period_11 := x_display_rec.end_period_10;
2225 x_display_rec.end_period_11 := x_display_rec.start_period_11 +7;
2226
2227 l_count := Get_Number_of_Dvisits(l_department_id,
2228 p_simulation_plan_id,
2229 p_plan_flag,
2230 x_display_rec.start_period_11,
2231 x_display_rec.end_period_11);
2232
2233 IF l_count = 1 THEN
2234 x_scheduled_visits_tbl(l_idx).value_11 := 'S';
2235 ELSIF l_count > 1 THEN
2236 x_scheduled_visits_tbl(l_idx).value_11 := 'M';
2237 ELSE
2238 x_scheduled_visits_tbl(l_idx).value_11 := 'A';
2239 END IF;
2240 x_display_rec.field_11 := to_char( x_display_rec.start_period_11 + 1 ,'dd/mm');
2241 x_display_rec.start_period_11 := x_display_rec.start_period_11;
2242 x_display_rec.end_period_11 := x_display_rec.end_period_11;
2243 END IF;
2244 --
2245 IF G_DEBUG='Y' THEN
2246 AHL_DEBUG_PUB.debug( 'value 11:'||x_scheduled_visits_tbl(l_idx).value_11);
2247 END IF;
2248 --
2249 IF x_display_rec.end_period_11 IS NOT NULL THEN
2250 x_display_rec.start_period_12 := x_display_rec.end_period_11;
2251 x_display_rec.end_period_12 := x_display_rec.start_period_12 +7;
2252
2253 l_count := Get_Number_of_Dvisits(l_department_id,
2254 p_simulation_plan_id,
2255 p_plan_flag,
2256 x_display_rec.start_period_12,
2257 x_display_rec.end_period_12);
2258
2259 IF l_count = 1 THEN
2260 x_scheduled_visits_tbl(l_idx).value_12 := 'S';
2261 ELSIF l_count > 1 THEN
2262 x_scheduled_visits_tbl(l_idx).value_12 := 'M';
2263 ELSE
2264 x_scheduled_visits_tbl(l_idx).value_12 := 'A';
2265 END IF;
2266 x_display_rec.field_12 := to_char( x_display_rec.start_period_12 + 1,'dd/mm');
2267 x_display_rec.start_period_12 := x_display_rec.start_period_12;
2268 x_display_rec.end_period_12 := x_display_rec.end_period_12;
2269 END IF;
2270 --
2271 IF G_DEBUG='Y' THEN
2272 AHL_DEBUG_PUB.debug( 'value 12:'||x_scheduled_visits_tbl(l_idx).value_12);
2273 END IF;
2274 --
2275 IF x_display_rec.end_period_12 IS NOT NULL THEN
2276 x_display_rec.start_period_13 := x_display_rec.end_period_12;
2277 x_display_rec.end_period_13 := x_display_rec.start_period_13 +7;
2278
2279 l_count := Get_Number_of_Dvisits(l_department_id,
2280 p_simulation_plan_id,
2281 p_plan_flag,
2282 x_display_rec.start_period_13,
2283 x_display_rec.end_period_13);
2284
2285 IF l_count = 1 THEN
2286 x_scheduled_visits_tbl(l_idx).value_13 := 'S';
2287 ELSIF l_count > 1 THEN
2288 x_scheduled_visits_tbl(l_idx).value_13 := 'M';
2289 ELSE
2290 x_scheduled_visits_tbl(l_idx).value_13 := 'A';
2291 END IF;
2292 x_display_rec.field_13 := to_char( x_display_rec.start_period_13 + 1 ,'dd/mm');
2293 x_display_rec.start_period_13 := x_display_rec.start_period_13;
2294 x_display_rec.end_period_13 := x_display_rec.end_period_13;
2295 END IF;
2296 --
2297 IF G_DEBUG='Y' THEN
2298 AHL_DEBUG_PUB.debug( 'value 13:'||x_scheduled_visits_tbl(l_idx).value_13);
2299 END IF;
2300 --
2301 IF x_display_rec.end_period_13 IS NOT NULL THEN
2302 x_display_rec.start_period_14 := x_display_rec.end_period_13;
2303 x_display_rec.end_period_14 := x_display_rec.start_period_14 +7;
2304
2305 l_count := Get_Number_of_Dvisits(l_department_id,
2306 p_simulation_plan_id,
2307 p_plan_flag,
2308 x_display_rec.start_period_14,
2309 x_display_rec.end_period_14);
2310
2311 IF l_count = 1 THEN
2312 x_scheduled_visits_tbl(l_idx).value_14 := 'S';
2313 ELSIF l_count > 1 THEN
2314 x_scheduled_visits_tbl(l_idx).value_14 := 'M';
2315 ELSE
2316 x_scheduled_visits_tbl(l_idx).value_14 := 'A';
2317 END IF;
2318 x_display_rec.field_14 := to_char( x_display_rec.start_period_14 + 1 ,'dd/mm');
2319 x_display_rec.start_period_14 := x_display_rec.start_period_14;
2320 x_display_rec.end_period_14 := x_display_rec.end_period_14;
2321 END IF;
2322 --
2323 IF G_DEBUG='Y' THEN
2324 AHL_DEBUG_PUB.debug( 'value 14:'||x_scheduled_visits_tbl(l_idx).value_14);
2325 END IF;
2326 x_scheduled_visits_tbl(l_idx).space_id := null;
2327 x_scheduled_visits_tbl(l_idx).space_name := null;
2328 x_scheduled_visits_tbl(l_idx).department_code := l_dept_code;
2329 x_scheduled_visits_tbl(l_idx).department_name := l_description;
2330 x_scheduled_visits_tbl(l_idx).department_id := l_department_id;
2331 x_scheduled_visits_tbl(l_idx).space_category_mean := null;
2332 x_scheduled_visits_tbl(l_idx).Space_Category := null;
2333 x_scheduled_visits_tbl(l_idx).org_name := l_org_name;
2334 x_display_rec.start_period := l_start_date;
2335 x_display_rec.end_period := x_display_rec.end_period_14;
2336
2337 --
2338 l_idx := l_idx + 1;
2339 END IF;
2340 --
2341 END LOOP;
2342 CLOSE l_dept_cur;
2343
2344 -- Space info
2345
2346 OPEN_FOR_CURSOR(p_x_ref_csr => l_space_cur,
2347 p_search_query_tbl => l_temp_tbl,
2348 p_sql_str => l_sql_string1);
2349 --
2350 LOOP
2351 FETCH l_space_cur INTO l_space_id, l_space_name , l_space_category,
2352 l_meaning, l_department_id,l_dept_code, l_description,
2353 l_org_id, l_org_name;
2354 EXIT WHEN l_space_cur%NOTFOUND;
2355 --
2356 IF l_space_id IS NOT NULL THEN
2357 IF l_start_date IS NOT NULL THEN
2358 x_display_rec.start_period_1 := l_start_date-1;
2359 x_display_rec.end_period_1 := x_display_rec.start_period_1 + 7;
2360
2361 l_count := Get_count_of_Visits(l_space_id,
2362 p_simulation_plan_id,
2363 p_plan_flag,
2364 x_display_rec.start_period_1,
2365 x_display_rec.end_period_1);
2366
2367 IF G_DEBUG='Y' THEN
2368 AHL_DEBUG_PUB.debug( 'count W1:'||l_count);
2369 END IF;
2370 IF l_count = 1 THEN
2371 x_scheduled_visits_tbl(l_idx).value_1 := 'S';
2372 ELSIF l_count > 1 THEN
2373 x_scheduled_visits_tbl(l_idx).value_1 := 'M';
2374 ELSIF l_count = 0 THEN
2375 IF Check_Unavilable_Space(l_space_id,
2376 x_display_rec.start_period_1,
2377 x_display_rec.end_period_1) THEN
2378 x_scheduled_visits_tbl(l_idx).value_1 := 'U';
2379 ELSE
2380 x_scheduled_visits_tbl(l_idx).value_1 := 'A';
2381 END IF;
2382 END IF;
2383 x_display_rec.field_1 := to_char( l_start_date ,'dd/mm');
2384 x_display_rec.start_period_1 := x_display_rec.start_period_1;
2385 x_display_rec.end_period_1 := x_display_rec.end_period_1;
2386 END IF;
2387
2388 IF G_DEBUG='Y' THEN
2389 AHL_DEBUG_PUB.debug( 'SPACE ID:'||x_scheduled_visits_tbl(l_idx).space_id);
2390 AHL_DEBUG_PUB.debug( 'value 1:'||x_scheduled_visits_tbl(l_idx).value_1);
2391 END IF;
2392 --
2393 IF x_display_rec.end_period_1 IS NOT NULL THEN
2394 x_display_rec.start_period_2 := x_display_rec.end_period_1;
2395 x_display_rec.end_period_2 := x_display_rec.start_period_2 + 7;
2396
2397 l_count := Get_count_of_Visits(l_space_id,
2398 p_simulation_plan_id,
2399 p_plan_flag,
2400 x_display_rec.start_period_2,
2401 x_display_rec.end_period_2);
2402
2403
2404 IF l_count = 1 THEN
2405 x_scheduled_visits_tbl(l_idx).value_2 := 'S';
2406 ELSIF l_count > 1 THEN
2407 x_scheduled_visits_tbl(l_idx).value_2 := 'M';
2408 ELSIF l_count = 0 THEN
2409 IF Check_Unavilable_Space(l_space_id,
2410 x_display_rec.start_period_2,
2411 x_display_rec.end_period_2) THEN
2412 x_scheduled_visits_tbl(l_idx).value_2 := 'U';
2413 ELSE
2414 x_scheduled_visits_tbl(l_idx).value_2 := 'A';
2415 END IF;
2416 END IF;
2417 x_display_rec.field_2 := to_char( x_display_rec.start_period_2 + 1 ,'dd/mm');
2418 x_display_rec.start_period_2 := x_display_rec.start_period_2;
2419 x_display_rec.end_period_2 := x_display_rec.end_period_2;
2420 END IF;
2421 --
2422 IF G_DEBUG='Y' THEN
2423 AHL_DEBUG_PUB.debug( 'value 2:'||x_scheduled_visits_tbl(l_idx).value_2);
2424 END IF;
2425 --
2426 IF x_display_rec.end_period_2 IS NOT NULL THEN
2427 x_display_rec.start_period_3 := x_display_rec.end_period_2;
2428 x_display_rec.end_period_3 := x_display_rec.start_period_3 + 7;
2429 l_count := Get_count_of_Visits(l_space_id,
2430 p_simulation_plan_id,
2431 p_plan_flag,
2432 x_display_rec.start_period_3,
2433 x_display_rec.end_period_3);
2434
2435
2436 IF l_count = 1 THEN
2437 x_scheduled_visits_tbl(l_idx).value_3 := 'S';
2438 ELSIF l_count > 1 THEN
2439 x_scheduled_visits_tbl(l_idx).value_3 := 'M';
2440 ELSIF l_count = 0 THEN
2441 IF Check_Unavilable_Space(l_space_id,
2442 x_display_rec.start_period_3,
2443 x_display_rec.end_period_3) THEN
2444 x_scheduled_visits_tbl(l_idx).value_3 := 'U';
2445 ELSE
2446 x_scheduled_visits_tbl(l_idx).value_3 := 'A';
2447 END IF;
2448 END IF;
2449 x_display_rec.field_3 := to_char( x_display_rec.start_period_3+1 ,'dd/mm');
2450 x_display_rec.start_period_3 := x_display_rec.start_period_3;
2451 x_display_rec.end_period_3 := x_display_rec.end_period_3;
2452 END IF;
2453 --
2454 IF G_DEBUG='Y' THEN
2455 AHL_DEBUG_PUB.debug( 'value 3:'||x_scheduled_visits_tbl(l_idx).value_3);
2456 END IF;
2457 --
2458 IF x_display_rec.end_period_3 IS NOT NULL THEN
2459 x_display_rec.start_period_4 := x_display_rec.end_period_3;
2460 x_display_rec.end_period_4 := x_display_rec.start_period_4+7;
2461 l_count := Get_count_of_Visits(l_space_id,
2462 p_simulation_plan_id,
2463 p_plan_flag,
2464 x_display_rec.start_period_4,
2465 x_display_rec.end_period_4);
2466
2467
2468 IF l_count = 1 THEN
2469 x_scheduled_visits_tbl(l_idx).value_4 := 'S';
2470 ELSIF l_count > 1 THEN
2471 x_scheduled_visits_tbl(l_idx).value_4 := 'M';
2472 ELSIF l_count = 0 THEN
2473 IF Check_Unavilable_Space(l_space_id,
2474 x_display_rec.start_period_4,
2475 x_display_rec.end_period_4) THEN
2476 x_scheduled_visits_tbl(l_idx).value_4 := 'U';
2477 ELSE
2478 x_scheduled_visits_tbl(l_idx).value_4 := 'A';
2479 END IF;
2480 END IF;
2481 x_display_rec.field_4 := to_char( x_display_rec.start_period_4+1 ,'dd/mm');
2482 x_display_rec.start_period_4 := x_display_rec.start_period_4;
2483 x_display_rec.end_period_4 := x_display_rec.end_period_4;
2484 END IF;
2485 --
2486 IF G_DEBUG='Y' THEN
2487 AHL_DEBUG_PUB.debug( 'value 4:'||x_scheduled_visits_tbl(l_idx).value_4);
2488 END IF;
2489 --
2490 IF x_display_rec.end_period_4 IS NOT NULL THEN
2491 x_display_rec.start_period_5 := x_display_rec.end_period_4;
2492 x_display_rec.end_period_5 := x_display_rec.start_period_5+7;
2493
2494 l_count := Get_count_of_Visits(l_space_id,
2495 p_simulation_plan_id,
2496 p_plan_flag,
2497 x_display_rec.start_period_5,
2498 x_display_rec.end_period_5);
2499
2500
2501 IF l_count = 1 THEN
2502 x_scheduled_visits_tbl(l_idx).value_5 := 'S';
2503 ELSIF l_count > 1 THEN
2504 x_scheduled_visits_tbl(l_idx).value_5 := 'M';
2505 ELSIF l_count = 0 THEN
2506 IF Check_Unavilable_Space(l_space_id,
2507 x_display_rec.start_period_5,
2508 x_display_rec.end_period_5) THEN
2509 x_scheduled_visits_tbl(l_idx).value_5 := 'U';
2510 ELSE
2511 x_scheduled_visits_tbl(l_idx).value_5 := 'A';
2512 END IF;
2513 END IF;
2514 x_display_rec.field_5 := to_char( x_display_rec.start_period_5 + 1,'dd/mm');
2515 x_display_rec.start_period_5 := x_display_rec.start_period_5;
2516 x_display_rec.end_period_5 := x_display_rec.end_period_5;
2517 END IF;
2518 --
2519 IF G_DEBUG='Y' THEN
2520 AHL_DEBUG_PUB.debug( 'value 5:'||x_scheduled_visits_tbl(l_idx).value_5);
2521 END IF;
2522 --
2523 IF x_display_rec.end_period_5 IS NOT NULL THEN
2524 x_display_rec.start_period_6 := x_display_rec.end_period_5;
2525 x_display_rec.end_period_6 := x_display_rec.start_period_6+7;
2526
2527 l_count := Get_count_of_Visits(l_space_id,
2528 p_simulation_plan_id,
2529 p_plan_flag,
2530 x_display_rec.start_period_6,
2531 x_display_rec.end_period_6);
2532
2533 IF l_count = 1 THEN
2534 x_scheduled_visits_tbl(l_idx).value_6 := 'S';
2535 ELSIF l_count > 1 THEN
2536 x_scheduled_visits_tbl(l_idx).value_6 := 'M';
2537 ELSIF l_count = 0 THEN
2538 IF Check_Unavilable_Space(l_space_id,
2539 x_display_rec.start_period_6,
2540 x_display_rec.end_period_6) THEN
2541 x_scheduled_visits_tbl(l_idx).value_6 := 'U';
2542 ELSE
2543 x_scheduled_visits_tbl(l_idx).value_6 := 'A';
2544 END IF;
2545 END IF;
2546 x_display_rec.field_6 := to_char( x_display_rec.start_period_6 + 1,'dd/mm');
2547 x_display_rec.start_period_6 := x_display_rec.start_period_6;
2548 x_display_rec.end_period_6 := x_display_rec.end_period_6;
2549 END IF;
2550 --
2551 IF G_DEBUG='Y' THEN
2552 AHL_DEBUG_PUB.debug( 'value 6:'||x_scheduled_visits_tbl(l_idx).value_6);
2553 END IF;
2554 --
2555 IF x_display_rec.end_period_6 IS NOT NULL THEN
2556 x_display_rec.start_period_7 := x_display_rec.end_period_6;
2557 x_display_rec.end_period_7 := x_display_rec.start_period_7 +7;
2558
2559 l_count := Get_count_of_Visits(l_space_id,
2560 p_simulation_plan_id,
2561 p_plan_flag,
2562 x_display_rec.start_period_7,
2563 x_display_rec.end_period_7);
2564
2565
2566 IF l_count = 1 THEN
2567 x_scheduled_visits_tbl(l_idx).value_7 := 'S';
2568 ELSIF l_count > 1 THEN
2569 x_scheduled_visits_tbl(l_idx).value_7 := 'M';
2570 ELSIF l_count = 0 THEN
2571 IF Check_Unavilable_Space(l_space_id,
2572 x_display_rec.start_period_7,
2573 x_display_rec.end_period_7) THEN
2574 x_scheduled_visits_tbl(l_idx).value_7 := 'U';
2575 ELSE
2576 x_scheduled_visits_tbl(l_idx).value_7 := 'A';
2577 END IF;
2578 END IF;
2579 x_display_rec.field_7 := to_char( x_display_rec.start_period_7 + 1,'dd/mm');
2580 x_display_rec.start_period_7 := x_display_rec.start_period_7;
2581 x_display_rec.end_period_7 := x_display_rec.end_period_7;
2582 END IF;
2583 --
2584 IF G_DEBUG='Y' THEN
2585 AHL_DEBUG_PUB.debug( 'value 7:'||x_scheduled_visits_tbl(l_idx).value_7);
2586 END IF;
2587 --
2588 IF x_display_rec.end_period_7 IS NOT NULL THEN
2589 x_display_rec.start_period_8 := x_display_rec.end_period_7;
2590 x_display_rec.end_period_8 := x_display_rec.start_period_8+7;
2591
2592 l_count := Get_count_of_Visits(l_space_id,
2593 p_simulation_plan_id,
2594 p_plan_flag,
2595 x_display_rec.start_period_8,
2596 x_display_rec.end_period_8);
2597
2598
2599 IF l_count = 1 THEN
2600 x_scheduled_visits_tbl(l_idx).value_8 := 'S';
2601 ELSIF l_count > 1 THEN
2602 x_scheduled_visits_tbl(l_idx).value_8 := 'M';
2603 ELSIF l_count = 0 THEN
2604 IF Check_Unavilable_Space(l_space_id,
2605 x_display_rec.start_period_8,
2606 x_display_rec.end_period_8) THEN
2607 x_scheduled_visits_tbl(l_idx).value_8 := 'U';
2608 ELSE
2609 x_scheduled_visits_tbl(l_idx).value_8 := 'A';
2610 END IF;
2611 END IF;
2612 x_display_rec.field_8 := to_char( x_display_rec.start_period_8 + 1,'dd/mm');
2613 x_display_rec.start_period_8 := x_display_rec.start_period_8;
2614 x_display_rec.end_period_8 := x_display_rec.end_period_8;
2615 END IF;
2616 --
2617 IF G_DEBUG='Y' THEN
2618 AHL_DEBUG_PUB.debug( 'value 8:'||x_scheduled_visits_tbl(l_idx).value_8);
2619 END IF;
2620 --
2621 IF x_display_rec.end_period_8 IS NOT NULL THEN
2622 x_display_rec.start_period_9 := x_display_rec.end_period_8;
2623 x_display_rec.end_period_9 := x_display_rec.start_period_9 +7;
2624
2625 l_count := Get_count_of_Visits(l_space_id,
2626 p_simulation_plan_id,
2627 p_plan_flag,
2628 x_display_rec.start_period_9,
2629 x_display_rec.end_period_9);
2630
2631
2632 IF l_count = 1 THEN
2633 x_scheduled_visits_tbl(l_idx).value_9 := 'S';
2634 ELSIF l_count > 1 THEN
2635 x_scheduled_visits_tbl(l_idx).value_9 := 'M';
2636 ELSIF l_count = 0 THEN
2637 IF Check_Unavilable_Space(l_space_id,
2638 x_display_rec.start_period_9,
2639 x_display_rec.end_period_9) THEN
2640 x_scheduled_visits_tbl(l_idx).value_9 := 'U';
2641 ELSE
2642 x_scheduled_visits_tbl(l_idx).value_9 := 'A';
2643 END IF;
2644 END IF;
2645 x_display_rec.field_9 := to_char( x_display_rec.start_period_9 + 1 ,'dd/mm');
2646 x_display_rec.start_period_9 := x_display_rec.start_period_9;
2647 x_display_rec.end_period_9 := x_display_rec.end_period_9;
2648 END IF;
2649 --
2650 IF G_DEBUG='Y' THEN
2651 AHL_DEBUG_PUB.debug( 'value 9:'||x_scheduled_visits_tbl(l_idx).value_9);
2652 END IF;
2653 --
2654 IF x_display_rec.end_period_9 IS NOT NULL THEN
2655 x_display_rec.start_period_10 := x_display_rec.end_period_9;
2656 x_display_rec.end_period_10 := x_display_rec.start_period_10 +7;
2657
2658 l_count := Get_count_of_Visits(l_space_id,
2659 p_simulation_plan_id,
2660 p_plan_flag,
2661 x_display_rec.start_period_10,
2662 x_display_rec.end_period_10);
2663
2664 IF l_count = 1 THEN
2665 x_scheduled_visits_tbl(l_idx).value_10 := 'S';
2666 ELSIF l_count > 1 THEN
2667 x_scheduled_visits_tbl(l_idx).value_10 := 'M';
2668 ELSIF l_count = 0 THEN
2669 IF Check_Unavilable_Space(l_space_id,
2670 x_display_rec.start_period_10,
2671 x_display_rec.end_period_10) THEN
2672 x_scheduled_visits_tbl(l_idx).value_10 := 'U';
2673 ELSE
2674 x_scheduled_visits_tbl(l_idx).value_10 := 'A';
2675 END IF;
2676 END IF;
2677 x_display_rec.field_10 := to_char( x_display_rec.start_period_10 + 1,'dd/mm');
2678 x_display_rec.start_period_10 := x_display_rec.start_period_10;
2679 x_display_rec.end_period_10 := x_display_rec.end_period_10;
2680 END IF;
2681 --
2682 IF G_DEBUG='Y' THEN
2683 AHL_DEBUG_PUB.debug( 'value 10:'||x_scheduled_visits_tbl(l_idx).value_10);
2684 END IF;
2685 --
2686 IF x_display_rec.end_period_10 IS NOT NULL THEN
2687 x_display_rec.start_period_11 := x_display_rec.end_period_10;
2688 x_display_rec.end_period_11 := x_display_rec.start_period_11 +7;
2689
2690 l_count := Get_count_of_Visits(l_space_id,
2691 p_simulation_plan_id,
2692 p_plan_flag,
2693 x_display_rec.start_period_11,
2694 x_display_rec.end_period_11);
2695
2696 IF l_count = 1 THEN
2697 x_scheduled_visits_tbl(l_idx).value_11 := 'S';
2698 ELSIF l_count > 1 THEN
2699 x_scheduled_visits_tbl(l_idx).value_11 := 'M';
2700 ELSIF l_count = 0 THEN
2701 IF Check_Unavilable_Space(l_space_id,
2702 x_display_rec.start_period_11,
2703 x_display_rec.end_period_11) THEN
2704 x_scheduled_visits_tbl(l_idx).value_11 := 'U';
2705 ELSE
2706 x_scheduled_visits_tbl(l_idx).value_11 := 'A';
2707 END IF;
2708 END IF;
2709 x_display_rec.field_11 := to_char( x_display_rec.start_period_11 + 1 ,'dd/mm');
2710 x_display_rec.start_period_11 := x_display_rec.start_period_11;
2711 x_display_rec.end_period_11 := x_display_rec.end_period_11;
2712 END IF;
2713 --
2714 IF G_DEBUG='Y' THEN
2715 AHL_DEBUG_PUB.debug( 'value 11:'||x_scheduled_visits_tbl(l_idx).value_11);
2716 END IF;
2717 --
2718 IF x_display_rec.end_period_11 IS NOT NULL THEN
2719 x_display_rec.start_period_12 := x_display_rec.end_period_11;
2720 x_display_rec.end_period_12 := x_display_rec.start_period_12 +7;
2721
2722 l_count := Get_count_of_Visits(l_space_id,
2723 p_simulation_plan_id,
2724 p_plan_flag,
2725 x_display_rec.start_period_12,
2726 x_display_rec.end_period_12);
2727
2728 IF l_count = 1 THEN
2729 x_scheduled_visits_tbl(l_idx).value_12 := 'S';
2730 ELSIF l_count > 1 THEN
2731 x_scheduled_visits_tbl(l_idx).value_12 := 'M';
2732 ELSIF l_count = 0 THEN
2733 IF Check_Unavilable_Space(l_space_id,
2734 x_display_rec.start_period_12,
2735 x_display_rec.end_period_12) THEN
2736 x_scheduled_visits_tbl(l_idx).value_12 := 'U';
2737 ELSE
2738 x_scheduled_visits_tbl(l_idx).value_12 := 'A';
2739 END IF;
2740 END IF;
2741 x_display_rec.field_12 := to_char( x_display_rec.start_period_12 + 1,'dd/mm');
2742 x_display_rec.start_period_12 := x_display_rec.start_period_12;
2743 x_display_rec.end_period_12 := x_display_rec.end_period_12;
2744 END IF;
2745 --
2746 IF G_DEBUG='Y' THEN
2747 AHL_DEBUG_PUB.debug( 'value 12:'||x_scheduled_visits_tbl(l_idx).value_12);
2748 END IF;
2749 --
2750 IF x_display_rec.end_period_12 IS NOT NULL THEN
2751 x_display_rec.start_period_13 := x_display_rec.end_period_12;
2752 x_display_rec.end_period_13 := x_display_rec.start_period_13 +7;
2753
2754 l_count := Get_count_of_Visits(l_space_id,
2755 p_simulation_plan_id,
2756 p_plan_flag,
2757 x_display_rec.start_period_13,
2758 x_display_rec.end_period_13);
2759
2760 IF l_count = 1 THEN
2761 x_scheduled_visits_tbl(l_idx).value_13 := 'S';
2762 ELSIF l_count > 1 THEN
2763 x_scheduled_visits_tbl(l_idx).value_13 := 'M';
2764 ELSIF l_count = 0 THEN
2765 IF Check_Unavilable_Space(l_space_id,
2766 x_display_rec.start_period_13,
2767 x_display_rec.end_period_13) THEN
2768 x_scheduled_visits_tbl(l_idx).value_13 := 'U';
2769 ELSE
2770 x_scheduled_visits_tbl(l_idx).value_13 := 'A';
2771 END IF;
2772 END IF;
2773 x_display_rec.field_13 := to_char( x_display_rec.start_period_13 + 1 ,'dd/mm');
2774 x_display_rec.start_period_13 := x_display_rec.start_period_13;
2775 x_display_rec.end_period_13 := x_display_rec.end_period_13;
2776 END IF;
2777 --
2778 IF G_DEBUG='Y' THEN
2779 AHL_DEBUG_PUB.debug( 'value 13:'||x_scheduled_visits_tbl(l_idx).value_13);
2780 END IF;
2781 --
2782 IF x_display_rec.end_period_13 IS NOT NULL THEN
2783 x_display_rec.start_period_14 := x_display_rec.end_period_13;
2784 x_display_rec.end_period_14 := x_display_rec.start_period_14 +7;
2785
2786 l_count := Get_count_of_Visits(l_space_id,
2787 p_simulation_plan_id,
2788 p_plan_flag,
2789 x_display_rec.start_period_14,
2790 x_display_rec.end_period_14);
2791
2792 IF l_count = 1 THEN
2793 x_scheduled_visits_tbl(l_idx).value_14 := 'S';
2794 ELSIF l_count > 1 THEN
2795 x_scheduled_visits_tbl(l_idx).value_14 := 'M';
2796 ELSIF l_count = 0 THEN
2797 IF Check_Unavilable_Space(l_space_id,
2798 x_display_rec.start_period_14,
2799 x_display_rec.end_period_14) THEN
2800 x_scheduled_visits_tbl(l_idx).value_14 := 'U';
2801 ELSE
2802 x_scheduled_visits_tbl(l_idx).value_14 := 'A';
2803 END IF;
2804 END IF;
2805 x_display_rec.field_14 := to_char( x_display_rec.start_period_14 + 1 ,'dd/mm');
2806 x_display_rec.start_period_14 := x_display_rec.start_period_14;
2807 x_display_rec.end_period_14 := x_display_rec.end_period_14;
2808 END IF;
2809 --
2810 IF G_DEBUG='Y' THEN
2811 AHL_DEBUG_PUB.debug( 'value 14:'||x_scheduled_visits_tbl(l_idx).value_14);
2812 END IF;
2813 x_scheduled_visits_tbl(l_idx).space_id := l_space_id;
2814 x_scheduled_visits_tbl(l_idx).space_name := l_space_name;
2815 x_scheduled_visits_tbl(l_idx).department_code := l_dept_code;
2816 x_scheduled_visits_tbl(l_idx).department_name := l_description;
2817 x_scheduled_visits_tbl(l_idx).department_id := l_department_id;
2818 x_scheduled_visits_tbl(l_idx).space_category_mean := l_meaning;
2819 x_scheduled_visits_tbl(l_idx).Space_Category := l_space_category;
2820 x_scheduled_visits_tbl(l_idx).org_name := l_org_name;
2821 x_display_rec.start_period := l_start_date;
2822 x_display_rec.end_period := x_display_rec.end_period_14;
2823
2824 --
2825 l_idx := l_idx + 1;
2826 END IF;
2827
2828 END LOOP;
2829 CLOSE l_space_cur;
2830 --
2831
2832 END Get_UOM_WEEKS;
2833 --
2834 PROCEDURE Get_UOM_MONTHS (
2835 p_start_date IN DATE,
2836 p_org_id IN NUMBER,
2837 p_simulation_plan_id IN NUMBER,
2838 p_plan_flag IN VARCHAR2,
2839 p_dept_id IN NUMBER default null,
2840 p_dept_name IN VARCHAR2 default null,
2841 p_space_id IN NUMBER default null,
2842 p_space_name IN VARCHAR2 default null,
2843 p_space_category IN VARCHAR2 default null,
2844 x_scheduled_visits_tbl OUT NOCOPY scheduled_visits_tbl,
2845 x_display_rec OUT NOCOPY display_rec_type)
2846 IS
2847 --
2848 l_sql_string VARCHAR2(30000);
2849 l_sql_string1 VARCHAR2(30000);
2850 --
2851 l_dummy NUMBER;
2852 l_count NUMBER;
2853 l_found BOOLEAN;
2854 l_date varchar2(10);
2855 l_start_date DATE := trunc(p_start_date);
2856 l_end_date DATE;
2857 l_space_id NUMBER;
2858 l_visit_type_code VARCHAR2(30);
2859 l_inventory_item_id NUMBER;
2860 l_idx NUMBER;
2861 --
2862 l_org_id NUMBER;
2863 l_department_id NUMBER;
2864 l_space_name VARCHAR2(80);
2865 l_space_category VARCHAR2(30);
2866 l_meaning VARCHAR2(80);
2867 l_description VARCHAR2(240);
2868 l_dept_code VARCHAR2(10);
2869 l_org_name VARCHAR2(240);
2870
2871 --
2872 l_dept_cur search_visits_csr;
2873 l_bind_idx NUMBER := 1;
2874 l_bind_index NUMBER := 1;
2875 l_space_cur search_visits_csr;
2876 -- Table of bind variables.
2877 l_tempbind_tbl search_query_tbl;
2878 l_temp_tbl search_query_tbl;
2879 --
2880
2881 BEGIN
2882 --
2883
2884 --SELECT Clause
2885 l_sql_string := 'select distinct(a.department_id),b.description, b.department_code,c.name';
2886 -- From Clause
2887 l_sql_string := l_sql_string || ' from ahl_visits_vl a , bom_departments b, hr_all_organization_units c';
2888 -- Where Clause
2889 l_sql_string := l_sql_string || ' where visit_id not in (select visit_id from ahl_space_assignments)';
2890 l_sql_string := l_sql_string || ' and a.department_id = b.department_id';
2891 l_sql_string := l_sql_string || ' and a.organization_id = c.organization_id';
2892 l_sql_string := l_sql_string || ' and a.department_id is not null';
2893 l_sql_string := l_sql_string || ' and a.start_date_time is not null';
2894 -- Org id is not null
2895 IF p_org_id IS NOT NULL THEN
2896 l_sql_string := l_sql_string || ' and a.organization_id = :ORG_ID';
2897 l_tempbind_tbl(l_bind_idx) := p_org_id;
2898 l_bind_idx := l_bind_idx + 1;
2899
2900 END IF;
2901
2902 -- Dept Name is not null
2903 IF p_dept_name IS NOT NULL THEN
2904 l_sql_string := l_sql_string || ' and upper(b.description) like upper(:D' || l_bind_idx || ')';
2905 l_tempbind_tbl(l_bind_idx) := p_dept_name;
2906 l_bind_idx := l_bind_idx + 1;
2907
2908 END IF;
2909 /*
2910 -- visit type is not null
2911 IF p_visit_type IS NOT NULL THEN
2912 l_sql_string := l_sql_string || ' and upper(a.visit_type_code) like :VISIT_TYPE';
2913 l_tempbind_tbl(l_bind_idx) := p_visit_type;
2914 l_bind_idx := l_bind_idx + 1;
2915
2916 END IF;
2917
2918 -- item id is not null
2919 IF p_item_id IS NOT NULL THEN
2920 l_sql_string := l_sql_string || ' and a.inventory_item_id = :ITEM_ID';
2921 l_tempbind_tbl(l_bind_idx) := p_item_id;
2922 l_bind_idx := l_bind_idx + 1;
2923
2924 END IF;
2925 */
2926 -- space category is not null
2927 IF p_space_category IS NOT NULL THEN
2928 l_sql_string := l_sql_string || ' and upper(a.space_category_code) like :SPACE_CATEGORY';
2929 l_tempbind_tbl(l_bind_idx) := p_space_category;
2930 l_bind_idx := l_bind_idx + 1;
2931 END IF;
2932 --
2933 AHL_DEBUG_PUB.debug( 'l_sql_string:'||l_sql_string);
2934 AHL_DEBUG_PUB.debug( 'p_org_id:'||p_org_id);
2935 AHL_DEBUG_PUB.debug( 'p_dept_name:'||p_dept_name);
2936 --Space info
2937
2938 --SELECT Clause
2939 l_sql_string1 := ' SELECT distinct(a.space_id), space_name, space_category, meaning,';
2940 l_sql_string1 := l_sql_string1 || ' a.bom_department_id, department_code, d.description,';
2941 l_sql_string1 := l_sql_string1 || ' a.organization_id, e.name org_name ';
2942 -- From Clause
2943 l_sql_string1 := l_sql_string1 || ' from ahl_spaces_vl a , ahl_space_assignments b, fnd_lookup_values_vl c,';
2944 l_sql_string1 := l_sql_string1 || ' bom_departments d, hr_all_organization_units e ';
2945 -- Where Clause
2946 l_sql_string1 := l_sql_string1 || ' where c.lookup_type(+) = ''AHL_LTP_SPACE_CATEGORY''';
2947 l_sql_string1 := l_sql_string1 || ' and c.lookup_code(+) = a.space_category';
2948 l_sql_string1 := l_sql_string1 || ' and a.bom_department_id = d.department_id';
2949 l_sql_string1 := l_sql_string1 || ' and a.space_id = b.space_id(+)';
2950 l_sql_string1 := l_sql_string1 || ' and a.organization_id = d.organization_id';
2951 l_sql_string1 := l_sql_string1 || ' and a.organization_id = e.organization_id';
2952
2953 -- Org id is not null
2954 IF p_org_id IS NOT NULL THEN
2955 l_sql_string1 := l_sql_string1 || ' and a.organization_id = :ORG_ID';
2956 l_temp_tbl(l_bind_index) := p_org_id;
2957 l_bind_index := l_bind_index + 1;
2958
2959 END IF;
2960
2961 -- Dept Name is not null
2962 IF p_dept_name IS NOT NULL THEN
2963 l_sql_string1 := l_sql_string1 || ' and upper(d.description) like upper (:D' || l_bind_index || ')';
2964 l_temp_tbl(l_bind_index) := p_dept_name;
2965 l_bind_index := l_bind_index + 1;
2966
2967 END IF;
2968
2969 -- Space Name is not null
2970 IF p_space_name IS NOT NULL THEN
2971 l_sql_string1 := l_sql_string1 || ' and upper(a.space_name) like upper (:S' || l_bind_index || ')';
2972 l_temp_tbl(l_bind_index) := p_space_name;
2973 l_bind_index := l_bind_index + 1;
2974
2975 END IF;
2976
2977 -- Space Category is not null
2978 IF p_space_category IS NOT NULL THEN
2979 l_sql_string1 := l_sql_string1 || ' and a.space_category = :SPACE_CATEGORY';
2980 l_temp_tbl(l_bind_index) := p_space_category;
2981 l_bind_index := l_bind_index + 1;
2982 END IF;
2983
2984 --anraj: for getting departments which do not have visits assigned to it
2985 --done only if the user has not specified category code in the search
2986 IF p_space_category IS NULL THEN
2987 l_sql_string := l_sql_string || ' UNION select b.department_id, b.description, b.department_code, c.name ' ;
2988 l_sql_string := l_sql_string || ' FROM bom_departments b, hr_all_organization_units c, mtl_parameters m ' ;
2989 l_sql_string := l_sql_string || ' WHERE b.organization_id = c.organization_id ';
2990 l_sql_string := l_sql_string || ' AND m.organization_id = c.organization_id ';
2991 l_sql_string := l_sql_string || ' AND b.description is not null ';
2992 l_sql_string := l_sql_string || ' AND m.eam_enabled_flag = ''Y'' ';
2993 IF p_org_id IS NOT NULL THEN
2994 l_sql_string := l_sql_string || ' AND b.organization_id = :ORG_ID';
2995 l_tempbind_tbl(l_bind_idx) := p_org_id;
2996 l_bind_idx := l_bind_idx + 1;
2997 END IF;
2998
2999 -- Dept id is not null
3000 IF p_dept_name IS NOT NULL THEN
3001 l_sql_string := l_sql_string || ' and upper(b.description) like upper(:D' || l_bind_idx || ')';
3002 l_tempbind_tbl(l_bind_idx) := p_dept_name;
3003 l_bind_idx := l_bind_idx + 1;
3004 END IF;
3005
3006
3007 l_sql_string := l_sql_string || ' AND b.department_id NOT IN' ;
3008 l_sql_string := l_sql_string || ' ( select unique department_id from ahl_visits_b' ;
3009 IF p_org_id IS NOT NULL THEN
3010 l_sql_string := l_sql_string || ' WHERE organization_id = :ORG_ID';
3011 l_tempbind_tbl(l_bind_idx) := p_org_id;
3012 l_bind_idx := l_bind_idx + 1;
3013 END IF;
3014 l_sql_string := l_sql_string || ' AND department_id IS NOT NULL';
3015 l_sql_string := l_sql_string || ' AND visit_id NOT IN (SELECT visit_id FROM ahl_space_assignments))';
3016 l_sql_string := l_sql_string || ' and exists ( SELECT ''x'' FROM AHL_DEPARTMENT_SHIFTS WHERE DEPARTMENT_ID = B.DEPARTMENT_ID) ' ;
3017 END IF;
3018
3019
3020 AHL_DEBUG_PUB.debug( 'l_sql_string1:'||l_sql_string1);
3021
3022 -- Department details
3023 OPEN_FOR_CURSOR(p_x_ref_csr => l_dept_cur,
3024 p_search_query_tbl => l_tempbind_tbl,
3025 p_sql_str => l_sql_string);
3026 --
3027 l_idx := 0;
3028 LOOP
3029 FETCH l_dept_cur INTO l_department_id, l_description, l_dept_code, l_org_name;
3030 EXIT WHEN l_dept_cur%NOTFOUND;
3031 --
3032 IF (l_department_id IS NOT NULL AND p_space_name IS NULL )THEN
3033 --
3034 IF l_start_date IS NOT NULL THEN
3035 x_display_rec.start_period_1 := l_start_date-1;
3036
3037 SELECT ADD_MONTHS(x_display_rec.start_period_1,1) INTO
3038 x_display_rec.end_period_1 FROM DUAL;
3039 --
3040 l_count := Get_Number_of_Dvisits(l_department_id,
3041 p_simulation_plan_id,
3042 p_plan_flag,
3043 x_display_rec.start_period_1,
3044 x_display_rec.end_period_1);
3045
3046
3047 IF l_count = 1 THEN
3048 x_scheduled_visits_tbl(l_idx).value_1 := 'S';
3049 ELSIF l_count > 1 THEN
3050 x_scheduled_visits_tbl(l_idx).value_1 := 'M';
3051 ELSE
3052 x_scheduled_visits_tbl(l_idx).value_1 := 'A';
3053 END IF;
3054 x_display_rec.field_1 := to_char( l_start_date ,'mm/yy');
3055 x_display_rec.start_period_1 := x_display_rec.start_period_1;
3056 x_display_rec.end_period_1 := x_display_rec.end_period_1;
3057 END IF;
3058 --
3059 IF G_DEBUG='Y' THEN
3060 AHL_DEBUG_PUB.debug( 'value 1:'||x_display_rec.field_1);
3061 AHL_DEBUG_PUB.debug( 'start 1:'||x_display_rec.start_period_1);
3062 AHL_DEBUG_PUB.debug( 'end 1:'||x_display_rec.end_period_1);
3063 END IF;
3064 --
3065 IF x_display_rec.end_period_1 IS NOT NULL THEN
3066 x_display_rec.start_period_2:= x_display_rec.end_period_1;
3067 --
3068 SELECT ADD_MONTHS(x_display_rec.start_period_2,1) INTO
3069 x_display_rec.end_period_2 FROM DUAL;
3070
3071 l_count := Get_Number_of_Dvisits(l_department_id,
3072 p_simulation_plan_id,
3073 p_plan_flag,
3074 x_display_rec.start_period_2,
3075 x_display_rec.end_period_2);
3076
3077 IF l_count = 1 THEN
3078 x_scheduled_visits_tbl(l_idx).value_2 := 'S';
3079 ELSIF l_count > 1 THEN
3080 x_scheduled_visits_tbl(l_idx).value_2 := 'M';
3081 ELSE
3082 x_scheduled_visits_tbl(l_idx).value_2 := 'A';
3083 END IF;
3084 x_display_rec.field_2 := to_char( x_display_rec.start_period_2 + 1 ,'mm/yy');
3085 x_display_rec.start_period_2 := x_display_rec.start_period_2;
3086 x_display_rec.end_period_2 := x_display_rec.end_period_2;
3087 END IF;
3088 --
3089 IF G_DEBUG='Y' THEN
3090 AHL_DEBUG_PUB.debug( 'value 2:'||x_display_rec.field_2);
3091 AHL_DEBUG_PUB.debug( 'start 2:'||x_display_rec.start_period_2);
3092 AHL_DEBUG_PUB.debug( 'end 2:'||x_display_rec.end_period_2);
3093 END IF;
3094 --
3095 IF x_display_rec.end_period_2 IS NOT NULL THEN
3096 x_display_rec.start_period_3:= x_display_rec.end_period_2;
3097 --
3098 SELECT ADD_MONTHS(x_display_rec.start_period_3,1) INTO
3099 x_display_rec.end_period_3 FROM DUAL;
3100
3101 l_count := Get_Number_of_Dvisits(l_department_id,
3102 p_simulation_plan_id,
3103 p_plan_flag,
3104 x_display_rec.start_period_3,
3105 x_display_rec.end_period_3);
3106
3107 IF l_count = 1 THEN
3108 x_scheduled_visits_tbl(l_idx).value_3 := 'S';
3109 ELSIF l_count > 1 THEN
3110 x_scheduled_visits_tbl(l_idx).value_3 := 'M';
3111 ELSE
3112 x_scheduled_visits_tbl(l_idx).value_3 := 'A';
3113 END IF;
3114 x_display_rec.field_3 := to_char( x_display_rec.start_period_3 + 1,'mm/yy');
3115 x_display_rec.start_period_3 := x_display_rec.start_period_3;
3116 x_display_rec.end_period_3 := x_display_rec.end_period_3;
3117 END IF;
3118 --
3119 IF G_DEBUG='Y' THEN
3120 AHL_DEBUG_PUB.debug( 'value 3:'||x_display_rec.field_3);
3121 AHL_DEBUG_PUB.debug( 'start 3:'||x_display_rec.start_period_3);
3122 AHL_DEBUG_PUB.debug( 'end 3:'||x_display_rec.end_period_3);
3123 END IF;
3124 --
3125 IF x_display_rec.end_period_3 IS NOT NULL THEN
3126 x_display_rec.start_period_4:= x_display_rec.end_period_3;
3127 --
3128 SELECT ADD_MONTHS(x_display_rec.start_period_4,1) INTO
3129 x_display_rec.end_period_4 FROM DUAL;
3130
3131 l_count := Get_Number_of_Dvisits(l_department_id,
3132 p_simulation_plan_id,
3133 p_plan_flag,
3134 x_display_rec.start_period_4,
3135 x_display_rec.end_period_4);
3136
3137 IF l_count = 1 THEN
3138 x_scheduled_visits_tbl(l_idx).value_4 := 'S';
3139 ELSIF l_count > 1 THEN
3140 x_scheduled_visits_tbl(l_idx).value_4 := 'M';
3141 ELSE
3142 x_scheduled_visits_tbl(l_idx).value_4 := 'A';
3143 END IF;
3144 x_display_rec.field_4 := to_char( x_display_rec.start_period_4 + 1,'mm/yy');
3145 x_display_rec.start_period_4 := x_display_rec.start_period_4;
3146 x_display_rec.end_period_4 := x_display_rec.end_period_4;
3147 END IF;
3148 --
3149 IF G_DEBUG='Y' THEN
3150 AHL_DEBUG_PUB.debug( 'value 4:'||x_display_rec.field_4);
3151 AHL_DEBUG_PUB.debug( 'start 4:'||x_display_rec.start_period_4);
3152 AHL_DEBUG_PUB.debug( 'end 4:'||x_display_rec.end_period_4);
3153 END IF;
3154 --
3155 IF x_display_rec.end_period_4 IS NOT NULL THEN
3156 x_display_rec.start_period_5:= x_display_rec.end_period_4;
3157 --
3158 SELECT ADD_MONTHS(x_display_rec.start_period_5,1) INTO
3159 x_display_rec.end_period_5 FROM DUAL;
3160
3161 l_count := Get_Number_of_Dvisits(l_department_id,
3162 p_simulation_plan_id,
3163 p_plan_flag,
3164 x_display_rec.start_period_5,
3165 x_display_rec.end_period_5);
3166
3167 IF l_count = 1 THEN
3168 x_scheduled_visits_tbl(l_idx).value_5 := 'S';
3169 ELSIF l_count > 1 THEN
3170 x_scheduled_visits_tbl(l_idx).value_5 := 'M';
3171 ELSE
3172 x_scheduled_visits_tbl(l_idx).value_5 := 'A';
3173 END IF;
3174 x_display_rec.field_5 := to_char( x_display_rec.start_period_5 + 1,'mm/yy');
3175 x_display_rec.start_period_5 := x_display_rec.start_period_5;
3176 x_display_rec.end_period_5 := x_display_rec.end_period_5;
3177 END IF;
3178 --
3179 IF G_DEBUG='Y' THEN
3180 AHL_DEBUG_PUB.debug( 'value 5:'||x_scheduled_visits_tbl(l_idx).value_5);
3181 END IF;
3182 --
3183 IF x_display_rec.end_period_5 IS NOT NULL THEN
3184 x_display_rec.start_period_6:= x_display_rec.end_period_5;
3185 --
3186 SELECT ADD_MONTHS(x_display_rec.start_period_6,1) INTO
3187 x_display_rec.end_period_6 FROM DUAL;
3188
3189 l_count := Get_Number_of_Dvisits(l_department_id,
3190 p_simulation_plan_id,
3191 p_plan_flag,
3192 x_display_rec.start_period_6,
3193 x_display_rec.end_period_6);
3194
3195 IF l_count = 1 THEN
3196 x_scheduled_visits_tbl(l_idx).value_6 := 'S';
3197 ELSIF l_count > 1 THEN
3198 x_scheduled_visits_tbl(l_idx).value_6 := 'M';
3199 ELSE
3200 x_scheduled_visits_tbl(l_idx).value_6 := 'A';
3201 END IF;
3202 x_display_rec.field_6 := to_char( x_display_rec.start_period_6 + 1,'mm/yy');
3203 x_display_rec.start_period_6 := x_display_rec.start_period_6;
3204 x_display_rec.end_period_6 := x_display_rec.end_period_6;
3205 END IF;
3206 --
3207 IF G_DEBUG='Y' THEN
3208 AHL_DEBUG_PUB.debug( 'value 6:'||x_scheduled_visits_tbl(l_idx).value_6);
3209 END IF;
3210 --
3211 IF x_display_rec.end_period_6 IS NOT NULL THEN
3212 x_display_rec.start_period_7:= x_display_rec.end_period_6;
3213 --
3214 SELECT ADD_MONTHS(x_display_rec.start_period_7,1) INTO
3215 x_display_rec.end_period_7 FROM DUAL;
3216
3217 l_count := Get_Number_of_Dvisits(l_department_id,
3218 p_simulation_plan_id,
3219 p_plan_flag,
3220 x_display_rec.start_period_7,
3221 x_display_rec.end_period_7);
3222
3223 IF l_count = 1 THEN
3224 x_scheduled_visits_tbl(l_idx).value_7 := 'S';
3225 ELSIF l_count > 1 THEN
3226 x_scheduled_visits_tbl(l_idx).value_7 := 'M';
3227 ELSE
3228 x_scheduled_visits_tbl(l_idx).value_7 := 'A';
3229 END IF;
3230 x_display_rec.field_7 := to_char( x_display_rec.start_period_7 + 1,'mm/yy');
3231 x_display_rec.start_period_7 := x_display_rec.start_period_7;
3232 x_display_rec.end_period_7 := x_display_rec.end_period_7;
3233 END IF;
3234 --
3235 IF G_DEBUG='Y' THEN
3236 AHL_DEBUG_PUB.debug( 'value 7:'||x_scheduled_visits_tbl(l_idx).value_7);
3237 END IF;
3238 --
3239 IF x_display_rec.end_period_7 IS NOT NULL THEN
3240 x_display_rec.start_period_8:= x_display_rec.end_period_7;
3241 --
3242 SELECT ADD_MONTHS(x_display_rec.start_period_8,1) INTO
3243 x_display_rec.end_period_8 FROM DUAL;
3244
3245 l_count := Get_Number_of_Dvisits(l_department_id,
3246 p_simulation_plan_id,
3247 p_plan_flag,
3248 x_display_rec.start_period_8,
3249 x_display_rec.end_period_8);
3250
3251 IF l_count = 1 THEN
3252 x_scheduled_visits_tbl(l_idx).value_8 := 'S';
3253 ELSIF l_count > 1 THEN
3254 x_scheduled_visits_tbl(l_idx).value_8 := 'M';
3255 ELSE
3256 x_scheduled_visits_tbl(l_idx).value_8 := 'A';
3257 END IF;
3258 x_display_rec.field_8 := to_char( x_display_rec.start_period_8 + 1,'mm/yy');
3259 x_display_rec.start_period_8 := x_display_rec.start_period_8;
3260 x_display_rec.end_period_8 := x_display_rec.end_period_8;
3261 END IF;
3262 --
3263 IF G_DEBUG='Y' THEN
3264 AHL_DEBUG_PUB.debug( 'value 8:'||x_scheduled_visits_tbl(l_idx).value_8);
3265 END IF;
3266 --
3267 IF x_display_rec.end_period_8 IS NOT NULL THEN
3268 x_display_rec.start_period_9:= x_display_rec.end_period_8;
3269 --
3270 SELECT ADD_MONTHS(x_display_rec.start_period_9,1) INTO
3271 x_display_rec.end_period_9 FROM DUAL;
3272
3273 l_count := Get_Number_of_Dvisits(l_department_id,
3274 p_simulation_plan_id,
3275 p_plan_flag,
3276 x_display_rec.start_period_9,
3277 x_display_rec.end_period_9);
3278
3279 IF l_count = 1 THEN
3280 x_scheduled_visits_tbl(l_idx).value_9 := 'S';
3281 ELSIF l_count > 1 THEN
3282 x_scheduled_visits_tbl(l_idx).value_9 := 'M';
3283 ELSE
3284 x_scheduled_visits_tbl(l_idx).value_9 := 'A';
3285 END IF;
3286 x_display_rec.field_9 := to_char( x_display_rec.start_period_9 + 1,'mm/yy');
3287 x_display_rec.start_period_9 := x_display_rec.start_period_9;
3288 x_display_rec.end_period_9 := x_display_rec.end_period_9;
3289 END IF;
3290 --
3291 IF G_DEBUG='Y' THEN
3292 AHL_DEBUG_PUB.debug( 'value 9:'||x_scheduled_visits_tbl(l_idx).value_9);
3293 END IF;
3294 --
3295 IF x_display_rec.end_period_9 IS NOT NULL THEN
3296 x_display_rec.start_period_10:= x_display_rec.end_period_9;
3297 --
3298 SELECT ADD_MONTHS(x_display_rec.start_period_10,1) INTO
3299 x_display_rec.end_period_10 FROM DUAL;
3300
3301 l_count := Get_Number_of_Dvisits(l_department_id,
3302 p_simulation_plan_id,
3303 p_plan_flag,
3304 x_display_rec.start_period_10,
3305 x_display_rec.end_period_10);
3306
3307 IF l_count = 1 THEN
3308 x_scheduled_visits_tbl(l_idx).value_10 := 'S';
3309 ELSIF l_count > 1 THEN
3310 x_scheduled_visits_tbl(l_idx).value_10 := 'M';
3311 ELSE
3312 x_scheduled_visits_tbl(l_idx).value_10 := 'A';
3313 END IF;
3314 x_display_rec.field_10 := to_char( x_display_rec.start_period_10 + 1,'mm/yy');
3315 x_display_rec.start_period_10 := x_display_rec.start_period_10;
3316 x_display_rec.end_period_10 := x_display_rec.end_period_10;
3317 END IF;
3318 --
3319 IF G_DEBUG='Y' THEN
3320 AHL_DEBUG_PUB.debug( 'value 10:'||x_scheduled_visits_tbl(l_idx).value_10);
3321 END IF;
3322 --
3323 IF x_display_rec.end_period_10 IS NOT NULL THEN
3324 x_display_rec.start_period_11:= x_display_rec.end_period_10;
3325 --
3326 SELECT ADD_MONTHS(x_display_rec.start_period_11,1) INTO
3327 x_display_rec.end_period_11 FROM DUAL;
3328
3329 l_count := Get_Number_of_Dvisits(l_department_id,
3330 p_simulation_plan_id,
3331 p_plan_flag,
3332 x_display_rec.start_period_11,
3333 x_display_rec.end_period_11);
3334
3335 IF l_count = 1 THEN
3336 x_scheduled_visits_tbl(l_idx).value_11 := 'S';
3337 ELSIF l_count > 1 THEN
3338 x_scheduled_visits_tbl(l_idx).value_11 := 'M';
3339 ELSE
3340 x_scheduled_visits_tbl(l_idx).value_11 := 'A';
3341 END IF;
3342 x_display_rec.field_11 := to_char( x_display_rec.start_period_11 + 1,'mm/yy');
3343 x_display_rec.start_period_11 := x_display_rec.start_period_11;
3344 x_display_rec.end_period_11 := x_display_rec.end_period_11;
3345 END IF;
3346 --
3347 IF G_DEBUG='Y' THEN
3348 AHL_DEBUG_PUB.debug( 'value 11:'||x_scheduled_visits_tbl(l_idx).value_11);
3349 END IF;
3350 --
3351 IF x_display_rec.end_period_11 IS NOT NULL THEN
3352 x_display_rec.start_period_12:= x_display_rec.end_period_11;
3353 --
3354 SELECT ADD_MONTHS(x_display_rec.start_period_12,1) INTO
3355 x_display_rec.end_period_12 FROM DUAL;
3356
3357 l_count := Get_Number_of_Dvisits(l_department_id,
3358 p_simulation_plan_id,
3359 p_plan_flag,
3360 x_display_rec.start_period_12,
3361 x_display_rec.end_period_12);
3362
3363 IF l_count = 1 THEN
3364 x_scheduled_visits_tbl(l_idx).value_12 := 'S';
3365 ELSIF l_count > 1 THEN
3366 x_scheduled_visits_tbl(l_idx).value_12 := 'M';
3367 ELSE
3368 x_scheduled_visits_tbl(l_idx).value_12 := 'A';
3369 END IF;
3370 x_display_rec.field_12 := to_char( x_display_rec.start_period_12 + 1,'mm/yy');
3371 x_display_rec.start_period_12 := x_display_rec.start_period_12;
3372 x_display_rec.end_period_12 := x_display_rec.end_period_12;
3373 END IF;
3374 --
3375 IF G_DEBUG='Y' THEN
3376 AHL_DEBUG_PUB.debug( 'value 12:'||x_scheduled_visits_tbl(l_idx).value_12);
3377 END IF;
3378 --
3379 IF x_display_rec.end_period_12 IS NOT NULL THEN
3380 x_display_rec.start_period_13:= x_display_rec.end_period_12;
3381 --
3382 SELECT ADD_MONTHS(x_display_rec.start_period_13,1) INTO
3383 x_display_rec.end_period_13 FROM DUAL;
3384
3385 l_count := Get_Number_of_Dvisits(l_department_id,
3386 p_simulation_plan_id,
3387 p_plan_flag,
3388 x_display_rec.start_period_13,
3389 x_display_rec.end_period_13);
3390
3391 IF l_count = 1 THEN
3392 x_scheduled_visits_tbl(l_idx).value_13 := 'S';
3393 ELSIF l_count > 1 THEN
3394 x_scheduled_visits_tbl(l_idx).value_13 := 'M';
3395 ELSE
3396 x_scheduled_visits_tbl(l_idx).value_13 := 'A';
3397 END IF;
3398 x_display_rec.field_13 := to_char( x_display_rec.start_period_13 + 1,'mm/yy');
3399 x_display_rec.start_period_13 := x_display_rec.start_period_13;
3400 x_display_rec.end_period_13 := x_display_rec.end_period_13;
3401 END IF;
3402 --
3403 IF G_DEBUG='Y' THEN
3404 AHL_DEBUG_PUB.debug( 'value 13:'||x_scheduled_visits_tbl(l_idx).value_13);
3405 END IF;
3406 --
3407 IF x_display_rec.end_period_13 IS NOT NULL THEN
3408 x_display_rec.start_period_14:= x_display_rec.end_period_13;
3409 --
3410 SELECT ADD_MONTHS(x_display_rec.start_period_14,1) INTO
3411 x_display_rec.end_period_14 FROM DUAL;
3412
3413 l_count := Get_Number_of_Dvisits(l_department_id,
3414 p_simulation_plan_id,
3415 p_plan_flag,
3416 x_display_rec.start_period_14,
3417 x_display_rec.end_period_14);
3418
3419 IF l_count = 1 THEN
3420 x_scheduled_visits_tbl(l_idx).value_14 := 'S';
3421 ELSIF l_count > 1 THEN
3422 x_scheduled_visits_tbl(l_idx).value_14 := 'M';
3423 ELSE
3424 x_scheduled_visits_tbl(l_idx).value_14 := 'A';
3425 END IF;
3426 x_display_rec.field_14 := to_char( x_display_rec.start_period_14 + 1,'mm/yy');
3427 x_display_rec.start_period_14 := x_display_rec.start_period_14;
3428 x_display_rec.end_period_14 := x_display_rec.end_period_14;
3429 END IF;
3430 --
3431 IF G_DEBUG='Y' THEN
3432 AHL_DEBUG_PUB.debug( 'value 14:'||x_scheduled_visits_tbl(l_idx).value_14);
3433 END IF;
3434 --
3435 x_scheduled_visits_tbl(l_idx).space_id := null;
3436 x_scheduled_visits_tbl(l_idx).space_name := null;
3437 x_scheduled_visits_tbl(l_idx).department_code := l_dept_code;
3438 x_scheduled_visits_tbl(l_idx).department_name := l_description;
3439 x_scheduled_visits_tbl(l_idx).department_id := l_department_id;
3440 x_scheduled_visits_tbl(l_idx).space_category_mean := null;
3441 x_scheduled_visits_tbl(l_idx).Space_Category := null;
3442 x_scheduled_visits_tbl(l_idx).org_name := l_org_name;
3443 x_display_rec.start_period := l_start_date;
3444 x_display_rec.end_period := x_display_rec.end_period_14;
3445
3446 --
3447 l_idx := l_idx + 1;
3448 END IF;
3449
3450 END LOOP;
3451 CLOSE l_dept_cur;
3452
3453 -- Space info
3454
3455 OPEN_FOR_CURSOR(p_x_ref_csr => l_space_cur,
3456 p_search_query_tbl => l_temp_tbl,
3457 p_sql_str => l_sql_string1);
3458 --
3459 LOOP
3460 FETCH l_space_cur INTO l_space_id, l_space_name , l_space_category,
3461 l_meaning, l_department_id,l_dept_code, l_description,
3462 l_org_id, l_org_name;
3463 EXIT WHEN l_space_cur%NOTFOUND;
3464 --
3465 IF l_space_id IS NOT NULL THEN
3466 IF l_start_date IS NOT NULL THEN
3467 x_display_rec.start_period_1 := l_start_date-1;
3468
3469 SELECT ADD_MONTHS(x_display_rec.start_period_1,1) INTO
3470 x_display_rec.end_period_1 FROM DUAL;
3471
3472
3473 l_count := Get_count_of_Visits(l_space_id,
3474 p_simulation_plan_id,
3475 p_plan_flag,
3476 x_display_rec.start_period_1,
3477 x_display_rec.end_period_1);
3478
3479
3480 IF l_count = 1 THEN
3481 x_scheduled_visits_tbl(l_idx).value_1 := 'S';
3482 ELSIF l_count > 1 THEN
3483 x_scheduled_visits_tbl(l_idx).value_1 := 'M';
3484 ELSIF l_count = 0 THEN
3485 IF Check_Unavilable_Space(l_space_id,
3486 x_display_rec.start_period_1,
3487 x_display_rec.end_period_1) THEN
3488 x_scheduled_visits_tbl(l_idx).value_1 := 'U';
3489 ELSE
3490 x_scheduled_visits_tbl(l_idx).value_1 := 'A';
3491 END IF;
3492 END IF;
3493 x_display_rec.field_1 := to_char( l_start_date ,'mm/yy');
3494 x_display_rec.start_period_1 := x_display_rec.start_period_1;
3495 x_display_rec.end_period_1 := x_display_rec.end_period_1;
3496 END IF;
3497 --
3498 IF G_DEBUG='Y' THEN
3499 AHL_DEBUG_PUB.debug( 'value 1:'||x_display_rec.field_1);
3500 AHL_DEBUG_PUB.debug( 'start 1:'||x_display_rec.start_period_1);
3501 AHL_DEBUG_PUB.debug( 'end 1:'||x_display_rec.end_period_1);
3502 END IF;
3503 --
3504 IF x_display_rec.end_period_1 IS NOT NULL THEN
3505 x_display_rec.start_period_2:= x_display_rec.end_period_1;
3506 --
3507 SELECT ADD_MONTHS(x_display_rec.start_period_2,1) INTO
3508 x_display_rec.end_period_2 FROM DUAL;
3509
3510 l_count := Get_count_of_Visits(l_space_id,
3511 p_simulation_plan_id,
3512 p_plan_flag,
3513 x_display_rec.start_period_2,
3514 x_display_rec.end_period_2);
3515
3516 IF l_count = 1 THEN
3517 x_scheduled_visits_tbl(l_idx).value_2 := 'S';
3518 ELSIF l_count > 1 THEN
3519 x_scheduled_visits_tbl(l_idx).value_2 := 'M';
3520 ELSIF l_count = 0 THEN
3521 IF Check_Unavilable_Space(l_space_id,
3522 x_display_rec.start_period_2,
3523 x_display_rec.end_period_2) THEN
3524 x_scheduled_visits_tbl(l_idx).value_2 := 'U';
3525 ELSE
3526 x_scheduled_visits_tbl(l_idx).value_2 := 'A';
3527 END IF;
3528 END IF;
3529 x_display_rec.field_2 := to_char( x_display_rec.start_period_2 + 1,'mm/yy');
3530 x_display_rec.start_period_2 := x_display_rec.start_period_2;
3531 x_display_rec.end_period_2 := x_display_rec.end_period_2;
3532 END IF;
3533 --
3534 IF G_DEBUG='Y' THEN
3535 AHL_DEBUG_PUB.debug( 'SPACE ID:'||l_space_id);
3536 AHL_DEBUG_PUB.debug( 'value 2:'||x_display_rec.field_2);
3537 AHL_DEBUG_PUB.debug( 'start 2:'||x_display_rec.start_period_2);
3538 AHL_DEBUG_PUB.debug( 'end 2:'||x_display_rec.end_period_2);
3539 END IF;
3540 --
3541 IF x_display_rec.end_period_2 IS NOT NULL THEN
3542 x_display_rec.start_period_3:= x_display_rec.end_period_2;
3543 --
3544 SELECT ADD_MONTHS(x_display_rec.start_period_3,1) INTO
3545 x_display_rec.end_period_3 FROM DUAL;
3546
3547 l_count := Get_count_of_Visits(l_space_id,
3548 p_simulation_plan_id,
3549 p_plan_flag,
3550 x_display_rec.start_period_3,
3551 x_display_rec.end_period_3);
3552
3553 IF l_count = 1 THEN
3554 x_scheduled_visits_tbl(l_idx).value_3 := 'S';
3555 ELSIF l_count > 1 THEN
3556 x_scheduled_visits_tbl(l_idx).value_3 := 'M';
3557 ELSIF l_count = 0 THEN
3558 IF Check_Unavilable_Space(l_space_id,
3559 x_display_rec.start_period_3,
3560 x_display_rec.end_period_3) THEN
3561 x_scheduled_visits_tbl(l_idx).value_3 := 'U';
3562 ELSE
3563 x_scheduled_visits_tbl(l_idx).value_3 := 'A';
3564 END IF;
3565 END IF;
3566 x_display_rec.field_3 := to_char( x_display_rec.start_period_3 + 1,'mm/yy');
3567 x_display_rec.start_period_3 := x_display_rec.start_period_3;
3568 x_display_rec.end_period_3 := x_display_rec.end_period_3;
3569 END IF;
3570 --
3571 IF G_DEBUG='Y' THEN
3572 AHL_DEBUG_PUB.debug( 'value 3:'||x_display_rec.field_3);
3573 AHL_DEBUG_PUB.debug( 'start 3:'||x_display_rec.start_period_3);
3574 AHL_DEBUG_PUB.debug( 'end 3:'||x_display_rec.end_period_3);
3575 END IF;
3576 --
3577 IF x_display_rec.end_period_3 IS NOT NULL THEN
3578 x_display_rec.start_period_4:= x_display_rec.end_period_3;
3579 --
3580 SELECT ADD_MONTHS(x_display_rec.start_period_4,1) INTO
3581 x_display_rec.end_period_4 FROM DUAL;
3582
3583 l_count := Get_count_of_Visits(l_space_id,
3584 p_simulation_plan_id,
3585 p_plan_flag,
3586 x_display_rec.start_period_4,
3587 x_display_rec.end_period_4);
3588
3589 IF l_count = 1 THEN
3590 x_scheduled_visits_tbl(l_idx).value_4 := 'S';
3591 ELSIF l_count > 1 THEN
3592 x_scheduled_visits_tbl(l_idx).value_4 := 'M';
3593 ELSIF l_count = 0 THEN
3594 IF Check_Unavilable_Space(l_space_id,
3595 x_display_rec.start_period_4,
3596 x_display_rec.end_period_4) THEN
3597 x_scheduled_visits_tbl(l_idx).value_4 := 'U';
3598 ELSE
3599 x_scheduled_visits_tbl(l_idx).value_4 := 'A';
3600 END IF;
3601 END IF;
3602 x_display_rec.field_4 := to_char( x_display_rec.start_period_4 + 1,'mm/yy');
3603 x_display_rec.start_period_4 := x_display_rec.start_period_4;
3604 x_display_rec.end_period_4 := x_display_rec.end_period_4;
3605 END IF;
3606 --
3607 IF G_DEBUG='Y' THEN
3608 AHL_DEBUG_PUB.debug( 'value 4:'||x_display_rec.field_4);
3609 AHL_DEBUG_PUB.debug( 'start 4:'||x_display_rec.start_period_4);
3610 AHL_DEBUG_PUB.debug( 'end 4:'||x_display_rec.end_period_4);
3611 END IF;
3612 --
3613 IF x_display_rec.end_period_4 IS NOT NULL THEN
3614 x_display_rec.start_period_5:= x_display_rec.end_period_4;
3615 --
3616 SELECT ADD_MONTHS(x_display_rec.start_period_5,1) INTO
3617 x_display_rec.end_period_5 FROM DUAL;
3618
3619 l_count := Get_count_of_Visits(l_space_id,
3620 p_simulation_plan_id,
3621 p_plan_flag,
3622 x_display_rec.start_period_5,
3623 x_display_rec.end_period_5);
3624
3625 IF l_count = 1 THEN
3626 x_scheduled_visits_tbl(l_idx).value_5 := 'S';
3627 ELSIF l_count > 1 THEN
3628 x_scheduled_visits_tbl(l_idx).value_5 := 'M';
3629 ELSIF l_count = 0 THEN
3630 IF Check_Unavilable_Space(l_space_id,
3631 x_display_rec.start_period_5,
3632 x_display_rec.end_period_5) THEN
3633 x_scheduled_visits_tbl(l_idx).value_5 := 'U';
3634 ELSE
3635 x_scheduled_visits_tbl(l_idx).value_5 := 'A';
3636 END IF;
3637 END IF;
3638 x_display_rec.field_5 := to_char( x_display_rec.start_period_5 + 1,'mm/yy');
3639 x_display_rec.start_period_5 := x_display_rec.start_period_5;
3640 x_display_rec.end_period_5 := x_display_rec.end_period_5;
3641 END IF;
3642 --
3643 IF G_DEBUG='Y' THEN
3644 AHL_DEBUG_PUB.debug( 'value 5:'||x_scheduled_visits_tbl(l_idx).value_5);
3645 END IF;
3646 --
3647 IF x_display_rec.end_period_5 IS NOT NULL THEN
3648 x_display_rec.start_period_6:= x_display_rec.end_period_5;
3649 --
3650 SELECT ADD_MONTHS(x_display_rec.start_period_6,1) INTO
3651 x_display_rec.end_period_6 FROM DUAL;
3652
3653 l_count := Get_count_of_Visits(l_space_id,
3654 p_simulation_plan_id,
3655 p_plan_flag,
3656 x_display_rec.start_period_6,
3657 x_display_rec.end_period_6);
3658
3659 IF l_count = 1 THEN
3660 x_scheduled_visits_tbl(l_idx).value_6 := 'S';
3661 ELSIF l_count > 1 THEN
3662 x_scheduled_visits_tbl(l_idx).value_6 := 'M';
3663 ELSIF l_count = 0 THEN
3664 IF Check_Unavilable_Space(l_space_id,
3665 x_display_rec.start_period_6,
3666 x_display_rec.end_period_6) THEN
3667 x_scheduled_visits_tbl(l_idx).value_6 := 'U';
3668 ELSE
3669 x_scheduled_visits_tbl(l_idx).value_6 := 'A';
3670 END IF;
3671 END IF;
3672 x_display_rec.field_6 := to_char( x_display_rec.start_period_6 + 1,'mm/yy');
3673 x_display_rec.start_period_6 := x_display_rec.start_period_6;
3674 x_display_rec.end_period_6 := x_display_rec.end_period_6;
3675 END IF;
3676 --
3677 IF G_DEBUG='Y' THEN
3678 AHL_DEBUG_PUB.debug( 'value 6:'||x_scheduled_visits_tbl(l_idx).value_6);
3679 END IF;
3680 --
3681 IF x_display_rec.end_period_6 IS NOT NULL THEN
3682 x_display_rec.start_period_7:= x_display_rec.end_period_6;
3683 --
3684 SELECT ADD_MONTHS(x_display_rec.start_period_7,1) INTO
3685 x_display_rec.end_period_7 FROM DUAL;
3686
3687 l_count := Get_count_of_Visits(l_space_id,
3688 p_simulation_plan_id,
3689 p_plan_flag,
3690 x_display_rec.start_period_7,
3691 x_display_rec.end_period_7);
3692
3693 IF l_count = 1 THEN
3694 x_scheduled_visits_tbl(l_idx).value_7 := 'S';
3695 ELSIF l_count > 1 THEN
3696 x_scheduled_visits_tbl(l_idx).value_7 := 'M';
3697 ELSIF l_count = 0 THEN
3698 IF Check_Unavilable_Space(l_space_id,
3699 x_display_rec.start_period_7,
3700 x_display_rec.end_period_7) THEN
3701 x_scheduled_visits_tbl(l_idx).value_7 := 'U';
3702 ELSE
3703 x_scheduled_visits_tbl(l_idx).value_7 := 'A';
3704 END IF;
3705 END IF;
3706 x_display_rec.field_7 := to_char( x_display_rec.start_period_7 + 1,'mm/yy');
3707 x_display_rec.start_period_7 := x_display_rec.start_period_7;
3708 x_display_rec.end_period_7 := x_display_rec.end_period_7;
3709 END IF;
3710 --
3711 IF G_DEBUG='Y' THEN
3712 AHL_DEBUG_PUB.debug( 'value 7:'||x_scheduled_visits_tbl(l_idx).value_7);
3713 END IF;
3714 --
3715 IF x_display_rec.end_period_7 IS NOT NULL THEN
3716 x_display_rec.start_period_8:= x_display_rec.end_period_7;
3717 --
3718 SELECT ADD_MONTHS(x_display_rec.start_period_8,1) INTO
3719 x_display_rec.end_period_8 FROM DUAL;
3720
3721 l_count := Get_count_of_Visits(l_space_id,
3722 p_simulation_plan_id,
3723 p_plan_flag,
3724 x_display_rec.start_period_8,
3725 x_display_rec.end_period_8);
3726
3727 IF l_count = 1 THEN
3728 x_scheduled_visits_tbl(l_idx).value_8 := 'S';
3729 ELSIF l_count > 1 THEN
3730 x_scheduled_visits_tbl(l_idx).value_8 := 'M';
3731 ELSIF l_count = 0 THEN
3732 IF Check_Unavilable_Space(l_space_id,
3733 x_display_rec.start_period_8,
3734 x_display_rec.end_period_8) THEN
3735 x_scheduled_visits_tbl(l_idx).value_8 := 'U';
3736 ELSE
3737 x_scheduled_visits_tbl(l_idx).value_8 := 'A';
3738 END IF;
3739 END IF;
3740 x_display_rec.field_8 := to_char( x_display_rec.start_period_8 + 1,'mm/yy');
3741 x_display_rec.start_period_8 := x_display_rec.start_period_8;
3742 x_display_rec.end_period_8 := x_display_rec.end_period_8;
3743 END IF;
3744 --
3745 IF G_DEBUG='Y' THEN
3746 AHL_DEBUG_PUB.debug( 'value 8:'||x_scheduled_visits_tbl(l_idx).value_8);
3747 END IF;
3748 --
3749 IF x_display_rec.end_period_8 IS NOT NULL THEN
3750 x_display_rec.start_period_9:= x_display_rec.end_period_8;
3751 --
3752 SELECT ADD_MONTHS(x_display_rec.start_period_9,1) INTO
3753 x_display_rec.end_period_9 FROM DUAL;
3754
3755 l_count := Get_count_of_Visits(l_space_id,
3756 p_simulation_plan_id,
3757 p_plan_flag,
3758 x_display_rec.start_period_9,
3759 x_display_rec.end_period_9);
3760
3761 IF l_count = 1 THEN
3762 x_scheduled_visits_tbl(l_idx).value_9 := 'S';
3763 ELSIF l_count > 1 THEN
3764 x_scheduled_visits_tbl(l_idx).value_9 := 'M';
3765 ELSIF l_count = 0 THEN
3766 IF Check_Unavilable_Space(l_space_id,
3767 x_display_rec.start_period_9,
3768 x_display_rec.end_period_9) THEN
3769 x_scheduled_visits_tbl(l_idx).value_9 := 'U';
3770 ELSE
3771 x_scheduled_visits_tbl(l_idx).value_9 := 'A';
3772 END IF;
3773 END IF;
3774 x_display_rec.field_9 := to_char( x_display_rec.start_period_9 + 1,'mm/yy');
3775 x_display_rec.start_period_9 := x_display_rec.start_period_9;
3776 x_display_rec.end_period_9 := x_display_rec.end_period_9;
3777 END IF;
3778 --
3779 IF G_DEBUG='Y' THEN
3780 AHL_DEBUG_PUB.debug( 'value 9:'||x_scheduled_visits_tbl(l_idx).value_9);
3781 END IF;
3782 --
3783 IF x_display_rec.end_period_9 IS NOT NULL THEN
3784 x_display_rec.start_period_10:= x_display_rec.end_period_9;
3785 --
3786 SELECT ADD_MONTHS(x_display_rec.start_period_10,1) INTO
3787 x_display_rec.end_period_10 FROM DUAL;
3788
3789 l_count := Get_count_of_Visits(l_space_id,
3790 p_simulation_plan_id,
3791 p_plan_flag,
3792 x_display_rec.start_period_10,
3793 x_display_rec.end_period_10);
3794
3795 IF l_count = 1 THEN
3796 x_scheduled_visits_tbl(l_idx).value_10 := 'S';
3797 ELSIF l_count > 1 THEN
3798 x_scheduled_visits_tbl(l_idx).value_10 := 'M';
3799 ELSIF l_count = 0 THEN
3800 IF Check_Unavilable_Space(l_space_id,
3801 x_display_rec.start_period_10,
3802 x_display_rec.end_period_10) THEN
3803 x_scheduled_visits_tbl(l_idx).value_10 := 'U';
3804 ELSE
3805 x_scheduled_visits_tbl(l_idx).value_10 := 'A';
3806 END IF;
3807 END IF;
3808 x_display_rec.field_10 := to_char( x_display_rec.start_period_10 + 1,'mm/yy');
3809 x_display_rec.start_period_10 := x_display_rec.start_period_10;
3810 x_display_rec.end_period_10 := x_display_rec.end_period_10;
3811 END IF;
3812 --
3813 IF G_DEBUG='Y' THEN
3814 AHL_DEBUG_PUB.debug( 'value 10:'||x_scheduled_visits_tbl(l_idx).value_10);
3815 END IF;
3816 --
3817 IF x_display_rec.end_period_10 IS NOT NULL THEN
3818 x_display_rec.start_period_11:= x_display_rec.end_period_10;
3819 --
3820 SELECT ADD_MONTHS(x_display_rec.start_period_11,1) INTO
3821 x_display_rec.end_period_11 FROM DUAL;
3822
3823 l_count := Get_count_of_Visits(l_space_id,
3824 p_simulation_plan_id,
3825 p_plan_flag,
3826 x_display_rec.start_period_11,
3827 x_display_rec.end_period_11);
3828
3829 IF l_count = 1 THEN
3830 x_scheduled_visits_tbl(l_idx).value_11 := 'S';
3831 ELSIF l_count > 1 THEN
3832 x_scheduled_visits_tbl(l_idx).value_11 := 'M';
3833 ELSIF l_count = 0 THEN
3834 IF Check_Unavilable_Space(l_space_id,
3835 x_display_rec.start_period_11,
3836 x_display_rec.end_period_11) THEN
3837 x_scheduled_visits_tbl(l_idx).value_11 := 'U';
3838 ELSE
3839 x_scheduled_visits_tbl(l_idx).value_11 := 'A';
3840 END IF;
3841 END IF;
3842 x_display_rec.field_11 := to_char( x_display_rec.start_period_11 + 1,'mm/yy');
3843 x_display_rec.start_period_11 := x_display_rec.start_period_11;
3844 x_display_rec.end_period_11 := x_display_rec.end_period_11;
3845 END IF;
3846 --
3847 IF G_DEBUG='Y' THEN
3848 AHL_DEBUG_PUB.debug( 'value 11:'||x_scheduled_visits_tbl(l_idx).value_11);
3849 END IF;
3850 --
3851 IF x_display_rec.end_period_11 IS NOT NULL THEN
3852 x_display_rec.start_period_12:= x_display_rec.end_period_11;
3853 --
3854 SELECT ADD_MONTHS(x_display_rec.start_period_12,1) INTO
3855 x_display_rec.end_period_12 FROM DUAL;
3856
3857 l_count := Get_count_of_Visits(l_space_id,
3858 p_simulation_plan_id,
3859 p_plan_flag,
3860 x_display_rec.start_period_12,
3861 x_display_rec.end_period_12);
3862
3863 IF l_count = 1 THEN
3864 x_scheduled_visits_tbl(l_idx).value_12 := 'S';
3865 ELSIF l_count > 1 THEN
3866 x_scheduled_visits_tbl(l_idx).value_12 := 'M';
3867 ELSIF l_count = 0 THEN
3868 IF Check_Unavilable_Space(l_space_id,
3869 x_display_rec.start_period_12,
3870 x_display_rec.end_period_12) THEN
3871 x_scheduled_visits_tbl(l_idx).value_12 := 'U';
3872 ELSE
3873 x_scheduled_visits_tbl(l_idx).value_12 := 'A';
3874 END IF;
3875 END IF;
3876 x_display_rec.field_12 := to_char( x_display_rec.start_period_12 + 1,'mm/yy');
3877 x_display_rec.start_period_12 := x_display_rec.start_period_12;
3878 x_display_rec.end_period_12 := x_display_rec.end_period_12;
3879 END IF;
3880 --
3881 IF G_DEBUG='Y' THEN
3882 AHL_DEBUG_PUB.debug( 'value 12:'||x_scheduled_visits_tbl(l_idx).value_12);
3883 END IF;
3884 --
3885 IF x_display_rec.end_period_12 IS NOT NULL THEN
3886 x_display_rec.start_period_13:= x_display_rec.end_period_12;
3887 --
3888 SELECT ADD_MONTHS(x_display_rec.start_period_13,1) INTO
3889 x_display_rec.end_period_13 FROM DUAL;
3890
3891 l_count := Get_count_of_Visits(l_space_id,
3892 p_simulation_plan_id,
3893 p_plan_flag,
3894 x_display_rec.start_period_13,
3895 x_display_rec.end_period_13);
3896
3897 IF l_count = 1 THEN
3898 x_scheduled_visits_tbl(l_idx).value_13 := 'S';
3899 ELSIF l_count > 1 THEN
3900 x_scheduled_visits_tbl(l_idx).value_13 := 'M';
3901 ELSIF l_count = 0 THEN
3902 IF Check_Unavilable_Space(l_space_id,
3903 x_display_rec.start_period_13,
3904 x_display_rec.end_period_13) THEN
3905 x_scheduled_visits_tbl(l_idx).value_13 := 'U';
3906 ELSE
3907 x_scheduled_visits_tbl(l_idx).value_13 := 'A';
3908 END IF;
3909 END IF;
3910 x_display_rec.field_13 := to_char( x_display_rec.start_period_13 + 1,'mm/yy');
3911 x_display_rec.start_period_13 := x_display_rec.start_period_13;
3912 x_display_rec.end_period_13 := x_display_rec.end_period_13;
3913 END IF;
3914 --
3915 IF G_DEBUG='Y' THEN
3916 AHL_DEBUG_PUB.debug( 'value 13:'||x_scheduled_visits_tbl(l_idx).value_13);
3917 END IF;
3918 --
3919 IF x_display_rec.end_period_13 IS NOT NULL THEN
3920 x_display_rec.start_period_14:= x_display_rec.end_period_13;
3921 --
3922 SELECT ADD_MONTHS(x_display_rec.start_period_14,1) INTO
3923 x_display_rec.end_period_14 FROM DUAL;
3924
3925 l_count := Get_count_of_Visits(l_space_id,
3926 p_simulation_plan_id,
3927 p_plan_flag,
3928 x_display_rec.start_period_14,
3929 x_display_rec.end_period_14);
3930
3931 IF l_count = 1 THEN
3932 x_scheduled_visits_tbl(l_idx).value_14 := 'S';
3933 ELSIF l_count > 1 THEN
3934 x_scheduled_visits_tbl(l_idx).value_14 := 'M';
3935 ELSIF l_count = 0 THEN
3936 IF Check_Unavilable_Space(l_space_id,
3937 x_display_rec.start_period_14,
3938 x_display_rec.end_period_14) THEN
3939 x_scheduled_visits_tbl(l_idx).value_14 := 'U';
3940 ELSE
3941 x_scheduled_visits_tbl(l_idx).value_14 := 'A';
3942 END IF;
3943 END IF;
3944 x_display_rec.field_14 := to_char( x_display_rec.start_period_14 + 1,'mm/yy');
3945 x_display_rec.start_period_14 := x_display_rec.start_period_14;
3946 x_display_rec.end_period_14 := x_display_rec.end_period_14;
3947 END IF;
3948 --
3949 IF G_DEBUG='Y' THEN
3950 AHL_DEBUG_PUB.debug( 'value 14:'||x_scheduled_visits_tbl(l_idx).value_14);
3951 END IF;
3952 x_scheduled_visits_tbl(l_idx).space_id := l_space_id;
3953 x_scheduled_visits_tbl(l_idx).space_name := l_space_name;
3954 x_scheduled_visits_tbl(l_idx).department_code := l_dept_code;
3955 x_scheduled_visits_tbl(l_idx).department_name := l_description;
3956 x_scheduled_visits_tbl(l_idx).department_id := l_department_id;
3957 x_scheduled_visits_tbl(l_idx).space_category_mean := l_meaning;
3958 x_scheduled_visits_tbl(l_idx).Space_Category := l_space_category;
3959 x_scheduled_visits_tbl(l_idx).org_name := l_org_name;
3960 x_display_rec.start_period := l_start_date;
3961 x_display_rec.end_period := x_display_rec.end_period_14;
3962
3963 --
3964 l_idx := l_idx + 1;
3965 END IF;
3966
3967 END LOOP;
3968 CLOSE l_space_cur;
3969 --
3970
3971 END Get_UOM_MONTHS;
3972
3973 -- Procedure name : Search_Scheduled_Visits
3974 -- Type : Private
3975 -- Function : This procedure calculates number of visits scheduled at department or space level
3976 -- based on start date, and various combinations of search criteria UOM (Days,Weeks, Months).
3977 -- Restricted to 14 days, 14 weeks , 14 months due to technical reasons.
3978 -- Pre-reqs :
3979 -- Parameters :
3980 --
3981 -- Standard IN Parameters :
3982 -- p_api_version IN NUMBER Required
3983 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
3984 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
3985 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
3986 -- Based on this flag, the API will set the default attributes.
3987 -- p_module_type In VARCHAR2 Default NULL
3988 -- This will be null.
3989 -- Standard out Parameters :
3990 -- x_return_status OUT VARCHAR2 Required
3991 -- x_msg_count OUT NUMBER Required
3992 -- x_msg_data OUT VARCHAR2 Required
3993 --
3994 -- Search Scheduled vists Parameters :
3995 -- p_search_visits_rec IN Search_visits_rec_type Required
3996 -- X_Scheduled_visits_tbl OUT Scheduled_visits_tbl
3997 --
3998 --
3999 --
4000 PROCEDURE Search_Scheduled_Visits (
4001 p_api_version IN NUMBER,
4002 p_init_msg_list IN VARCHAR2 := FND_API.g_false,
4003 p_commit IN VARCHAR2 := FND_API.g_false,
4004 p_validation_level IN NUMBER := FND_API.g_valid_level_full,
4005 p_module_type IN VARCHAR2 := 'JSP',
4006 p_search_visits_Rec IN search_visits_rec_type,
4007 x_scheduled_visit_tbl OUT NOCOPY scheduled_visits_tbl,
4008 x_display_rec OUT NOCOPY display_rec_type,
4009 x_return_status OUT NOCOPY VARCHAR2,
4010 x_msg_count OUT NOCOPY NUMBER,
4011 x_msg_data OUT NOCOPY VARCHAR2
4012 )
4013 IS
4014 -- Get plan info
4015 CURSOR get_plan_id_cur (c_plan_id IN NUMBER)
4016 IS
4017 SELECT simulation_plan_id,
4018 primary_plan_flag
4019 FROM ahl_simulation_plans_vl
4020 WHERE simulation_plan_id = c_plan_id;
4021 -- New changes
4022 CURSOR l_org_id_cur (c_org_id IN NUMBER,
4023 c_name IN VARCHAR2)
4024 IS
4025 SELECT organization_id,name
4026 FROM hr_all_organization_units
4027 WHERE (organization_id = c_org_id
4028 OR name = c_name);
4029 --Get Item id or Desc
4030
4031 -- AnRaj: Split the cursor, perf bug 5208300, index was not being hit because of logical OR
4032 /*
4033 CURSOR l_item_id_cur ( c_item_description IN VARCHAR2,
4034 c_item_id IN NUMBER)
4035 IS
4036 SELECT distinct(inventory_item_id)
4037 FROM MTL_SYSTEM_ITEMS_VL
4038 WHERE (inventory_item_id = c_item_id OR concatenated_segments = c_item_description);
4039 */
4040 CURSOR l_item_id_cur ( c_item_id IN NUMBER)
4041 IS
4042 SELECT distinct(inventory_item_id)
4043 FROM MTL_SYSTEM_ITEMS_VL
4044 WHERE inventory_item_id = c_item_id;
4045
4046 CURSOR l_item_name_cur ( c_item_description IN VARCHAR2)
4047 IS
4048 SELECT distinct(inventory_item_id)
4049 FROM MTL_SYSTEM_ITEMS_VL
4050 WHERE concatenated_segments = c_item_description;
4051
4052
4053 --Cursor to filter visit type and item type (space capabilities)
4054 CURSOR Space_capblts_cur (C_visit_type IN VARCHAR2,
4055 C_item_id IN NUMBER,
4056 C_space_id IN NUMBER)
4057 IS
4058 SELECT 1 FROM ahl_space_capabilities
4059 WHERE visit_type = c_visit_type
4060 AND inventory_item_id = c_item_id
4061 AND space_id = c_space_id;
4062
4063 l_api_name CONSTANT VARCHAR2(30) := 'SEARCH_SCHEDULED_VISITS';
4064 l_api_version CONSTANT NUMBER := 1.0;
4065 l_msg_count NUMBER;
4066 l_return_status VARCHAR2(1);
4067 l_msg_data VARCHAR2(2000);
4068 l_dummy NUMBER;
4069 l_start_date DATE;
4070 l_simulation_plan_id NUMBER;
4071 l_plan_flag VARCHAR2(1);
4072 l_idx NUMBER;
4073 --
4074 l_scheduled_visits_tbl scheduled_visits_tbl;
4075 l_display_rec display_rec_type;
4076 l_search_visits_Rec search_visits_rec_type := p_search_visits_rec;
4077
4078 BEGIN
4079 --------------------Initialize ----------------------------------
4080 -- Standard Start of API savepoint
4081 SAVEPOINT Search_Scheduled_Visits;
4082 -- Check if API is called in debug mode. If yes, enable debug.
4083 IF G_DEBUG='Y' THEN
4084 AHL_DEBUG_PUB.enable_debug;
4085 END IF;
4086 -- Debug info.
4087 IF G_DEBUG='Y' THEN
4088 AHL_DEBUG_PUB.debug( 'enter ahl_ltp_space_schedule_pvt. Search Scheduled Visits','+SPANT+');
4089 END IF;
4090 -- Standard call to check for call compatibility.
4091 IF FND_API.to_boolean(p_init_msg_list)
4092 THEN
4093 FND_MSG_PUB.initialize;
4094 END IF;
4095 -- Initialize API return status to success
4096 x_return_status := FND_API.G_RET_STS_SUCCESS;
4097 -- Initialize message list if p_init_msg_list is set to TRUE.
4098 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
4099 p_api_version,
4100 l_api_name,G_PKG_NAME)
4101 THEN
4102 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4103 END IF;
4104 --
4105 IF G_DEBUG='Y' THEN
4106 AHL_DEBUG_PUB.debug( 'l_search_visits_Rec.start_date'||l_search_visits_Rec.start_date);
4107 END IF;
4108 --
4109 ---------------------start API Body------------------------------------
4110 -- Get org id from org name or vice versa
4111 IF (l_search_visits_Rec.ORG_ID IS NOT NULL AND
4112 l_search_visits_Rec.ORG_ID <> FND_API.G_MISS_NUM) OR
4113 (l_search_visits_Rec.ORG_NAME IS NOT NULL AND
4114 l_search_visits_Rec.ORG_NAME <> FND_API.G_MISS_CHAR)
4115 THEN
4116 --
4117 OPEN l_org_id_cur(l_search_visits_Rec.ORG_ID,l_search_visits_Rec.ORG_NAME);
4118 FETCH l_org_id_cur INTO l_search_visits_Rec.ORG_ID,l_search_visits_Rec.ORG_NAME;
4119 IF l_org_id_cur%NOTFOUND THEN
4120 Fnd_Message.set_name('AHL', 'AHL_LTP_INVALID_ORG');
4121 Fnd_Message.Set_Token('ORG',NVL(l_search_visits_Rec.ORG_NAME,l_search_visits_Rec.ORG_ID));
4122 Fnd_Msg_Pub.ADD;
4123 CLOSE l_org_id_cur;
4124 RAISE Fnd_Api.G_EXC_ERROR;
4125 --
4126 END IF;
4127 CLOSE l_org_id_cur;
4128 --
4129 END IF;
4130 --For Space Category
4131 IF l_search_visits_Rec.space_category_mean IS NOT NULL AND
4132 l_search_visits_Rec.space_category_mean <> Fnd_Api.G_MISS_CHAR
4133 THEN
4134 Check_lookup_name_Or_Id (
4135 p_lookup_type => 'AHL_LTP_SPACE_CATEGORY',
4136 p_lookup_code => NULL,
4137 p_meaning => l_search_visits_Rec.space_category_mean,
4138 p_check_id_flag => 'Y',
4139 x_lookup_code => l_search_visits_Rec.space_category,
4140 x_return_status => l_return_status);
4141
4142 IF NVL(l_return_status, 'X') <> 'S'
4143 THEN
4144 Fnd_Message.SET_NAME('AHL','AHL_LTP_SP_CATEGORY_NOT_EXIST');
4145 Fnd_Msg_Pub.ADD;
4146 RAISE Fnd_Api.G_EXC_ERROR;
4147 END IF;
4148 ELSE
4149 -- Id presents
4150 IF l_search_visits_Rec.space_category IS NOT NULL AND
4151 l_search_visits_Rec.space_category <> Fnd_Api.G_MISS_CHAR
4152 THEN
4153 l_search_visits_Rec.space_category := l_search_visits_Rec.space_category;
4154 END IF;
4155 END IF;
4156
4157 --For Visit type
4158 IF l_search_visits_Rec.visit_type_mean IS NOT NULL AND
4159 l_search_visits_Rec.visit_type_mean <> Fnd_Api.G_MISS_CHAR
4160 THEN
4161 Check_lookup_name_Or_Id (
4162 p_lookup_type => 'AHL_PLANNING_VISIT_TYPE',
4163 p_lookup_code => NULL,
4164 p_meaning => l_search_visits_Rec.visit_type_mean,
4165 p_check_id_flag => 'Y',
4166 x_lookup_code => l_search_visits_Rec.visit_type_code,
4167 x_return_status => l_return_status);
4168
4169 IF NVL(l_return_status, 'X') <> 'S'
4170 THEN
4171 Fnd_Message.SET_NAME('AHL','AHL_LTP_VISIT_TYPE_INVALID');
4172 Fnd_Msg_Pub.ADD;
4173 RAISE Fnd_Api.G_EXC_ERROR;
4174 END IF;
4175 ELSE
4176 -- Id presents
4177 IF l_search_visits_Rec.visit_type_code IS NOT NULL AND
4178 l_search_visits_Rec.visit_type_code <> Fnd_Api.G_MISS_CHAR
4179 THEN
4180 l_search_visits_Rec.visit_type_code := l_search_visits_Rec.visit_type_code;
4181 END IF;
4182 END IF;
4183
4184 -- AnRaj: Changed the code by splitting the cursor, perf bug 5208300, index was not being hit because of OR
4185 -- For Item based on the name,
4186 IF (l_search_visits_Rec.item_description IS NOT NULL AND l_search_visits_Rec.item_description <> Fnd_Api.G_MISS_CHAR)
4187 THEN
4188 OPEN l_item_name_cur(l_search_visits_Rec.item_description);
4189 FETCH l_item_name_cur INTO l_search_visits_rec.item_id;
4190 IF l_item_name_cur%NOTFOUND THEN
4191 Fnd_Message.set_name('AHL', 'AHL_LTP_ITEM_NOT_EXIST');
4192 Fnd_Message.Set_Token('ITEM',NVL(l_search_visits_Rec.ITEM_DESCRIPTION,l_search_visits_Rec.ITEM_ID));
4193 Fnd_Msg_Pub.ADD;
4194 CLOSE l_item_name_cur;
4195 RAISE Fnd_Api.G_EXC_ERROR;
4196 END IF;
4197 CLOSE l_item_name_cur;
4198 END IF;
4199
4200 IF (l_search_visits_Rec.item_id IS NOT NULL AND l_search_visits_Rec.item_id <> Fnd_Api.G_MISS_NUM)
4201 THEN
4202 OPEN l_item_id_cur (l_search_visits_Rec.item_id);
4203 FETCH l_item_id_cur INTO l_search_visits_rec.item_id;
4204 IF l_item_id_cur%NOTFOUND THEN
4205 Fnd_Message.set_name('AHL', 'AHL_LTP_ITEM_NOT_EXIST');
4206 Fnd_Message.Set_Token('ITEM',NVL(l_search_visits_Rec.ITEM_DESCRIPTION,l_search_visits_Rec.ITEM_ID));
4207 Fnd_Msg_Pub.ADD;
4208 CLOSE l_item_id_cur;
4209 RAISE Fnd_Api.G_EXC_ERROR;
4210 END IF;
4211 CLOSE l_item_id_cur;
4212 END IF;
4213 -- AnRaj: Bug fix for 5208300 end.
4214
4215 --For Display Period
4216 IF l_search_visits_Rec.display_period_mean IS NOT NULL AND
4217 l_search_visits_Rec.display_period_mean <> Fnd_Api.G_MISS_CHAR
4218 THEN
4219 Check_lookup_name_Or_Id (
4220 p_lookup_type => 'AHL_LTP_DISPLAY_PERIOD',
4221 p_lookup_code => NULL,
4222 p_meaning => l_search_visits_Rec.display_period_mean,
4223 p_check_id_flag => 'Y',
4224 x_lookup_code => l_search_visits_Rec.display_period_code,
4225 x_return_status => l_return_status);
4226
4227 IF NVL(l_return_status, 'X') <> 'S'
4228 THEN
4229 Fnd_Message.SET_NAME('AHL','AHL_LTP_DISPLAY_INVALID');
4230 Fnd_Msg_Pub.ADD;
4231 RAISE Fnd_Api.G_EXC_ERROR;
4232 END IF;
4233 ELSE
4234 -- Id presents
4235 IF l_search_visits_Rec.display_period_code IS NOT NULL AND
4236 l_search_visits_Rec.display_period_code <> Fnd_Api.G_MISS_CHAR
4237 THEN
4238 l_search_visits_Rec.display_period_code := l_search_visits_Rec.display_period_code;
4239 END IF;
4240 END IF;
4241 --
4242 IF G_DEBUG='Y' THEN
4243 AHL_DEBUG_PUB.debug( 'l_search_visits_Rec.plan_id'||l_search_visits_Rec.plan_id);
4244 AHL_DEBUG_PUB.debug( 'l_search_visits_Rec.plan_name'||l_search_visits_Rec.plan_name);
4245 AHL_DEBUG_PUB.debug( 'l_search_visits_Rec.item_id'||l_search_visits_Rec.item_id);
4246 AHL_DEBUG_PUB.debug( 'l_search_visits_Rec.visit_type'||l_search_visits_Rec.visit_type_code);
4247 END IF;
4248 --Get plan id
4249 OPEN get_plan_id_cur(l_search_visits_Rec.plan_id);
4250 FETCH get_plan_id_cur INTO l_simulation_plan_id,l_plan_flag;
4251 IF get_plan_id_cur%NOTFOUND THEN
4252 Fnd_Message.set_name('AHL', 'AHL_LTP_INVALID_PLAN');
4253 Fnd_Msg_Pub.ADD;
4254 CLOSE get_plan_id_cur;
4255 RAISE Fnd_Api.G_EXC_ERROR;
4256 END IF;
4257 CLOSE get_plan_id_cur;
4258 --
4259 l_start_date := trunc(l_search_visits_Rec.start_date);
4260
4261 -- l_start_date := TO_CHAR(l_search_visits_Rec.start_date, 'DD-MM-YYYY ');
4262 --
4263 IF G_DEBUG='Y' THEN
4264 AHL_DEBUG_PUB.debug( 'l_simulation_plan_id:'||l_simulation_plan_id);
4265 AHL_DEBUG_PUB.debug( 'l_plan_flag:'||l_plan_flag);
4266 AHL_DEBUG_PUB.debug( 'l_start_date:'||l_start_date);
4267
4268 END IF;
4269 --
4270 IF l_search_visits_Rec.display_period_code = 'DAYS' THEN
4271 --
4272 Get_Uom_Days (
4273 p_start_date => l_start_date,
4274 p_org_id => l_search_visits_Rec.ORG_ID,
4275 p_simulation_plan_id => l_simulation_plan_id,
4276 p_plan_flag => l_plan_flag,
4277 p_dept_id => l_search_visits_Rec.department_id,
4278 p_dept_name => l_search_visits_Rec.department_name,
4279 p_space_id => l_search_visits_Rec.space_id,
4280 p_space_name => l_search_visits_Rec.space_name,
4281 p_space_category => l_search_visits_Rec.space_category,
4282 -- p_visit_type => l_search_visits_Rec.visit_type_code,
4283 -- p_item_id => l_search_visits_Rec.item_id,
4284 x_scheduled_visits_tbl => l_scheduled_visits_tbl,
4285 x_display_rec => l_display_rec);
4286 -- Assign to out record
4287 IF l_scheduled_visits_tbl.count > 0 then
4288 FOR i IN l_scheduled_visits_tbl.first..l_scheduled_visits_tbl.last
4289 LOOP
4290 --Space id is not null
4291 IF l_scheduled_visits_tbl(i).space_id IS NOT NULL
4292 THEN
4293 OPEN Space_capblts_cur(l_search_visits_Rec.visit_type_code,
4294 l_search_visits_Rec.item_id,l_scheduled_visits_tbl(i).space_id);
4295 FETCH Space_capblts_cur INTO l_dummy;
4296 IF Space_capblts_cur%FOUND THEN
4297 x_scheduled_visit_tbl(i) := l_scheduled_visits_tbl(i);
4298 x_display_rec := l_display_rec;
4299 END IF;
4300 CLOSE Space_capblts_cur;
4301 --Department not null
4302 ELSE
4303 x_scheduled_visit_tbl(i) := l_scheduled_visits_tbl(i);
4304 x_display_rec := l_display_rec;
4305 END IF;
4306 --
4307 END LOOP;
4308 END IF;
4309 --In case of null records send display record
4310 IF l_display_rec.field_1 IS NULL THEN
4311 --
4312 x_display_rec.field_1 := to_char( l_start_date ,'dd/mm');
4313 x_display_rec.field_2 := to_char( l_start_date + 1,'dd/mm');
4314 x_display_rec.field_3 := to_char( l_start_date + 2 ,'dd/mm');
4315 x_display_rec.field_4 := to_char( l_start_date + 3,'dd/mm');
4316 x_display_rec.field_5 := to_char( l_start_date + 4,'dd/mm');
4317 x_display_rec.field_6 := to_char( l_start_date + 5,'dd/mm');
4318 x_display_rec.field_7 := to_char( l_start_date + 6,'dd/mm');
4319 x_display_rec.field_8 := to_char( l_start_date + 7,'dd/mm');
4320 x_display_rec.field_9 := to_char( l_start_date + 8 ,'dd/mm');
4321 x_display_rec.field_10 := to_char( l_start_date + 9 ,'dd/mm');
4322 x_display_rec.field_11 := to_char( l_start_date + 10 ,'dd/mm');
4323 x_display_rec.field_12 := to_char( l_start_date + 11 ,'dd/mm');
4324 x_display_rec.field_13 := to_char( l_start_date + 12 ,'dd/mm');
4325 x_display_rec.field_14 := to_char( l_start_date + 13 ,'dd/mm');
4326 --
4327 END IF;
4328 END IF; -- Days
4329
4330 -- For Weeks
4331 IF l_search_visits_Rec.display_period_code = 'WEEKS' THEN
4332 --
4333 Get_Uom_Weeks (
4334 p_start_date => l_start_date,
4335 p_org_id => l_search_visits_Rec.ORG_ID,
4336 p_simulation_plan_id => l_simulation_plan_id,
4337 p_plan_flag => l_plan_flag,
4338 p_dept_id => l_search_visits_Rec.department_id,
4339 p_dept_name => l_search_visits_Rec.department_name,
4340 p_space_id => l_search_visits_Rec.space_id,
4341 p_space_name => l_search_visits_Rec.space_name,
4342 p_space_category => l_search_visits_Rec.space_category,
4343 x_scheduled_visits_tbl => l_scheduled_visits_tbl,
4344 x_display_rec => l_display_rec);
4345 -- Assign to out record
4346 IF l_scheduled_visits_tbl.count > 0 then
4347 FOR i IN l_scheduled_visits_tbl.first..l_scheduled_visits_tbl.last
4348 LOOP
4349 --Space id is not null
4350 IF l_scheduled_visits_tbl(i).space_id IS NOT NULL
4351 THEN
4352 OPEN Space_capblts_cur(l_search_visits_Rec.visit_type_code,
4353 l_search_visits_Rec.item_id,l_scheduled_visits_tbl(i).space_id);
4354 FETCH Space_capblts_cur INTO l_dummy;
4355 IF Space_capblts_cur%FOUND THEN
4356 x_scheduled_visit_tbl(i) := l_scheduled_visits_tbl(i);
4357 x_display_rec := l_display_rec;
4358 END IF;
4359 CLOSE Space_capblts_cur;
4360 --Department not null
4361 ELSE
4362 x_scheduled_visit_tbl(i) := l_scheduled_visits_tbl(i);
4363 x_display_rec := l_display_rec;
4364 END IF;
4365 --
4366 END LOOP;
4367 END IF;
4368 --
4369 --In case of null records send display record
4370 IF l_display_rec.field_1 IS NULL THEN
4371 --
4372 x_display_rec.field_1 := to_char( l_start_date ,'dd/mm');
4373 x_display_rec.field_2 := to_char( l_start_date + 7,'dd/mm');
4374 x_display_rec.field_3 := to_char( to_date(x_display_rec.field_2,'dd/mm') + 7 ,'dd/mm');
4375 x_display_rec.field_4 := to_char( to_date(x_display_rec.field_3,'dd/mm') + 7,'dd/mm');
4376 x_display_rec.field_5 := to_char( to_date(x_display_rec.field_4, 'dd/mm') + 7,'dd/mm');
4377 x_display_rec.field_6 := to_char( to_date(x_display_rec.field_5,'dd/mm') + 7,'dd/mm');
4378 x_display_rec.field_7 := to_char( to_date(x_display_rec.field_6, 'dd/mm') + 7,'dd/mm');
4379 x_display_rec.field_8 := to_char( to_date(x_display_rec.field_7, 'dd/mm') + 7,'dd/mm');
4380 x_display_rec.field_9 := to_char( to_date(x_display_rec.field_8, 'dd/mm') + 7 ,'dd/mm');
4381 x_display_rec.field_10 := to_char( to_date(x_display_rec.field_9, 'dd/mm') + 7 ,'dd/mm');
4382 x_display_rec.field_11 := to_char( to_date(x_display_rec.field_10, 'dd/mm') + 7 ,'dd/mm');
4383 x_display_rec.field_12 := to_char( to_date(x_display_rec.field_11, 'dd/mm') + 7 ,'dd/mm');
4384 x_display_rec.field_13 := to_char( to_date(x_display_rec.field_12, 'dd/mm') + 7 ,'dd/mm');
4385 x_display_rec.field_14 := to_char( to_date(x_display_rec.field_13, 'dd/mm') + 7 ,'dd/mm');
4386 --
4387 END IF;
4388
4389 END IF;
4390
4391 -- For Months
4392 IF l_search_visits_Rec.display_period_code = 'MONTHS' THEN
4393
4394 Get_Uom_Months (
4395 p_start_date => l_start_date,
4396 p_org_id => l_search_visits_Rec.ORG_ID,
4397 p_simulation_plan_id => l_simulation_plan_id,
4398 p_plan_flag => l_plan_flag,
4399 p_dept_id => l_search_visits_Rec.department_id,
4400 p_dept_name => l_search_visits_Rec.department_name,
4401 p_space_id => l_search_visits_Rec.space_id,
4402 p_space_name => l_search_visits_Rec.space_name,
4403 p_space_category => l_search_visits_Rec.space_category,
4404 x_scheduled_visits_tbl => l_scheduled_visits_tbl,
4405 x_display_rec => l_display_rec);
4406 -- Assign to out record
4407 IF l_scheduled_visits_tbl.count > 0 then
4408 FOR i IN l_scheduled_visits_tbl.first..l_scheduled_visits_tbl.last
4409 LOOP
4410 --Space id is not null
4411 IF l_scheduled_visits_tbl(i).space_id IS NOT NULL
4412 THEN
4413 OPEN Space_capblts_cur(l_search_visits_Rec.visit_type_code,
4414 l_search_visits_Rec.item_id,l_scheduled_visits_tbl(i).space_id);
4415 FETCH Space_capblts_cur INTO l_dummy;
4416 IF Space_capblts_cur%FOUND THEN
4417 x_scheduled_visit_tbl(i) := l_scheduled_visits_tbl(i);
4418 x_display_rec := l_display_rec;
4419 END IF;
4420 CLOSE Space_capblts_cur;
4421 --Department not null
4422 ELSE
4423 x_scheduled_visit_tbl(i) := l_scheduled_visits_tbl(i);
4424 x_display_rec := l_display_rec;
4425 END IF;
4426 --
4427 END LOOP;
4428 END IF;
4429
4430 SELECT ADD_MONTHS(x_display_rec.start_period_1,1) INTO
4431 x_display_rec.end_period_1 FROM DUAL;
4432
4433 --In case of null records send display record
4434 IF l_display_rec.field_1 IS NULL THEN
4435 --
4436 x_display_rec.field_1 := to_char( l_start_date ,'mm/yy');
4437 --
4438 SELECT ADD_MONTHS(l_start_date,1) INTO
4439 x_display_rec.end_period_1 FROM DUAL;
4440 --
4441 x_display_rec.field_2 := to_char(x_display_rec.end_period_1,'mm/yy');
4442 --
4443 SELECT ADD_MONTHS(x_display_rec.end_period_1,1) INTO
4444 x_display_rec.end_period_2 FROM DUAL;
4445 --
4446 x_display_rec.field_3 := to_char(x_display_rec.end_period_2,'mm/yy');
4447 --
4448 SELECT ADD_MONTHS(x_display_rec.end_period_2,1) INTO
4449 x_display_rec.end_period_3 FROM DUAL;
4450 --
4451 x_display_rec.field_4 := to_char(x_display_rec.end_period_3,'mm/yy');
4452 --
4453 SELECT ADD_MONTHS(x_display_rec.end_period_3,1) INTO
4454 x_display_rec.end_period_4 FROM DUAL;
4455 --
4456 x_display_rec.field_5 := to_char(x_display_rec.end_period_4,'mm/yy');
4457 --
4458 SELECT ADD_MONTHS(x_display_rec.end_period_4,1) INTO
4459 x_display_rec.end_period_5 FROM DUAL;
4460 --
4461 x_display_rec.field_6 := to_char(x_display_rec.end_period_5,'mm/yy');
4462 --
4463 SELECT ADD_MONTHS(x_display_rec.end_period_5,1) INTO
4464 x_display_rec.end_period_6 FROM DUAL;
4465 --
4466 x_display_rec.field_7 := to_char(x_display_rec.end_period_6,'mm/yy');
4467 --
4468 SELECT ADD_MONTHS(x_display_rec.end_period_6,1) INTO
4469 x_display_rec.end_period_7 FROM DUAL;
4470 --
4471 x_display_rec.field_8 := to_char(x_display_rec.end_period_7,'mm/yy');
4472 --
4473 SELECT ADD_MONTHS(x_display_rec.end_period_7,1) INTO
4474 x_display_rec.end_period_8 FROM DUAL;
4475 --
4476 x_display_rec.field_9 := to_char(x_display_rec.end_period_8,'mm/yy');
4477 --
4478 SELECT ADD_MONTHS(x_display_rec.end_period_8,1) INTO
4479 x_display_rec.end_period_9 FROM DUAL;
4480 --
4481 x_display_rec.field_10 := to_char(x_display_rec.end_period_9,'mm/yy');
4482 --
4483 SELECT ADD_MONTHS(x_display_rec.end_period_9,1) INTO
4484 x_display_rec.end_period_10 FROM DUAL;
4485 --
4486 x_display_rec.field_11 := to_char(x_display_rec.end_period_10,'mm/yy');
4487 --
4488 SELECT ADD_MONTHS(x_display_rec.end_period_10,1) INTO
4489 x_display_rec.end_period_11 FROM DUAL;
4490 --
4491 x_display_rec.field_12 := to_char(x_display_rec.end_period_11,'mm/yy');
4492 --
4493 SELECT ADD_MONTHS(x_display_rec.end_period_11,1) INTO
4494 x_display_rec.end_period_12 FROM DUAL;
4495 --
4496 x_display_rec.field_13 := to_char(x_display_rec.end_period_12,'mm/yy');
4497 --
4498 SELECT ADD_MONTHS(x_display_rec.end_period_12,1) INTO
4499 x_display_rec.end_period_13 FROM DUAL;
4500 --
4501 x_display_rec.field_14 := to_char(x_display_rec.end_period_13,'mm/yy');
4502 --
4503
4504 --
4505 END IF;
4506
4507 --
4508 END IF;
4509
4510 ---------------------------End of Body---------------------------------------
4511 --Standard check to count messages
4512 l_msg_count := Fnd_Msg_Pub.count_msg;
4513
4514 IF l_msg_count > 0 THEN
4515 X_msg_count := l_msg_count;
4516 X_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
4517 RAISE Fnd_Api.G_EXC_ERROR;
4518 END IF;
4519
4520 --Standard check for commit
4521 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
4522 COMMIT;
4523 END IF;
4524 -- Debug info
4525 IF G_DEBUG='Y' THEN
4526 Ahl_Debug_Pub.debug( 'End of private api Search Scheduled Visits','+SPANT+');
4527 -- Check if API is called in debug mode. If yes, disable debug.
4528 Ahl_Debug_Pub.disable_debug;
4529 END IF;
4530
4531 EXCEPTION
4532 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4533 ROLLBACK TO Search_Scheduled_Visits;
4534 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4535 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
4536 p_count => x_msg_count,
4537 p_data => x_msg_data);
4538
4539 IF G_DEBUG='Y' THEN
4540 AHL_DEBUG_PUB.log_app_messages (
4541 x_msg_count, x_msg_data, 'ERROR' );
4542 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt.Search Scheduled Visits','+SPANT+');
4543 -- Check if API is called in debug mode. If yes, disable debug.
4544 AHL_DEBUG_PUB.disable_debug;
4545 END IF;
4546 WHEN FND_API.G_EXC_ERROR THEN
4547 ROLLBACK TO Search_Scheduled_Visits;
4548 X_return_status := FND_API.G_RET_STS_ERROR;
4549 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
4550 p_count => x_msg_count,
4551 p_data => X_msg_data);
4552 IF G_DEBUG='Y' THEN
4553
4554 -- Debug info.
4555 AHL_DEBUG_PUB.log_app_messages (
4556 x_msg_count, x_msg_data, 'UNEXPECTED ERROR' );
4557 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt.Search Scheduled Visits','+SPANT+');
4558 -- Check if API is called in debug mode. If yes, disable debug.
4559 AHL_DEBUG_PUB.disable_debug;
4560 END IF;
4561 WHEN OTHERS THEN
4562 ROLLBACK TO Search_Scheduled_Visits;
4563 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4564 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4565 THEN
4566 fnd_msg_pub.add_exc_msg(p_pkg_name => 'AHL_LTP_SPACE_SCHEDULE_PVT',
4567 p_procedure_name => 'SEARCH_SCHEDULED_VISITS',
4568 p_error_text => SUBSTR(SQLERRM,1,240));
4569 END IF;
4570 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
4571 p_count => x_msg_count,
4572 p_data => X_msg_data);
4573 IF G_DEBUG='Y' THEN
4574
4575 -- Debug info.
4576 AHL_DEBUG_PUB.log_app_messages (
4577 x_msg_count, x_msg_data, 'SQL ERROR' );
4578 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt.Search Scheduled Visits','+SPANT+');
4579 -- Check if API is called in debug mode. If yes, disable debug.
4580 AHL_DEBUG_PUB.disable_debug;
4581 END IF;
4582
4583 END Search_Scheduled_Visits;
4584
4585 --
4586 PROCEDURE Get_Visit_Duration
4587 (p_visit_id IN NUMBER,
4588 x_visit_duration OUT NOCOPY NUMBER,
4589 x_return_status OUT NOCOPY VARCHAR2,
4590 x_msg_count OUT NOCOPY NUMBER,
4591 x_msg_data OUT NOCOPY VARCHAR2 )
4592 IS
4593 --
4594 CURSOR get_visit_cur (c_visit_id IN NUMBER)
4595 IS
4596 SELECT start_date_time
4597 FROM AHL_VISITS_B
4598 WHERE visit_id = c_visit_id;
4599
4600 /* Modified by mpothuku on 01/25/05 to include the status_code clause */
4601 CURSOR get_task_end_cur (c_visit_id IN NUMBER)
4602 IS
4603 SELECT max(end_date_time)
4604 FROM ahl_visit_tasks_vl
4605 WHERE visit_id = c_visit_id
4606 and status_code <> 'DELETED' ;
4607
4608 --
4609 l_api_name CONSTANT VARCHAR2(30) := 'GET_VISIT_DURATION';
4610 l_api_version CONSTANT NUMBER := 1.0;
4611 l_init_msg_list VARCHAR2(30) := fnd_api.g_true;
4612 l_msg_count NUMBER;
4613 l_return_status VARCHAR2(1);
4614 l_msg_data VARCHAR2(2000);
4615 l_visit_start_time DATE;
4616 l_visit_end_time DATE;
4617 l_duration NUMBER;
4618 l_visit_time DATE;
4619 l_due_time NUMBER;
4620
4621 BEGIN
4622 --
4623 -- Standard Start of API savepoint
4624 SAVEPOINT get_visit_duration;
4625 -- Check if API is called in debug mode. If yes, enable debug.
4626 IF G_DEBUG='Y' THEN
4627 AHL_DEBUG_PUB.enable_debug;
4628 END IF;
4629 -- Debug info.
4630 IF G_DEBUG='Y' THEN
4631 AHL_DEBUG_PUB.debug( 'enter ahl_ltp_space_schedule_pvt.get_visit_duration','+SPSL+');
4632 END IF;
4633 -- Standard call to check for call compatibility.
4634 IF FND_API.to_boolean(l_init_msg_list)
4635 THEN
4636 FND_MSG_PUB.initialize;
4637 END IF;
4638 -- Initialize API return status to success
4639 x_return_status := FND_API.G_RET_STS_SUCCESS;
4640 -- Initialize message list if p_init_msg_list is set to TRUE.
4641 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
4642 l_api_version,
4643 l_api_name,G_PKG_NAME)
4644 THEN
4645 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4646 END IF;
4647 --
4648 IF G_DEBUG='Y' THEN
4649 AHL_DEBUG_PUB.debug( 'inside get visit duration :'||p_visit_id);
4650 --
4651 AHL_DEBUG_PUB.debug( 'before call'||p_visit_id);
4652 END IF;
4653 --
4654 IF p_visit_id IS NOT NULL THEN
4655 --Visit Start date
4656 OPEN get_visit_cur(p_visit_id);
4657 FETCH get_visit_cur INTO l_visit_start_time;
4658 CLOSE get_visit_cur;
4659 --
4660 IF l_visit_start_time IS NOT NULL THEN
4661 --Get Last Task end date
4662 OPEN get_task_end_cur(p_visit_id);
4663 FETCH get_task_end_cur INTO l_visit_end_time;
4664 CLOSE get_task_end_cur;
4665 END IF;
4666 END IF;
4667
4668 IF G_DEBUG='Y' THEN
4669 AHL_DEBUG_PUB.debug( 'visit start time :'||to_char(l_visit_start_time, 'dd/mm/yy hh:mi:ss:'));
4670 AHL_DEBUG_PUB.debug( 'visit end time :'||to_char(l_visit_end_time,'dd/mm/yy hh:mi:ss:'));
4671 END IF;
4672
4673 IF (l_visit_start_time IS NOT NULL AND l_visit_end_time IS NOT NULL) THEN
4674
4675 l_visit_time := l_visit_start_time;
4676
4677 IF G_DEBUG='Y' THEN
4678 AHL_DEBUG_PUB.debug( 'l_visit time :'||to_char(l_visit_time, 'dd/mm/yy hh:mi:ss'));
4679 AHL_DEBUG_PUB.debug( 'l_visit end time :'||to_char(l_visit_end_time, 'dd/mm/yy hh:mi:ss'));
4680 END IF;
4681 l_due_time := l_visit_end_time - l_visit_time;
4682 IF G_DEBUG='Y' THEN
4683 AHL_DEBUG_PUB.debug( 'l_due_time :'||l_due_time);
4684 END IF;
4685 /* Changes made by mpothuku on 01/24/05 for bug #4137916 */
4686 --l_duration := 24* trunc(l_due_time) + abs(to_char(l_visit_end_time, 'hh24')- to_char(l_visit_time, 'hh24'));
4687 l_duration := trunc(24 * l_due_time) ;
4688
4689 /* mpothuku End */
4690 IF G_DEBUG='Y' THEN
4691 AHL_DEBUG_PUB.debug( 'l_due_time :'||l_duration);
4692 END IF;
4693 --End of modification
4694
4695 IF G_DEBUG='Y' THEN
4696 --
4697 AHL_DEBUG_PUB.debug( 'duration :'||l_duration);
4698 --
4699 END IF;
4700 --
4701
4702 END IF;
4703 x_visit_duration := abs(l_duration);
4704 --
4705 -- Debug info
4706 IF G_DEBUG='Y' THEN
4707 Ahl_Debug_Pub.debug( 'End of private api Get visit duration','+SPSL+');
4708 -- Check if API is called in debug mode. If yes, disable debug.
4709 Ahl_Debug_Pub.disable_debug;
4710 END IF;
4711 EXCEPTION
4712 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4713 ROLLBACK TO get_visit_duration;
4714 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4715 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
4716 p_count => x_msg_count,
4717 p_data => x_msg_data);
4718 IF G_DEBUG='Y' THEN
4719
4720 AHL_DEBUG_PUB.log_app_messages (
4721 x_msg_count, x_msg_data, 'ERROR' );
4722 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt.Get visit duration','+SPSL+');
4723 -- Check if API is called in debug mode. If yes, disable debug.
4724 AHL_DEBUG_PUB.disable_debug;
4725 END IF;
4726
4727 WHEN FND_API.G_EXC_ERROR THEN
4728 ROLLBACK TO get_visit_duration;
4729 X_return_status := FND_API.G_RET_STS_ERROR;
4730 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
4731 p_count => x_msg_count,
4732 p_data => X_msg_data);
4733 IF G_DEBUG='Y' THEN
4734
4735 -- Debug info.
4736 AHL_DEBUG_PUB.log_app_messages (
4737 x_msg_count, x_msg_data, 'UNEXPECTED ERROR' );
4738 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt. Get visit duration','+SPSL+');
4739 -- Check if API is called in debug mode. If yes, disable debug.
4740 AHL_DEBUG_PUB.disable_debug;
4741 END IF;
4742
4743 WHEN OTHERS THEN
4744 ROLLBACK TO get_visit_duration;
4745 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4746 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4747 THEN
4748 fnd_msg_pub.add_exc_msg(p_pkg_name => 'AHL_LTP_SPACE_SCHEDULE_PVT',
4749 p_procedure_name => 'GET_VISIT_DURATION',
4750 p_error_text => SUBSTR(SQLERRM,1,240));
4751 END IF;
4752 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
4753 p_count => x_msg_count,
4754 p_data => X_msg_data);
4755 IF G_DEBUG='Y' THEN
4756
4757 -- Debug info.
4758 AHL_DEBUG_PUB.log_app_messages (
4759 x_msg_count, x_msg_data, 'SQL ERROR' );
4760 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt. Get visit duration','+SPSL+');
4761 -- Check if API is called in debug mode. If yes, disable debug.
4762 AHL_DEBUG_PUB.disable_debug;
4763 END IF;
4764 END Get_Visit_Duration;
4765 --
4766 PROCEDURE Get_Visit_End_Date
4767 (p_visit_id IN NUMBER,
4768 x_visit_end_date OUT NOCOPY DATE,
4769 x_return_status OUT NOCOPY VARCHAR2,
4770 x_msg_count OUT NOCOPY NUMBER,
4771 x_msg_data OUT NOCOPY VARCHAR2 )
4772
4773 IS
4774 --
4775 CURSOR get_visit_cur (c_visit_id IN NUMBER)
4776 IS
4777 SELECT start_date_time
4778 FROM AHL_VISITS_B
4779 WHERE visit_id = c_visit_id;
4780
4781 CURSOR get_task_end_cur (c_visit_id IN NUMBER)
4782 IS
4783 SELECT max(end_date_time)
4784 FROM ahl_visit_tasks_vl
4785 WHERE visit_id = c_visit_id;
4786
4787 --
4788 l_api_name CONSTANT VARCHAR2(30) := 'GET_VISIT_END_DATE';
4789 l_api_version CONSTANT NUMBER := 1.0;
4790 l_msg_count NUMBER;
4791 l_return_status VARCHAR2(1);
4792 l_msg_data VARCHAR2(2000);
4793 l_init_msg_list VARCHAR2(30) := FND_API.g_true;
4794 l_visit_start_time DATE;
4795 l_visit_end_time DATE;
4796
4797 BEGIN
4798 -- Standard Start of API savepoint
4799 SAVEPOINT get_visit_end_date;
4800 -- Check if API is called in debug mode. If yes, enable debug.
4801 IF G_DEBUG='Y' THEN
4802 AHL_DEBUG_PUB.enable_debug;
4803 END IF;
4804 -- Debug info.
4805 IF G_DEBUG='Y' THEN
4806 AHL_DEBUG_PUB.debug( 'enter ahl_ltp_space_schedule_pvt.get_visit_end_date','+SUAVL+');
4807 END IF;
4808 -- Standard call to check for call compatibility.
4809 IF FND_API.to_boolean(l_init_msg_list)
4810 THEN
4811 FND_MSG_PUB.initialize;
4812 END IF;
4813 -- Initialize API return status to success
4814 x_return_status := FND_API.G_RET_STS_SUCCESS;
4815 -- Initialize message list if p_init_msg_list is set to TRUE.
4816 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
4817 l_api_version,
4818 l_api_name,G_PKG_NAME)
4819 THEN
4820 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4821 END IF;
4822 --
4823 IF G_DEBUG='Y' THEN
4824 AHL_DEBUG_PUB.debug( 'inside get visit end date :'||p_visit_id);
4825 END IF;
4826 --
4827 IF (p_visit_id IS NOT NULL AND p_visit_id <> FND_API.G_MISS_NUM )THEN
4828 OPEN get_visit_cur(p_visit_id);
4829 FETCH get_visit_cur INTO l_visit_start_time;
4830 CLOSE get_visit_cur;
4831 --
4832 IF l_visit_start_time IS NOT NULL THEN
4833 --Get Last Task end date
4834 OPEN get_task_end_cur(p_visit_id);
4835 FETCH get_task_end_cur INTO l_visit_end_time;
4836 CLOSE get_task_end_cur;
4837 END IF;
4838 END IF;
4839
4840 IF G_DEBUG='Y' THEN
4841 --
4842 AHL_DEBUG_PUB.debug( 'after start date proc isit end date :'||l_visit_end_time);
4843 AHL_DEBUG_PUB.debug( 'after start date proc isit start time :'||l_visit_start_time);
4844 END IF;
4845 --
4846 IF l_visit_end_time IS NOT NULL THEN
4847 x_visit_end_date := l_visit_end_time;
4848 END IF;
4849 IF G_DEBUG='Y' THEN
4850 AHL_DEBUG_PUB.debug( 'x_visit_end_date:'||x_visit_end_date);
4851 END IF;
4852
4853 --Standard check to count messages
4854 IF G_DEBUG='Y' THEN
4855 -- Debug info
4856 Ahl_Debug_Pub.debug( 'End of private api Get visit end date','+SPSL+');
4857 -- Check if API is called in debug mode. If yes, disable debug.
4858 Ahl_Debug_Pub.disable_debug;
4859 END IF;
4860
4861 EXCEPTION
4862 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4863 ROLLBACK TO get_visit_end_date;
4864 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4865 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
4866 p_count => x_msg_count,
4867 p_data => x_msg_data);
4868 IF G_DEBUG='Y' THEN
4869
4870 AHL_DEBUG_PUB.log_app_messages (
4871 x_msg_count, x_msg_data, 'ERROR' );
4872 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt.Get visit end date','+SPSL+');
4873 -- Check if API is called in debug mode. If yes, disable debug.
4874 AHL_DEBUG_PUB.disable_debug;
4875 END IF;
4876
4877 WHEN FND_API.G_EXC_ERROR THEN
4878 ROLLBACK TO get_visit_end_date;
4879 X_return_status := FND_API.G_RET_STS_ERROR;
4880 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
4881 p_count => x_msg_count,
4882 p_data => X_msg_data);
4883 IF G_DEBUG='Y' THEN
4884 -- Debug info.
4885 AHL_DEBUG_PUB.log_app_messages (
4886 x_msg_count, x_msg_data, 'UNEXPECTED ERROR' );
4887 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt. Get visit end date','+SPSL+');
4888 -- Check if API is called in debug mode. If yes, disable debug.
4889 AHL_DEBUG_PUB.disable_debug;
4890 END IF;
4891
4892 WHEN OTHERS THEN
4893 ROLLBACK TO get_visit_end_date;
4894 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4895 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4896 THEN
4897 fnd_msg_pub.add_exc_msg(p_pkg_name => 'AHL_LTP_SPACE_SCHEDULE_PVT',
4898 p_procedure_name => 'GET_VISIT_END_DATE',
4899 p_error_text => SUBSTR(SQLERRM,1,240));
4900 END IF;
4901 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
4902 p_count => x_msg_count,
4903 p_data => X_msg_data);
4904 IF G_DEBUG='Y' THEN
4905
4906 -- Debug info.
4907 AHL_DEBUG_PUB.log_app_messages (
4908 x_msg_count, x_msg_data, 'SQL ERROR' );
4909 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt. Get visit end date','+SPSL+');
4910 -- Check if API is called in debug mode. If yes, disable debug.
4911 AHL_DEBUG_PUB.disable_debug;
4912 END IF;
4913
4914 END Get_Visit_End_Date;
4915 ---
4916 PROCEDURE Get_Visit_Due_by_Date(
4917 p_visit_id IN NUMBER,
4918 x_due_by_date OUT NOCOPY DATE,
4919 x_return_status OUT NOCOPY VARCHAR2,
4920 x_msg_count OUT NOCOPY NUMBER,
4921 x_msg_data OUT NOCOPY VARCHAR2 )
4922 IS
4923 --
4924 l_api_name CONSTANT VARCHAR2(30) := 'GET_VISIT_DUE_BY_DATE';
4925 l_api_version CONSTANT NUMBER := 1.0;
4926 l_msg_count NUMBER;
4927 l_return_status VARCHAR2(1);
4928 l_msg_data VARCHAR2(2000);
4929 l_init_msg_list VARCHAR2(30) := FND_API.g_true;
4930 l_commit VARCHAR2(10);
4931 l_validation_level NUMBER := FND_API.g_valid_level_full;
4932 --
4933 l_count1 NUMBER;
4934 l_count2 NUMBER;
4935 l_date DATE;
4936
4937 -- To find whether a visit exists
4938 CURSOR c_visit (x_id IN NUMBER) IS
4939 SELECT COUNT(*)
4940 FROM Ahl_Visit_Tasks_B
4941 WHERE VISIT_ID = x_id;
4942
4943 -- To find the total number of tasks for a visit
4944 CURSOR c_visit_task (x_id IN NUMBER) IS
4945 SELECT COUNT(*)
4946 FROM Ahl_Visit_Tasks_B
4947 WHERE VISIT_ID = x_id AND UNIT_EFFECTIVITY_ID IS NOT NULL;
4948
4949 -- To find due date for a visit related with tasks
4950 CURSOR c_due_date (x_id IN NUMBER) IS
4951 SELECT MAX(T1.due_date)
4952 FROM ahl_unit_effectivities_app_v T1, ahl_visit_tasks_b T2
4953 WHERE T1.unit_effectivity_id = T2.unit_effectivity_id AND T2.visit_id = x_id;
4954
4955 BEGIN
4956 -- Standard Start of API savepoint
4957 SAVEPOINT get_visit_due_by_date;
4958 -- Check if API is called in debug mode. If yes, enable debug.
4959 IF G_DEBUG='Y' THEN
4960 AHL_DEBUG_PUB.enable_debug;
4961 -- Debug info.
4962 AHL_DEBUG_PUB.debug( 'enter ahl_ltp_space_schedule_pvt.get_visit_due_by_date','+SPSL+');
4963 --
4964 END IF;
4965 -- Standard call to check for call compatibility.
4966 IF FND_API.to_boolean(l_init_msg_list)
4967 THEN
4968 FND_MSG_PUB.initialize;
4969 END IF;
4970 -- Initialize API return status to success
4971 x_return_status := FND_API.G_RET_STS_SUCCESS;
4972 -- Initialize message list if p_init_msg_list is set to TRUE.
4973 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
4974 l_api_version,
4975 l_api_name,G_PKG_NAME)
4976 THEN
4977 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4978 END IF;
4979 --
4980 IF G_DEBUG='Y' THEN
4981 AHL_DEBUG_PUB.debug( 'inside visit id due by date :'||p_visit_id);
4982 --
4983 END IF;
4984 OPEN c_visit(p_visit_id);
4985 FETCH c_visit INTO l_count1;
4986 IF c_visit%FOUND THEN --Tasks found for visit
4987 CLOSE c_visit;
4988 OPEN c_visit_task(p_visit_id);
4989 FETCH c_visit_task INTO l_count2;
4990 IF c_visit_task%FOUND THEN --Tasks found for visit checking for unit_effectivity_id
4991 CLOSE c_visit_task;
4992 OPEN c_due_date(p_visit_id);
4993 FETCH c_due_date INTO x_due_by_date;
4994 IF c_due_date%FOUND THEN --Tasks found for visit
4995 CLOSE c_due_date;
4996 END IF;
4997 ELSE
4998 CLOSE c_visit_task;
4999 END IF;
5000 ELSE
5001 CLOSE c_visit;
5002 END IF;
5003 IF G_DEBUG='Y' THEN
5004 AHL_DEBUG_PUB.debug( 'inside visit due by date :'||x_due_by_date);
5005 END IF;
5006
5007 --Standard check to count messages
5008 l_msg_count := Fnd_Msg_Pub.count_msg;
5009
5010 IF l_msg_count > 0 THEN
5011 X_msg_count := l_msg_count;
5012 X_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
5013 RAISE Fnd_Api.G_EXC_ERROR;
5014 END IF;
5015 -- Debug info
5016 IF G_DEBUG='Y' THEN
5017 Ahl_Debug_Pub.debug( 'End of private api Get visit due by date','+SPSL+');
5018 -- Check if API is called in debug mode. If yes, disable debug.
5019 Ahl_Debug_Pub.disable_debug;
5020 END IF;
5021 EXCEPTION
5022 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5023 ROLLBACK TO get_visit_due_by_date;
5024 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5025 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
5026 p_count => x_msg_count,
5027 p_data => x_msg_data);
5028 IF G_DEBUG='Y' THEN
5029 AHL_DEBUG_PUB.log_app_messages (
5030 x_msg_count, x_msg_data, 'ERROR' );
5031 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt.Get visit due by date','+SPSL+');
5032 -- Check if API is called in debug mode. If yes, disable debug.
5033 AHL_DEBUG_PUB.disable_debug;
5034 END IF;
5035 WHEN FND_API.G_EXC_ERROR THEN
5036 ROLLBACK TO get_visit_due_by_date;
5037 X_return_status := FND_API.G_RET_STS_ERROR;
5038 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
5039 p_count => x_msg_count,
5040 p_data => X_msg_data);
5041 IF G_DEBUG='Y' THEN
5042
5043 -- Debug info.
5044 AHL_DEBUG_PUB.log_app_messages (
5045 x_msg_count, x_msg_data, 'UNEXPECTED ERROR' );
5046 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt. Get visit due by date','+SPSL+');
5047 -- Check if API is called in debug mode. If yes, disable debug.
5048 AHL_DEBUG_PUB.disable_debug;
5049 END IF;
5050 WHEN OTHERS THEN
5051 ROLLBACK TO get_visit_due_by_date;
5052 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5053 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5054 THEN
5055 fnd_msg_pub.add_exc_msg(p_pkg_name => 'AHL_LTP_SPACE_SCHEDULE_PVT',
5056 p_procedure_name => 'GET_VISIT_DUE_BY_DATE',
5057 p_error_text => SUBSTR(SQLERRM,1,240));
5058 END IF;
5059 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
5060 p_count => x_msg_count,
5061 p_data => X_msg_data);
5062 IF G_DEBUG='Y' THEN
5063
5064 -- Debug info.
5065 AHL_DEBUG_PUB.log_app_messages (
5066 x_msg_count, x_msg_data, 'SQL ERROR' );
5067 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt. Get visit due by date','+SPSL+');
5068 -- Check if API is called in debug mode. If yes, disable debug.
5069 AHL_DEBUG_PUB.disable_debug;
5070 END IF;
5071
5072 END Get_Visit_Due_by_Date;
5073 --
5074 PROCEDURE Derive_Visit_End_Date
5075 (p_visits_end_date_tbl IN OUT NOCOPY visits_end_date_tbl,
5076 x_return_status OUT NOCOPY VARCHAR2,
5077 x_msg_count OUT NOCOPY NUMBER,
5078 x_msg_data OUT NOCOPY VARCHAR2 )
5079 IS
5080 --
5081 l_api_name CONSTANT VARCHAR2(30) := 'DERIVE_VISIT_END_DATE';
5082 l_api_version CONSTANT NUMBER := 1.0;
5083 l_msg_count NUMBER;
5084 l_return_status VARCHAR2(1);
5085 l_msg_data VARCHAR2(2000);
5086 l_init_msg_list VARCHAR2(30) := FND_API.g_true;
5087 l_commit VARCHAR2(10);
5088 l_validation_level NUMBER := FND_API.g_valid_level_full;
5089 l_visit_end_date DATE;
5090 BEGIN
5091 -- Standard Start of API savepoint
5092 SAVEPOINT Derive_visit_end_date;
5093 -- Check if API is called in debug mode. If yes, enable debug.
5094 IF G_DEBUG='Y' THEN
5095 AHL_DEBUG_PUB.enable_debug;
5096 --
5097 END IF;
5098 -- Debug info.
5099 IF G_DEBUG='Y' THEN
5100 --
5101 AHL_DEBUG_PUB.debug( 'enter ahl_ltp_space_schedule_pvt Derive visit end date','+SPSL+');
5102 --
5103 END IF;
5104 -- Standard call to check for call compatibility.
5105 IF FND_API.to_boolean(l_init_msg_list)
5106 THEN
5107 FND_MSG_PUB.initialize;
5108 END IF;
5109 -- Initialize API return status to success
5110 x_return_status := FND_API.G_RET_STS_SUCCESS;
5111 -- Initialize message list if p_init_msg_list is set to TRUE.
5112 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
5113 l_api_version,
5114 l_api_name,G_PKG_NAME)
5115 THEN
5116 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5117 END IF;
5118 --
5119 IF G_DEBUG='Y' THEN
5120 AHL_DEBUG_PUB.debug( 'inside derieve visit end date :');
5121 END IF;
5122
5123 IF (p_visits_end_date_tbl.COUNT > 0) THEN
5124 FOR i IN p_visits_end_date_tbl.FIRST..p_visits_end_date_tbl.LAST
5125 LOOP
5126 Get_Visit_End_Date
5127 (p_visit_id => p_visits_end_date_tbl(i).visit_id,
5128 x_visit_end_date => l_visit_end_date,
5129 x_return_status => l_return_status,
5130 x_msg_count => l_msg_count,
5131 x_msg_data => l_msg_data);
5132
5133 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
5134 l_msg_count := FND_MSG_PUB.count_msg;
5135 IF l_msg_count > 0 THEN
5136 RAISE FND_API.G_EXC_ERROR;
5137 END IF;
5138 END IF;
5139
5140 IF l_return_status = 'S' THEN
5141 p_visits_end_date_tbl(i).visit_id := p_visits_end_date_tbl(i).visit_id;
5142 p_visits_end_date_tbl(i).visit_end_date := l_visit_end_date;
5143 END IF;
5144 END LOOP;
5145 END IF;
5146
5147 -- Debug info
5148 IF G_DEBUG='Y' THEN
5149 Ahl_Debug_Pub.debug( 'End of private api Derive visit end date','+SPSL+');
5150 -- Check if API is called in debug mode. If yes, disable debug.
5151 Ahl_Debug_Pub.disable_debug;
5152 END IF;
5153
5154 EXCEPTION
5155 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5156 ROLLBACK TO Derive_visit_end_date;
5157 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5158 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
5159 p_count => x_msg_count,
5160 p_data => x_msg_data);
5161 IF G_DEBUG='Y' THEN
5162
5163 AHL_DEBUG_PUB.log_app_messages (
5164 x_msg_count, x_msg_data, 'ERROR' );
5165 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt. Derive visit end date','+SPSL+');
5166 -- Check if API is called in debug mode. If yes, disable debug.
5167 AHL_DEBUG_PUB.disable_debug;
5168 END IF;
5169
5170 WHEN FND_API.G_EXC_ERROR THEN
5171 ROLLBACK TO Derive_visit_end_date;
5172 X_return_status := FND_API.G_RET_STS_ERROR;
5173 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
5174 p_count => x_msg_count,
5175 p_data => X_msg_data);
5176 IF G_DEBUG='Y' THEN
5177
5178 -- Debug info.
5179 AHL_DEBUG_PUB.log_app_messages (
5180 x_msg_count, x_msg_data, 'UNEXPECTED ERROR' );
5181 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt. Derive visit end date','+SPSL+');
5182 -- Check if API is called in debug mode. If yes, disable debug.
5183 AHL_DEBUG_PUB.disable_debug;
5184 END IF;
5185
5186 WHEN OTHERS THEN
5187 ROLLBACK TO Derive_visit_end_date;
5188 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5189 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5190 THEN
5191 fnd_msg_pub.add_exc_msg(p_pkg_name => 'AHL_LTP_SPACE_SCHEDULE_PVT',
5192 p_procedure_name => 'DERIEVE_VISIT_END_DATE',
5193 p_error_text => SUBSTR(SQLERRM,1,240));
5194 END IF;
5195 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
5196 p_count => x_msg_count,
5197 p_data => X_msg_data);
5198 IF G_DEBUG='Y' THEN
5199
5200 -- Debug info.
5201 AHL_DEBUG_PUB.log_app_messages (
5202 x_msg_count, x_msg_data, 'SQL ERROR' );
5203 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt Derive visit end date','+SPSL+');
5204 -- Check if API is called in debug mode. If yes, disable debug.
5205 AHL_DEBUG_PUB.disable_debug;
5206 END IF;
5207
5208 END Derive_Visit_End_Date;
5209 --
5210 -- Procedure name : Get_Visit_Details
5211 -- Type : Private
5212 -- Function : This procedure shows all the visits scheduled at department or space level
5213 -- based on start date, and various combinations of search criteria UOM (Days,Weeks, Months).
5214 -- Pre-reqs :
5215 -- Parameters :
5216 --
5217 -- Standard IN Parameters :
5218 -- p_api_version IN NUMBER Required
5219 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
5220 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
5221 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
5222 -- Based on this flag, the API will set the default attributes.
5223 -- p_module_type In VARCHAR2 Default NULL
5224 -- This will be null.
5225 -- Standard out Parameters :
5226 -- x_return_status OUT VARCHAR2 Required
5227 -- x_msg_count OUT NUMBER Required
5228 -- x_msg_data OUT VARCHAR2 Required
5229 --
5230 -- Search Scheduled vists Parameters :
5231 -- p_search_visits_rec IN Search_visits_rec_type Required
5232 -- X_Visit_details_tbl OUT visit_details_tbl
5233 --
5234 --
5235 PROCEDURE Get_Visit_Details (
5236 p_api_version IN NUMBER,
5237 p_init_msg_list IN VARCHAR2 := FND_API.g_false,
5238 p_commit IN VARCHAR2 := FND_API.g_false,
5239 p_validation_level IN NUMBER := FND_API.g_valid_level_full,
5240 p_module_type IN VARCHAR2 := 'JSP',
5241 p_search_visits_Rec IN search_visits_rec_type,
5242 x_visit_details_tbl OUT NOCOPY visit_details_tbl,
5243 x_return_status OUT NOCOPY VARCHAR2,
5244 x_msg_count OUT NOCOPY NUMBER,
5245 x_msg_data OUT NOCOPY VARCHAR2
5246 )
5247 IS
5248
5249 -- AnRaj: Query changed for performance issues
5250 -- Bug #:4919582, query number:1
5251 CURSOR get_visit_detail_cur (c_space_id IN NUMBER,
5252 c_visit_type IN VARCHAR2,
5253 c_item_id IN NUMBER)
5254 IS
5255 SELECT VST.visit_id,
5256 VST.visit_number,
5257 VST.visit_name,
5258 VST.status_code,
5259 CSI.serial_number,
5260 AHL_UTILITY_PVT.GET_UNIT_NAME(VST.ITEM_INSTANCE_ID) unit_name,
5261 mtl.CONCATENATED_SEGMENTS item_description,
5262 FLVT.MEANING visit_type_mean,
5263 trunc(VST.start_date_time) start_date_time,
5264 trunc(VST.CLOSE_DATE_TIME) close_date_time,
5265 (
5266 SELECT MAX(DUE_DATE)
5267 FROM AHL_UNIT_EFFECTIVITIES_B A,
5268 AHL_VISIT_TASKS_B B
5269 WHERE A.UNIT_EFFECTIVITY_ID = B.UNIT_EFFECTIVITY_ID
5270 AND B.VISIT_ID = VST.VISIT_ID
5271 GROUP BY VISIT_ID
5272 ) due_by
5273 FROM AHL_VISITS_VL VST,
5274 CSI_ITEM_INSTANCES CSI ,
5275 MTL_SYSTEM_ITEMS_B_KFV mtl,
5276 FND_LOOKUP_VALUES_VL FLVT,
5277 ahl_space_assignments SPS
5278 where VST.ITEM_INSTANCE_ID = CSI.INSTANCE_ID(+)
5279 and VST.INVENTORY_ITEM_ID = mtl.INVENTORY_ITEM_ID(+)
5280 AND VST.ITEM_ORGANIZATION_ID = mtl.ORGANIZATION_ID(+)
5281 AND FLVT.LOOKUP_TYPE(+) = 'AHL_PLANNING_VISIT_TYPE'
5282 AND FLVT.LOOKUP_CODE(+) = VST.VISIT_TYPE_CODE
5283 AND VST.visit_id = SPS.visit_id
5284 AND SPS.space_id = c_space_id;
5285
5286 -- AnRaj: Query changed for performance issues
5287 -- Bug #:4919582, query number:2
5288 CURSOR get_visit_dept_cur (c_dept_id IN NUMBER,
5289 c_visit_type IN VARCHAR2,
5290 c_item_id IN NUMBER)
5291 IS
5292 SELECT VST.visit_id,
5293 VST.visit_number,
5294 VST.visit_name,
5295 VST.status_code,
5296 CSI.serial_number,
5297 AHL_UTILITY_PVT.GET_UNIT_NAME(VST.ITEM_INSTANCE_ID) unit_name,
5298 mtl.CONCATENATED_SEGMENTS item_description,
5299 FLVT.MEANING visit_type_mean,
5300 trunc(VST.start_date_time) start_date_time,
5301 trunc(VST.CLOSE_DATE_TIME) close_date_time,
5302 (
5303 SELECT MAX(DUE_DATE)
5304 FROM AHL_UNIT_EFFECTIVITIES_B A,
5305 AHL_VISIT_TASKS_B B
5306 WHERE A.UNIT_EFFECTIVITY_ID = B.UNIT_EFFECTIVITY_ID
5307 AND B.VISIT_ID = VST.VISIT_ID
5308 GROUP BY VISIT_ID
5309 ) due_by
5310 FROM AHL_VISITS_VL VST,
5311 CSI_ITEM_INSTANCES CSI ,
5312 MTL_SYSTEM_ITEMS_B_KFV mtl,
5313 FND_LOOKUP_VALUES_VL FLVT
5314 where VST.ITEM_INSTANCE_ID = CSI.INSTANCE_ID(+)
5315 and VST.INVENTORY_ITEM_ID = mtl.INVENTORY_ITEM_ID(+)
5316 AND VST.ITEM_ORGANIZATION_ID = mtl.ORGANIZATION_ID(+)
5317 AND FLVT.LOOKUP_TYPE(+) = 'AHL_PLANNING_VISIT_TYPE'
5318 AND FLVT.LOOKUP_CODE(+) = VST.VISIT_TYPE_CODE
5319 AND VST.department_id = c_dept_id;
5320
5321
5322 CURSOR visit_wd_detail_cur (c_plan_id IN NUMBER,
5323 c_visit_id IN NUMBER,
5324 c_start_period IN DATE,
5325 c_end_period IN DATE,
5326 c_visit_end_date IN DATE)
5327 IS
5328 SELECT distinct(a.visit_id) visit_id,
5329 a.visit_number,
5330 serial_number,
5331 b.status_code,
5332 item_description,
5333 b.visit_name,
5334 unit_name,
5335 b.simulation_plan_id,
5336 visit_type_mean,
5337 a.start_date_time, due_by,
5338 trunc(b.close_date_time) close_date_time
5339 FROM ahl_visit_details_v a , ahl_visits_vl b
5340 WHERE a.visit_id = c_visit_id
5341 AND a.visit_id = b.visit_id
5342 AND a.simulation_plan_id = c_plan_id
5343 AND (((trunc(b.start_date_time) between trunc(c_start_period) and trunc(c_end_period))
5344 OR
5345 (trunc(c_visit_end_date) between trunc(c_start_period) and trunc(c_end_period) ))
5346
5347 OR ((trunc(c_start_period) between trunc(b.start_date_time) and trunc(c_visit_end_date))
5348 OR
5349 (trunc(c_end_period) between trunc(b.start_date_time) and trunc(c_visit_end_date))))
5350 --Added by mpothuku on 03/29 to fix issue #203 in forum
5351 AND (nvl(b.simulation_delete_flag, 'N') <> 'Y')
5352 AND b.status_code not in ('CANCELLED', 'DELETED');
5353
5354 -- To get simulation visits and primary visits which are not associated to simulation plan
5355 CURSOR visit_wd1_detail_cur (c_plan_id IN NUMBER,
5356 c_visit_id IN NUMBER,
5357 c_start_period IN DATE,
5358 c_end_period IN DATE,
5359 c_visit_end_date IN DATE)
5360 IS
5361 SELECT DISTINCT(a.visit_id) visit_id,
5362 b.visit_number,
5363 serial_number,
5364 b.status_code,
5365 item_description,
5366 b.visit_name,
5367 unit_name,
5368 b.simulation_plan_id,
5369 visit_type_mean,
5370 b.start_date_time, due_by,
5371 trunc(b.CLOSE_DATE_TIME) close_date_time
5372 FROM ahl_visit_details_v a ,
5373 ahl_visits_vl b
5374 WHERE a.visit_id = b.visit_id
5375 AND a.simulation_plan_id in (select simulation_plan_id
5376 from ahl_simulation_plans_vl where primary_plan_flag = 'Y')
5377 AND a.visit_id = c_visit_id
5378 AND b.visit_id NOT IN (select asso_primary_visit_id from ahl_visits_b
5379 WHERE simulation_plan_id = c_plan_id )
5380 AND (((trunc(b.start_date_time) between trunc(c_start_period) and trunc(c_end_period))
5381 OR
5382 (trunc(c_visit_end_date) between trunc(c_start_period) and trunc(c_end_period) ))
5383
5384
5385 OR ((trunc(c_start_period) between trunc(b.start_date_time) and trunc(c_visit_end_date))
5386 OR
5387 (trunc(c_end_period) between trunc(b.start_date_time) and trunc(c_visit_end_date))))
5388
5389 --Added by mpothuku on 03/29 to fix issue #203 in forum
5390 AND b.status_code not in ('CANCELLED', 'DELETED');
5391
5392 -- Get plan info
5393 CURSOR get_plan_id_cur (c_plan_id IN NUMBER)
5394 IS
5395 SELECT simulation_plan_id,
5396 primary_plan_flag
5397 FROM ahl_simulation_plans_vl
5398 WHERE simulation_plan_id = c_plan_id;
5399 -- New changes
5400 CURSOR l_org_id_cur (c_org_id IN NUMBER,
5401 c_name IN VARCHAR2)
5402 IS
5403 SELECT organization_id,name
5404 FROM hr_all_organization_units
5405 WHERE (organization_id = c_org_id
5406 OR name = c_name);
5407 -- Get dept info
5408 CURSOR l_dept_id_cur (c_org_id IN NUMBER,
5409 c_dept_id IN NUMBER,
5410 c_dept_name IN VARCHAR2)
5411 IS
5412 SELECT department_id,department_code,description
5413 FROM bom_departments
5414 WHERE organization_id = c_org_id
5415 AND (department_id = c_dept_id
5416 OR description = c_dept_name);
5417 -- Get space info
5418 CURSOR l_space_id_cur (c_space_id IN NUMBER,
5419 c_space_name IN VARCHAR2,
5420 c_dept_id IN NUMBER)
5421 IS
5422 SELECT space_id,space_name
5423 FROM AHL_SPACES_VL
5424 WHERE bom_department_id = c_dept_id
5425 AND (space_id = c_space_id
5426 OR space_name = c_space_name);
5427 -- Get visits associated at department level
5428 CURSOR visit_dept_cur ( c_dept_id IN NUMBER,
5429 c_visit_type IN VARCHAR2,
5430 c_item_id IN NUMBER)
5431 IS
5432 SELECT visit_id, visit_name, visit_type_code,
5433 trunc(start_date_time) start_date_time,
5434 trunc(close_date_time) close_date_time
5435 FROM ahl_visits_vl
5436 WHERE department_id = c_dept_id
5437 AND start_date_time IS NOT NULL;
5438 --
5439 -- AnRaj: Split the cursor, perf bug 5208300, index was not being hit because of logical OR
5440 --Get Item id or Desc
5441 /*
5442 CURSOR l_item_id_cur (c_item_description IN VARCHAR2,
5443 c_item_id IN NUMBER)
5444 IS
5445 SELECT distinct(inventory_item_id),concatenated_segments
5446 FROM MTL_SYSTEM_ITEMS_VL
5447 WHERE (inventory_item_id = c_item_id
5448 OR concatenated_segments = c_item_description);
5449 */
5450 CURSOR l_item_name_cur (c_item_description IN VARCHAR2)
5451 IS
5452 SELECT distinct(inventory_item_id),concatenated_segments
5453 FROM MTL_SYSTEM_ITEMS_VL
5454 WHERE concatenated_segments = c_item_description;
5455
5456 CURSOR l_item_id_cur (c_item_id IN NUMBER)
5457 IS
5458 SELECT distinct(inventory_item_id),concatenated_segments
5459 FROM MTL_SYSTEM_ITEMS_VL
5460 WHERE inventory_item_id = c_item_id;
5461
5462 --
5463 l_api_name CONSTANT VARCHAR2(30) := 'GET_VISIT_DETAILS';
5464 l_api_version CONSTANT NUMBER := 1.0;
5465 l_msg_count NUMBER;
5466 l_return_status VARCHAR2(1);
5467 l_msg_data VARCHAR2(2000);
5468 i NUMBER;
5469 --
5470 l_plan_flag VARCHAR2(1);
5471 l_start_period DATE;
5472 l_end_period DATE;
5473 l_search_visits_Rec search_visits_rec_type := p_search_visits_Rec;
5474 --
5475 l_get_visit_detail_rec get_visit_detail_cur%ROWTYPE;
5476 l_visit_wd_detail_rec visit_wd_detail_cur%ROWTYPE;
5477 l_visit_wd1_detail_rec visit_wd1_detail_cur%ROWTYPE;
5478 l_visit_dept_rec visit_dept_cur%ROWTYPE;
5479 l_get_visit_dept_rec get_visit_dept_cur%ROWTYPE;
5480 l_visit_end_date DATE;
5481 l_count NUMBER := 0;
5482 --
5483 BEGIN
5484 --
5485 -- Standard Start of API savepoint
5486 SAVEPOINT Get_visit_details;
5487 -- Check if API is called in debug mode. If yes, enable debug.
5488 IF G_DEBUG='Y' THEN
5489 AHL_DEBUG_PUB.enable_debug;
5490 END IF;
5491 -- Debug info.
5492 IF G_DEBUG='Y' THEN
5493 AHL_DEBUG_PUB.debug( 'enter ahl_ltp_space_schedule_pvt Get visit details','+SPSL+');
5494 END IF;
5495 -- Standard call to check for call compatibility.
5496 IF FND_API.to_boolean(p_init_msg_list)
5497 THEN
5498 FND_MSG_PUB.initialize;
5499 END IF;
5500 -- Initialize API return status to success
5501 x_return_status := FND_API.G_RET_STS_SUCCESS;
5502 -- Initialize message list if p_init_msg_list is set to TRUE.
5503 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
5504 l_api_version,
5505 l_api_name,G_PKG_NAME)
5506 THEN
5507 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5508 END IF;
5509 --
5510 --
5511 IF G_DEBUG='Y' THEN
5512 AHL_DEBUG_PUB.debug( 'get visit details DID:'||l_search_visits_Rec.department_id);
5513 AHL_DEBUG_PUB.debug( 'get visit details ONA:'||l_search_visits_Rec.org_name);
5514 AHL_DEBUG_PUB.debug( 'get visit details OID:'||l_search_visits_Rec.org_id);
5515 AHL_DEBUG_PUB.debug( 'inside visit detailsSP :'||l_search_visits_Rec.space_id);
5516 AHL_DEBUG_PUB.debug( 'inside visit detailsITEM :'||l_search_visits_Rec.item_id);
5517 AHL_DEBUG_PUB.debug( 'inside visit detailsITEMDES :'||l_search_visits_Rec.item_description);
5518 END IF;
5519 -- Get org id from org name or vice versa
5520 IF (l_search_visits_Rec.ORG_ID IS NOT NULL AND
5521 l_search_visits_Rec.ORG_ID <> FND_API.G_MISS_NUM) OR
5522 (l_search_visits_Rec.ORG_NAME IS NOT NULL AND
5523 l_search_visits_Rec.ORG_NAME <> FND_API.G_MISS_CHAR)
5524 THEN
5525 --
5526 OPEN l_org_id_cur(l_search_visits_Rec.ORG_ID,l_search_visits_Rec.ORG_NAME);
5527 FETCH l_org_id_cur INTO l_search_visits_Rec.ORG_ID,l_search_visits_Rec.ORG_NAME;
5528 IF l_org_id_cur%NOTFOUND THEN
5529 Fnd_Message.set_name('AHL', 'AHL_LTP_INVALID_ORG');
5530 Fnd_Message.Set_Token('ORG',NVL(l_search_visits_Rec.ORG_NAME,l_search_visits_Rec.ORG_ID));
5531 Fnd_Msg_Pub.ADD;
5532 CLOSE l_org_id_cur;
5533 RAISE Fnd_Api.G_EXC_ERROR;
5534 --
5535 END IF;
5536 CLOSE l_org_id_cur;
5537 --
5538 END IF;
5539 IF G_DEBUG='Y' THEN
5540 AHL_DEBUG_PUB.debug( 'get visit details DID:'||l_search_visits_Rec.department_id);
5541 AHL_DEBUG_PUB.debug( 'get visit details DNA:'||l_search_visits_Rec.department_name);
5542 AHL_DEBUG_PUB.debug( 'get visit details OID:'||l_search_visits_Rec.org_id);
5543 END IF;
5544
5545 -- Get Dept id from dept name or vice versa
5546 IF ((l_search_visits_Rec.DEPARTMENT_ID IS NOT NULL AND
5547 l_search_visits_Rec.DEPARTMENT_ID <> FND_API.G_MISS_NUM) OR
5548 (l_search_visits_Rec.DEPARTMENT_NAME IS NOT NULL AND
5549 l_search_visits_Rec.DEPARTMENT_NAME <> FND_API.G_MISS_CHAR))
5550 THEN
5551 --
5552 OPEN l_dept_id_cur(l_search_visits_Rec.ORG_ID,
5553 l_search_visits_Rec.department_id,
5554 l_search_visits_Rec.department_name);
5555 FETCH l_dept_id_cur INTO l_search_visits_Rec.department_id,
5556 l_search_visits_Rec.department_code,
5557 l_search_visits_Rec.department_name;
5558 IF l_dept_id_cur%NOTFOUND THEN
5559 Fnd_Message.set_name('AHL', 'AHL_LTP_INVALID_DEPT');
5560 Fnd_Message.Set_Token('DEPT',NVL(l_search_visits_Rec.DEPARTMENT_NAME,l_search_visits_Rec.DEPARTMENT_ID));
5561 Fnd_Msg_Pub.ADD;
5562 CLOSE l_dept_id_cur;
5563 RAISE Fnd_Api.G_EXC_ERROR;
5564 --
5565 END IF;
5566 CLOSE l_dept_id_cur;
5567 --
5568 END IF;
5569 --
5570 --For Space Category
5571 IF l_search_visits_Rec.space_category_mean IS NOT NULL AND
5572 l_search_visits_Rec.space_category_mean <> Fnd_Api.G_MISS_CHAR
5573 THEN
5574 Check_lookup_name_Or_Id (
5575 p_lookup_type => 'AHL_LTP_SPACE_CATEGORY',
5576 p_lookup_code => NULL,
5577 p_meaning => l_search_visits_Rec.space_category_mean,
5578 p_check_id_flag => 'Y',
5579 x_lookup_code => l_search_visits_Rec.space_category,
5580 x_return_status => l_return_status);
5581
5582 IF NVL(l_return_status, 'X') <> 'S'
5583 THEN
5584 Fnd_Message.SET_NAME('AHL','AHL_LTP_SP_CATEGORY_NOT_EXIST');
5585 Fnd_Msg_Pub.ADD;
5586 RAISE Fnd_Api.G_EXC_ERROR;
5587 END IF;
5588 ELSE
5589 -- Id presents
5590 IF l_search_visits_Rec.space_category IS NOT NULL AND
5591 l_search_visits_Rec.space_category <> Fnd_Api.G_MISS_CHAR
5592 THEN
5593 l_search_visits_Rec.space_category := l_search_visits_Rec.space_category;
5594 END IF;
5595 END IF;
5596
5597 --For Visit type
5598 IF l_search_visits_Rec.visit_type_mean IS NOT NULL AND
5599 l_search_visits_Rec.visit_type_mean <> Fnd_Api.G_MISS_CHAR
5600 THEN
5601 Check_lookup_name_Or_Id (
5602 p_lookup_type => 'AHL_PLANNING_VISIT_TYPE',
5603 p_lookup_code => NULL,
5604 p_meaning => l_search_visits_Rec.visit_type_mean,
5605 p_check_id_flag => 'Y',
5606 x_lookup_code => l_search_visits_Rec.visit_type_code,
5607 x_return_status => l_return_status);
5608
5609 IF NVL(l_return_status, 'X') <> 'S'
5610 THEN
5611 Fnd_Message.SET_NAME('AHL','AHL_LTP_VISIT_TYPE_INVALID');
5612 Fnd_Msg_Pub.ADD;
5613 RAISE Fnd_Api.G_EXC_ERROR;
5614 END IF;
5615 ELSE
5616 -- Id presents
5617 IF l_search_visits_Rec.visit_type_code IS NOT NULL AND
5618 l_search_visits_Rec.visit_type_code <> Fnd_Api.G_MISS_CHAR
5619 THEN
5620 l_search_visits_Rec.visit_type_code := l_search_visits_Rec.visit_type_code;
5621 END IF;
5622 END IF;
5623
5624 --For Display Period
5625 IF l_search_visits_Rec.display_period_mean IS NOT NULL AND
5626 l_search_visits_Rec.display_period_mean <> Fnd_Api.G_MISS_CHAR
5627 THEN
5628 Check_lookup_name_Or_Id (
5629 p_lookup_type => 'AHL_LTP_DISPLAY_PERIOD',
5630 p_lookup_code => NULL,
5631 p_meaning => l_search_visits_Rec.display_period_mean,
5632 p_check_id_flag => 'Y',
5633 x_lookup_code => l_search_visits_Rec.display_period_code,
5634 x_return_status => l_return_status);
5635
5636 IF NVL(l_return_status, 'X') <> 'S'
5637 THEN
5638 Fnd_Message.SET_NAME('AHL','AHL_LTP_DISPLAY_INVALID');
5639 Fnd_Msg_Pub.ADD;
5640 RAISE Fnd_Api.G_EXC_ERROR;
5641 END IF;
5642 ELSE
5643 -- Id presents
5644 IF l_search_visits_Rec.display_period_code IS NOT NULL AND
5645 l_search_visits_Rec.display_period_code <> Fnd_Api.G_MISS_CHAR
5646 THEN
5647 l_search_visits_Rec.display_period_code := l_search_visits_Rec.display_period_code;
5648 END IF;
5649 END IF;
5650
5651 --
5652 -- Get space id or space name
5653 IF ((l_search_visits_Rec.space_name IS NOT NULL AND
5654 l_search_visits_Rec.space_name <> FND_API.G_MISS_CHAR) OR
5655 (l_search_visits_Rec.space_id IS NOT NULL AND
5656 l_search_visits_Rec.space_id <> FND_API.G_MISS_NUM)) THEN
5657 --
5658 OPEN l_space_id_cur(l_search_visits_Rec.SPACE_ID,l_search_visits_Rec.SPACE_NAME,
5659 l_search_visits_Rec.DEPARTMENT_ID);
5660 FETCH l_space_id_cur INTO l_search_visits_Rec.SPACE_ID,l_search_visits_Rec.SPACE_NAME;
5661 IF l_space_id_cur%NOTFOUND THEN
5662 Fnd_Message.set_name('AHL', 'AHL_LTP_INVALID_SPACE');
5663 Fnd_Message.Set_Token('SPACE',NVL(l_search_visits_Rec.SPACE_NAME,l_search_visits_Rec.SPACE_ID));
5664 Fnd_Msg_Pub.ADD;
5665 CLOSE l_space_id_cur;
5666 RAISE Fnd_Api.G_EXC_ERROR;
5667 --
5668 END IF;
5669 CLOSE l_space_id_cur;
5670 --
5671 END IF;
5672
5673 -- AnRaj: Changed the code by splitting the cursor, perf bug 5208300, index was not being hit because of OR
5674 IF (l_search_visits_Rec.item_description IS NOT NULL AND l_search_visits_Rec.item_description <> Fnd_Api.G_MISS_CHAR)
5675 THEN
5676 OPEN l_item_name_cur(l_search_visits_Rec.item_description);
5677 FETCH l_item_name_cur INTO l_search_visits_rec.item_id,l_search_visits_rec.item_description;
5678 IF l_item_name_cur%NOTFOUND THEN
5679 Fnd_Message.set_name('AHL', 'AHL_LTP_ITEM_NOT_EXIST');
5680 Fnd_Message.Set_Token('ITEM',NVL(l_search_visits_Rec.ITEM_DESCRIPTION,l_search_visits_Rec.ITEM_ID));
5681 Fnd_Msg_Pub.ADD;
5682 CLOSE l_item_name_cur;
5683 RAISE Fnd_Api.G_EXC_ERROR;
5684 END IF;
5685 CLOSE l_item_name_cur;
5686 END IF;
5687
5688 IF (l_search_visits_Rec.item_id IS NOT NULL AND l_search_visits_Rec.item_id <> Fnd_Api.G_MISS_NUM)
5689 THEN
5690 OPEN l_item_id_cur (l_search_visits_Rec.item_id);
5691 FETCH l_item_id_cur INTO l_search_visits_rec.item_id,l_search_visits_rec.item_description;
5692 IF l_item_id_cur%NOTFOUND THEN
5693 Fnd_Message.set_name('AHL', 'AHL_LTP_ITEM_NOT_EXIST');
5694 Fnd_Message.Set_Token('ITEM',NVL(l_search_visits_Rec.ITEM_DESCRIPTION,l_search_visits_Rec.ITEM_ID));
5695 Fnd_Msg_Pub.ADD;
5696 CLOSE l_item_id_cur;
5697 RAISE Fnd_Api.G_EXC_ERROR;
5698 END IF;
5699 CLOSE l_item_id_cur;
5700 END IF;
5701 -- AnRaj: Bug fix for 5208300 end.
5702
5703 --Get plan id
5704 OPEN get_plan_id_cur(l_search_visits_Rec.plan_id);
5705 FETCH get_plan_id_cur INTO l_search_visits_Rec.plan_id,l_plan_flag;
5706 IF get_plan_id_cur%NOTFOUND THEN
5707 Fnd_Message.set_name('AHL', 'AHL_LTP_INVALID_PLAN');
5708 Fnd_Msg_Pub.ADD;
5709 CLOSE get_plan_id_cur;
5710 RAISE Fnd_Api.G_EXC_ERROR;
5711 END IF;
5712 CLOSE get_plan_id_cur;
5713 --Assign dates
5714 l_start_period := trunc(l_search_visits_Rec.start_period);
5715 l_end_period := trunc(l_search_visits_Rec.end_period);
5716 --
5717 IF G_DEBUG='Y' THEN
5718 AHL_DEBUG_PUB.debug( ' SPACEID:'||l_search_visits_Rec.space_id);
5719 AHL_DEBUG_PUB.debug( ' ORGID:'||l_search_visits_Rec.org_id);
5720 AHL_DEBUG_PUB.debug( ' DEPTID:'||l_search_visits_Rec.department_id);
5721 AHL_DEBUG_PUB.debug( ' VISITTYPE:'||l_search_visits_Rec.visit_type_code);
5722 AHL_DEBUG_PUB.debug( ' ITEMID:'||l_search_visits_Rec.item_id);
5723 AHL_DEBUG_PUB.debug( ' PLANID:'||l_search_visits_Rec.plan_id);
5724 AHL_DEBUG_PUB.debug( 'STARTPERIOD:'||l_start_period);
5725 AHL_DEBUG_PUB.debug( 'ENDPERIOD:'||l_end_period);
5726 END IF;
5727 ----------------- To get the visit If space id is available
5728 IF l_search_visits_Rec.SPACE_ID IS NOT NULL
5729 THEN
5730 -- For space id
5731 OPEN get_visit_detail_cur(l_search_visits_Rec.SPACE_ID,
5732 l_search_visits_Rec.visit_type_code,
5733 l_search_visits_Rec.item_id);
5734 i := 0;
5735 LOOP
5736 FETCH get_visit_detail_cur INTO l_get_visit_detail_rec;
5737 EXIT WHEN get_visit_detail_cur%NOTFOUND;
5738
5739 IF get_visit_detail_cur%FOUND THEN
5740 --If close end date ecists then consider it else derived end date
5741 IF l_get_visit_detail_rec.close_date_time IS NOT NULL
5742 THEN
5743 l_visit_end_date := l_get_visit_detail_rec.close_date_time;
5744 ELSE
5745 l_visit_end_date := l_get_visit_detail_rec.start_date_time;
5746 END IF;
5747
5748 IF l_plan_flag = 'Y' THEN
5749
5750 IF G_DEBUG='Y' THEN
5751 AHL_DEBUG_PUB.debug( 'after plan flag y visit id:'||l_get_visit_detail_rec.visit_id ||'-'||i);
5752 AHL_DEBUG_PUB.debug( 'after plan flag y start period:'||l_start_period ||'-'||i);
5753 AHL_DEBUG_PUB.debug( 'after plan flag y end period:'||l_end_period ||'-'||i);
5754 AHL_DEBUG_PUB.debug( 'after plan flag y visit end date:'||l_visit_end_date ||'-'||i);
5755 AHL_DEBUG_PUB.debug( 'after plan flag y visit start date:'||l_get_visit_detail_rec.start_date_time ||'-'||i);
5756
5757 END IF;
5758
5759 OPEN visit_wd_detail_cur(l_search_visits_Rec.plan_id,
5760 l_get_visit_detail_rec.visit_id,
5761 l_start_period,l_end_period,
5762 trunc(nvl(l_visit_end_date, l_get_visit_detail_rec.start_date_time)));
5763 FETCH visit_wd_detail_cur INTO l_visit_wd_detail_rec;
5764 --
5765 IF visit_wd_detail_cur%FOUND THEN
5766 --Check for visit has been assigned to multiple spaces
5767 select count(*) into l_count from ahl_space_assignments
5768 where visit_id = l_visit_wd_detail_rec.visit_id;
5769 --Get plan flag
5770 SELECT primary_plan_flag INTO x_visit_details_tbl(i).plan_flag
5771 FROM ahl_simulation_plans_vl
5772 WHERE simulation_plan_id = l_visit_wd_detail_rec.simulation_plan_id;
5773 --
5774 x_visit_details_tbl(i).visit_number := l_visit_wd_detail_rec.visit_number;
5775 x_visit_details_tbl(i).visit_type := l_visit_wd_detail_rec.visit_type_mean;
5776 x_visit_details_tbl(i).visit_name := l_visit_wd_detail_rec.visit_name;
5777 x_visit_details_tbl(i).visit_id := l_visit_wd_detail_rec.visit_id;
5778 x_visit_details_tbl(i).visit_status := l_visit_wd_detail_rec.status_code;
5779 x_visit_details_tbl(i).unit_name := l_visit_wd_detail_rec.unit_name;
5780 x_visit_details_tbl(i).item_description := l_visit_wd_detail_rec.item_description;
5781 x_visit_details_tbl(i).serial_number := l_visit_wd_detail_rec.serial_number;
5782 x_visit_details_tbl(i).start_date := l_visit_wd_detail_rec.start_date_time;
5783 x_visit_details_tbl(i).end_date := l_visit_wd_detail_rec.close_date_time;
5784 x_visit_details_tbl(i).due_by := l_visit_wd_detail_rec.due_by;
5785 --
5786 IF l_count = 1 then
5787 x_visit_details_tbl(i).yes_no_type := 'No';
5788 ELSE
5789 x_visit_details_tbl(i).yes_no_type := 'Yes';
5790 END IF;
5791 --
5792 END IF;
5793 CLOSE visit_wd_detail_cur;
5794 END IF;
5795 i := i+1;
5796 END IF;
5797 END LOOP;
5798 CLOSE get_visit_detail_cur;
5799
5800 --Simulation plan visits and primary visits not associated to simlation plan
5801 OPEN get_visit_detail_cur(l_search_visits_Rec.space_id,
5802 l_search_visits_Rec.visit_type_code,
5803 l_search_visits_Rec.item_id);
5804 i := 0;
5805 LOOP
5806 FETCH get_visit_detail_cur INTO l_get_visit_detail_rec;
5807 EXIT WHEN get_visit_detail_cur%NOTFOUND;
5808 IF get_visit_detail_cur%FOUND THEN
5809 IF G_DEBUG='Y' THEN
5810 AHL_DEBUG_PUB.debug( 'visit details start period:'||l_start_period||'-'||i);
5811 AHL_DEBUG_PUB.debug( 'visit details end period:'||l_end_period||'-'||i);
5812 END IF;
5813 IF l_get_visit_detail_rec.close_date_time IS NOT NULL THEN
5814 l_visit_end_date := l_get_visit_detail_rec.close_date_time;
5815 ELSE
5816 l_visit_end_date := l_get_visit_detail_rec.start_date_time;
5817 END IF;
5818
5819 IF l_plan_flag = 'N' THEN
5820 --primary visits not associated simulation plan
5821 OPEN visit_wd1_detail_cur(l_search_visits_Rec.plan_id,
5822 l_get_visit_detail_rec.visit_id,
5823 l_start_period,l_end_period,
5824 trunc(nvl(l_visit_end_date, l_get_visit_detail_rec.start_date_time)));
5825 FETCH visit_wd1_detail_cur INTO l_visit_wd1_detail_rec;
5826 IF visit_wd1_detail_cur%FOUND THEN
5827 --Check for visit has been assigned to multiple spaces
5828 select count(*) into l_count from ahl_space_assignments
5829 where visit_id = l_visit_wd1_detail_rec.visit_id;
5830 --Get plan flag
5831 SELECT primary_plan_flag INTO x_visit_details_tbl(i).plan_flag
5832 FROM ahl_simulation_plans_vl
5833 WHERE simulation_plan_id = l_visit_wd1_detail_rec.simulation_plan_id;
5834 --
5835 x_visit_details_tbl(i).visit_number := l_visit_wd1_detail_rec.visit_number;
5836 x_visit_details_tbl(i).visit_type := l_visit_wd1_detail_rec.visit_type_mean;
5837 x_visit_details_tbl(i).visit_id := l_visit_wd1_detail_rec.visit_id;
5838 x_visit_details_tbl(i).visit_status := l_visit_wd1_detail_rec.status_code;
5839 x_visit_details_tbl(i).item_description := l_visit_wd1_detail_rec.item_description;
5840 x_visit_details_tbl(i).visit_name := l_visit_wd1_detail_rec.visit_name;
5841 x_visit_details_tbl(i).unit_name := l_visit_wd1_detail_rec.unit_name;
5842 x_visit_details_tbl(i).serial_number := l_visit_wd1_detail_rec.serial_number;
5843 x_visit_details_tbl(i).start_date := l_visit_wd1_detail_rec.start_date_time;
5844 x_visit_details_tbl(i).end_date := l_visit_wd1_detail_rec.close_date_time;
5845 x_visit_details_tbl(i).due_by := l_visit_wd1_detail_rec.due_by;
5846 IF l_count = 1 then
5847 x_visit_details_tbl(i).yes_no_type := 'No';
5848 ELSE
5849 x_visit_details_tbl(i).yes_no_type := 'Yes';
5850 END IF;
5851
5852 END IF;
5853 CLOSE visit_wd1_detail_cur;
5854 -- simulated visits
5855 OPEN visit_wd_detail_cur(l_search_visits_Rec.plan_id,
5856 l_get_visit_detail_rec.visit_id,
5857 l_start_period,l_end_period,
5858 trunc(nvl(l_visit_end_date, l_get_visit_detail_rec.start_date_time)));
5859 FETCH visit_wd_detail_cur INTO l_visit_wd_detail_rec;
5860 --
5861 IF visit_wd_detail_cur%FOUND THEN
5862 --Check for visit has been assigned to multiple spaces
5863 select count(*) into l_count from ahl_space_assignments
5864 where visit_id = l_visit_wd_detail_rec.visit_id;
5865 --Get plan flag
5866 SELECT primary_plan_flag INTO x_visit_details_tbl(i).plan_flag
5867 FROM ahl_simulation_plans_vl
5868 WHERE simulation_plan_id = l_visit_wd_detail_rec.simulation_plan_id;
5869 --
5870 x_visit_details_tbl(i).visit_number := l_visit_wd_detail_rec.visit_number;
5871 x_visit_details_tbl(i).visit_type := l_visit_wd_detail_rec.visit_type_mean;
5872 x_visit_details_tbl(i).visit_id := l_visit_wd_detail_rec.visit_id;
5873 x_visit_details_tbl(i).visit_status := l_visit_wd_detail_rec.status_code;
5874 x_visit_details_tbl(i).item_description := l_visit_wd_detail_rec.item_description;
5875 x_visit_details_tbl(i).visit_name := l_visit_wd_detail_rec.visit_name;
5876 x_visit_details_tbl(i).unit_name := l_visit_wd_detail_rec.unit_name;
5877 x_visit_details_tbl(i).serial_number := l_visit_wd_detail_rec.serial_number;
5878 x_visit_details_tbl(i).start_date := l_visit_wd_detail_rec.start_date_time;
5879 x_visit_details_tbl(i).end_date := l_visit_wd_detail_rec.close_date_time;
5880 x_visit_details_tbl(i).due_by := l_visit_wd_detail_rec.due_by;
5881
5882 IF l_count = 1 then
5883 x_visit_details_tbl(i).yes_no_type := 'No';
5884 ELSE
5885 x_visit_details_tbl(i).yes_no_type := 'Yes';
5886 END IF;
5887
5888 END IF;
5889 CLOSE visit_wd_detail_cur;
5890 --
5891 IF G_DEBUG='Y' THEN
5892 AHL_DEBUG_PUB.debug( 'visit number:'||l_visit_wd1_detail_rec.visit_number);
5893 END IF;
5894 --
5895 END IF;
5896 i := i+1;
5897 END IF;
5898
5899 END LOOP;
5900 CLOSE get_visit_detail_cur;
5901 END IF;
5902 ----------------- To get the visits If Department id is available
5903 IF (l_search_visits_Rec.DEPARTMENT_ID IS NOT NULL AND
5904 l_search_visits_Rec.SPACE_ID IS NULL )
5905 THEN
5906 -- For space id
5907 OPEN visit_dept_cur(l_search_visits_Rec.DEPARTMENT_ID,
5908 l_search_visits_Rec.visit_type_code,
5909 l_search_visits_Rec.item_id);
5910 i := 0;
5911 LOOP
5912 FETCH visit_dept_cur INTO l_visit_dept_rec;
5913 EXIT WHEN visit_dept_cur%NOTFOUND;
5914 IF visit_dept_cur%FOUND THEN
5915 IF l_visit_dept_rec.close_date_time IS NOT NULL THEN
5916 l_visit_end_date := l_visit_dept_rec.close_date_time;
5917 ELSE
5918 l_visit_end_date := l_visit_dept_rec.start_date_time;
5919 END IF;
5920
5921 IF l_plan_flag = 'Y' THEN
5922 --
5923 IF G_DEBUG='Y' THEN
5924 AHL_DEBUG_PUB.debug( 'after plan flag y dept.plan_id:'||l_search_visits_Rec.plan_id ||'-'||i);
5925 AHL_DEBUG_PUB.debug( 'after plan flag y dept.visit_id:'||l_visit_dept_rec.visit_id ||'-'||i);
5926 AHL_DEBUG_PUB.debug( 'after plan flag y dept display start_period:'||l_start_period ||'-'||i);
5927 AHL_DEBUG_PUB.debug( 'after plan flag y dept diaplay end_period:'||l_end_period ||'-'||i);
5928 AHL_DEBUG_PUB.debug( 'after plan flag y dept visit_end_date:'||l_visit_end_date ||'-'||i);
5929 AHL_DEBUG_PUB.debug( 'after plan flag y dept visit start_date:'||l_visit_dept_rec.start_date_time ||'-'||i);
5930 END IF;
5931
5932 --
5933
5934 OPEN visit_wd_detail_cur(l_search_visits_Rec.plan_id,
5935 l_visit_dept_rec.visit_id,
5936 l_start_period,l_end_period,
5937 trunc(nvl(l_visit_end_date, l_visit_dept_rec.start_date_time)));
5938 FETCH visit_wd_detail_cur INTO l_visit_wd_detail_rec;
5939 --
5940 IF visit_wd_detail_cur%FOUND THEN
5941 --Get plan flag
5942 SELECT primary_plan_flag INTO x_visit_details_tbl(i).plan_flag
5943 FROM ahl_simulation_plans_vl
5944 WHERE simulation_plan_id = l_visit_wd_detail_rec.simulation_plan_id;
5945 --
5946 x_visit_details_tbl(i).visit_number := l_visit_wd_detail_rec.visit_number;
5947 x_visit_details_tbl(i).visit_type := l_visit_wd_detail_rec.visit_type_mean;
5948 x_visit_details_tbl(i).visit_name := l_visit_wd_detail_rec.visit_name;
5949 x_visit_details_tbl(i).visit_id := l_visit_wd_detail_rec.visit_id;
5950 x_visit_details_tbl(i).visit_status := l_visit_wd_detail_rec.status_code;
5951 x_visit_details_tbl(i).unit_name := l_visit_wd_detail_rec.unit_name;
5952 x_visit_details_tbl(i).item_description := l_visit_wd_detail_rec.item_description;
5953 x_visit_details_tbl(i).serial_number := l_visit_wd_detail_rec.serial_number;
5954 x_visit_details_tbl(i).start_date := l_visit_wd_detail_rec.start_date_time;
5955 x_visit_details_tbl(i).end_date := l_visit_wd_detail_rec.close_date_time;
5956 x_visit_details_tbl(i).due_by := l_visit_wd_detail_rec.due_by;
5957
5958 END IF;
5959 CLOSE visit_wd_detail_cur;
5960 END IF;
5961
5962
5963 i := i+1;
5964 END IF;
5965 END LOOP;
5966 CLOSE visit_dept_cur;
5967
5968 --Simulation plan visits and primary visits not associated to simlation plan
5969 OPEN get_visit_dept_cur(l_search_visits_Rec.department_id,
5970 l_search_visits_Rec.visit_type_code,
5971 l_search_visits_Rec.item_id);
5972 i := 0;
5973 LOOP
5974 FETCH get_visit_dept_cur INTO l_get_visit_dept_rec;
5975 EXIT WHEN get_visit_dept_cur%NOTFOUND;
5976 IF get_visit_dept_cur%FOUND THEN
5977 IF G_DEBUG='Y' THEN
5978 AHL_DEBUG_PUB.debug( 'visit details start period:'||l_start_period||'-'||i);
5979 AHL_DEBUG_PUB.debug( 'visit details end period:'||l_end_period||'-'||i);
5980 END IF;
5981
5982 IF l_get_visit_dept_rec.close_date_time IS NOT NULL THEN
5983 l_visit_end_date := l_get_visit_dept_rec.close_date_time;
5984 ELSE
5985 l_visit_end_date := l_get_visit_dept_rec.start_date_time;
5986 END IF;
5987
5988 IF l_plan_flag = 'N' THEN
5989 --primary visits not associated simulation plan
5990 OPEN visit_wd1_detail_cur(l_search_visits_Rec.plan_id,
5991 l_get_visit_dept_rec.visit_id,
5992 l_start_period,l_end_period,
5993 trunc(nvl(l_visit_end_date, l_get_visit_dept_rec.start_date_time)));
5994 FETCH visit_wd1_detail_cur INTO l_visit_wd1_detail_rec;
5995 IF visit_wd1_detail_cur%FOUND THEN
5996 --Get plan flag
5997 SELECT primary_plan_flag INTO x_visit_details_tbl(i).plan_flag
5998 FROM ahl_simulation_plans_vl
5999 WHERE simulation_plan_id = l_visit_wd1_detail_rec.simulation_plan_id;
6000 --
6001 x_visit_details_tbl(i).visit_number := l_visit_wd1_detail_rec.visit_number;
6002 x_visit_details_tbl(i).visit_type := l_visit_wd1_detail_rec.visit_type_mean;
6003 x_visit_details_tbl(i).item_description := l_visit_wd1_detail_rec.item_description;
6004 x_visit_details_tbl(i).visit_id := l_visit_wd1_detail_rec.visit_id;
6005 x_visit_details_tbl(i).visit_status := l_visit_wd1_detail_rec.status_code;
6006 x_visit_details_tbl(i).visit_name := l_visit_wd1_detail_rec.visit_name;
6007 x_visit_details_tbl(i).unit_name := l_visit_wd1_detail_rec.unit_name;
6008 x_visit_details_tbl(i).serial_number := l_visit_wd1_detail_rec.serial_number;
6009 x_visit_details_tbl(i).start_date := l_visit_wd1_detail_rec.start_date_time;
6010 x_visit_details_tbl(i).end_date := l_visit_wd1_detail_rec.close_date_time;
6011 x_visit_details_tbl(i).due_by := l_visit_wd1_detail_rec.due_by;
6012 END IF;
6013 CLOSE visit_wd1_detail_cur;
6014 -- simulated visits
6015 OPEN visit_wd_detail_cur(l_search_visits_Rec.plan_id,
6016 l_get_visit_dept_rec.visit_id,
6017 l_start_period,l_end_period,
6018 trunc(nvl(l_visit_end_date, l_get_visit_dept_rec.start_date_time)));
6019 FETCH visit_wd_detail_cur INTO l_visit_wd_detail_rec;
6020 --
6021 IF visit_wd_detail_cur%FOUND THEN
6022 --Get plan flag
6023 SELECT primary_plan_flag INTO x_visit_details_tbl(i).plan_flag
6024 FROM ahl_simulation_plans_vl
6025 WHERE simulation_plan_id = l_visit_wd_detail_rec.simulation_plan_id;
6026 --
6027 x_visit_details_tbl(i).visit_number := l_visit_wd_detail_rec.visit_number;
6028 x_visit_details_tbl(i).visit_type := l_visit_wd_detail_rec.visit_type_mean;
6029 x_visit_details_tbl(i).item_description := l_visit_wd_detail_rec.item_description;
6030 x_visit_details_tbl(i).visit_id := l_visit_wd_detail_rec.visit_id;
6031 x_visit_details_tbl(i).visit_status := l_visit_wd_detail_rec.status_code;
6032 x_visit_details_tbl(i).visit_name := l_visit_wd_detail_rec.visit_name;
6033 x_visit_details_tbl(i).unit_name := l_visit_wd_detail_rec.unit_name;
6034 x_visit_details_tbl(i).serial_number := l_visit_wd_detail_rec.serial_number;
6035 x_visit_details_tbl(i).start_date := l_visit_wd_detail_rec.start_date_time;
6036 x_visit_details_tbl(i).end_date := l_visit_wd_detail_rec.close_date_time;
6037 x_visit_details_tbl(i).due_by := l_visit_wd_detail_rec.due_by;
6038
6039 END IF;
6040 CLOSE visit_wd_detail_cur;
6041 --
6042 IF G_DEBUG='Y' THEN
6043 AHL_DEBUG_PUB.debug( 'visit number:'||l_visit_wd1_detail_rec.visit_number);
6044 END IF;
6045 --
6046 END IF;
6047 i := i+1;
6048 END IF;
6049
6050 END LOOP;
6051 CLOSE get_visit_dept_cur;
6052 END IF;
6053 -----
6054
6055 IF G_DEBUG='Y' THEN
6056 AHL_DEBUG_PUB.debug( 'total records:'||x_visit_details_tbl.count);
6057 END IF;
6058
6059 --Standard check to count messages
6060 l_msg_count := Fnd_Msg_Pub.count_msg;
6061
6062 IF l_msg_count > 0 THEN
6063 X_msg_count := l_msg_count;
6064 X_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
6065 RAISE Fnd_Api.G_EXC_ERROR;
6066 END IF;
6067 -- Debug info
6068 IF G_DEBUG='Y' THEN
6069 Ahl_Debug_Pub.debug( 'End of private api Get visit details','+SPSL+');
6070 -- Check if API is called in debug mode. If yes, disable debug.
6071 Ahl_Debug_Pub.disable_debug;
6072 --
6073 END IF;
6074
6075 EXCEPTION
6076 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6077 ROLLBACK TO Get_visit_details;
6078 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6079 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
6080 p_count => x_msg_count,
6081 p_data => x_msg_data);
6082 IF G_DEBUG='Y' THEN
6083
6084 AHL_DEBUG_PUB.log_app_messages (
6085 x_msg_count, x_msg_data, 'ERROR' );
6086 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt. Get visit details','+SPSL+');
6087 -- Check if API is called in debug mode. If yes, disable debug.
6088 AHL_DEBUG_PUB.disable_debug;
6089 END IF;
6090
6091 WHEN FND_API.G_EXC_ERROR THEN
6092 ROLLBACK TO Get_visit_details;
6093 X_return_status := FND_API.G_RET_STS_ERROR;
6094 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
6095 p_count => x_msg_count,
6096 p_data => X_msg_data);
6097 IF G_DEBUG='Y' THEN
6098
6099 -- Debug info.
6100 AHL_DEBUG_PUB.log_app_messages (
6101 x_msg_count, x_msg_data, 'UNEXPECTED ERROR' );
6102 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt. Derive visit end date','+SPSL+');
6103 -- Check if API is called in debug mode. If yes, disable debug.
6104 AHL_DEBUG_PUB.disable_debug;
6105 END IF;
6106 WHEN OTHERS THEN
6107 ROLLBACK TO Get_visit_details;
6108 X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6109 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6110 THEN
6111 fnd_msg_pub.add_exc_msg(p_pkg_name => 'AHL_LTP_SPACE_SCHEDULE_PVT',
6112 p_procedure_name => 'GET_VISIT_DETAILS',
6113 p_error_text => SUBSTR(SQLERRM,1,240));
6114 END IF;
6115 FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
6116 p_count => x_msg_count,
6117 p_data => X_msg_data);
6118 IF G_DEBUG='Y' THEN
6119
6120 -- Debug info.
6121 AHL_DEBUG_PUB.log_app_messages (
6122 x_msg_count, x_msg_data, 'SQL ERROR' );
6123 AHL_DEBUG_PUB.debug( 'ahl_ltp_space_schedule_pvt Get visit details','+SPSL+');
6124 -- Check if API is called in debug mode. If yes, disable debug.
6125 AHL_DEBUG_PUB.disable_debug;
6126
6127 END IF;
6128 END Get_Visit_Details;
6129 --To Get derived end date
6130 FUNCTION get_derived_end_date
6131 (p_visit_id NUMBER)
6132
6133 RETURN DATE IS
6134
6135 CURSOR get_visit_cur (c_visit_id IN NUMBER)
6136 IS
6137 SELECT start_date_time
6138 FROM AHL_VISITS_B
6139 WHERE visit_id = c_visit_id;
6140
6141 CURSOR get_task_end_cur (c_visit_id IN NUMBER)
6142 IS
6143 SELECT max(end_date_time)
6144 FROM ahl_visit_tasks_vl
6145 WHERE visit_id = c_visit_id;
6146
6147 l_start_date_time DATE;
6148 l_visit_end_time DATE;
6149 --
6150 BEGIN
6151 --
6152 IF G_DEBUG='Y' THEN
6153 AHL_DEBUG_PUB.enable_debug;
6154 AHL_DEBUG_PUB.debug( 'enter ahl_ltp_space_schedule_pvt Get derived end date','+SPSL+');
6155 END IF;
6156 --
6157 IF (p_visit_id IS NOT NULL AND p_visit_id <> FND_API.G_MISS_NUM )THEN
6158 OPEN get_visit_cur(p_visit_id);
6159 FETCH get_visit_cur INTO l_start_date_time;
6160 CLOSE get_visit_cur;
6161 IF l_start_date_time IS NOT NULL THEN
6162 --
6163 OPEN get_task_end_cur(p_visit_id);
6164 FETCH get_task_end_cur INTO l_visit_end_time;
6165 CLOSE get_task_end_cur;
6166 END IF;
6167 END IF;
6168
6169 IF G_DEBUG='Y' THEN
6170 AHL_DEBUG_PUB.debug( 'visit end time'||l_visit_end_time);
6171 END IF;
6172 --
6173 RETURN l_visit_end_time;
6174 --
6175 END get_derived_end_date;
6176 --
6177 END AHL_LTP_SPACE_SCHEDULE_PVT;