DBA Data[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;