DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSF_GANTT_DATA_PKG

Source


1 PACKAGE BODY CSF_GANTT_DATA_PKG AS
2   /*$Header: CSFGTPLB.pls 120.120.12020000.2 2012/07/25 14:47:29 knathsh ship $*/
3 
4   g_pkg_name     CONSTANT VARCHAR2(30)       := 'CSF_GANTT_DATA_PKG';
5 
6   g_use_custom_chromatics BOOLEAN            := FALSE;
7   g_label_on_task         BOOLEAN            := FALSE;
8   g_uom_minutes           VARCHAR2(60)       := NULL;
9   g_uom_hours             VARCHAR2(60)       := NULL;
10   g_resource_id           NUMBER(20);
11   g_resource_type         VARCHAR2(250);
12 
13   l_default_effort_uom    VARCHAR2(3);
14   l_default_effort        NUMBER(10);
15   l_rule_id               NUMBER(30);
16   l_task_custom_color     VARCHAR2(1);
17   l_task_dec_color        NUMBER;
18   l_profile_value         VARCHAR2(1);
19 
20   -- Tooltip Labels
21   g_task_number           VARCHAR2(80);
22   g_task_type             VARCHAR2(80);
23   g_task_status           VARCHAR2(80);
24   g_sr_number             VARCHAR2(80);
25   g_sr_type               VARCHAR2(80);
26   g_parts                 VARCHAR2(80);
27   g_serial                VARCHAR2(80);
28   g_lot                   VARCHAR2(80);
29   g_address               VARCHAR2(80);
30   g_contact               VARCHAR2(80);
31   g_phone                 VARCHAR2(80);
32   g_planned_start         VARCHAR2(80);
33   g_sched_start           VARCHAR2(80);
34   g_actual_start          VARCHAR2(80);
35   g_estimated_start       VARCHAR2(80);
36   g_start                 VARCHAR2(80);
37   g_end                   VARCHAR2(80);
38   g_travel_time           VARCHAR2(80);
39   g_departure             VARCHAR2(80);
40   g_option                VARCHAR2(80);
41   g_inc_add               VARCHAR2(80);
42   g_cust_name             VARCHAR2(80);
43   g_timezone              VARCHAR2(80);
44   g_product_name          VARCHAR2(80);
45   g_planned_effort        VARCHAR2(80);
46   g_actual_effort         VARCHAR2(80);
47   g_tech_status           VARCHAR2(100);
48   g_tech_lat              VARCHAR2(100);
49   g_tech_lon              VARCHAR2(100);
50   g_tech_dev_tag          VARCHAR2(100);
51   g_tech_cur_add		  VARCHAR2(2000);
52 
53   g_inc_sched_start_date  VARCHAR2(100);
54   g_inc_plan_start_date   VARCHAR2(100);
55   g_inc_actul_start_date  VARCHAR2(100);
56   g_inc_plan_end_date     VARCHAR2(100);
57   g_inc_actul_end_date	  VARCHAR2(100);
58   g_task_name 			  VARCHAR2(100);
59   g_dc_sched_end_date     VARCHAR2(100);
60   g_dc_plan_end_date	  VARCHAR2(100);
61   g_dc_actul_end_date	  VARCHAR2(100);
62 
63   g_user_id               NUMBER;
64   gl_custom_color_tbl     g_custom_color_tbl;
65   g_date_format           VARCHAR2(20);
66   l_language			 VARCHAR2(300);
67 
68   g_server_tz  varchar2(300) := null;
69   g_client_tz  varchar2(300) := null;
70   g_tz_enabled varchar2(1)   ;
71   g_dflt_tz_for_dc varchar2(3);
72   g_dflt_tz_for_sc varchar2(3);
73   g_off_time      VARCHAR2(80);
74   G_PER_TIME   VARCHAR2(80);
75   g_commute    VARCHAR2(10);
76   g_debug      VARCHAR2(1)        := NVL(fnd_profile.value('AFLOG_ENABLED'), 'N');
77   g_debug_level NUMBER       := NVL(fnd_profile.value_specific('AFLOG_LEVEL'), fnd_log.level_event);
78 
79 
80   g_excl_travel varchar2(200);
81 
82   PROCEDURE set_tooltip_labels;
83   PROCEDURE g_get_custom_color;
84   FUNCTION convert_to_min
85     ( p_duration  number
86     , p_uom       varchar2
87     , p_uom_min varchar2
88     )
89   return number;
90 
91   -- ---------------------------------
92   -- private procedures and functions
93   -- ---------------------------------
94 
95   -- set global variables to store labels for tooltip
96   PROCEDURE set_tooltip_labels IS
97   BEGIN
98     g_task_number      := fnd_message.get_string('CSF', 'CSF_TASK_NUMBER');
99     g_task_type        := fnd_message.get_string('CSF', 'CSF_TASK_TYPE');
100     g_task_status      := fnd_message.get_string('CSF', 'CSF_TASK_STATUS');
101     g_sr_number        := fnd_message.get_string('CSF', 'CSF_SR_NUMBER');
102     g_sr_type          := fnd_message.get_string('CSF', 'CSF_SR_TYPE');
103     g_parts            := fnd_message.get_string('CSF', 'CSF_PARTS_REQUIRED');
104     g_serial           := fnd_message.get_string('CSF', 'CSF_SERIAL_NUMBER');
105     g_lot              := fnd_message.get_string('CSF', 'CSF_LOT_NUMBER');
106     g_address          := fnd_message.get_string('CSF', 'CSF_ADDRESS');
107     g_contact          := fnd_message.get_string('CSF', 'CSF_CONTACT');
108     g_phone            := fnd_message.get_string('CSF', 'CSF_PHONE');
109     g_planned_start    := fnd_message.get_string('CSF', 'CSF_PLANNED_START');
110     g_sched_start      := fnd_message.get_string('CSF', 'CSF_SCHEDULED_START');
111     g_actual_start     := fnd_message.get_string('CSF', 'CSF_ACTUAL_START');
112     g_estimated_start  := fnd_message.get_string('CSF', 'CSF_ESTIMATED_START');
113     g_start            := fnd_message.get_string('CSF', 'CSF_START');
114     g_end              := fnd_message.get_string('CSF', 'CSF_END');
115     g_travel_time      := fnd_message.get_string('CSF', 'CSF_TRAVEL_TIME');
116     g_departure        := fnd_message.get_string('CSF', 'CSF_DEPARTURE');
117     g_option           := fnd_message.get_string('CSF', 'CSF_PLANOPTION');
118     g_inc_add          := fnd_message.get_string('CSF', 'CSF_INCIDENT_ADDRESS');
119     g_cust_name        := fnd_message.get_string('CSF', 'CSF_CUSTOMER_NAME');
120     g_timezone         := fnd_message.get_string('CSF', 'CSF_TIMEZONE');
121     g_product_name     := fnd_message.get_string('CSF', 'CSF_PRODUCT_NAME');
122     g_per_time         := fnd_message.get_string('CSF','CSF_PERSONAL_TRAVEL_TIME');
123     g_off_time         := fnd_message.get_string('CSF','CSF_OFFICIAL_TRAVEL_TIME');
124     g_planned_effort   := fnd_message.get_string('CSF','CSF_PLANNED_EFFORT');
125     g_actual_effort    := fnd_message.get_string('CSF','CSF_ACTUAL_EFFORT');
126     g_tech_status      := fnd_message.get_string('CSF','CSF_GNTTOOL_TECH_STATUS');
127     g_tech_lat         := fnd_message.get_string('CSF','CSF_GNTTOOL_TECH_LAT');
128     g_tech_lon         := fnd_message.get_string('CSF','CSF_GNTTOOL_TECH_LONG');
129     g_tech_dev_tag     := fnd_message.get_string('CSF','CSF_GNTTOOL_TECH_DEV_TAG');
130 	g_inc_sched_start_date := fnd_message.get_string('CSF','CSF_INC_SCHEDULED_START_DATE');
131     g_inc_plan_start_date  := fnd_message.get_string('CSF','CSF_INC_PLANNED_START_DATE');
132     g_inc_actul_start_date := fnd_message.get_string('CSF','CSF_INC_ACTUAL_START_DATE');
133     g_inc_plan_end_date    := fnd_message.get_string('CSF','CSF_INC_PLANNED_END_DATE');
134     g_inc_actul_end_date   := fnd_message.get_string('CSF','CSF_INC_ACTUAL_END_DATE');
135     g_task_name 		   := fnd_message.get_string('CSF','CSF_M_TASKNAME');
136 	g_dc_sched_end_date    := fnd_message.get_string('CSF','CSF_DC_SCHEDULED_END_DATE');
137     g_dc_plan_end_date	   := fnd_message.get_string('CSF','CSF_DC_PLANNED_END_DATE');
138     g_dc_actul_end_date	   := fnd_message.get_string('CSF','CSF_DC_ACTUAL_END_DATE');
139 	g_tech_cur_add		   := fnd_message.get_string('CSF','CSF_GNTTOOL_TECH_DEV_ADD');
140 
141   END set_tooltip_labels;
142 
143   PROCEDURE debug(p_message VARCHAR2, p_module VARCHAR2, p_level NUMBER) IS
144   BEGIN
145     IF g_debug = 'Y' AND p_level >= g_debug_level THEN
146       IF ( p_level >= FND_LOG.G_CURRENT_RUNTIME_LEVEL )
147       THEN
148         fnd_log.string(p_level, 'csf.plsql.CSFGTPLB.' || p_module, p_message);
149       END IF;
150     END IF;
151   END debug;
152 
153 
154   PROCEDURE get_message_text
155    (  p_api_version              IN         Number
156    , p_init_msg_list            IN         Varchar2 DEFAULT NULL
157    , x_return_status            OUT NOCOPY Varchar2
158    , x_msg_count                OUT NOCOPY Number
159    , x_msg_data                 OUT NOCOPY Varchar2
160    , p_message_text             OUT NOCOPY jtf_varchar2_table_2000
161    , p_message_code             OUT NOCOPY jtf_varchar2_table_2000
162    )
163    IS
164     Cursor c1
165     is
166     select trim(MESSAGE_TEXT),substr(message_name,5,3)
167     from fnd_new_messages
168     where application_id=513
169     AND  language_code =USERENV('LANG')
170     and substr(message_name,1,4) = 'CSF_'
171     and translate(substr(message_name,6,2),'0123456789','xxxxxxxxxx') ='xx'
172     order by message_name;
173 
174   BEGIN
175     p_message_text             :=jtf_varchar2_table_2000();
176     p_message_code             :=jtf_varchar2_table_2000();
177     OPEN c1;
178     FETCH c1
179     BULK COLLECT INTO p_message_text,p_message_code;
180   END get_message_text;
181 
182   FUNCTION truncsec(p_str VARCHAR2)
183     RETURN VARCHAR2 IS
184   BEGIN
185     RETURN SUBSTR(p_str, 1, LENGTH(p_str) - 3);
186   END truncsec;
187 
188      FUNCTION is_task_escalated(p_task_id NUMBER)
189  	     RETURN BOOLEAN IS
190  	     l_ref_task_id   NUMBER;
191  	     l_escalated     VARCHAR2(10);
192 
193  	     CURSOR c_task_ref IS
194  	       SELECT task_id
195  	         FROM jtf_task_references_b r
196  	        WHERE r.reference_code = 'ESC'
197  	          AND r.object_type_code = 'TASK'
198  	          AND r.object_id = p_task_id;
199 
200  	     CURSOR c_esc(b_task_id NUMBER) IS
201  	       SELECT DECODE(t.escalation_level, 'DE', 'N', 'NE', 'N', 'Y')
202  	         FROM jtf_tasks_b t
203  	            , jtf_task_statuses_b s
204  	        WHERE t.task_id = b_task_id
205  	          AND t.task_type_id = 22
206  	          AND s.task_status_id = t.task_status_id
207  	          AND NVL(s.closed_flag, 'N') <> 'Y'
208  	          AND NVL(t.deleted_flag, 'N') <> 'Y';
209  	   BEGIN
210  	     -- Get the Reference Task to the given Task
211  	     OPEN c_task_ref;
212  	     FETCH c_task_ref INTO l_ref_task_id;
213  	     CLOSE c_task_ref;
214 
215  	     IF l_ref_task_id IS NULL THEN
216  	       RETURN FALSE;
217  	     END IF;
218 
219  	     -- Check whether the Reference object is an Escalation Task
220  	     OPEN c_esc(l_ref_task_id);
221  	     FETCH c_esc INTO l_escalated;
222  	     CLOSE c_esc;
223 
224  	     IF l_escalated = 'Y' THEN
225  	       RETURN TRUE;
226  	     ELSE
227  	       RETURN FALSE;
228  	     END IF;
229 
230 
231  	   EXCEPTION
232  	     WHEN OTHERS THEN
233  	       IF c_task_ref%ISOPEN THEN
234  	         CLOSE c_task_ref;
235  	       END IF;
236  	       IF c_esc%ISOPEN THEN
237  	         CLOSE c_esc;
238  	       END IF;
239  	       RETURN FALSE;
240  	   END is_task_escalated;
241 
242   -- this function returns the translated name of the UOM code
243    -- should support a name in plural form too
244   FUNCTION get_uom(p_code VARCHAR2, p_plural BOOLEAN DEFAULT FALSE)
245     RETURN VARCHAR2 IS
246     l_uom VARCHAR2(2000) := NULL;
247 
248     CURSOR c_uom(p_code VARCHAR2) IS
249       SELECT unit_of_measure_tl
250         FROM mtl_units_of_measure_vl
251        WHERE uom_code = p_code;
252   BEGIN
253     OPEN c_uom(p_code);
254     FETCH c_uom INTO l_uom;
255     IF c_uom%NOTFOUND THEN
256       RAISE NO_DATA_FOUND;
257     END IF;
258     CLOSE c_uom;
259     RETURN l_uom;
260   EXCEPTION
261     WHEN OTHERS THEN
262       IF c_uom%ISOPEN THEN
263         CLOSE c_uom;
264       END IF;
265       RETURN p_code;
266   END get_uom;
267 
268   FUNCTION get_tooltip_data_gantt(
269     p_task_id        NUMBER
270   , p_resource_id    NUMBER
271   , p_resource_type  VARCHAR2
272   , p_start_date     DATE
273   , p_end_date       DATE
274   , p_inc_tz_code    VARCHAR2
275   , p_server_tz_code VARCHAR2
276   , p_client_tz_code VARCHAR2
277   , p_timezone_enb   boolean
278   )
279     RETURN VARCHAR2 IS
280     -- task and task assignment data
281 
282 
283 
284 
285     CURSOR c_task IS
286       SELECT /*+ ORDERED use_nl (a tb tt tl sb sl pi ps hl ft)
287                      INDEX (t,JTF_TASKS_B_U3)
288                      INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
289              tb.task_id
290            , tl.task_name
291            , tb.task_number
292            , tb.source_object_type_code
293            , tb.source_object_id
294            , tt.NAME task_type
295            , sl.NAME task_status
296            , a.resource_id
297            , a.resource_type_code resource_type
298            , tb.planned_start_date
299            , tb.planned_end_date
300            , scheduled_start_date
301            , scheduled_end_date
302            , a.actual_start_date
303            , a.actual_end_date
304            , a.sched_travel_duration
305            , a.sched_travel_duration_uom
306            , tb.customer_id party_id
307            , NVL(sb.assigned_flag, 'N') assigned_flag
308            , tb.task_type_id
309            , csf_tasks_pub.get_task_address(tb.task_id,tb.address_id,tb.location_id,'Y') small_address
310            , pi.party_name party_name
311            , a.actual_travel_duration
312            , a.actual_travel_duration_uom
313            , tz.ACTIVE_TIMEZONE_CODE ic_tz_code
314            , tz.ACTIVE_TIMEZONE_CODE|| ' (GMT ' ||to_char(trunc(gmt_offset),'S09') || ':' || to_char(abs(gmt_offset - trunc(gmt_offset))*60,'FM900') || ') ' tz_desc
315            , tb.planned_effort ||' '|| tb.planned_effort_uom plan_effort
316            , tb.actual_effort ||' '|| tb.actual_effort_uom   act_effort
317         FROM jtf_task_assignments a
318            , jtf_tasks_b tb
319            , jtf_task_types_tl tt
320            , jtf_tasks_tl tl
321            , jtf_task_statuses_b sb
322            , jtf_task_statuses_tl sl
323            , hz_party_sites ps
324            , hz_locations hl
325            , hz_parties pi
326            , fnd_timezones_b tz
327        WHERE a.task_id = p_task_id
328          AND resource_id = p_resource_id
329          AND resource_type_code = p_resource_type
330          AND tb.task_id = a.task_id
331          AND tt.LANGUAGE = l_language
332          AND tt.task_type_id = tb.task_type_id
333          AND sl.LANGUAGE = l_language
334          AND sb.task_status_id = a.assignment_status_id
335          AND sl.task_status_id = sb.task_status_id
336          AND tl.LANGUAGE = l_language
337          AND tl.task_id = tb.task_id
338          AND ps.party_site_id(+) = tb.address_id
339          AND hl.location_id(+) = ps.location_id
340          AND pi.party_id(+) = tb.customer_id
341          AND NVL(sb.cancelled_flag, 'N') <> 'Y'
342          AND tz.UPGRADE_TZ_ID(+) = hl.timezone_id;
343 
344     CURSOR c_sr(b_incident_id NUMBER) IS
345       SELECT /*+ ORDERED USE_NL */
346              i.customer_product_id
347            , i.current_serial_number
348            , si.concatenated_segments product_name
349         FROM cs_incidents_all_b i, mtl_system_items_kfv si
350        WHERE si.inventory_item_id(+) = i.inventory_item_id
351          AND si.organization_id(+) = i.inv_organization_id
352          AND i.incident_id = b_incident_id;
353 
354     l_uom       VARCHAR2(2000)        := NULL;
355     l_debug        CONSTANT BOOLEAN      := g_debug = 'Y';
356     l_Res_Timezone_id   Number;
357     l_res_tz_cd varchar2(100);
358     CURSOR c_uom(p_code VARCHAR2) IS
359       SELECT unit_of_measure_tl
360         FROM mtl_units_of_measure_vl
361        WHERE uom_code = p_code;
362 
363     CURSOR c_parts(b_task_id NUMBER) IS
364       SELECT 'Y' required
365         FROM csp_requirement_headers
366        WHERE task_id = b_task_id;
367 
368     CURSOR c_ib(b_customer_product_id NUMBER) IS
369       SELECT serial_number
370            , lot_number
371         FROM csi_item_instances
372        WHERE instance_id = b_customer_product_id;
373 
374     Cursor C_Res_TimeZone Is
375      Select TIME_ZONE
376      From JTF_RS_RESOURCE_EXTNS
377      Where RESOURCE_ID = p_resource_id
378      ;
379     Cursor c_res_tz
380     IS
381      SELECT ACTIVE_TIMEZONE_CODE,ACTIVE_TIMEZONE_CODE|| ' (GMT ' ||to_char(trunc(gmt_offset),'S09') || ':' || to_char(abs(gmt_offset - trunc(gmt_offset))*60,'FM900') || ') ' tz_desc
382      FROM fnd_timezones_vl ft
383      WHERE UPGRADE_TZ_ID =l_Res_TimeZone_id;
384 
385      Cursor c_trip
386      IS
387         SELECT   object_capacity_id
388           FROM   jtf_task_assignments ja
389                , jtf_tasks_b jb
390          WHERE   ja.task_id = jb.task_id
391            AND   ja.task_id = p_task_id
392            AND   jb.task_type_id not in (20,21)
393 		   AND   ja.object_capacity_id is not null
394 		   and   nvl(jb.deleted_flag,'N') <> 'Y';
395 
396      Cursor  c_tasks(l_capacity number)
397      IS
398        SELECT ja.task_id
399          FROM jtf_task_assignments ja ,
400               jtf_tasks_b jb                ,
401               jtf_task_statuses_b js
402         WHERE ja.task_id                  = jb.task_id
403           AND js.task_status_id           = jb.task_status_id
404           AND ja.object_capacity_id       = l_capacity
405           AND ja.resource_id              = p_resource_id
406           AND NVL(js.cancelled_flag,'N') <> 'Y'
407           AND NVL(js.rejected_flag,'N')  <> 'Y'
408           AND NVL(jb.deleted_flag,'N')   <> 'Y'
409           AND jb.task_type_id NOT        IN (20,21)
410           AND ja.object_capacity_id      IS NOT NULL
411       ORDER BY NVL(ja.actual_start_date,jb.scheduled_start_date);
412 
413       Cursor c_arr
414     IS
415        SELECT  ja.task_id
416              , ja.actual_travel_duration
417              , ja.sched_travel_duration
418              , ja.actual_travel_duration_uom
419              , ja.sched_travel_duration_uom
420          FROM jtf_task_assignments ja ,
421               jtf_tasks_b jb
422         WHERE ja.task_id        = jb.task_id
423          AND jb.task_type_id      IN (21)
424          AND ja.task_id= p_task_id;
425 
426     Cursor c_terr
427 	IS
428 	   SELECT territory_id
429    	     FROM csf_dc_resources_v
430 	    WHERE resource_id = p_resource_id
431 	      AND resource_type   = p_resource_type;
432 
433     l_task_rec  c_task%ROWTYPE;
434     l_sr_rec    c_sr%ROWTYPE;
435     l_parts_rec c_parts%ROWTYPE;
436     l_ib_rec    c_ib%ROWTYPE;
437     l_rec       tooltip_data_rec_type := NULL;
438     p_color     NUMBER                := 255;
439     l_str       VARCHAR2(2000)        := NULL;
440 
441     l_ic_planned_start_date   date;
442     l_ic_planned_end_date     date;
443     l_ic_scheduled_start_date date;
444     l_ic_scheduled_end_date   date;
445     l_ic_actual_start_date    date;
446     l_ic_actual_end_date      date;
447 
448 
449     l_dc_planned_start_date   date;
450     l_dc_planned_end_date     date;
451     l_dc_scheduled_start_date date;
452     l_dc_scheduled_end_date   date;
453     l_dc_actual_start_date    date;
454     l_dc_actual_end_date      date;
455     l_actual_start_date       date;
456     l_scheduled_start_date    date;
457     l_tz_desc                 varchar2(100);
458     l_rs_tz_desc              varchar2(100);
459     l_rs_ic_tz_present        boolean;
460     l_lines                   number;                --bug no 5674408
461     l_off_time                varchar2(200);
462     l_per_time                varchar2(200);
463     l_planned_effort          varchar2(200);
464     l_actual_effort           varchar2(200);
465     l_task_tbl                jtf_number_table;
466     l_capacity                number;
467     i                         number;
468     j                         number;
469     l_first                   number;
470     l_last                    number;
471 	  l_territory               number;
472 	  l_arr                     c_arr%rowtype;
473 
474     l_feed_time               varchar2(100);
475     l_status                  varchar2(100);
476     l_latitude                varchar2(100);
477     l_longitude               varchar2(100);
478     l_speed                   varchar2(100);
479     l_direction               varchar2(100);
480     l_parked_time             varchar2(100);
481     l_address                 varchar2(100);
482     l_creation_date           varchar2(100);
483     l_device_tag              varchar2(100);
484     l_status_code_meaning     varchar2(100);
485     l_return_status           varchar2(2);
486     l_msg_count               NUMBER;
487     l_msg_data                varchar2(100);
488 
489   BEGIN
490 
491   IF l_debug THEN
492       debug('Start of function get_tooltip_data_gantt'  , 'get_tooltip_data_gantt', fnd_log.level_procedure);
493       debug('Parameters : Task_Id '||p_task_id , 'get_tooltip_data_gantt', fnd_log.level_procedure);
494       debug(' Resource_Id '||p_resource_id , 'get_tooltip_data_gantt', fnd_log.level_procedure);
495       debug(' Resource_type '||p_resource_type , 'get_tooltip_data_gantt', fnd_log.level_procedure);
496       debug(' Start Date '||to_char(p_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_procedure);
497       debug(' End Date '||to_char(p_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_procedure);
498       debug(' Incident timezone code :'||p_inc_tz_code , 'get_tooltip_data_gantt', fnd_log.level_procedure);
499       debug(' Server timezone code :'||p_server_tz_code , 'get_tooltip_data_gantt', fnd_log.level_procedure);
500       debug(' Client timezone code :'||p_client_tz_code , 'get_tooltip_data_gantt', fnd_log.level_procedure);
501 
502    END IF;
503 
504 
505   open c_terr;
506 	fetch c_terr into l_territory;
507 	close c_terr;
508 	IF l_debug THEN
509 	  debug(' Territory Id :'||l_territory , 'get_tooltip_data_gantt', fnd_log.level_statement);
510   END IF;
511     g_excl_travel := csr_scheduler_pub.get_sch_parameter_value(  'spCommuteExcludedTime'
512                                                               , fnd_global.resp_appl_id
513                                                               , fnd_global.resp_id
514                                                               , fnd_global.user_id
515                                                               , l_territory
516                                                               , p_resource_type
517                                                               , p_resource_id
518                                                               );
519    g_commute := csr_scheduler_pub.get_sch_parameter_value(  'spCommutesPosition'
520                                                               , fnd_global.resp_appl_id
521                                                               , fnd_global.resp_id
522                                                               , fnd_global.user_id
523                                                               , l_territory
524                                                               , p_resource_type
525                                                               , p_resource_id
526                                                               );
527 
528    IF l_debug THEN
529 	  debug(' Excluded Travel time :'||g_excl_travel , 'get_tooltip_data_gantt', fnd_log.level_statement);
530 	  debug(' Commute  :'||g_commute , 'get_tooltip_data_gantt', fnd_log.level_statement);
531    END IF;
532 
533     OPEN c_task;
534     FETCH c_task INTO l_task_rec;
535     IF c_task%NOTFOUND THEN
536       CLOSE c_task;
537       IF l_debug THEN
538     	  debug(' Cursor c_task raised No Data Found exception', 'get_tooltip_data_gantt', fnd_log.level_statement);
539     	END IF;
540       RAISE NO_DATA_FOUND;
541     END IF;
542     l_task_tbl := jtf_number_table();
543 
544     OPEN c_trip;
545     FETCH c_trip into l_capacity;
546     CLOSE c_trip;
547 
548     IF l_debug THEN
549     	  debug(' Object capacity id :'||l_capacity, 'get_tooltip_data_gantt', fnd_log.level_statement);
550     END IF;
551 
552     OPEN c_tasks(l_capacity);
553     FETCH c_tasks BULK COLLECT INTO l_task_tbl;
554     CLOSE c_tasks;
555 
556     IF l_task_tbl.count > 0
557     THEN
558       i := l_task_tbl.FIRST;
559       j := l_task_tbl.LAST;
560       l_first := l_task_tbl(i);
561       l_last := l_task_tbl(j);
562 
563       IF l_debug THEN
564     	  debug(' First Task in the trip :'||l_first, 'get_tooltip_data_gantt', fnd_log.level_statement);
565     	  debug(' last Task in the trip :'||l_last, 'get_tooltip_data_gantt', fnd_log.level_statement);
566       END IF;
567     END IF;
568 
569     open c_arr;
570     fetch c_arr into l_arr;
571     close c_arr;
572 
573     IF l_debug THEN
574     	  debug(' Task Type Id:'||l_task_rec.task_type_id, 'get_tooltip_data_gantt', fnd_log.level_statement);
575     END IF;
576 
577     IF l_task_rec.task_type_id NOT IN(20, 21)
578     THEN
579       l_planned_effort := l_task_rec.plan_effort;
580       l_actual_effort  := l_task_rec.act_effort;
581 
582       IF l_debug THEN
583     	  debug(' Planned Effort :'||l_planned_effort, 'get_tooltip_data_gantt', fnd_log.level_statement);
584     	  debug(' Actual Effort :'||l_actual_effort, 'get_tooltip_data_gantt', fnd_log.level_statement);
585       END IF;
586 
587       IF l_debug THEN
588     	  debug(' Scheduled Start Date :'||l_task_rec.scheduled_start_date, 'get_tooltip_data_gantt', fnd_log.level_statement);
589     	  debug(' Scheduled End Date :'||l_task_rec.scheduled_end_date, 'get_tooltip_data_gantt', fnd_log.level_statement);
590     	  debug(' Actual Start Date :'||l_task_rec.actual_start_date, 'get_tooltip_data_gantt', fnd_log.level_statement);
591       END IF;
592 
593       IF l_task_rec.scheduled_start_date <> l_task_rec.scheduled_end_date
594       THEN
595         IF (   l_task_rec.scheduled_start_date <> p_start_date
596             OR l_task_rec.scheduled_end_date <> p_end_date
597            )
598         AND  l_task_rec.actual_start_date is null
599         THEN
600           CLOSE c_task;
601           IF l_debug THEN
602           	  debug(' Cursor c_task raised No Data found exception becoz of actual start date is null', 'get_tooltip_data_gantt', fnd_log.level_statement);
603           END IF;
604           RAISE NO_DATA_FOUND;
605         END IF;
606       END IF;
607       IF l_debug THEN
608           debug(' Source Object Id: '||l_task_rec.source_object_id, 'get_tooltip_data_gantt', fnd_log.level_statement);
609       END IF;
610 	  IF ((l_task_rec.task_type_id NOT IN(20, 21)) and (l_task_rec.source_object_type_code<>'TASK'))
611 	  THEN
612 		  OPEN c_sr(l_task_rec.source_object_id);
613 		  FETCH c_sr INTO l_sr_rec;
614 		  IF l_sr_rec.customer_product_id IS NOT NULL THEN
615 			IF l_debug THEN
616 			  debug(' Customer  Product  Id: '|| l_sr_rec.customer_product_id, 'get_tooltip_data_gantt', fnd_log.level_statement);
617 			END IF;
618 			OPEN c_ib(l_sr_rec.customer_product_id);
619 			FETCH c_ib INTO l_ib_rec;
620 			CLOSE c_ib;
621 		  ELSE
622 			l_ib_rec.serial_number  := l_sr_rec.current_serial_number;
623 			l_ib_rec.lot_number     := NULL;   -- not yet supported
624 
625 			IF l_debug THEN
626 			  debug(' Serial Number: '|| l_ib_rec.serial_number, 'get_tooltip_data_gantt', fnd_log.level_statement);
627 			END IF;
628 		  END IF;
629 	  END IF;
630    END IF;
631    l_rec.incident_customer_name  := l_task_rec.party_name;
632    IF l_debug THEN
633           debug(' Party Name : '||l_rec.incident_customer_name , 'get_tooltip_data_gantt', fnd_log.level_statement);
634     END IF;
635 
636    --begin addition for bug 5674408
637    IF (LENGTH(NVL(l_task_rec.party_name, 0)) > 80)
638    THEN
639        l_lines := ceil(length(l_task_rec.party_name)/80) - 1;
640        IF l_debug THEN
641           debug(' No. of lines  : '||l_lines , 'get_tooltip_data_gantt', fnd_log.level_statement);
642        END IF;
643        l_rec.incident_customer_name := null;
644 
645        for i in 1..l_lines
646        loop
647            l_rec.incident_customer_name := l_rec.incident_customer_name || SUBSTRB (l_task_rec.party_name, 1, 80) || fnd_global.local_chr (10);
648            l_task_rec.party_name := substrb(l_task_rec.party_name,81);
649            IF l_debug THEN
650               debug(' Incident Customer name  : '||l_rec.incident_customer_name , 'get_tooltip_data_gantt', fnd_log.level_statement);
651               debug(' Party Name  : '||l_task_rec.party_name , 'get_tooltip_data_gantt', fnd_log.level_statement);
652            END IF;
653        end loop;
654 
655        l_rec.incident_customer_name := l_rec.incident_customer_name || SUBSTRB (l_task_rec.party_name, 1);
656        IF l_debug THEN
657               debug(' Incident Customer name after the loop  : '||l_rec.incident_customer_name , 'get_tooltip_data_gantt', fnd_log.level_statement);
658        END IF;
659    END IF;
660    --end addition for bug 5674408
661 
662    l_Res_TimeZone_id:=NULL;
663    IF l_task_rec.task_type_id IN(20, 21)
664    THEN
665      Open  C_Res_TimeZone ;
666      Fetch C_Res_TimeZone into l_Res_TimeZone_id;
667      Close C_Res_TimeZone ;
668      IF l_debug THEN
669               debug(' Resource Timezone : '||l_Res_TimeZone_id , 'get_tooltip_data_gantt', fnd_log.level_statement);
670        END IF;
671      if l_Res_TimeZone_id is not null
672      then
673        Open  c_res_tz ;
674        Fetch c_res_tz into l_res_tz_cd,l_rs_tz_desc;
675        Close c_res_tz ;
676        IF l_debug THEN
677               debug(' Resource Timezone code : '||l_res_tz_cd , 'get_tooltip_data_gantt', fnd_log.level_statement);
678               debug(' Resource Timezone Description : '||l_rs_tz_desc , 'get_tooltip_data_gantt', fnd_log.level_statement);
679        END IF;
680      end  if;
681      if p_timezone_enb
682      then
683        if l_res_tz_cd is not null
684        then
685          l_ic_planned_start_date   :=fnd_date.adjust_datetime( l_task_rec.planned_start_date,p_server_tz_code,l_res_tz_cd);
686          l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_res_tz_cd);
687          l_ic_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_res_tz_cd);
688          l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_res_tz_cd);
689          l_tz_desc                 :=l_rs_tz_desc;
690          IF l_debug THEN
691               debug(' If timezone is enabled and resource time zone exists then : ' , 'get_tooltip_data_gantt', fnd_log.level_statement);
692               debug(' l_ic_planned_start_date : '||to_char(l_ic_planned_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
693               debug(' l_ic_planned_end_date : '||to_char(l_ic_planned_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
694               debug(' l_ic_scheduled_start_date : '||to_char(l_ic_scheduled_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
695               debug(' l_ic_scheduled_end_date : '||to_char(l_ic_scheduled_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
696        END IF;
697        end if;
698      else
699         l_ic_planned_start_date   :=l_task_rec.planned_start_date;
700         l_ic_planned_end_date     :=l_task_rec.planned_end_date;
701         l_ic_scheduled_start_date :=p_start_date;
702         l_ic_scheduled_end_date   :=p_end_date;
703         IF l_debug THEN
704               debug(' If timezone is note enabled ' , 'get_tooltip_data_gantt', fnd_log.level_statement);
705               debug(' l_ic_planned_start_date : '||to_char(l_ic_planned_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
706               debug(' l_ic_planned_end_date : '||to_char(l_ic_planned_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
707               debug(' l_ic_scheduled_start_date : '||to_char(l_ic_scheduled_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
708               debug(' l_ic_scheduled_end_date : '||to_char(l_ic_scheduled_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
709        END IF;
710      end if;
711    END IF;
712 
713     IF l_task_rec.actual_start_date is  not null
714     THEN
715 
716       if p_inc_tz_code ='UTZ'and  p_timezone_enb
717       then
718         l_dc_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,p_client_tz_code);
719         l_dc_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,p_client_tz_code);
720         l_dc_scheduled_start_date :=fnd_date.adjust_datetime(l_task_rec.scheduled_start_date,p_server_tz_code,p_client_tz_code);
721         l_dc_scheduled_end_date   :=fnd_date.adjust_datetime(l_task_rec.scheduled_end_date,p_server_tz_code,p_client_tz_code);
722         l_dc_actual_start_date    :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_client_tz_code);
723         l_dc_actual_end_date      :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_client_tz_code);
724         IF l_debug THEN
725               debug(' Actual start date : '||l_task_rec.actual_start_date , 'get_tooltip_data_gantt', fnd_log.level_statement);
726               debug(' l_dc_planned_start_date : '||to_char(l_dc_planned_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
727               debug(' l_dc_planned_end_date : '||to_char(l_dc_planned_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
728               debug(' l_dc_scheduled_start_date : '||to_char(l_dc_scheduled_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
729               debug(' l_dc_scheduled_end_date : '||to_char(l_dc_scheduled_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
730               debug(' l_dc_actual_start_date : '||to_char(l_dc_actual_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
731               debug(' l_dc_actual_end_date : '||to_char(l_dc_actual_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
732         END IF;
733       else
734         l_dc_planned_start_date   :=l_task_rec.planned_start_date;
735         l_dc_planned_end_date     :=l_task_rec.planned_end_date;
736         l_dc_scheduled_start_date :=l_task_rec.scheduled_start_date;
737         l_dc_scheduled_end_date   :=l_task_rec.scheduled_end_date;
738         l_dc_actual_start_date    :=p_start_date;
739         l_dc_actual_end_date      :=p_end_date;
740         IF l_debug THEN
741               debug(' Incident timezone code is not UTZ and timezone is not enabled ' , 'get_tooltip_data_gantt', fnd_log.level_statement);
742               debug(' Actual start date : '||l_task_rec.actual_start_date , 'get_tooltip_data_gantt', fnd_log.level_statement);
743               debug(' l_dc_planned_start_date : '||to_char(l_dc_planned_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
744               debug(' l_dc_planned_end_date : '||to_char(l_dc_planned_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
745               debug(' l_dc_scheduled_start_date : '||to_char(l_dc_scheduled_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
746               debug(' l_dc_scheduled_end_date : '||to_char(l_dc_scheduled_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
747               debug(' l_dc_actual_start_date : '||to_char(l_dc_actual_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
748               debug(' l_dc_actual_end_date : '||to_char(l_dc_actual_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
749         END IF;
750       end if;
751       l_actual_start_date :=l_dc_actual_start_date;
752       if l_task_rec.ic_tz_code is not null and  p_timezone_enb
753       then
754         l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
755         l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
756         l_ic_scheduled_start_date :=fnd_date.adjust_datetime(l_task_rec.scheduled_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
757         l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(l_task_rec.scheduled_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
758         l_ic_actual_start_date    :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
759         l_ic_actual_end_date      :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
760         l_actual_start_date       :=l_ic_actual_start_date;
761         l_tz_desc                 :=l_task_rec.tz_desc;
762         IF l_debug THEN
763               debug(' if l_task_rec.ic_tz_code is not null and  p_timezone_enb then the values : ' , 'get_tooltip_data_gantt', fnd_log.level_statement);
764 
765               debug(' l_ic_planned_start_date : '||to_char(l_ic_planned_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
766               debug(' l_ic_planned_end_date : '||to_char(l_ic_planned_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
767               debug(' l_ic_scheduled_start_date : '||to_char(l_ic_scheduled_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
768               debug(' l_ic_scheduled_end_date : '||to_char(l_ic_scheduled_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
769               debug(' l_ic_actual_start_date : '||to_char(l_ic_actual_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
770               debug(' l_ic_actual_end_date : '||to_char(l_ic_actual_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
771         END IF;
772       end if;
773       IF l_debug THEN
774               debug(' g_uom_minutes : '||g_uom_minutes , 'get_tooltip_data_gantt', fnd_log.level_statement);
775       END IF;
776       l_rec.departure_time:=
777             l_actual_start_date - (
778                                inv_convert.inv_um_convert(
779                                 0
780                                , NULL
781                                , NVL(l_task_rec.actual_travel_duration, 0)
782                                , NVL(l_task_rec.actual_travel_duration_uom, g_uom_minutes)
783                                , g_uom_hours
784                                , NULL
785                                , NULL
786                                )
787                              / 24
788                             );
789 
790 
791         IF l_debug THEN
792               debug(' Departure Time : '||to_char(l_rec.departure_time,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
793         END IF;
794         OPEN c_uom(NVL(l_task_rec.actual_travel_duration_uom, g_uom_minutes));
795         FETCH c_uom INTO l_uom;
796         IF c_uom%NOTFOUND THEN
797           l_uom  := NVL(l_task_rec.actual_travel_duration_uom, g_uom_minutes);
798         END IF;
799         CLOSE c_uom;
800 
801         IF l_debug THEN
802               debug(' l_uom : '||l_uom , 'get_tooltip_data_gantt', fnd_log.level_statement);
803         END IF;
804 
805         l_rec.travel_time := NVL(l_task_rec.actual_travel_duration, 0) || ' ' || l_uom;
806         IF l_debug THEN
807               debug(' Travel Time : '||l_rec.travel_time , 'get_tooltip_data_gantt', fnd_log.level_statement);
808         END IF;
809         IF l_debug THEN
810               debug(' Arrival Task Id : '||l_arr.task_id , 'get_tooltip_data_gantt', fnd_log.level_statement);
811               debug(' Actual Travel Duration : '||l_arr.actual_travel_duration , 'get_tooltip_data_gantt', fnd_log.level_statement);
812         END IF;
813         IF   p_task_id = l_first
814            OR p_task_id = l_arr.task_id
815 		   OR p_task_id = l_last
816         THEN
817            IF p_task_id = l_arr.task_id
818            THEN
819              if l_arr.actual_travel_duration > 0
820               then
821                  if l_arr.actual_travel_duration >  to_number(g_excl_travel)
822                  then
823                    l_off_time := (l_arr.actual_travel_duration - to_number(g_excl_travel)) || ' ' || l_uom;
824                    l_per_time := g_excl_travel || ' ' || l_uom;
825                  elsif l_arr.actual_travel_duration <= to_number(g_excl_travel)
826                  then
827                   l_per_time := l_arr.actual_travel_duration|| ' ' || l_uom;
828                  end if;
829               end if;
830            ELSE
831               if l_task_rec.actual_travel_duration > 0
832               then
833                  if l_task_rec.actual_travel_duration >  to_number(g_excl_travel)
834                  then
835                    l_off_time := (l_task_rec.actual_travel_duration - to_number(g_excl_travel)) || ' ' || l_uom;
836                    l_per_time := g_excl_travel || ' ' || l_uom;
837                  elsif l_task_rec.actual_travel_duration <= to_number(g_excl_travel)
838                  then
839                   l_per_time := l_task_rec.actual_travel_duration|| ' ' || l_uom;
840                  end if;
841               end if;
842             END IF;
843         END IF;
844         IF l_debug THEN
845               debug(' Official Travel time : '||l_off_time , 'get_tooltip_data_gantt', fnd_log.level_statement);
846               debug(' Personal Travel Time : '||l_per_time , 'get_tooltip_data_gantt', fnd_log.level_statement);
847         END IF;
848     ELSE
849       if p_inc_tz_code ='UTZ'and  p_timezone_enb
850       then
851         l_dc_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,p_client_tz_code);
852         l_dc_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,p_client_tz_code);
853         l_dc_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_client_tz_code);
854         l_dc_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_client_tz_code);
855         IF l_debug THEN
856               debug(' 1. Incident tz code is  UTZ and time zone  enabled ' , 'get_tooltip_data_gantt', fnd_log.level_statement);
857               debug(' l_dc_planned_start_date : '||to_char(l_dc_planned_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
858               debug(' l_dc_planned_end_date : '||to_char(l_dc_planned_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
859               debug(' l_dc_scheduled_start_date : '||to_char(l_dc_scheduled_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
860               debug(' l_dc_scheduled_end_date : '||to_char(l_dc_scheduled_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
861 
862         END IF;
863       else
864         l_dc_planned_start_date   :=l_task_rec.planned_start_date;
865         l_dc_planned_end_date     :=l_task_rec.planned_end_date;
866         l_dc_scheduled_start_date :=p_start_date;
867         l_dc_scheduled_end_date   :=p_end_date;
868         IF l_debug THEN
869               debug(' 2. Incident tz code is not UTZ and time zone not enabled ' , 'get_tooltip_data_gantt', fnd_log.level_statement);
870               debug(' l_dc_planned_start_date : '||to_char(l_dc_planned_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
871               debug(' l_dc_planned_end_date : '||to_char(l_dc_planned_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
872               debug(' l_dc_scheduled_start_date : '||to_char(l_dc_scheduled_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
873               debug(' l_dc_scheduled_end_date : '||to_char(l_dc_scheduled_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
874 
875         END IF;
876       end if;
877       l_scheduled_start_date :=l_dc_scheduled_start_date;
878       if l_task_rec.ic_tz_code is not null and  p_timezone_enb and  l_task_rec.task_type_id not in (20, 21)
879       then
880         l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
881         l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
882         l_ic_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
883         l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
884         l_scheduled_start_date    :=l_ic_scheduled_start_date;
885         l_tz_desc                 :=l_task_rec.tz_desc;
886         IF l_debug THEN
887               debug(' if l_task_rec.ic_tz_code is not null and  p_timezone_enb and  l_task_rec.task_type_id not in (20, 21) then: ' , 'get_tooltip_data_gantt', fnd_log.level_statement);
888               debug(' l_ic_planned_start_date : '||to_char(l_ic_planned_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
889               debug(' l_ic_planned_end_date : '||to_char(l_ic_planned_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
890               debug(' l_ic_scheduled_start_date : '||to_char(l_ic_scheduled_start_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
891               debug(' l_ic_scheduled_end_date : '||to_char(l_ic_scheduled_end_date,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
892 
893         END IF;
894       elsif l_res_tz_cd is not null and  p_timezone_enb
895       then
896         l_scheduled_start_date    :=l_ic_scheduled_start_date;
897       end if;
898 
899       l_rec.departure_time:=
900               l_scheduled_start_date - (
901                                inv_convert.inv_um_convert(
902                                  0
903                                , NULL
904                                , NVL(l_task_rec.sched_travel_duration, 0)
905                                , NVL(l_task_rec.sched_travel_duration_uom, g_uom_minutes)
906                                , g_uom_hours
907                                , NULL
908                                , NULL
909                                )
910                              / 24
911                             );
912        IF l_debug THEN
913             debug(' 2. Departure Time : '||to_char(l_rec.departure_time,'dd/mm/yyyy hh24:mi') , 'get_tooltip_data_gantt', fnd_log.level_statement);
914         END IF;
915          OPEN c_uom(NVL(l_task_rec.sched_travel_duration_uom, g_uom_minutes));
916     	 FETCH c_uom INTO l_uom;
917          IF c_uom%NOTFOUND THEN
918             l_uom  := NVL(l_task_rec.sched_travel_duration_uom, g_uom_minutes);
919          END IF;
920          CLOSE c_uom;
921          IF l_debug THEN
922             debug(' 2. l_uom : '||l_uom , 'get_tooltip_data_gantt', fnd_log.level_statement);
923         END IF;
924 
925          l_rec.travel_time := NVL(l_task_rec.sched_travel_duration, 0) || ' ' || l_uom;
926          IF l_debug THEN
927             debug(' 2. Travel Time : '||l_rec.travel_time , 'get_tooltip_data_gantt', fnd_log.level_statement);
928         END IF;
929         IF l_debug THEN
930             debug(' 2. Arrival Task Id : '||l_arr.task_id , 'get_tooltip_data_gantt', fnd_log.level_statement);
931             debug(' 2. Scheduled Travel Duration : '||l_arr.sched_travel_duration , 'get_tooltip_data_gantt', fnd_log.level_statement);
932         END IF;
933          IF   p_task_id = l_first
934            OR p_task_id = l_arr.task_id
935 		   OR p_task_id = l_last
936          THEN
937             IF p_task_id = l_arr.task_id
938             THEN
939                 if l_arr.sched_travel_duration > 0
940                 then
941                  if l_arr.sched_travel_duration >  to_number(g_excl_travel)
942                  then
943                    l_off_time := (l_arr.sched_travel_duration - to_number(g_excl_travel)) || ' ' || l_uom;
944                    l_per_time := g_excl_travel || ' ' || l_uom;
945                  elsif l_arr.sched_travel_duration <= to_number(g_excl_travel)
946                  then
947                   l_per_time := NVL(l_task_rec.sched_travel_duration, 0) || ' ' || l_uom;
948                  end if;
949                 end if;
950             ELSE
951                 if l_task_rec.sched_travel_duration > 0
952                 then
953                  if l_task_rec.sched_travel_duration >  to_number(g_excl_travel)
954                  then
955                    l_off_time := (l_task_rec.sched_travel_duration - to_number(g_excl_travel)) || ' ' || l_uom;
956                    l_per_time := g_excl_travel || ' ' || l_uom;
957                  elsif l_task_rec.sched_travel_duration <= to_number(g_excl_travel)
958                  then
959                   l_per_time := l_rec.travel_time;
960                  end if;
961                 end if;
962             END IF;
963         END IF;
964     END IF;
965     IF l_debug THEN
966             debug(' 2. Official Travel Time : '||l_off_time , 'get_tooltip_data_gantt', fnd_log.level_statement);
967             debug(' 2. Personal Travel Time : '||l_per_time , 'get_tooltip_data_gantt', fnd_log.level_statement);
968     END IF;
969     l_rec.assigned_flag           := l_task_rec.assigned_flag;
970     l_rec.is_plan_option          := 'N';
971 
972     /*test('P_RESOURCE_ID    :'||p_resource_id);
973 
974     test('P_RESOURCE_TYPE       :'||p_resource_type   );
975     test(' Gps Code : '||CSF_GPS_PUB.IS_GPS_ENABLED);
976     test('P_DATE     :'||to_char(p_start_date,'dd-mon-rrrr hh24:mi:ss') );
977     IF l_debug THEN
978             debug(' Gps Code : '||CSF_GPS_PUB.IS_GPS_ENABLED , 'get_tooltip_data_gantt', fnd_log.level_statement);
979     END IF;
980 
981     If CSF_GPS_PUB.IS_GPS_ENABLED='Y'
982     THEN
983 
984     csf_resource_pub.get_location(
985      x_return_status      => l_return_status
986     ,x_msg_count          => l_msg_count
987     ,x_msg_data           => l_msg_data
988     ,p_resource_id        => p_resource_id
989     ,p_resource_type      => p_resource_type
990     ,p_date               => p_start_date
991     ,x_creation_date      => l_creation_date
992     ,x_feed_time          => l_feed_time
993     ,x_status_code        => l_status
994     ,x_latitude           => l_latitude
995     ,x_longitude          => l_longitude
996     ,x_speed              => l_speed
997     ,x_direction          => l_direction
998     ,x_parked_time        => l_parked_time
999     ,x_address            => l_address
1000     ,x_device_tag         => l_device_tag
1001     ,x_status_code_meaning=> l_status_code_meaning
1002     );
1003     END IF;
1004     IF l_debug THEN
1005             debug('l_feed_time    :'||l_feed_time , 'get_tooltip_data_gantt', fnd_log.level_statement);
1006             debug('l_status       :'||l_status  , 'get_tooltip_data_gantt', fnd_log.level_statement);
1007             debug('l_latitude     :'||l_latitude , 'get_tooltip_data_gantt', fnd_log.level_statement);
1008             debug('l_longitude    :'||l_longitude , 'get_tooltip_data_gantt', fnd_log.level_statement);
1009             debug('l_speed        :'||l_speed , 'get_tooltip_data_gantt', fnd_log.level_statement);
1010             debug('l_direction    :'||l_direction , 'get_tooltip_data_gantt', fnd_log.level_statement);
1011             debug('l_parked_time  :'||l_parked_time , 'get_tooltip_data_gantt', fnd_log.level_statement);
1012             debug('l_address      :'||l_address  , 'get_tooltip_data_gantt', fnd_log.level_statement);
1013             debug('l_creation_date :'||l_creation_date , 'get_tooltip_data_gantt', fnd_log.level_statement);
1014             debug('l_device_tag    :'||l_device_tag , 'get_tooltip_data_gantt', fnd_log.level_statement);
1015             debug('l_status_code_meaning :'||l_status_code_meaning, 'get_tooltip_data_gantt', fnd_log.level_statement);
1016     END IF;
1017     test('l_feed_time    :'||l_feed_time);
1018     test('l_status       :'||l_status   );
1019     test('l_latitude     :'||l_latitude );
1020     test('l_longitude    :'||l_longitude);
1021     test('l_speed        :'||l_speed    );
1022     test('l_direction    :'||l_direction);
1023     test('l_parked_time  :'||l_parked_time);
1024     test('l_address      :'||l_address  );
1025     test('l_creation_date :'||l_creation_date);
1026     test('l_device_tag    :'||l_device_tag);
1027     test('l_status_code_meaning :'||l_status_code_meaning);
1028     */
1029 
1030 
1031          l_str :=
1032           '<TOOLTIP>'
1033           || '<CENTER fgColor='
1034           || 0
1035           || '>'
1036           || l_task_rec.task_name
1037           || '</CENTER>'
1038           || '<LINE></LINE>'
1039           || '<LABEL>'
1040           || g_task_number
1041           || '</LABEL>'
1042           || '<VALUE fgColor='
1043           || 0
1044           || '>'
1045           || l_task_rec.task_number
1046           || '</VALUE>'
1047           || '<LABEL>'
1048           || g_task_type
1049           || '</LABEL>'
1050           || '<VALUE fgColor='
1051           || 0
1052           || '>'
1053           || l_task_rec.task_type
1054           || '</VALUE>'
1055           || '<LABEL>'
1056           || g_task_status
1057           || '</LABEL>'
1058           || '<VALUE fgColor='
1059           || 0
1060           || '>'
1061           || l_task_rec.task_status
1062           || '</VALUE>';
1063     /*
1064           If CSF_GPS_PUB.IS_GPS_ENABLED='Y'
1065           THEN
1066            l_str :=l_str|| '<LINE></LINE>'
1067           ||'<LABEL>'
1068           || g_tech_status
1069           || '</LABEL>'
1070           || '<VALUE fgColor='
1071           || 0
1072           || '>'
1073           || l_status_code_meaning
1074           || '</VALUE>'
1075           ||'<LABEL>'
1076           || g_tech_lat
1077           || '</LABEL>'
1078           || '<VALUE fgColor='
1079           || 0
1080           || '>'
1081           || l_latitude
1082           || '</VALUE>'
1083           ||'<LABEL>'
1084           || g_tech_lon
1085           || '</LABEL>'
1086           || '<VALUE fgColor='
1087           || 0
1088           || '>'
1089           || l_longitude
1090           || '</VALUE>'
1091           || '<LABEL>'
1092           ||  g_address
1093           || '</LABEL>'
1094           || '<VALUE fgColor='
1095           || 0
1096           || '>'
1097           || l_address
1098           || '</VALUE>'
1099           ||'<LABEL>'
1100           || g_tech_dev_tag
1101           || '</LABEL>'
1102           || '<VALUE fgColor='
1103           || 0
1104           || '>'
1105           || l_device_tag
1106           || '</VALUE>';
1107           END IF;
1108 		  */
1109           l_str :=l_str
1110           || '<LINE></LINE>'
1111           || '<LABEL>'
1112           || g_cust_name
1113           || '</LABEL>'
1114           || '<VALUE fgColor='
1115           || 0
1116           || '>'
1117           || l_rec.incident_customer_name
1118           || '</VALUE>'
1119           || '<LABEL>'
1120           ||  g_address
1121           || '</LABEL>'
1122           || '<VALUE fgColor='
1123           || 0
1124           || '>'
1125           || l_task_rec.small_address
1126           || '</VALUE>';
1127 
1128     IF  p_timezone_enb
1129     THEN
1130           l_str :=
1131           l_str
1132           || '<LABEL>'
1133           || g_timezone
1134           || '</LABEL>'
1135           || '<VALUE fgColor='
1136           || 0
1137           || '>'
1138           || l_tz_desc
1139           || '</VALUE>';
1140     END IF;
1141     IF l_sr_rec.product_name IS NOT NULL THEN
1142         l_str  :=
1143         l_str
1144           || '<LABEL>'
1145           || g_product_name
1146           || '</LABEL>'
1147           || '<VALUE fgColor='
1148           || 0
1149           || '>'
1150           || l_sr_rec.product_name
1151           || '</VALUE>';
1152       IF l_ib_rec.serial_number IS NOT NULL THEN
1153           l_str  :=
1154           l_str
1155           || '<LABEL>'
1156           || g_serial
1157           || '</LABEL>'
1158           || '<VALUE fgColor='
1159           || 0
1160           || '>'
1161           || l_ib_rec.serial_number
1162           || '</VALUE>';
1163       END IF;
1164     END IF;
1165     IF  p_timezone_enb
1166     THEN
1167           l_str  :=
1168           l_str
1169           || '<LABEL>'
1170           || g_planned_start
1171           || '</LABEL>'
1172           || '<VALUE fgColor='
1173           || 0
1174           || '>'
1175           || to_char(l_ic_planned_start_date,g_date_format||' hh24:mi')
1176           || '</VALUE>'
1177           || '<LABEL>'
1178           || g_end
1179           || '</LABEL>'
1180           || '<VALUE fgColor='
1181           || 0
1182           || '>'
1183           || to_char(l_ic_planned_end_date,g_date_format||' hh24:mi')
1184           || '</VALUE>'
1185           || '<LABEL>'
1186           || g_planned_effort
1187           || '</LABEL>'
1188           || '<VALUE fgColor='
1189           || 0
1190           || '>'
1191           || l_planned_effort
1192           || '</VALUE>'
1193           || '<LABEL>'
1194           || g_sched_start
1195           || '</LABEL>'
1196           || '<VALUE fgColor='
1197           || 0
1198           || '>'
1199           || to_char(l_ic_scheduled_start_date,g_date_format||' hh24:mi')
1200           || '</VALUE>'
1201           || '<LABEL>'
1202           || g_end
1203           || '</LABEL>'
1204           || '<VALUE fgColor='
1205           || 0
1206           || '>'
1207           || to_char(l_ic_scheduled_end_date,g_date_format||' hh24:mi')
1208           || '</VALUE>';
1209         IF l_task_rec.actual_start_date IS NOT NULL THEN
1210           l_str  :=
1211           l_str
1212           || '<LABEL>'
1213           || g_actual_start
1214           || '</LABEL>'
1215           || '<VALUE fgColor='
1216           || 0
1217           || '>'
1218           || to_char(l_ic_actual_start_date,g_date_format||' hh24:mi')
1219           || '</VALUE>'
1220           || '<LABEL>'
1221           || g_end
1222           || '</LABEL>'
1223           || '<VALUE fgColor='
1224           || 0
1225           || '>'
1226           || to_char(l_ic_actual_end_date,g_date_format||' hh24:mi')
1227           || '</VALUE>'
1228           || '<LABEL>'
1229           || g_actual_effort
1230           || '</LABEL>'
1231           || '<VALUE fgColor='
1232           || 0
1233           || '>'
1234           || l_actual_effort
1235           || '</VALUE>';
1236 
1237         END IF;
1238         l_rs_ic_tz_present :=true;
1239         If (l_task_rec.ic_tz_code is null and l_task_rec.task_type_id not IN (20, 21)) or (l_res_tz_cd is null and l_task_rec.task_type_id IN(20, 21))
1240         Then
1241           l_str :=
1242           l_str|| '<LINE></LINE>';
1243           l_rs_ic_tz_present:=false;
1244         end if;
1245     ELSE
1246           l_str :=
1247           l_str|| '<LINE></LINE>';
1248     END IF;
1249     IF l_rs_ic_tz_present
1250     THEN
1251           l_str :=
1252           l_str
1253           || '<LABEL>'
1254           || g_departure
1255           || '</LABEL>'
1256           || '<VALUE fgColor='
1257           || 0
1258           || '>'
1259           || to_char(l_rec.departure_time,g_date_format||' hh24:mi')
1260           || '</VALUE>'
1261           || '<LABEL>'
1262           || g_travel_time
1263           || '</LABEL>'
1264           || '<VALUE fgColor='
1265           || 0
1266           || '>'
1267           || l_rec.travel_time
1268           || '</VALUE>';
1269     IF g_commute = 'PARTIAL'
1270     THEN
1271           l_str :=
1272           l_str
1273           || '<LABEL>'
1274           || g_off_time
1275           || '</LABEL>'
1276           || '<VALUE fgColor='
1277           || 0
1278           || '>'
1279           || l_off_time
1280           || '</VALUE>'
1281           || '<LABEL>'
1282           || g_per_time
1283           || '</LABEL>'
1284           || '<VALUE fgColor='
1285           || 0
1286           || '>'
1287           || l_per_time
1288           || '</VALUE>';
1289     END IF;
1290             l_str  :=
1291             l_str|| '<LINE></LINE>';
1292      END IF;
1293           l_str  :=
1294           l_str
1295           || '<LABEL>'
1296           || g_planned_start
1297           || '</LABEL>'
1298           || '<VALUE fgColor='
1299           || 0
1300           || '>'
1301           || to_char(l_dc_planned_start_date,g_date_format||' hh24:mi')
1302           || '</VALUE>'
1303           || '<LABEL>'
1304           || g_end
1305           || '</LABEL>'
1306           || '<VALUE fgColor='
1307           || 0
1308           || '>'
1309           || to_char(l_dc_planned_end_date,g_date_format||' hh24:mi')
1310           || '</VALUE>'
1311           || '<LABEL>'
1312           || g_sched_start
1313           || '</LABEL>'
1314           || '<VALUE fgColor='
1315           || 0
1316           || '>'
1317           || to_char(l_dc_scheduled_start_date,g_date_format||' hh24:mi')
1318           || '</VALUE>'
1319           || '<LABEL>'
1320           || g_end
1321           || '</LABEL>'
1322           || '<VALUE fgColor='
1323           || 0
1324           || '>'
1325           || to_char(l_dc_scheduled_end_date,g_date_format||' hh24:mi')
1326           || '</VALUE>';
1327     IF l_task_rec.actual_start_date IS NOT NULL THEN
1328           l_str  :=
1329           l_str
1330           || '<LABEL>'
1331           || g_actual_start
1332           || '</LABEL>'
1333           || '<VALUE fgColor='
1334           || 0
1335           || '>'
1336           || to_char(l_dc_actual_start_date,g_date_format||' hh24:mi')
1337           || '</VALUE>'
1338           || '<LABEL>'
1339           || g_end
1340           || '</LABEL>'
1341           || '<VALUE fgColor='
1342           || 0
1343           || '>'
1344           || to_char(l_dc_actual_end_date,g_date_format||' hh24:mi')
1345           || '</VALUE>'
1346           ;
1347     END IF;
1348     IF l_rs_ic_tz_present = false OR p_timezone_enb=False
1349     THEN
1350           l_str :=
1351           l_str
1352           || '<LABEL>'
1353           || g_departure
1354           || '</LABEL>'
1355           || '<VALUE fgColor='
1356           || 0
1357           || '>'
1358           || to_char(l_rec.departure_time,g_date_format||' hh24:mi')
1359           || '</VALUE>'
1360           || '<LABEL>'
1361           || g_travel_time
1362           || '</LABEL>'
1363           || '<VALUE fgColor='
1364           || 0
1365           || '>'
1366           || l_rec.travel_time
1367           || '</VALUE>';
1368     IF g_commute = 'PARTIAL'
1369     THEN
1370           l_str :=
1371           l_str
1372           || '<LABEL>'
1373           || g_off_time
1374           || '</LABEL>'
1375           || '<VALUE fgColor='
1376           || 0
1377           || '>'
1378           || l_off_time
1379           || '</VALUE>'
1380           || '<LABEL>'
1381           || g_per_time
1382           || '</LABEL>'
1383           || '<VALUE fgColor='
1384           || 0
1385           || '>'
1386           || l_per_time
1387           || '</VALUE>';
1388       END IF;
1389      END IF;
1390     l_str  :=l_str|| '</TOOLTIP>';
1391     IF l_debug THEN
1392             debug(' Tooltip string :'||l_str , 'get_tooltip_data_gantt', fnd_log.level_statement);
1393    END IF;
1394     RETURN l_str;
1395   END get_tooltip_data_gantt;
1396   FUNCTION get_tooltip_data_gantt_cust(
1397     p_task_id        NUMBER
1398   , p_resource_id    NUMBER
1399   , p_resource_type  VARCHAR2
1400   , p_start_date     DATE
1401   , p_end_date       DATE
1402   , p_inc_tz_code    VARCHAR2
1403   , p_server_tz_code VARCHAR2
1404   , p_client_tz_code VARCHAR2
1405   , p_timezone_enb   boolean
1406   )
1407     RETURN VARCHAR2 IS
1408 
1409      CURSOR c_cust_tooltip is
1410       SELECT field_name
1411         FROM csf_gantt_chart_setup
1412        WHERE user_id = fnd_global.user_id
1413          AND setup_type = 'TOOLTIP'
1414       ORDER BY seq_no;
1415 
1416      CURSOR c_cust_default_tooltip is
1417      SELECT field_name
1418         FROM csf_gantt_chart_setup
1419        WHERE user_id = -1
1420          AND setup_type = 'TOOLTIP'
1421       ORDER BY seq_no;
1422 
1423 
1424     -- task and task assignment data
1425     CURSOR c_task IS
1426       SELECT /*+ ORDERED use_nl (a tb tt tl sb sl pi ps hl ft)
1427                      INDEX (t,JTF_TASKS_B_U3)
1428                      INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
1429              tb.task_id
1430            , tl.task_name
1431            , tb.task_number
1432            , tb.source_object_type_code
1433            , tb.source_object_id
1434            , tt.NAME task_type
1435            , sl.NAME task_status
1436            , a.resource_id
1437            , a.resource_type_code resource_type
1438            , tb.planned_start_date
1439            , tb.planned_end_date
1440            , scheduled_start_date
1441            , scheduled_end_date
1442            , a.actual_start_date
1443            , a.actual_end_date
1444            , a.sched_travel_duration
1445            , a.sched_travel_duration_uom
1446            , tb.customer_id party_id
1447            , NVL(sb.assigned_flag, 'N') assigned_flag
1448            , tb.task_type_id
1449            , csf_tasks_pub.get_task_address(tb.task_id,tb.address_id,tb.location_id,'Y') small_address
1450            , pi.party_name party_name
1451            , a.actual_travel_duration
1452            , a.actual_travel_duration_uom
1453            , tz.ACTIVE_TIMEZONE_CODE ic_tz_code
1454            , tz.ACTIVE_TIMEZONE_CODE|| ' (GMT ' ||to_char(trunc(gmt_offset),'S09') || ':' || to_char(abs(gmt_offset - trunc(gmt_offset))*60,'FM900') || ') ' tz_desc
1455            , tb.planned_effort ||' '|| tb.planned_effort_uom plan_effort
1456            , tb.actual_effort ||' '|| tb.actual_effort_uom   act_effort
1457         FROM jtf_task_assignments a
1458            , jtf_tasks_b tb
1459            , jtf_task_types_tl tt
1460            , jtf_tasks_tl tl
1461            , jtf_task_statuses_b sb
1462            , jtf_task_statuses_tl sl
1463            , hz_party_sites ps
1464            , hz_locations hl
1465            , hz_parties pi
1466            , fnd_timezones_b tz
1467        WHERE a.task_id = p_task_id
1468          AND resource_id = p_resource_id
1469          AND resource_type_code = p_resource_type
1470          AND tb.task_id = a.task_id
1471          AND tt.LANGUAGE = l_language
1472          AND tt.task_type_id = tb.task_type_id
1473          AND sl.LANGUAGE = l_language
1474          AND sb.task_status_id = a.assignment_status_id
1475          AND sl.task_status_id = sb.task_status_id
1476          AND tl.LANGUAGE = l_language
1477          AND tl.task_id = tb.task_id
1478          AND ps.party_site_id(+) = tb.address_id
1479          AND hl.location_id(+) = ps.location_id
1480          AND pi.party_id(+) = tb.customer_id
1481          AND NVL(sb.cancelled_flag, 'N') <> 'Y'
1482          AND tz.UPGRADE_TZ_ID(+) = hl.timezone_id;
1483 
1484     CURSOR c_sr(b_incident_id NUMBER) IS
1485       SELECT /*+ ORDERED USE_NL */
1486              i.customer_product_id
1487            , i.current_serial_number
1488            , si.concatenated_segments product_name
1489         FROM cs_incidents_all_b i, mtl_system_items_kfv si
1490        WHERE si.inventory_item_id(+) = i.inventory_item_id
1491          AND si.organization_id(+) = i.inv_organization_id
1492          AND i.incident_id = b_incident_id;
1493 
1494     l_uom       VARCHAR2(2000)        := NULL;
1495     l_Res_Timezone_id   Number;
1496     l_res_tz_cd varchar2(100);
1497     CURSOR c_uom(p_code VARCHAR2) IS
1498       SELECT unit_of_measure_tl
1499         FROM mtl_units_of_measure_vl
1500        WHERE uom_code = p_code;
1501 
1502     CURSOR c_parts(b_task_id NUMBER) IS
1503       SELECT 'Y' required
1504         FROM csp_requirement_headers
1505        WHERE task_id = b_task_id;
1506 
1507     CURSOR c_ib(b_customer_product_id NUMBER) IS
1508       SELECT serial_number
1509            , lot_number
1510         FROM csi_item_instances
1511        WHERE instance_id = b_customer_product_id;
1512 
1513     Cursor C_Res_TimeZone Is
1514      Select TIME_ZONE
1515      From JTF_RS_RESOURCE_EXTNS
1516      Where RESOURCE_ID = p_resource_id
1517      ;
1518     Cursor c_res_tz
1519     IS
1520      SELECT ACTIVE_TIMEZONE_CODE,ACTIVE_TIMEZONE_CODE|| ' (GMT ' ||to_char(trunc(gmt_offset),'S09') || ':' || to_char(abs(gmt_offset - trunc(gmt_offset))*60,'FM900') || ') ' tz_desc
1521      FROM fnd_timezones_vl ft
1522      WHERE UPGRADE_TZ_ID =l_Res_TimeZone_id;
1523 
1524      Cursor c_trip
1525      IS
1526         SELECT   object_capacity_id
1527           FROM   jtf_task_assignments ja
1528                , jtf_tasks_b jb
1529          WHERE   ja.task_id = jb.task_id
1530            AND   ja.task_id = p_task_id
1531            AND   jb.task_type_id not in (20,21)
1532 		   AND   ja.object_capacity_id is not null
1533 		   and   nvl(jb.deleted_flag,'N') <> 'Y';
1534 
1535      Cursor  c_tasks(l_capacity number)
1536      IS
1537        SELECT ja.task_id
1538          FROM jtf_task_assignments ja ,
1539               jtf_tasks_b jb                ,
1540               jtf_task_statuses_b js
1541         WHERE ja.task_id                  = jb.task_id
1542           AND js.task_status_id           = jb.task_status_id
1543           AND ja.object_capacity_id       = l_capacity
1544           AND ja.resource_id              = p_resource_id
1545           AND NVL(js.cancelled_flag,'N') <> 'Y'
1546           AND NVL(js.rejected_flag,'N')  <> 'Y'
1547           AND NVL(jb.deleted_flag,'N')   <> 'Y'
1548           AND jb.task_type_id NOT        IN (20,21)
1549           AND ja.object_capacity_id      IS NOT NULL
1550       ORDER BY NVL(ja.actual_start_date,jb.scheduled_start_date);
1551 
1552       Cursor c_arr
1553     IS
1554        SELECT  ja.task_id
1555              , ja.actual_travel_duration
1556              , ja.sched_travel_duration
1557              , ja.actual_travel_duration_uom
1558              , ja.sched_travel_duration_uom
1559          FROM jtf_task_assignments ja ,
1560               jtf_tasks_b jb
1561         WHERE ja.task_id        = jb.task_id
1562          AND jb.task_type_id      IN (21)
1563          AND ja.task_id= p_task_id;
1564 
1565     Cursor c_terr
1566 	IS
1567 	   SELECT territory_id
1568    	     FROM csf_dc_resources_v
1569 	    WHERE resource_id = p_resource_id
1570 	      AND resource_type   = p_resource_type;
1571 
1572     l_task_rec  c_task%ROWTYPE;
1573     l_sr_rec    c_sr%ROWTYPE;
1574     l_parts_rec c_parts%ROWTYPE;
1575     l_ib_rec    c_ib%ROWTYPE;
1576     l_rec       tooltip_data_rec_type := NULL;
1577     p_color     NUMBER                := 255;
1578     l_str       VARCHAR2(4000)        := NULL;
1579 
1580     l_ic_planned_start_date   date;
1581     l_ic_planned_end_date     date;
1582     l_ic_scheduled_start_date date;
1583     l_ic_scheduled_end_date   date;
1584     l_ic_actual_start_date    date;
1585     l_ic_actual_end_date      date;
1586 
1587 
1588     l_dc_planned_start_date   date;
1589     l_dc_planned_end_date     date;
1590     l_dc_scheduled_start_date date;
1591     l_dc_scheduled_end_date   date;
1592     l_dc_actual_start_date    date;
1593     l_dc_actual_end_date      date;
1594     l_actual_start_date       date;
1595     l_scheduled_start_date    date;
1596     l_tz_desc                 varchar2(100);
1597     l_rs_tz_desc              varchar2(100);
1598     l_rs_ic_tz_present        boolean;
1599     l_lines                   number;                --bug no 5674408
1600     l_off_time                varchar2(200);
1601     l_per_time                varchar2(200);
1602     l_planned_effort          varchar2(200);
1603     l_actual_effort           varchar2(200);
1604     l_task_tbl                jtf_number_table;
1605     l_capacity                number;
1606     i                         number;
1607     j                         number;
1608     l_first                   number;
1609     l_last                    number;
1610 	  l_territory               number;
1611 	  l_arr                     c_arr%rowtype;
1612 
1613     l_feed_time               varchar2(100);
1614     l_status                  varchar2(100);
1615     l_latitude                varchar2(100);
1616     l_longitude               varchar2(100);
1617     l_speed                   varchar2(100);
1618     l_direction               varchar2(100);
1619     l_parked_time             varchar2(100);
1620     l_address                 varchar2(100);
1621     l_creation_date           varchar2(100);
1622     l_device_tag              varchar2(100);
1623     l_status_code_meaning     varchar2(100);
1624     l_return_status           varchar2(2);
1625     l_msg_count               NUMBER;
1626     l_msg_data                varchar2(100);
1627 
1628     g_tooltip_fields 		  VARCHAR2(4000);
1629     l_count     			  NUMBER;
1630     l_field     			  VARCHAR2(2000);
1631     l_var     				  VARCHAR2(2000);
1632 
1633 
1634   BEGIN
1635 
1636 
1637   open c_terr;
1638 	fetch c_terr into l_territory;
1639 	close c_terr;
1640 
1641     g_excl_travel := csr_scheduler_pub.get_sch_parameter_value(  'spCommuteExcludedTime'
1642                                                               , fnd_global.resp_appl_id
1643                                                               , fnd_global.resp_id
1644                                                               , fnd_global.user_id
1645                                                               , l_territory
1646                                                               , p_resource_type
1647                                                               , p_resource_id
1648                                                               );
1649    g_commute := csr_scheduler_pub.get_sch_parameter_value(  'spCommutesPosition'
1650                                                               , fnd_global.resp_appl_id
1651                                                               , fnd_global.resp_id
1652                                                               , fnd_global.user_id
1653                                                               , l_territory
1654                                                               , p_resource_type
1655                                                               , p_resource_id
1656                                                               );
1657 
1658     OPEN c_task;
1659     FETCH c_task INTO l_task_rec;
1660     IF c_task%NOTFOUND THEN
1661       CLOSE c_task;
1662 
1663       RAISE NO_DATA_FOUND;
1664     END IF;
1665     l_task_tbl := jtf_number_table();
1666 
1667     OPEN c_trip;
1668     FETCH c_trip into l_capacity;
1669     CLOSE c_trip;
1670 
1671     OPEN c_tasks(l_capacity);
1672     FETCH c_tasks BULK COLLECT INTO l_task_tbl;
1673     CLOSE c_tasks;
1674 
1675     IF l_task_tbl.count > 0
1676     THEN
1677       i := l_task_tbl.FIRST;
1678       j := l_task_tbl.LAST;
1679       l_first := l_task_tbl(i);
1680       l_last := l_task_tbl(j);
1681     END IF;
1682 
1683     open c_arr;
1684     fetch c_arr into l_arr;
1685     close c_arr;
1686 
1687     IF l_task_rec.task_type_id NOT IN(20, 21)
1688     THEN
1689       l_planned_effort := l_task_rec.plan_effort;
1690       l_actual_effort  := l_task_rec.act_effort;
1691 
1692       IF l_task_rec.scheduled_start_date <> l_task_rec.scheduled_end_date
1693       THEN
1694         IF (   l_task_rec.scheduled_start_date <> p_start_date
1695             OR l_task_rec.scheduled_end_date <> p_end_date
1696            )
1697         AND  l_task_rec.actual_start_date is null
1698         THEN
1699           CLOSE c_task;
1700 
1701           RAISE NO_DATA_FOUND;
1702         END IF;
1703       END IF;
1704 	  IF ((l_task_rec.task_type_id NOT IN(20, 21)) AND (l_task_rec.source_object_type_code<>'TASK'))
1705 	  THEN
1706 		  OPEN c_sr(l_task_rec.source_object_id);
1707 		  FETCH c_sr INTO l_sr_rec;
1708 
1709 		  IF l_sr_rec.customer_product_id IS NOT NULL THEN
1710 			OPEN c_ib(l_sr_rec.customer_product_id);
1711 			FETCH c_ib INTO l_ib_rec;
1712 			CLOSE c_ib;
1713 		  ELSE
1714 			l_ib_rec.serial_number  := l_sr_rec.current_serial_number;
1715 			l_ib_rec.lot_number     := NULL;   -- not yet supported
1716 		  END IF;
1717 	  END IF;
1718    END IF;
1719    l_rec.incident_customer_name  := l_task_rec.party_name;
1720 
1721    --begin addition for bug 5674408
1722    IF (LENGTH(NVL(l_task_rec.party_name, 0)) > 80)
1723    THEN
1724        l_lines := ceil(length(l_task_rec.party_name)/80) - 1;
1725        l_rec.incident_customer_name := null;
1726 
1727        for i in 1..l_lines
1728        loop
1729            l_rec.incident_customer_name := l_rec.incident_customer_name || SUBSTRB (l_task_rec.party_name, 1, 80) || fnd_global.local_chr (10);
1730            l_task_rec.party_name := substrb(l_task_rec.party_name,81);
1731        end loop;
1732 
1733        l_rec.incident_customer_name := l_rec.incident_customer_name || SUBSTRB (l_task_rec.party_name, 1);
1734    END IF;
1735    --end addition for bug 5674408
1736 
1737    l_Res_TimeZone_id:=NULL;
1738    IF l_task_rec.task_type_id IN(20, 21)
1739    THEN
1740      Open  C_Res_TimeZone ;
1741      Fetch C_Res_TimeZone into l_Res_TimeZone_id;
1742      Close C_Res_TimeZone ;
1743 
1744      if l_Res_TimeZone_id is not null
1745      then
1746        Open  c_res_tz ;
1747        Fetch c_res_tz into l_res_tz_cd,l_rs_tz_desc;
1748        Close c_res_tz ;
1749      end  if;
1750      if p_timezone_enb
1751      then
1752        if l_res_tz_cd is not null
1753        then
1754          l_ic_planned_start_date   :=fnd_date.adjust_datetime( l_task_rec.planned_start_date,p_server_tz_code,l_res_tz_cd);
1755          l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_res_tz_cd);
1756          l_ic_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_res_tz_cd);
1757          l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_res_tz_cd);
1758          l_tz_desc                 :=l_rs_tz_desc;
1759        end if;
1760      else
1761         l_ic_planned_start_date   :=l_task_rec.planned_start_date;
1762         l_ic_planned_end_date     :=l_task_rec.planned_end_date;
1763         l_ic_scheduled_start_date :=p_start_date;
1764         l_ic_scheduled_end_date   :=p_end_date;
1765      end if;
1766    END IF;
1767 
1768     IF l_task_rec.actual_start_date is  not null
1769     THEN
1770 
1771       if p_inc_tz_code ='UTZ'and  p_timezone_enb
1772       then
1773         l_dc_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,p_client_tz_code);
1774         l_dc_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,p_client_tz_code);
1775         l_dc_scheduled_start_date :=fnd_date.adjust_datetime(l_task_rec.scheduled_start_date,p_server_tz_code,p_client_tz_code);
1776         l_dc_scheduled_end_date   :=fnd_date.adjust_datetime(l_task_rec.scheduled_end_date,p_server_tz_code,p_client_tz_code);
1777         l_dc_actual_start_date    :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_client_tz_code);
1778         l_dc_actual_end_date      :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_client_tz_code);
1779       else
1780         l_dc_planned_start_date   :=l_task_rec.planned_start_date;
1781         l_dc_planned_end_date     :=l_task_rec.planned_end_date;
1782         l_dc_scheduled_start_date :=l_task_rec.scheduled_start_date;
1783         l_dc_scheduled_end_date   :=l_task_rec.scheduled_end_date;
1784         l_dc_actual_start_date    :=p_start_date;
1785         l_dc_actual_end_date      :=p_end_date;
1786       end if;
1787       l_actual_start_date :=l_dc_actual_start_date;
1788       if l_task_rec.ic_tz_code is not null and  p_timezone_enb
1789       then
1790         l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
1791         l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
1792         l_ic_scheduled_start_date :=fnd_date.adjust_datetime(l_task_rec.scheduled_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
1793         l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(l_task_rec.scheduled_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
1794         l_ic_actual_start_date    :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
1795         l_ic_actual_end_date      :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
1796         l_actual_start_date       :=l_ic_actual_start_date;
1797         l_tz_desc                 :=l_task_rec.tz_desc;
1798       end if;
1799 
1800       l_rec.departure_time:=
1801           l_actual_start_date - (
1802                                inv_convert.inv_um_convert(
1803                                 0
1804                                , NULL
1805                                , NVL(l_task_rec.actual_travel_duration, 0)
1806                                , NVL(l_task_rec.actual_travel_duration_uom, g_uom_minutes)
1807                                , g_uom_hours
1808                                , NULL
1809                                , NULL
1810                                )
1811                              / 24
1812                             );
1813 
1814         OPEN c_uom(NVL(l_task_rec.actual_travel_duration_uom, g_uom_minutes));
1815         FETCH c_uom INTO l_uom;
1816         IF c_uom%NOTFOUND THEN
1817           l_uom  := NVL(l_task_rec.actual_travel_duration_uom, g_uom_minutes);
1818         END IF;
1819         CLOSE c_uom;
1820 
1821         l_rec.travel_time := NVL(l_task_rec.actual_travel_duration, 0) || ' ' || l_uom;
1822         IF   p_task_id = l_first
1823            OR p_task_id = l_arr.task_id
1824 		   OR p_task_id = l_last
1825         THEN
1826            IF p_task_id = l_arr.task_id
1827            THEN
1828              if l_arr.actual_travel_duration > 0
1829               then
1830                  if l_arr.actual_travel_duration >  to_number(g_excl_travel)
1831                  then
1832                    l_off_time := (l_arr.actual_travel_duration - to_number(g_excl_travel)) || ' ' || l_uom;
1833                    l_per_time := g_excl_travel || ' ' || l_uom;
1834                  elsif l_arr.actual_travel_duration <= to_number(g_excl_travel)
1835                  then
1836                   l_per_time := l_arr.actual_travel_duration|| ' ' || l_uom;
1837                  end if;
1838               end if;
1839            ELSE
1840               if l_task_rec.actual_travel_duration > 0
1841               then
1842                  if l_task_rec.actual_travel_duration >  to_number(g_excl_travel)
1843                  then
1844                    l_off_time := (l_task_rec.actual_travel_duration - to_number(g_excl_travel)) || ' ' || l_uom;
1845                    l_per_time := g_excl_travel || ' ' || l_uom;
1846                  elsif l_task_rec.actual_travel_duration <= to_number(g_excl_travel)
1847                  then
1848                   l_per_time := l_task_rec.actual_travel_duration|| ' ' || l_uom;
1849                  end if;
1850               end if;
1851             END IF;
1852         END IF;
1853     ELSE
1854       if p_inc_tz_code ='UTZ'and  p_timezone_enb
1855       then
1856         l_dc_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,p_client_tz_code);
1857         l_dc_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,p_client_tz_code);
1858         l_dc_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_client_tz_code);
1859         l_dc_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_client_tz_code);
1860       else
1861         l_dc_planned_start_date   :=l_task_rec.planned_start_date;
1862         l_dc_planned_end_date     :=l_task_rec.planned_end_date;
1863         l_dc_scheduled_start_date :=p_start_date;
1864         l_dc_scheduled_end_date   :=p_end_date;
1865       end if;
1866       l_scheduled_start_date :=l_dc_scheduled_start_date;
1867       if l_task_rec.ic_tz_code is not null and  p_timezone_enb and  l_task_rec.task_type_id not in (20, 21)
1868       then
1869         l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
1870         l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
1871         l_ic_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
1872         l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
1873         l_scheduled_start_date    :=l_ic_scheduled_start_date;
1874         l_tz_desc                 :=l_task_rec.tz_desc;
1875       elsif l_res_tz_cd is not null and  p_timezone_enb
1876       then
1877         l_scheduled_start_date    :=l_ic_scheduled_start_date;
1878       end if;
1879 
1880       l_rec.departure_time:=
1881             l_scheduled_start_date - (
1882                                inv_convert.inv_um_convert(
1883                                  0
1884                                , NULL
1885                                , NVL(l_task_rec.sched_travel_duration, 0)
1886                                , NVL(l_task_rec.sched_travel_duration_uom, g_uom_minutes)
1887                                , g_uom_hours
1888                                , NULL
1889                                , NULL
1890                                )
1891                              / 24
1892                             );
1893 
1894          OPEN c_uom(NVL(l_task_rec.sched_travel_duration_uom, g_uom_minutes));
1895     	 FETCH c_uom INTO l_uom;
1896          IF c_uom%NOTFOUND THEN
1897             l_uom  := NVL(l_task_rec.sched_travel_duration_uom, g_uom_minutes);
1898          END IF;
1899          CLOSE c_uom;
1900          l_rec.travel_time := NVL(l_task_rec.sched_travel_duration, 0) || ' ' || l_uom;
1901          IF   p_task_id = l_first
1902            OR p_task_id = l_arr.task_id
1903 		   OR p_task_id = l_last
1904          THEN
1905             IF p_task_id = l_arr.task_id
1906             THEN
1907                 if l_arr.sched_travel_duration > 0
1908                 then
1909                  if l_arr.sched_travel_duration >  to_number(g_excl_travel)
1910                  then
1911                    l_off_time := (l_arr.sched_travel_duration - to_number(g_excl_travel)) || ' ' || l_uom;
1912                    l_per_time := g_excl_travel || ' ' || l_uom;
1913                  elsif l_arr.sched_travel_duration <= to_number(g_excl_travel)
1914                  then
1915                   l_per_time := NVL(l_task_rec.sched_travel_duration, 0) || ' ' || l_uom;
1916                  end if;
1917                 end if;
1918             ELSE
1919                 if l_task_rec.sched_travel_duration > 0
1920                 then
1921                  if l_task_rec.sched_travel_duration >  to_number(g_excl_travel)
1922                  then
1923                    l_off_time := (l_task_rec.sched_travel_duration - to_number(g_excl_travel)) || ' ' || l_uom;
1924                    l_per_time := g_excl_travel || ' ' || l_uom;
1925                  elsif l_task_rec.sched_travel_duration <= to_number(g_excl_travel)
1926                  then
1927                   l_per_time := l_rec.travel_time;
1928                  end if;
1929                 end if;
1930             END IF;
1931         END IF;
1932     END IF;
1933     l_rec.assigned_flag           := l_task_rec.assigned_flag;
1934     l_rec.is_plan_option          := 'N';
1935 
1936 
1937 
1938     /*test('P_RESOURCE_ID    :'||p_resource_id);
1939 
1940     test('P_RESOURCE_TYPE       :'||p_resource_type   );
1941     test(' Gps Code : '||CSF_GPS_PUB.IS_GPS_ENABLED);
1942     test('P_DATE     :'||to_char(p_start_date,'dd-mon-rrrr hh24:mi:ss') );
1943 */
1944 
1945     If CSF_GPS_PUB.IS_GPS_ENABLED='Y'
1946     THEN
1947 
1948     csf_resource_pub.get_location(
1949      x_return_status      => l_return_status
1950     ,x_msg_count          => l_msg_count
1951     ,x_msg_data           => l_msg_data
1952     ,p_resource_id        => p_resource_id
1953     ,p_resource_type      => p_resource_type
1954     ,p_date               => p_start_date
1955     ,x_creation_date      => l_creation_date
1956     ,x_feed_time          => l_feed_time
1957     ,x_status_code        => l_status
1958     ,x_latitude           => l_latitude
1959     ,x_longitude          => l_longitude
1960     ,x_speed              => l_speed
1961     ,x_direction          => l_direction
1962     ,x_parked_time        => l_parked_time
1963     ,x_address            => l_address
1964     ,x_device_tag         => l_device_tag
1965     ,x_status_code_meaning=> l_status_code_meaning
1966     );
1967     END IF;
1968   /*
1969     test('l_feed_time    :'||l_feed_time);
1970     test('l_status       :'||l_status   );
1971     test('l_latitude     :'||l_latitude );
1972     test('l_longitude    :'||l_longitude);
1973     test('l_speed        :'||l_speed    );
1974     test('l_direction    :'||l_direction);
1975     test('l_parked_time  :'||l_parked_time);
1976     test('l_address      :'||l_address  );
1977     test('l_creation_date :'||l_creation_date);
1978     test('l_device_tag    :'||l_device_tag);
1979     test('l_status_code_meaning :'||l_status_code_meaning);
1980     */
1981 
1982     for tooltip_rec in c_cust_tooltip
1983     loop
1984       g_tooltip_fields := g_tooltip_fields || '-' || tooltip_rec.field_name;
1985 
1986       l_count:= nvl(l_count,0) + 1;
1987     end loop;
1988     if g_tooltip_fields is null then
1989        for tooltip_rec in c_cust_default_tooltip
1990        loop
1991         g_tooltip_fields := g_tooltip_fields || '-' || tooltip_rec.field_name;
1992 
1993          l_count:= nvl(l_count,0) + 1;
1994        end loop;
1995     end if;
1996 
1997     g_tooltip_fields := l_count || g_tooltip_fields || '-';
1998 
1999     if g_tooltip_fields is not null and length(g_tooltip_fields) > 2
2000     then
2001 
2002       l_count := substr(g_tooltip_fields,1,instr(g_tooltip_fields,'-')-1);
2003 
2004       l_var   := substr(g_tooltip_fields,instr(g_tooltip_fields,'-')+1);
2005 
2006 	  l_str :='<TOOLTIP>';
2007         for i in 1..l_count
2008         loop
2009           l_field := substr(l_var,1,instr(l_var,'-')-1);
2010 
2011           l_var := substr(l_var,instr(l_var,'-')+1);
2012 
2013           if l_field = 'TASK_NAME'
2014           then
2015                 l_str := l_str
2016                 || '<LABEL>'
2017                 || g_task_name
2018                 || '</LABEL>'
2019                 || '<VALUE fgColor='
2020                 || 0
2021                 || '>'
2022                 || l_task_rec.task_name
2023                 || '</VALUE>';
2024           elsif  l_field = 'TASK_NUMBER'
2025           then
2026                 l_str := l_str
2027                 || '<LABEL>'
2028                 || g_task_number
2029                 || '</LABEL>'
2030                 || '<VALUE fgColor='
2031                 || 0
2032                 || '>'
2033                 || l_task_rec.task_number
2034                 || '</VALUE>';
2035           elsif l_field = 'TASK_TYPE'
2036           then
2037                 l_str := l_str
2038                 || '<LABEL>'
2039                 || g_task_type
2040                 || '</LABEL>'
2041                 || '<VALUE fgColor='
2042                 || 0
2043                 || '>'
2044                 || l_task_rec.task_type
2045                 || '</VALUE>';
2046           elsif l_field = 'ASSIGNMENT_STATUS'
2047           then
2048                 l_str := l_str
2049                 || '<LABEL>'
2050                 || g_task_status
2051                 || '</LABEL>'
2052                 || '<VALUE fgColor='
2053                 || 0
2054                 || '>'
2055                 || l_task_rec.task_status
2056                 || '</VALUE>';
2057           elsif l_field = 'TECHNICIAN_STATUS' AND CSF_GPS_PUB.IS_GPS_ENABLED='Y'
2058           then
2059                 l_str :=l_str
2060                 ||'<LABEL>'
2061                 || g_tech_status
2062                 || '</LABEL>'
2063                 || '<VALUE fgColor='
2064                 || 0
2065                 || '>'
2066                 || l_status_code_meaning
2067                 || '</VALUE>';
2068            elsif l_field = 'LATITUDE' AND CSF_GPS_PUB.IS_GPS_ENABLED='Y'
2069            then
2070                 l_str :=l_str
2071                 ||'<LABEL>'
2072                 || g_tech_lat
2073                 || '</LABEL>'
2074                 || '<VALUE fgColor='
2075                 || 0
2076                 || '>'
2077                 || l_latitude
2078                 || '</VALUE>';
2079            elsif l_field = 'LOGITUDE' AND CSF_GPS_PUB.IS_GPS_ENABLED='Y'
2080            then
2081                 l_str :=l_str
2082                 ||'<LABEL>'
2083                 || g_tech_lon
2084                 || '</LABEL>'
2085                 || '<VALUE fgColor='
2086                 || 0
2087                 || '>'
2088                 || l_longitude
2089                 || '</VALUE>';
2090             elsif l_field = 'RESOURCE_GPS_ADD' AND CSF_GPS_PUB.IS_GPS_ENABLED='Y'
2091             then
2092                 l_str :=l_str
2093                 || '<LABEL>'
2094                 ||  g_tech_cur_add
2095                 || '</LABEL>'
2096                 || '<VALUE fgColor='
2097                 || 0
2098                 || '>'
2099                 || l_address
2100                 || '</VALUE>';
2101             elsif l_field = 'GPS_DEVICE_TAG' AND CSF_GPS_PUB.IS_GPS_ENABLED='Y'
2102             then
2103                 l_str :=l_str
2104                 ||'<LABEL>'
2105                 || g_tech_dev_tag
2106                 || '</LABEL>'
2107                 || '<VALUE fgColor='
2108                 || 0
2109                 || '>'
2110                 || l_device_tag
2111                 || '</VALUE>';
2112             elsif l_field = 'CUSTOMER_NAME'
2113             then
2114                 l_str :=l_str
2115                 || '<LABEL>'
2116                 || g_cust_name
2117                 || '</LABEL>'
2118                 || '<VALUE fgColor='
2119                 || 0
2120                 || '>'
2121                 || l_rec.incident_customer_name
2122                 || '</VALUE>';
2123              elsif l_field = 'ADDRESS'
2124              then
2125                 l_str :=l_str
2126                 || '<LABEL>'
2127                 ||  g_address
2128                 || '</LABEL>'
2129                 || '<VALUE fgColor='
2130                 || 0
2131                 || '>'
2132                 || l_task_rec.small_address
2133                 || '</VALUE>';
2134              elsif l_field = 'TIMEZONE' AND p_timezone_enb
2135              then
2136                 l_str :=l_str
2137                 || '<LABEL>'
2138                 || g_timezone
2139                 || '</LABEL>'
2140                 || '<VALUE fgColor='
2141                 || 0
2142                 || '>'
2143                 || l_tz_desc
2144                 || '</VALUE>';
2145              elsif l_field = 'PRODUCT_NAME'
2146              then
2147               l_str := l_str
2148                 || '<LABEL>'
2149                 || g_product_name
2150                 || '</LABEL>'
2151                 || '<VALUE fgColor='
2152                 || 0
2153                 || '>'
2154                 || l_sr_rec.product_name
2155                 || '</VALUE>';
2156 
2157              elsif l_field = 'SERIAL_NO'
2158              then
2159                 l_str  :=l_str
2160                 || '<LABEL>'
2161                 || g_serial
2162                 || '</LABEL>'
2163                 || '<VALUE fgColor='
2164                 || 0
2165                 || '>'
2166                 || l_ib_rec.serial_number
2167                 || '</VALUE>';
2168              elsif l_field = 'PLANNED_START'    AND   p_timezone_enb
2169              then
2170                 l_str  :=l_str
2171                 || '<LABEL>'
2172                 || g_inc_plan_start_date
2173                 || '</LABEL>'
2174                 || '<VALUE fgColor='
2175                 || 0
2176                 || '>'
2177                 || to_char(l_ic_planned_start_date,g_date_format||' hh24:mi')
2178                 || '</VALUE>';
2179              elsif l_field = 'PLANNED_END'    AND   p_timezone_enb
2180              then
2181                 l_str  :=l_str
2182                 || '<LABEL>'
2183                 || g_inc_plan_end_date
2184                 || '</LABEL>'
2185                 || '<VALUE fgColor='
2186                 || 0
2187                 || '>'
2188                 || to_char(l_ic_planned_end_date,g_date_format||' hh24:mi')
2189                 || '</VALUE>';
2190              elsif l_field = 'PLANNED_EFFORT'
2191              then
2192                 l_str  :=l_str
2193                 || '<LABEL>'
2194                 || g_planned_effort
2195                 || '</LABEL>'
2196                 || '<VALUE fgColor='
2197                 || 0
2198                 || '>'
2199                 || l_planned_effort
2200                 || '</VALUE>';
2201              elsif l_field = 'SCHEDULED_START'    AND   p_timezone_enb
2202              then
2203                 l_str  :=l_str
2204                 || '<LABEL>'
2205                 || g_inc_sched_start_date
2206                 || '</LABEL>'
2207                 || '<VALUE fgColor='
2208                 || 0
2209                 || '>'
2210                 || to_char(l_ic_scheduled_start_date,g_date_format||' hh24:mi')
2211                 || '</VALUE>';
2212              elsif l_field = 'SCHEDULED_END'    AND   p_timezone_enb
2213              then
2214                  l_str  :=l_str
2215                 || '<LABEL>'
2216                 || g_end
2217                 || '</LABEL>'
2218                 || '<VALUE fgColor='
2219                 || 0
2220                 || '>'
2221                 || to_char(l_ic_scheduled_end_date,g_date_format||' hh24:mi')
2222                 || '</VALUE>';
2223              elsif l_field = 'ACTUAL_START'    AND   p_timezone_enb
2224              then
2225                 l_str  :=l_str
2226                 || '<LABEL>'
2227                 || g_inc_actul_start_date
2228                 || '</LABEL>'
2229                 || '<VALUE fgColor='
2230                 || 0
2231                 || '>'
2232                 || to_char(l_ic_actual_start_date,g_date_format||' hh24:mi')
2233                 || '</VALUE>';
2234              elsif l_field = 'ACTUAL_END'    AND   p_timezone_enb
2235              then
2236                 l_str  :=l_str
2237                 || '<LABEL>'
2238                 || g_inc_actul_end_date
2239                 || '</LABEL>'
2240                 || '<VALUE fgColor='
2241                 || 0
2242                 || '>'
2243                 || to_char(l_ic_actual_end_date,g_date_format||' hh24:mi')
2244                 || '</VALUE>';
2245              elsif l_field = 'ACTUAL_EFFORT'
2246              then
2247                 l_str  :=l_str
2248                 || '<LABEL>'
2249                 || g_actual_effort
2250                 || '</LABEL>'
2251                 || '<VALUE fgColor='
2252                 || 0
2253                 || '>'
2254                 || l_actual_effort
2255                 || '</VALUE>';
2256              elsif l_field = 'PLANNED_START_DATE_DC'
2257              then
2258                 l_str  :=l_str
2259                 || '<LABEL>'
2260                 || g_planned_start
2261                 || '</LABEL>'
2262                 || '<VALUE fgColor='
2263                 || 0
2264                 || '>'
2265                 || to_char(l_dc_planned_start_date,g_date_format||' hh24:mi')
2266                 || '</VALUE>';
2267              elsif l_field = 'PLANNED_END_DATE_DC'
2268              then
2269                 l_str  :=l_str
2270                 || '<LABEL>'
2271                 || g_dc_plan_end_date
2272                 || '</LABEL>'
2273                 || '<VALUE fgColor='
2274                 || 0
2275                 || '>'
2276                 || to_char(l_dc_planned_end_date,g_date_format||' hh24:mi')
2277                 || '</VALUE>';
2278              elsif l_field = 'SCHEDULED_START_DATE_DC'
2279              then
2280                 l_str  :=l_str
2281                 || '<LABEL>'
2282                 || g_sched_start
2283                 || '</LABEL>'
2284                 || '<VALUE fgColor='
2285                 || 0
2286                 || '>'
2287                 || to_char(l_dc_scheduled_start_date,g_date_format||' hh24:mi')
2288                 || '</VALUE>';
2289              elsif l_field = 'SCHEDULED_END_DATE_DC'
2290              then
2291                  l_str  :=l_str
2292                 || '<LABEL>'
2293                 || g_dc_sched_end_date
2294                 || '</LABEL>'
2295                 || '<VALUE fgColor='
2296                 || 0
2297                 || '>'
2298                 || to_char(l_dc_scheduled_end_date,g_date_format||' hh24:mi')
2299                 || '</VALUE>';
2300              elsif l_field = 'ACTUAL_START_DATE_DC'
2301              then
2302                 l_str  :=l_str
2303                 || '<LABEL>'
2304                 || g_actual_start
2305                 || '</LABEL>'
2306                 || '<VALUE fgColor='
2307                 || 0
2308                 || '>'
2309                 || to_char(l_dc_actual_start_date,g_date_format||' hh24:mi')
2310                 || '</VALUE>';
2311              elsif l_field = 'ACTUAL_END_DATE_DC'
2312              then
2313 
2314                 l_str  :=l_str
2315                 || '<LABEL>'
2316                 || g_dc_actul_end_date
2317                 || '</LABEL>'
2318                 || '<VALUE fgColor='
2319                 || 0
2320                 || '>'
2321                 || to_char(l_dc_actual_end_date,g_date_format||' hh24:mi')
2322                 || '</VALUE>';
2323 
2324              elsif l_field = 'DEPARTURE_TIME'
2325              then
2326                 l_str  :=l_str
2327                 || '<LABEL>'
2328                 || g_departure
2329                 || '</LABEL>'
2330                 || '<VALUE fgColor='
2331                 || 0
2332                 || '>'
2333                 || to_char(l_rec.departure_time,g_date_format||' hh24:mi')
2334                 || '</VALUE>';
2335              elsif l_field = 'TRAVEL_TIME'
2336              then
2337                 l_str  :=l_str
2338                 || '<LABEL>'
2339                 || g_travel_time
2340                 || '</LABEL>'
2341                 || '<VALUE fgColor='
2342                 || 0
2343                 || '>'
2344                 || l_rec.travel_time
2345                 || '</VALUE>';
2346              elsif l_field = 'COMMUTE_TIME'
2347              then
2348                 l_str  :=l_str
2349                 || '<LABEL>'
2350                 || g_off_time
2351                 || '</LABEL>'
2352                 || '<VALUE fgColor='
2353                 || 0
2354                 || '>'
2355                 || l_off_time
2356                 || '</VALUE>';
2357              elsif l_field = 'PERSONAL_TIME'
2358              then
2359                 l_str  :=l_str
2360                 || '<LABEL>'
2361                 || g_per_time
2362                 || '</LABEL>'
2363                 || '<VALUE fgColor='
2364                 || 0
2365                 || '>'
2366                 || l_per_time
2367                 || '</VALUE>';
2368              elsif l_field like 'LINE%'
2369              then
2370                  l_str :=l_str|| '<LINE></LINE>';
2371              end if;
2372         end loop;
2373      END IF;-- This is end if for g_tooltip_fields is not null and length(g_tooltip_fields) > 2
2374 	 l_str  :=l_str|| '</TOOLTIP>';
2375 
2376     RETURN l_str;
2377   END get_tooltip_data_gantt_cust;
2378 
2379   FUNCTION get_tooltip_data_sch_advise(
2380     p_task_id       NUMBER
2381   , p_resource_id   NUMBER
2382   , p_resource_type VARCHAR2
2383   , p_start_date    DATE
2384   , p_end_date      DATE
2385   , p_duration      NUMBER
2386   , sch_adv_tz      varchar2
2387   , p_server_tz_code VARCHAR2
2388   , p_client_tz_code VARCHAR2
2389   , p_timezone_enb   boolean
2390   , p_inc_tz_desc    varchar2
2391   , p_inc_tz_code    VARCHAR2
2392   )
2393   RETURN VARCHAR2 IS
2394   -- task and task assignment data
2395     CURSOR c_task IS
2396       SELECT /*+ ORDERED use_nl (a tb tt tl sb sl pi ps hl ft)
2397                      INDEX (t,JTF_TASKS_B_U3)
2398                      INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
2399              tb.task_id
2400            , tl.task_name
2401            , tb.task_number
2402            , tb.source_object_type_code
2403            , tb.source_object_id
2404            , tt.NAME task_type
2405            , sl.NAME task_status
2406            , a.resource_id
2407            , a.resource_type_code resource_type
2408            , tb.planned_start_date
2409            , tb.planned_end_date
2410            , scheduled_start_date
2411            , scheduled_end_date
2412            , a.actual_start_date
2413            , a.actual_end_date
2414            , a.sched_travel_duration
2415            , a.sched_travel_duration_uom
2416            , tb.customer_id party_id
2417            , NVL(sb.assigned_flag, 'N') assigned_flag
2418            , tb.task_type_id
2419            , csf_tasks_pub.get_task_address(tb.task_id,tb.address_id,tb.location_id,'Y') small_address
2420            , pi.party_name party_name
2421            , a.actual_travel_duration
2422            , a.actual_travel_duration_uom
2423            , tz.ACTIVE_TIMEZONE_CODE ic_tz_code
2424            , tz.ACTIVE_TIMEZONE_CODE|| ' (GMT ' ||to_char(trunc(gmt_offset),'S09') || ':' || to_char(abs(gmt_offset - trunc(gmt_offset))*60,'FM900') || ') ' tz_desc
2425            , tb.planned_effort ||' '|| tb.planned_effort_uom plan_effort
2426            , tb.actual_effort ||' '|| tb.actual_effort_uom  act_effort
2427         FROM jtf_task_assignments a
2428            , jtf_tasks_b tb
2429            , jtf_task_types_tl tt
2430            , jtf_tasks_tl tl
2431            , jtf_task_statuses_b sb
2432            , jtf_task_statuses_tl sl
2433            , hz_party_sites ps
2434            , hz_locations hl
2435            , hz_parties pi
2436            , fnd_timezones_b tz
2437        WHERE a.task_id = p_task_id
2438          AND resource_id = p_resource_id
2439          AND resource_type_code = p_resource_type
2440          AND tb.task_id = a.task_id
2441          AND tt.LANGUAGE = l_language
2442          AND tt.task_type_id = tb.task_type_id
2443          AND sl.LANGUAGE = l_language
2444          AND sb.task_status_id = a.assignment_status_id
2445          AND sl.task_status_id = sb.task_status_id
2446          AND tl.LANGUAGE = l_language
2447          AND tl.task_id = tb.task_id
2448          AND ps.party_site_id(+) = tb.address_id
2449          AND hl.location_id(+) = ps.location_id
2450          AND pi.party_id(+) = tb.customer_id
2451          AND NVL(sb.cancelled_flag, 'N') <> 'Y'
2452 	 AND tz.UPGRADE_TZ_ID(+) = hl.timezone_id;
2453 
2454     CURSOR c_sr(b_incident_id NUMBER) IS
2455       SELECT /*+ ORDERED USE_NL */
2456              i.customer_product_id
2457            , i.current_serial_number
2458            , si.concatenated_segments product_name
2459         FROM cs_incidents_all_b i, mtl_system_items_kfv si
2460        WHERE si.inventory_item_id(+) = i.inventory_item_id
2461          AND si.organization_id(+) = i.inv_organization_id
2462          AND i.incident_id = b_incident_id;
2463 
2464     l_uom       VARCHAR2(2000)        := NULL;
2465     l_Res_Timezone_id   Number;
2466     l_res_tz_cd varchar2(100);
2467     CURSOR c_uom(p_code VARCHAR2) IS
2468       SELECT unit_of_measure_tl
2469         FROM mtl_units_of_measure_vl
2470        WHERE uom_code = p_code;
2471 
2472     CURSOR c_parts(b_task_id NUMBER) IS
2473       SELECT 'Y' required
2474         FROM csp_requirement_headers
2475        WHERE task_id = b_task_id;
2476 
2477     CURSOR c_ib(b_customer_product_id NUMBER) IS
2478       SELECT serial_number
2479            , lot_number
2480         FROM csi_item_instances
2481        WHERE instance_id = b_customer_product_id;
2482 
2483     Cursor C_Res_TimeZone Is
2484      Select TIME_ZONE
2485      From JTF_RS_RESOURCE_EXTNS
2486      Where RESOURCE_ID = p_resource_id
2487      ;
2488     Cursor c_res_tz
2489     IS
2490      SELECT ACTIVE_TIMEZONE_CODE,ACTIVE_TIMEZONE_CODE|| ' (GMT ' ||to_char(trunc(gmt_offset),'S09') || ':' || to_char(abs(gmt_offset - trunc(gmt_offset))*60,'FM900') || ') ' tz_desc
2491      FROM fnd_timezones_vl ft
2492      WHERE UPGRADE_TZ_ID =l_Res_TimeZone_id;
2493 
2494 	  Cursor c_terr
2495 	IS
2496 	   SELECT territory_id
2497    	     FROM csf_dc_resources_v
2498 	    WHERE resource_id = p_resource_id
2499 	      AND resource_type   = p_resource_type;
2500 
2501 
2502 
2503 
2504     l_task_rec  c_task%ROWTYPE;
2505     l_sr_rec    c_sr%ROWTYPE;
2506     l_parts_rec c_parts%ROWTYPE;
2507     l_ib_rec    c_ib%ROWTYPE;
2508     l_rec       tooltip_data_rec_type := NULL;
2509     p_color     NUMBER                := 255;
2510     l_str       VARCHAR2(2000)        := NULL;
2511     l_ic_planned_start_date   date;
2512     l_ic_planned_end_date     date;
2513     l_ic_scheduled_start_date date;
2514     l_ic_scheduled_end_date   date;
2515     l_ic_actual_start_date    date;
2516     l_ic_actual_end_date      date;
2517 
2518 
2519     l_dc_planned_start_date   date;
2520     l_dc_planned_end_date     date;
2521     l_dc_scheduled_start_date date;
2522     l_dc_scheduled_end_date   date;
2523     l_dc_actual_start_date    date;
2524     l_dc_actual_end_date      date;
2525     l_actual_start_date       date;
2526     l_scheduled_start_date    date;
2527     l_tz_desc                 varchar2(100);
2528     l_rs_tz_desc              varchar2(100);
2529     l_rs_ic_tz_present        boolean;
2530     l_lines                             number;                --bug no 5674408
2531     l_actual_effort           VARCHAR2(200);
2532     l_planned_effort          VARCHAR2(200);
2533     l_territory               NUMBER;
2534 
2535     l_feed_time               varchar2(100);
2536     l_status                  varchar2(100);
2537     l_latitude                varchar2(100);
2538     l_longitude               varchar2(100);
2539     l_speed                   varchar2(100);
2540     l_direction               varchar2(100);
2541     l_parked_time             varchar2(100);
2542     l_address                 varchar2(100);
2543     l_creation_date           varchar2(100);
2544     l_device_tag              varchar2(100);
2545     l_status_code_meaning     varchar2(100);
2546     l_return_status           varchar2(2);
2547     l_msg_count               NUMBER;
2548     l_msg_data                varchar2(100);
2549 
2550   BEGIN
2551 
2552     open c_terr;
2553 	fetch c_terr into l_territory;
2554 	close c_terr;
2555     g_excl_travel := csr_scheduler_pub.get_sch_parameter_value(  'spCommuteExcludedTime'
2556                                                               , fnd_global.resp_appl_id
2557                                                               , fnd_global.resp_id
2558                                                               , fnd_global.user_id
2559                                                               , l_territory
2560                                                               , p_resource_type
2561                                                               , p_resource_id
2562                                                               );
2563    g_commute := csr_scheduler_pub.get_sch_parameter_value(  'spCommutesPosition'
2564                                                               , fnd_global.resp_appl_id
2565                                                               , fnd_global.resp_id
2566                                                               , fnd_global.user_id
2567                                                               , l_territory
2568                                                               , p_resource_type
2569                                                               , p_resource_id
2570                                                               );
2571     OPEN c_task;
2572     FETCH c_task INTO l_task_rec;
2573     IF c_task%NOTFOUND THEN
2574       CLOSE c_task;
2575       RAISE NO_DATA_FOUND;
2576     END IF;
2577 	IF l_task_rec.task_type_id NOT IN(20, 21)
2578 	THEN
2579       l_planned_effort := l_task_rec.plan_effort;
2580       l_actual_effort := l_task_rec.act_effort;
2581 	  IF ((l_task_rec.task_type_id NOT IN(20, 21)) and (l_task_rec.source_object_type_code<>'TASK'))
2582 	  THEN
2583 		OPEN c_sr(l_task_rec.source_object_id);
2584 		FETCH c_sr INTO l_sr_rec;
2585 
2586 		IF l_sr_rec.customer_product_id IS NOT NULL THEN
2587 			OPEN c_ib(l_sr_rec.customer_product_id);
2588 			FETCH c_ib INTO l_ib_rec;
2589 			CLOSE c_ib;
2590 		ELSE
2591 			l_ib_rec.serial_number  := l_sr_rec.current_serial_number;
2592 			l_ib_rec.lot_number     := NULL;   -- not yet supported
2593 		END IF;
2594 	  END IF;
2595     END IF;
2596     l_rec.incident_customer_name  := l_task_rec.party_name;
2597 
2598     --begin addition for bug 5674408
2599     IF (LENGTH(NVL(l_task_rec.party_name, 0)) > 80)
2600     THEN
2601         l_lines := ceil(length(l_task_rec.party_name)/80) - 1;
2602         l_rec.incident_customer_name := null;
2603 
2604         for i in 1..l_lines
2605         loop
2606             l_rec.incident_customer_name := l_rec.incident_customer_name || SUBSTRB (l_task_rec.party_name, 1, 80) || fnd_global.local_chr (10);
2607             l_task_rec.party_name := substrb(l_task_rec.party_name,81);
2608         end loop;
2609 
2610         l_rec.incident_customer_name := l_rec.incident_customer_name || SUBSTRB (l_task_rec.party_name, 1);
2611     END IF;
2612     --end addition for bug 5674408
2613 
2614     IF l_task_rec.actual_start_date is  not null
2615     THEN
2616 
2617       if sch_adv_tz ='UTZ' and  p_timezone_enb
2618       then
2619         l_dc_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,p_client_tz_code);
2620         l_dc_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,p_client_tz_code);
2621         l_dc_scheduled_start_date :=fnd_date.adjust_datetime(l_task_rec.scheduled_start_date,p_server_tz_code,p_client_tz_code);
2622         l_dc_scheduled_end_date   :=fnd_date.adjust_datetime(l_task_rec.scheduled_end_date,p_server_tz_code,p_client_tz_code);
2623         l_dc_actual_start_date    :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_client_tz_code);
2624         l_dc_actual_end_date      :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_client_tz_code);
2625         l_actual_start_date       :=l_dc_actual_start_date;
2626         if l_task_rec.ic_tz_code is not null and  p_timezone_enb
2627         then
2628           l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2629           l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2630           l_ic_scheduled_start_date :=fnd_date.adjust_datetime(l_task_rec.scheduled_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2631           l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(l_task_rec.scheduled_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2632           l_ic_actual_start_date    :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2633           l_ic_actual_end_date      :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2634           l_actual_start_date       :=l_ic_actual_start_date;
2635           l_tz_desc                 :=l_task_rec.tz_desc;
2636         end if;
2637       elsif sch_adv_tz ='CTZ' and  p_timezone_enb
2638       then
2639         l_dc_planned_start_date   :=l_task_rec.planned_start_date;
2640         l_dc_planned_end_date     :=l_task_rec.planned_end_date;
2641         l_dc_scheduled_start_date :=l_task_rec.scheduled_start_date;
2642         l_dc_scheduled_end_date   :=l_task_rec.scheduled_end_date;
2643         l_dc_actual_start_date    :=p_start_date;
2644         l_dc_actual_end_date      :=p_end_date;
2645 
2646         l_actual_start_date       :=l_dc_actual_start_date;
2647         if l_task_rec.ic_tz_code is not null and p_timezone_enb
2648         then
2649           l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2650           l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2651           l_ic_scheduled_start_date :=fnd_date.adjust_datetime(l_task_rec.scheduled_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2652           l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(l_task_rec.scheduled_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2653           l_ic_actual_start_date    :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2654           l_ic_actual_end_date      :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2655           l_actual_start_date       :=l_ic_actual_start_date;
2656           l_tz_desc                 :=l_task_rec.tz_desc;
2657         end if;
2658       elsif sch_adv_tz ='ITZ' and  p_timezone_enb
2659       then
2660         l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2661         l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2662         l_ic_scheduled_start_date :=fnd_date.adjust_datetime(l_task_rec.scheduled_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2663         l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(l_task_rec.scheduled_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2664         l_ic_actual_start_date    :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2665         l_ic_actual_end_date      :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2666         l_actual_start_date       :=l_ic_actual_start_date;
2667         l_tz_desc                 := p_inc_tz_desc;
2668       end if;
2669 
2670       l_rec.departure_time:=
2671            l_actual_start_date - (
2672                                inv_convert.inv_um_convert(
2673                                 0
2674                                , NULL
2675                                , NVL(l_task_rec.actual_travel_duration, 0)
2676                                , NVL(l_task_rec.actual_travel_duration_uom, g_uom_minutes)
2677                                , g_uom_hours
2678                                , NULL
2679                                , NULL
2680                                )
2681                              / 24
2682                             );
2683         OPEN c_uom(NVL(l_task_rec.actual_travel_duration_uom, g_uom_minutes));
2684         FETCH c_uom INTO l_uom;
2685         IF c_uom%NOTFOUND THEN
2686           l_uom  := NVL(l_task_rec.actual_travel_duration_uom, g_uom_minutes);
2687         END IF;
2688         CLOSE c_uom;
2689         l_rec.travel_time := NVL(l_task_rec.actual_travel_duration, 0) || ' ' || l_uom;
2690     ELSE
2691       if sch_adv_tz ='UTZ' and  p_timezone_enb
2692       then
2693         l_dc_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,p_client_tz_code);
2694         l_dc_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,p_client_tz_code);
2695         l_dc_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_client_tz_code);
2696         l_dc_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_client_tz_code);
2697         l_scheduled_start_date    :=l_dc_scheduled_start_date;
2698         if l_task_rec.ic_tz_code is not null
2699         then
2700           l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2701           l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2702           l_ic_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2703           l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2704           l_scheduled_start_date    :=l_ic_scheduled_start_date;
2705           l_tz_desc                 :=l_task_rec.tz_desc;
2706         end if;
2707       elsif sch_adv_tz ='CTZ'  and  p_timezone_enb
2708       then
2709         l_dc_planned_start_date   :=l_task_rec.planned_start_date;
2710         l_dc_planned_end_date     :=l_task_rec.planned_end_date;
2711         l_dc_scheduled_start_date :=p_start_date;
2712         l_dc_scheduled_end_date   :=p_end_date;
2713         l_scheduled_start_date    :=l_dc_scheduled_start_date;
2714         if l_task_rec.ic_tz_code is not null
2715         then
2716           l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2717           l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2718           l_ic_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
2719           l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
2720           l_scheduled_start_date    :=l_ic_scheduled_start_date;
2721           l_tz_desc                 :=l_task_rec.tz_desc;
2722         end if;
2723       elsif sch_adv_tz ='ITZ' and  p_timezone_enb
2724       then
2725         l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,p_inc_tz_code);
2726         l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,p_inc_tz_code);
2727         l_ic_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_client_tz_code);
2728         l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_client_tz_code);
2729         l_scheduled_start_date    :=l_ic_scheduled_start_date;
2730         l_tz_desc                 := p_inc_tz_desc;
2731       end if;
2732          l_rec.departure_time:=(l_scheduled_start_date - (nvl(p_duration,0)/1440));
2733          OPEN c_uom(NVL(l_task_rec.sched_travel_duration_uom, g_uom_minutes));
2734     	   FETCH c_uom INTO l_uom;
2735          IF c_uom%NOTFOUND THEN
2736             l_uom  := NVL(l_task_rec.sched_travel_duration_uom, g_uom_minutes);
2737          END IF;
2738          CLOSE c_uom;
2739          --l_rec.travel_time := NVL(l_task_rec.sched_travel_duration, 0) || ' ' || l_uom;
2740          l_rec.travel_time := nvl(p_duration,0) || ' ' || l_uom;
2741     END IF;
2742     /*
2743     If CSF_GPS_PUB.IS_GPS_ENABLED='Y'
2744     THEN
2745 
2746       csf_resource_pub.get_location(
2747        x_return_status      => l_return_status
2748       ,x_msg_count          => l_msg_count
2749       ,x_msg_data           => l_msg_data
2750       ,p_resource_id        => p_resource_id
2751       ,p_resource_type      => p_resource_type
2752       ,p_date               => p_start_date
2753       ,x_creation_date      => l_creation_date
2754       ,x_feed_time          => l_feed_time
2755       ,x_status_code        => l_status
2756       ,x_latitude           => l_latitude
2757       ,x_longitude          => l_longitude
2758       ,x_speed              => l_speed
2759       ,x_direction          => l_direction
2760       ,x_parked_time        => l_parked_time
2761       ,x_address            => l_address
2762       ,x_device_tag         => l_device_tag
2763       ,x_status_code_meaning=> l_status_code_meaning
2764       );
2765     END IF;
2766 
2767     */
2768 
2769     l_rec.assigned_flag           := l_task_rec.assigned_flag;
2770     l_rec.is_plan_option          := 'N';
2771 
2772          l_str :=
2773           '<TOOLTIP>'
2774           || '<CENTER fgColor='
2775           || 0
2776           || '>'
2777           || l_task_rec.task_name
2778           || '</CENTER>'
2779           || '<LINE></LINE>'
2780           || '<LABEL>'
2781           || g_task_number
2782           || '</LABEL>'
2783           || '<VALUE fgColor='
2784           || 0
2785           || '>'
2786           || l_task_rec.task_number
2787           || '</VALUE>'
2788           || '<LABEL>'
2789           || g_task_type
2790           || '</LABEL>'
2791           || '<VALUE fgColor='
2792           || 0
2793           || '>'
2794           || l_task_rec.task_type
2795           || '</VALUE>'
2796           || '<LABEL>'
2797           || g_task_status
2798           || '</LABEL>'
2799           || '<VALUE fgColor='
2800           || 0
2801           || '>'
2802           || l_task_rec.task_status
2803           || '</VALUE>';
2804           /*
2805           If CSF_GPS_PUB.IS_GPS_ENABLED='Y'
2806           THEN
2807            l_str :=l_str|| '<LINE></LINE>'
2808           ||'<LABEL>'
2809           || g_tech_status
2810           || '</LABEL>'
2811           || '<VALUE fgColor='
2812           || 0
2813           || '>'
2814           || l_status_code_meaning
2815           || '</VALUE>'
2816           ||'<LABEL>'
2817           || g_tech_lat
2818           || '</LABEL>'
2819           || '<VALUE fgColor='
2820           || 0
2821           || '>'
2822           || l_latitude
2823           || '</VALUE>'
2824           ||'<LABEL>'
2825           || g_tech_lon
2826           || '</LABEL>'
2827           || '<VALUE fgColor='
2828           || 0
2829           || '>'
2830           || l_longitude
2831           || '</VALUE>'
2832           || '<LABEL>'
2833           ||  g_address
2834           || '</LABEL>'
2835           || '<VALUE fgColor='
2836           || 0
2837           || '>'
2838           || l_address
2839           || '</VALUE>'
2840           ||'<LABEL>'
2841           || g_tech_dev_tag
2842           || '</LABEL>'
2843           || '<VALUE fgColor='
2844           || 0
2845           || '>'
2846           || l_device_tag
2847           || '</VALUE>';
2848           END IF;
2849           l_str :=l_str
2850           || '<LINE></LINE>'
2851           || '<LABEL>'
2852           || g_cust_name
2853           || '</LABEL>'
2854           || '<VALUE fgColor='
2855           || 0
2856           || '>'
2857           || l_rec.incident_customer_name
2858           || '</VALUE>'
2859           || '<LABEL>'
2860           ||  g_address
2861           || '</LABEL>'
2862           || '<VALUE fgColor='
2863           || 0
2864           || '>'
2865           || l_task_rec.small_address
2866           || '</VALUE>';
2867           */
2868     IF  p_timezone_enb
2869     THEN
2870           l_str :=
2871           l_str
2872           || '<LABEL>'
2873           || g_timezone
2874           || '</LABEL>'
2875           || '<VALUE fgColor='
2876           || 0
2877           || '>'
2878           || l_tz_desc
2879           || '</VALUE>';
2880     END IF;
2881     IF l_sr_rec.product_name IS NOT NULL THEN
2882         l_str  :=
2883         l_str
2884           || '<LABEL>'
2885           || g_product_name
2886           || '</LABEL>'
2887           || '<VALUE fgColor='
2888           || 0
2889           || '>'
2890           || l_sr_rec.product_name
2891           || '</VALUE>';
2892       IF l_ib_rec.serial_number IS NOT NULL THEN
2893           l_str  :=
2894           l_str
2895           || '<LABEL>'
2896           || g_serial
2897           || '</LABEL>'
2898           || '<VALUE fgColor='
2899           || 0
2900           || '>'
2901           || l_ib_rec.serial_number
2902           || '</VALUE>';
2903       END IF;
2904     END IF;
2905     IF  p_timezone_enb
2906     THEN
2907           l_str  :=
2908           l_str
2909           || '<LABEL>'
2910           || g_planned_start
2911           || '</LABEL>'
2912           || '<VALUE fgColor='
2913           || 0
2914           || '>'
2915           || to_char(l_ic_planned_start_date,g_date_format||' hh24:mi')
2916           || '</VALUE>'
2917           || '<LABEL>'
2918           || g_end
2919           || '</LABEL>'
2920           || '<VALUE fgColor='
2921           || 0
2922           || '>'
2923           || to_char(l_ic_planned_end_date,g_date_format||' hh24:mi')
2924           || '</VALUE>'
2925           || '<LABEL>'
2926           || g_planned_effort
2927           || '</LABEL>'
2928           || '<VALUE fgColor='
2929           || 0
2930           || '>'
2931           || l_planned_effort
2932           || '</VALUE>'
2933           || '<LABEL>'
2934           || g_sched_start
2935           || '</LABEL>'
2936           || '<VALUE fgColor='
2937           || 0
2938           || '>'
2939           || to_char(l_ic_scheduled_start_date,g_date_format||' hh24:mi')
2940           || '</VALUE>'
2941           || '<LABEL>'
2942           || g_end
2943           || '</LABEL>'
2944           || '<VALUE fgColor='
2945           || 0
2946           || '>'
2947           || to_char(l_ic_scheduled_end_date,g_date_format||' hh24:mi')
2948           || '</VALUE>';
2949         IF l_task_rec.actual_start_date IS NOT NULL THEN
2950           l_str  :=
2951           l_str
2952           || '<LABEL>'
2953           || g_actual_start
2954           || '</LABEL>'
2955           || '<VALUE fgColor='
2956           || 0
2957           || '>'
2958           || to_char(l_ic_actual_start_date,g_date_format||' hh24:mi')
2959           || '</VALUE>'
2960           || '<LABEL>'
2961           || g_end
2962           || '</LABEL>'
2963           || '<VALUE fgColor='
2964           || 0
2965           || '>'
2966           || to_char(l_ic_actual_end_date,g_date_format||' hh24:mi')
2967           || '</VALUE>'
2968           || '<LABEL>'
2969           || g_actual_effort
2970           || '</LABEL>'
2971           || '<VALUE fgColor='
2972           || 0
2973           || '>'
2974           || l_actual_effort
2975           || '</VALUE>';
2976         END IF;
2977         l_rs_ic_tz_present :=true;
2978         If l_task_rec.ic_tz_code is null and sch_adv_tz <>'ITZ'
2979         Then
2980           l_str :=
2981           l_str|| '<LINE></LINE>';
2982           l_rs_ic_tz_present :=FALSE;
2983         end if;
2984     ELSE
2985           l_str :=
2986           l_str|| '<LINE></LINE>';
2987     END IF;
2988     If l_task_rec.ic_tz_code is not null
2989     then
2990           l_str :=
2991           l_str
2992           || '<LABEL>'
2993           || g_departure
2994           || '</LABEL>'
2995           || '<VALUE fgColor='
2996           || 0
2997           || '>'
2998           || to_char(l_rec.departure_time,g_date_format||' hh24:mi')
2999           || '</VALUE>'
3000           || '<LABEL>'
3001           || g_travel_time
3002           || '</LABEL>'
3003           || '<VALUE fgColor='
3004           || 0
3005           || '>'
3006           || l_rec.travel_time
3007           || '</VALUE>';
3008       end if;
3009       if l_rs_ic_tz_present and sch_adv_tz <> 'ITZ'
3010       then
3011             l_str  :=
3012             l_str|| '<LINE></LINE>';
3013       end if;
3014       If sch_adv_tz <> 'ITZ' --this condition is used to restrict the tooltip
3015                                --according to logic we should show only incident timezone if schedule advise window is in same.
3016       then
3017           l_str  :=
3018           l_str
3019           || '<LABEL>'
3020           || g_planned_start
3021           || '</LABEL>'
3022           || '<VALUE fgColor='
3023           || 0
3024           || '>'
3025           || to_char(l_dc_planned_start_date,g_date_format||' hh24:mi')
3026           || '</VALUE>'
3027           || '<LABEL>'
3028           || g_end
3029           || '</LABEL>'
3030           || '<VALUE fgColor='
3031           || 0
3032           || '>'
3033           || to_char(l_dc_planned_end_date,g_date_format||' hh24:mi')
3034           || '</VALUE>'
3035           || '<LABEL>'
3036           || g_sched_start
3037           || '</LABEL>'
3038           || '<VALUE fgColor='
3039           || 0
3040           || '>'
3041           || to_char(l_dc_scheduled_start_date,g_date_format||' hh24:mi')
3042           || '</VALUE>'
3043           || '<LABEL>'
3044           || g_end
3045           || '</LABEL>'
3046           || '<VALUE fgColor='
3047           || 0
3048           || '>'
3049           || to_char(l_dc_scheduled_end_date,g_date_format||' hh24:mi')
3050           || '</VALUE>';
3051           IF l_task_rec.actual_start_date IS NOT NULL THEN
3052           l_str  :=
3053           l_str
3054           || '<LABEL>'
3055           || g_actual_start
3056           || '</LABEL>'
3057           || '<VALUE fgColor='
3058           || 0
3059           || '>'
3060           || to_char(l_dc_actual_start_date,g_date_format||' hh24:mi')
3061           || '</VALUE>'
3062           || '<LABEL>'
3063           || g_end
3064           || '</LABEL>'
3065           || '<VALUE fgColor='
3066           || 0
3067           || '>'
3068           || to_char(l_dc_actual_end_date,g_date_format||' hh24:mi')
3069           || '</VALUE>'
3070           ;
3071           END IF;
3072       End if;--for sch_adv_tz ='ITZ' and l_task_rec.ic_tz_code is not null
3073        If l_task_rec.ic_tz_code is null
3074           then
3075           l_str :=
3076           l_str
3077           || '<LABEL>'
3078           || g_departure
3079           || '</LABEL>'
3080           || '<VALUE fgColor='
3081           || 0
3082           || '>'
3083           || to_char(l_rec.departure_time,g_date_format||' hh24:mi')
3084           || '</VALUE>'
3085           || '<LABEL>'
3086           || g_travel_time
3087           || '</LABEL>'
3088           || '<VALUE fgColor='
3089           || 0
3090           || '>'
3091           || l_rec.travel_time
3092           || '</VALUE>';
3093           end if;
3094     l_str  :=l_str|| '</TOOLTIP>';
3095     RETURN l_str;
3096   END get_tooltip_data_sch_advise;
3097   FUNCTION get_tooltip_data_sch_advise_cu(
3098     p_task_id       NUMBER
3099   , p_resource_id   NUMBER
3100   , p_resource_type VARCHAR2
3101   , p_start_date    DATE
3102   , p_end_date      DATE
3103   , p_duration      NUMBER
3104   , sch_adv_tz      varchar2
3105   , p_server_tz_code VARCHAR2
3106   , p_client_tz_code VARCHAR2
3107   , p_timezone_enb   boolean
3108   , p_inc_tz_desc    varchar2
3109   , p_inc_tz_code    VARCHAR2
3110   )
3111   RETURN VARCHAR2 IS
3112 
3113 
3114     CURSOR c_cust_tooltip is
3115       SELECT field_name
3116       FROM   csf_gantt_chart_setup
3117       WHERE  user_id = fnd_global.user_id
3118       AND    setup_type = 'TOOLTIP'
3119       ORDER BY seq_no;
3120 
3121   -- task and task assignment data
3122     CURSOR c_task IS
3123       SELECT /*+ ORDERED use_nl (a tb tt tl sb sl pi ps hl ft)
3124                      INDEX (t,JTF_TASKS_B_U3)
3125                      INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
3126              tb.task_id
3127            , tl.task_name
3128            , tb.task_number
3129            , tb.source_object_type_code
3130            , tb.source_object_id
3131            , tt.NAME task_type
3132            , sl.NAME task_status
3133            , a.resource_id
3134            , a.resource_type_code resource_type
3135            , tb.planned_start_date
3136            , tb.planned_end_date
3137            , scheduled_start_date
3138            , scheduled_end_date
3139            , a.actual_start_date
3140            , a.actual_end_date
3141            , a.sched_travel_duration
3142            , a.sched_travel_duration_uom
3143            , tb.customer_id party_id
3144            , NVL(sb.assigned_flag, 'N') assigned_flag
3145            , tb.task_type_id
3146            , csf_tasks_pub.get_task_address(tb.task_id,tb.address_id,tb.location_id,'Y') small_address
3147            , pi.party_name party_name
3148            , a.actual_travel_duration
3149            , a.actual_travel_duration_uom
3150            , tz.ACTIVE_TIMEZONE_CODE ic_tz_code
3151            , tz.ACTIVE_TIMEZONE_CODE|| ' (GMT ' ||to_char(trunc(gmt_offset),'S09') || ':' || to_char(abs(gmt_offset - trunc(gmt_offset))*60,'FM900') || ') ' tz_desc
3152            , tb.planned_effort ||' '|| tb.planned_effort_uom plan_effort
3153            , tb.actual_effort ||' '|| tb.actual_effort_uom  act_effort
3154         FROM jtf_task_assignments a
3155            , jtf_tasks_b tb
3156            , jtf_task_types_tl tt
3157            , jtf_tasks_tl tl
3158            , jtf_task_statuses_b sb
3159            , jtf_task_statuses_tl sl
3160            , hz_party_sites ps
3161            , hz_locations hl
3162            , hz_parties pi
3163            , fnd_timezones_b tz
3164        WHERE a.task_id = p_task_id
3165          AND resource_id = p_resource_id
3166          AND resource_type_code = p_resource_type
3167          AND tb.task_id = a.task_id
3168          AND tt.LANGUAGE = l_language
3169          AND tt.task_type_id = tb.task_type_id
3170          AND sl.LANGUAGE = l_language
3171          AND sb.task_status_id = a.assignment_status_id
3172          AND sl.task_status_id = sb.task_status_id
3173          AND tl.LANGUAGE = l_language
3174          AND tl.task_id = tb.task_id
3175          AND ps.party_site_id(+) = tb.address_id
3176          AND hl.location_id(+) = ps.location_id
3177          AND pi.party_id(+) = tb.customer_id
3178          AND NVL(sb.cancelled_flag, 'N') <> 'Y'
3179 	 AND tz.UPGRADE_TZ_ID(+) = hl.timezone_id;
3180 
3181     CURSOR c_sr(b_incident_id NUMBER) IS
3182       SELECT /*+ ORDERED USE_NL */
3183              i.customer_product_id
3184            , i.current_serial_number
3185            , si.concatenated_segments product_name
3186         FROM cs_incidents_all_b i, mtl_system_items_kfv si
3187        WHERE si.inventory_item_id(+) = i.inventory_item_id
3188          AND si.organization_id(+) = i.inv_organization_id
3189          AND i.incident_id = b_incident_id;
3190 
3191     l_uom       VARCHAR2(2000)        := NULL;
3192     l_Res_Timezone_id   Number;
3193     l_res_tz_cd varchar2(100);
3194     CURSOR c_uom(p_code VARCHAR2) IS
3195       SELECT unit_of_measure_tl
3196         FROM mtl_units_of_measure_vl
3197        WHERE uom_code = p_code;
3198 
3199     CURSOR c_parts(b_task_id NUMBER) IS
3200       SELECT 'Y' required
3201         FROM csp_requirement_headers
3202        WHERE task_id = b_task_id;
3203 
3204     CURSOR c_ib(b_customer_product_id NUMBER) IS
3205       SELECT serial_number
3206            , lot_number
3207         FROM csi_item_instances
3208        WHERE instance_id = b_customer_product_id;
3209 
3210     Cursor C_Res_TimeZone Is
3211      Select TIME_ZONE
3212      From JTF_RS_RESOURCE_EXTNS
3213      Where RESOURCE_ID = p_resource_id
3214      ;
3215     Cursor c_res_tz
3216     IS
3217      SELECT ACTIVE_TIMEZONE_CODE,ACTIVE_TIMEZONE_CODE|| ' (GMT ' ||to_char(trunc(gmt_offset),'S09') || ':' || to_char(abs(gmt_offset - trunc(gmt_offset))*60,'FM900') || ') ' tz_desc
3218      FROM fnd_timezones_vl ft
3219      WHERE UPGRADE_TZ_ID =l_Res_TimeZone_id;
3220 
3221 	  Cursor c_terr
3222 	IS
3223 	   SELECT territory_id
3224    	     FROM csf_dc_resources_v
3225 	    WHERE resource_id = p_resource_id
3226 	      AND resource_type   = p_resource_type;
3227 
3228 
3229 
3230 
3231     l_task_rec  c_task%ROWTYPE;
3232     l_sr_rec    c_sr%ROWTYPE;
3233     l_parts_rec c_parts%ROWTYPE;
3234     l_ib_rec    c_ib%ROWTYPE;
3235     l_rec       tooltip_data_rec_type := NULL;
3236     p_color     NUMBER                := 255;
3237     l_str       VARCHAR2(4000)        := NULL;
3238     l_ic_planned_start_date   date;
3239     l_ic_planned_end_date     date;
3240     l_ic_scheduled_start_date date;
3241     l_ic_scheduled_end_date   date;
3242     l_ic_actual_start_date    date;
3243     l_ic_actual_end_date      date;
3244 
3245 
3246     l_dc_planned_start_date   date;
3247     l_dc_planned_end_date     date;
3248     l_dc_scheduled_start_date date;
3249     l_dc_scheduled_end_date   date;
3250     l_dc_actual_start_date    date;
3251     l_dc_actual_end_date      date;
3252     l_actual_start_date       date;
3253     l_scheduled_start_date    date;
3254     l_tz_desc                 varchar2(100);
3255     l_rs_tz_desc              varchar2(100);
3256     l_rs_ic_tz_present        boolean;
3257     l_lines                             number;                --bug no 5674408
3258     l_actual_effort           VARCHAR2(200);
3259     l_planned_effort          VARCHAR2(200);
3260     l_territory               NUMBER;
3261 
3262     l_feed_time               varchar2(100);
3263     l_status                  varchar2(100);
3264     l_latitude                varchar2(100);
3265     l_longitude               varchar2(100);
3266     l_speed                   varchar2(100);
3267     l_direction               varchar2(100);
3268     l_parked_time             varchar2(100);
3269     l_address                 varchar2(100);
3270     l_creation_date           varchar2(100);
3271     l_device_tag              varchar2(100);
3272     l_status_code_meaning     varchar2(100);
3273     l_return_status           varchar2(2);
3274     l_msg_count               NUMBER;
3275     l_msg_data                varchar2(100);
3276 	g_tooltip_fields 		  VARCHAR2(4000);
3277     l_count     			  NUMBER;
3278     l_field     			  VARCHAR2(2000);
3279     l_var     				  VARCHAR2(2000);
3280 	l_off_time                varchar2(200);
3281     l_per_time                varchar2(200);
3282   BEGIN
3283 
3284     open c_terr;
3285 	fetch c_terr into l_territory;
3286 	close c_terr;
3287     g_excl_travel := csr_scheduler_pub.get_sch_parameter_value(  'spCommuteExcludedTime'
3288                                                               , fnd_global.resp_appl_id
3289                                                               , fnd_global.resp_id
3290                                                               , fnd_global.user_id
3291                                                               , l_territory
3292                                                               , p_resource_type
3293                                                               , p_resource_id
3294                                                               );
3295    g_commute := csr_scheduler_pub.get_sch_parameter_value(  'spCommutesPosition'
3296                                                               , fnd_global.resp_appl_id
3297                                                               , fnd_global.resp_id
3298                                                               , fnd_global.user_id
3299                                                               , l_territory
3300                                                               , p_resource_type
3301                                                               , p_resource_id
3302                                                               );
3303     OPEN c_task;
3304     FETCH c_task INTO l_task_rec;
3305     IF c_task%NOTFOUND THEN
3306       CLOSE c_task;
3307       RAISE NO_DATA_FOUND;
3308     END IF;
3309 
3310     IF l_task_rec.task_type_id NOT IN(20, 21)
3311     THEN
3312       l_planned_effort := l_task_rec.plan_effort;
3313       l_actual_effort := l_task_rec.act_effort;
3314 
3315 	  IF ((l_task_rec.task_type_id NOT IN(20, 21)) AND (l_task_rec.source_object_type_code<>'TASK'))
3316 	  THEN
3317 		OPEN c_sr(l_task_rec.source_object_id);
3318 		FETCH c_sr INTO l_sr_rec;
3319 
3320 		IF l_sr_rec.customer_product_id IS NOT NULL THEN
3321 			OPEN c_ib(l_sr_rec.customer_product_id);
3322 			FETCH c_ib INTO l_ib_rec;
3323 			CLOSE c_ib;
3324 		ELSE
3325 			l_ib_rec.serial_number  := l_sr_rec.current_serial_number;
3326 			l_ib_rec.lot_number     := NULL;   -- not yet supported
3327 		END IF;
3328 	  END IF;
3329     END IF;
3330     l_rec.incident_customer_name  := l_task_rec.party_name;
3331 
3332     --begin addition for bug 5674408
3333     IF (LENGTH(NVL(l_task_rec.party_name, 0)) > 80)
3334     THEN
3335         l_lines := ceil(length(l_task_rec.party_name)/80) - 1;
3336         l_rec.incident_customer_name := null;
3337 
3338         for i in 1..l_lines
3339         loop
3340             l_rec.incident_customer_name := l_rec.incident_customer_name || SUBSTRB (l_task_rec.party_name, 1, 80) || fnd_global.local_chr (10);
3341             l_task_rec.party_name := substrb(l_task_rec.party_name,81);
3342         end loop;
3343 
3344         l_rec.incident_customer_name := l_rec.incident_customer_name || SUBSTRB (l_task_rec.party_name, 1);
3345     END IF;
3346     --end addition for bug 5674408
3347 
3348     IF l_task_rec.actual_start_date is  not null
3349     THEN
3350 
3351       if sch_adv_tz ='UTZ' and  p_timezone_enb
3352       then
3353         l_dc_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,p_client_tz_code);
3354         l_dc_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,p_client_tz_code);
3355         l_dc_scheduled_start_date :=fnd_date.adjust_datetime(l_task_rec.scheduled_start_date,p_server_tz_code,p_client_tz_code);
3356         l_dc_scheduled_end_date   :=fnd_date.adjust_datetime(l_task_rec.scheduled_end_date,p_server_tz_code,p_client_tz_code);
3357         l_dc_actual_start_date    :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_client_tz_code);
3358         l_dc_actual_end_date      :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_client_tz_code);
3359         l_actual_start_date       :=l_dc_actual_start_date;
3360         if l_task_rec.ic_tz_code is not null and  p_timezone_enb
3361         then
3362           l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3363           l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3364           l_ic_scheduled_start_date :=fnd_date.adjust_datetime(l_task_rec.scheduled_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3365           l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(l_task_rec.scheduled_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3366           l_ic_actual_start_date    :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3367           l_ic_actual_end_date      :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3368           l_actual_start_date       :=l_ic_actual_start_date;
3369           l_tz_desc                 :=l_task_rec.tz_desc;
3370         end if;
3371       elsif sch_adv_tz ='CTZ' and  p_timezone_enb
3372       then
3373         l_dc_planned_start_date   :=l_task_rec.planned_start_date;
3374         l_dc_planned_end_date     :=l_task_rec.planned_end_date;
3375         l_dc_scheduled_start_date :=l_task_rec.scheduled_start_date;
3376         l_dc_scheduled_end_date   :=l_task_rec.scheduled_end_date;
3377         l_dc_actual_start_date    :=p_start_date;
3378         l_dc_actual_end_date      :=p_end_date;
3379 
3380         l_actual_start_date       :=l_dc_actual_start_date;
3381         if l_task_rec.ic_tz_code is not null and p_timezone_enb
3382         then
3383           l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3384           l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3385           l_ic_scheduled_start_date :=fnd_date.adjust_datetime(l_task_rec.scheduled_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3386           l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(l_task_rec.scheduled_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3387           l_ic_actual_start_date    :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3388           l_ic_actual_end_date      :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3389           l_actual_start_date       :=l_ic_actual_start_date;
3390           l_tz_desc                 :=l_task_rec.tz_desc;
3391         end if;
3392       elsif sch_adv_tz ='ITZ' and  p_timezone_enb
3393       then
3394         l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3395         l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3396         l_ic_scheduled_start_date :=fnd_date.adjust_datetime(l_task_rec.scheduled_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3397         l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(l_task_rec.scheduled_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3398         l_ic_actual_start_date    :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3399         l_ic_actual_end_date      :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3400         l_actual_start_date       :=l_ic_actual_start_date;
3401         l_tz_desc                 := p_inc_tz_desc;
3402       end if;
3403 
3404       l_rec.departure_time:=
3405       l_actual_start_date - (
3406                                inv_convert.inv_um_convert(
3407                                 0
3408                                , NULL
3409                                , NVL(l_task_rec.actual_travel_duration, 0)
3410                                , NVL(l_task_rec.actual_travel_duration_uom, g_uom_minutes)
3411                                , g_uom_hours
3412                                , NULL
3413                                , NULL
3414                                )
3415                              / 24
3416                             );
3417         OPEN c_uom(NVL(l_task_rec.actual_travel_duration_uom, g_uom_minutes));
3418         FETCH c_uom INTO l_uom;
3419         IF c_uom%NOTFOUND THEN
3420           l_uom  := NVL(l_task_rec.actual_travel_duration_uom, g_uom_minutes);
3421         END IF;
3422         CLOSE c_uom;
3423         l_rec.travel_time := NVL(l_task_rec.actual_travel_duration, 0) || ' ' || l_uom;
3424     ELSE
3425       if sch_adv_tz ='UTZ' and  p_timezone_enb
3426       then
3427         l_dc_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,p_client_tz_code);
3428         l_dc_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,p_client_tz_code);
3429         l_dc_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_client_tz_code);
3430         l_dc_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_client_tz_code);
3431         l_scheduled_start_date    :=l_dc_scheduled_start_date;
3432         if l_task_rec.ic_tz_code is not null
3433         then
3434           l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3435           l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3436           l_ic_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3437           l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3438           l_scheduled_start_date    :=l_ic_scheduled_start_date;
3439           l_tz_desc                 :=l_task_rec.tz_desc;
3440         end if;
3441       elsif sch_adv_tz ='CTZ'  and  p_timezone_enb
3442       then
3443         l_dc_planned_start_date   :=l_task_rec.planned_start_date;
3444         l_dc_planned_end_date     :=l_task_rec.planned_end_date;
3445         l_dc_scheduled_start_date :=p_start_date;
3446         l_dc_scheduled_end_date   :=p_end_date;
3447         l_scheduled_start_date    :=l_dc_scheduled_start_date;
3448         if l_task_rec.ic_tz_code is not null
3449         then
3450           l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3451           l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3452           l_ic_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,l_task_rec.ic_tz_code);
3453           l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,l_task_rec.ic_tz_code);
3454           l_scheduled_start_date    :=l_ic_scheduled_start_date;
3455           l_tz_desc                 :=l_task_rec.tz_desc;
3456         end if;
3457       elsif sch_adv_tz ='ITZ' and  p_timezone_enb
3458       then
3459         l_ic_planned_start_date   :=fnd_date.adjust_datetime(l_task_rec.planned_start_date,p_server_tz_code,p_inc_tz_code);
3460         l_ic_planned_end_date     :=fnd_date.adjust_datetime(l_task_rec.planned_end_date,p_server_tz_code,p_inc_tz_code);
3461         l_ic_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_client_tz_code);
3462         l_ic_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_client_tz_code);
3463         l_scheduled_start_date    :=l_ic_scheduled_start_date;
3464         l_tz_desc                 := p_inc_tz_desc;
3465       end if;
3466          l_rec.departure_time:=(l_scheduled_start_date - (nvl(p_duration,0)/1440));
3467          OPEN c_uom(NVL(l_task_rec.sched_travel_duration_uom, g_uom_minutes));
3468     	   FETCH c_uom INTO l_uom;
3469          IF c_uom%NOTFOUND THEN
3470             l_uom  := NVL(l_task_rec.sched_travel_duration_uom, g_uom_minutes);
3471          END IF;
3472          CLOSE c_uom;
3473          --l_rec.travel_time := NVL(l_task_rec.sched_travel_duration, 0) || ' ' || l_uom;
3474          l_rec.travel_time := nvl(p_duration,0) || ' ' || l_uom;
3475     END IF;
3476 
3477     If CSF_GPS_PUB.IS_GPS_ENABLED='Y'
3478     THEN
3479 
3480       csf_resource_pub.get_location(
3481        x_return_status      => l_return_status
3482       ,x_msg_count          => l_msg_count
3483       ,x_msg_data           => l_msg_data
3484       ,p_resource_id        => p_resource_id
3485       ,p_resource_type      => p_resource_type
3486       ,p_date               => p_start_date
3487       ,x_creation_date      => l_creation_date
3488       ,x_feed_time          => l_feed_time
3489       ,x_status_code        => l_status
3490       ,x_latitude           => l_latitude
3491       ,x_longitude          => l_longitude
3492       ,x_speed              => l_speed
3493       ,x_direction          => l_direction
3494       ,x_parked_time        => l_parked_time
3495       ,x_address            => l_address
3496       ,x_device_tag         => l_device_tag
3497       ,x_status_code_meaning=> l_status_code_meaning
3498       );
3499     END IF;
3500 
3501 
3502 
3503     l_rec.assigned_flag           := l_task_rec.assigned_flag;
3504     l_rec.is_plan_option          := 'N';
3505 
3506     for tooltip_rec in c_cust_tooltip
3507     loop
3508       g_tooltip_fields := g_tooltip_fields || '-' || tooltip_rec.field_name;
3509 
3510       l_count:= nvl(l_count,0) + 1;
3511     end loop;
3512     g_tooltip_fields := l_count || g_tooltip_fields || '-';
3513 
3514     if g_tooltip_fields is not null and length(g_tooltip_fields) > 2
3515     then
3516 
3517       l_count := substr(g_tooltip_fields,1,instr(g_tooltip_fields,'-')-1);
3518 
3519       l_var   := substr(g_tooltip_fields,instr(g_tooltip_fields,'-')+1);
3520 
3521 	  l_str :='<TOOLTIP>';
3522         for i in 1..l_count
3523         loop
3524           l_field := substr(l_var,1,instr(l_var,'-')-1);
3525 
3526           l_var := substr(l_var,instr(l_var,'-')+1);
3527 
3528           if l_field = 'TASK_NAME'
3529           then
3530                 l_str := l_str
3531                 || '<LABEL>'
3532                 || g_task_name
3533                 || '</LABEL>'
3534                 || '<VALUE fgColor='
3535                 || 0
3536                 || '>'
3537                 || l_task_rec.task_name
3538                 || '</VALUE>';
3539           elsif  l_field = 'TASK_NUMBER'
3540           then
3541                 l_str := l_str
3542                 || '<LABEL>'
3543                 || g_task_number
3544                 || '</LABEL>'
3545                 || '<VALUE fgColor='
3546                 || 0
3547                 || '>'
3548                 || l_task_rec.task_number
3549                 || '</VALUE>';
3550           elsif l_field = 'TASK_TYPE'
3551           then
3552                 l_str := l_str
3553                 || '<LABEL>'
3554                 || g_task_type
3555                 || '</LABEL>'
3556                 || '<VALUE fgColor='
3557                 || 0
3558                 || '>'
3559                 || l_task_rec.task_type
3560                 || '</VALUE>';
3561           elsif l_field = 'ASSIGNMENT_STATUS'
3562           then
3563                 l_str := l_str
3564                 || '<LABEL>'
3565                 || g_task_status
3566                 || '</LABEL>'
3567                 || '<VALUE fgColor='
3568                 || 0
3569                 || '>'
3570                 || l_task_rec.task_status
3571                 || '</VALUE>';
3572           elsif l_field = 'TECHNICIAN_STATUS' AND CSF_GPS_PUB.IS_GPS_ENABLED='Y'
3573           then
3574                 l_str :=l_str
3575                 ||'<LABEL>'
3576                 || g_tech_status
3577                 || '</LABEL>'
3578                 || '<VALUE fgColor='
3579                 || 0
3580                 || '>'
3581                 || l_status_code_meaning
3582                 || '</VALUE>';
3583            elsif l_field = 'LATITUDE' AND CSF_GPS_PUB.IS_GPS_ENABLED='Y'
3584            then
3585                 l_str :=l_str
3586                 ||'<LABEL>'
3587                 || g_tech_lat
3588                 || '</LABEL>'
3589                 || '<VALUE fgColor='
3590                 || 0
3591                 || '>'
3592                 || l_latitude
3593                 || '</VALUE>';
3594            elsif l_field = 'LOGITUDE' AND CSF_GPS_PUB.IS_GPS_ENABLED='Y'
3595            then
3596                 l_str :=l_str
3597                 ||'<LABEL>'
3598                 || g_tech_lon
3599                 || '</LABEL>'
3600                 || '<VALUE fgColor='
3601                 || 0
3602                 || '>'
3603                 || l_longitude
3604                 || '</VALUE>';
3605             elsif l_field = 'RESOURCE_GPS_ADD' AND CSF_GPS_PUB.IS_GPS_ENABLED='Y'
3606             then
3607                 l_str :=l_str
3608                 || '<LABEL>'
3609                 ||  g_tech_cur_add
3610                 || '</LABEL>'
3611                 || '<VALUE fgColor='
3612                 || 0
3613                 || '>'
3614                 || l_address
3615                 || '</VALUE>';
3616             elsif l_field = 'GPS_DEVICE_TAG' AND CSF_GPS_PUB.IS_GPS_ENABLED='Y'
3617             then
3618                 l_str :=l_str
3619                 ||'<LABEL>'
3620                 || g_tech_dev_tag
3621                 || '</LABEL>'
3622                 || '<VALUE fgColor='
3623                 || 0
3624                 || '>'
3625                 || l_device_tag
3626                 || '</VALUE>';
3627             elsif l_field = 'CUSTOMER_NAME'
3628             then
3629                 l_str :=l_str
3630                 || '<LABEL>'
3631                 || g_cust_name
3632                 || '</LABEL>'
3633                 || '<VALUE fgColor='
3634                 || 0
3635                 || '>'
3636                 || l_rec.incident_customer_name
3637                 || '</VALUE>';
3638              elsif l_field = 'ADDRESS'
3639              then
3640                 l_str :=l_str
3641                 || '<LABEL>'
3642                 ||  g_address
3643                 || '</LABEL>'
3644                 || '<VALUE fgColor='
3645                 || 0
3646                 || '>'
3647                 || l_task_rec.small_address
3648                 || '</VALUE>';
3649              elsif l_field = 'TIMEZONE' AND p_timezone_enb
3650              then
3651                 l_str :=l_str
3652                 || '<LABEL>'
3653                 || g_timezone
3654                 || '</LABEL>'
3655                 || '<VALUE fgColor='
3656                 || 0
3657                 || '>'
3658                 || l_tz_desc
3659                 || '</VALUE>';
3660              elsif l_field = 'PRODUCT_NAME'
3661              then
3662               l_str := l_str
3663                 || '<LABEL>'
3664                 || g_product_name
3665                 || '</LABEL>'
3666                 || '<VALUE fgColor='
3667                 || 0
3668                 || '>'
3669                 || l_sr_rec.product_name
3670                 || '</VALUE>';
3671 
3672              elsif l_field = 'SERIAL_NO'
3673              then
3674                 l_str  :=l_str
3675                 || '<LABEL>'
3676                 || g_serial
3677                 || '</LABEL>'
3678                 || '<VALUE fgColor='
3679                 || 0
3680                 || '>'
3681                 || l_ib_rec.serial_number
3682                 || '</VALUE>';
3683              elsif l_field = 'PLANNED_START'    AND   p_timezone_enb
3684              then
3685                 l_str  :=l_str
3686                 || '<LABEL>'
3687                 || g_inc_plan_start_date
3688                 || '</LABEL>'
3689                 || '<VALUE fgColor='
3690                 || 0
3691                 || '>'
3692                 || to_char(l_ic_planned_start_date,g_date_format||' hh24:mi')
3693                 || '</VALUE>';
3694              elsif l_field = 'PLANNED_END'    AND   p_timezone_enb
3695              then
3696                 l_str  :=l_str
3697                 || '<LABEL>'
3698                 || g_inc_plan_end_date
3699                 || '</LABEL>'
3700                 || '<VALUE fgColor='
3701                 || 0
3702                 || '>'
3703                 || to_char(l_ic_planned_end_date,g_date_format||' hh24:mi')
3704                 || '</VALUE>';
3705              elsif l_field = 'PLANNED_EFFORT'
3706              then
3707                 l_str  :=l_str
3708                 || '<LABEL>'
3709                 || g_planned_effort
3710                 || '</LABEL>'
3711                 || '<VALUE fgColor='
3712                 || 0
3713                 || '>'
3714                 || l_planned_effort
3715                 || '</VALUE>';
3716              elsif l_field = 'SCHEDULED_START'    AND   p_timezone_enb
3717              then
3718                 l_str  :=l_str
3719                 || '<LABEL>'
3720                 || g_inc_sched_start_date
3721                 || '</LABEL>'
3722                 || '<VALUE fgColor='
3723                 || 0
3724                 || '>'
3725                 || to_char(l_ic_scheduled_start_date,g_date_format||' hh24:mi')
3726                 || '</VALUE>';
3727              elsif l_field = 'SCHEDULED_END'    AND   p_timezone_enb
3728              then
3729                  l_str  :=l_str
3730                 || '<LABEL>'
3731                 || g_end
3732                 || '</LABEL>'
3733                 || '<VALUE fgColor='
3734                 || 0
3735                 || '>'
3736                 || to_char(l_ic_scheduled_end_date,g_date_format||' hh24:mi')
3737                 || '</VALUE>';
3738              elsif l_field = 'ACTUAL_START'    AND   p_timezone_enb
3739              then
3740                 l_str  :=l_str
3741                 || '<LABEL>'
3742                 || g_inc_actul_start_date
3743                 || '</LABEL>'
3744                 || '<VALUE fgColor='
3745                 || 0
3746                 || '>'
3747                 || to_char(l_ic_actual_start_date,g_date_format||' hh24:mi')
3748                 || '</VALUE>';
3749              elsif l_field = 'ACTUAL_END'    AND   p_timezone_enb
3750              then
3751                 l_str  :=l_str
3752                 || '<LABEL>'
3753                 || g_inc_actul_end_date
3754                 || '</LABEL>'
3755                 || '<VALUE fgColor='
3756                 || 0
3757                 || '>'
3758                 || to_char(l_ic_actual_end_date,g_date_format||' hh24:mi')
3759                 || '</VALUE>';
3760              elsif l_field = 'ACTUAL_EFFORT'
3761              then
3762                 l_str  :=l_str
3763                 || '<LABEL>'
3764                 || g_actual_effort
3765                 || '</LABEL>'
3766                 || '<VALUE fgColor='
3767                 || 0
3768                 || '>'
3769                 || l_actual_effort
3770                 || '</VALUE>';
3771              elsif l_field = 'PLANNED_START_DATE_DC' and sch_adv_tz <> 'ITZ' --this condition is used to restrict the tooltip
3772 																			 --according to logic we should show only incident
3773 																			 --timezone if schedule advise window is in same.
3774              then
3775                 l_str  :=l_str
3776                 || '<LABEL>'
3777                 || g_planned_start
3778                 || '</LABEL>'
3779                 || '<VALUE fgColor='
3780                 || 0
3781                 || '>'
3782                 || to_char(l_dc_planned_start_date,g_date_format||' hh24:mi')
3783                 || '</VALUE>';
3784              elsif l_field = 'PLANNED_END_DATE_DC'  and sch_adv_tz <> 'ITZ'  --this condition is used to restrict the tooltip
3785 																			 --according to logic we should show only incident
3786 																			 --timezone if schedule advise window is in same.
3787              then
3788                 l_str  :=l_str
3789                 || '<LABEL>'
3790                 || g_dc_plan_end_date
3791                 || '</LABEL>'
3792                 || '<VALUE fgColor='
3793                 || 0
3794                 || '>'
3795                 || to_char(l_dc_planned_end_date,g_date_format||' hh24:mi')
3796                 || '</VALUE>';
3797              elsif l_field = 'SCHEDULED_START_DATE_DC' and sch_adv_tz <> 'ITZ' --this condition is used to restrict the tooltip
3798 																			   --according to logic we should show only incident
3799 																			   --timezone if schedule advise window is in same.
3800              then
3801                 l_str  :=l_str
3802                 || '<LABEL>'
3803                 || g_sched_start
3804                 || '</LABEL>'
3805                 || '<VALUE fgColor='
3806                 || 0
3807                 || '>'
3808                 || to_char(l_dc_scheduled_start_date,g_date_format||' hh24:mi')
3809                 || '</VALUE>';
3810              elsif l_field = 'SCHEDULED_END_DATE_DC' and sch_adv_tz <> 'ITZ' --this condition is used to restrict the tooltip
3811 																			 --according to logic we should show only incident
3812 																			 --timezone if schedule advise window is in same.
3813              then
3814                  l_str  :=l_str
3815                 || '<LABEL>'
3816                 || g_dc_sched_end_date
3817                 || '</LABEL>'
3818                 || '<VALUE fgColor='
3819                 || 0
3820                 || '>'
3821                 || to_char(l_dc_scheduled_end_date,g_date_format||' hh24:mi')
3822                 || '</VALUE>';
3823              elsif l_field = 'ACTUAL_START_DATE_DC'  and sch_adv_tz <> 'ITZ' --this condition is used to restrict the tooltip
3824 																			 --according to logic we should show only incident
3825 																			 --timezone if schedule advise window is in same.
3826              then
3827                 l_str  :=l_str
3828                 || '<LABEL>'
3829                 || g_actual_start
3830                 || '</LABEL>'
3831                 || '<VALUE fgColor='
3832                 || 0
3833                 || '>'
3834                 || to_char(l_dc_actual_start_date,g_date_format||' hh24:mi')
3835                 || '</VALUE>';
3836              elsif l_field = 'ACTUAL_END_DATE_DC'    and sch_adv_tz <> 'ITZ' --this condition is used to restrict the tooltip
3837 																			 --according to logic we should show only incident
3838 																			 --timezone if schedule advise window is in same.
3839              then
3840 
3841                 l_str  :=l_str
3842                 || '<LABEL>'
3843                 || g_dc_actul_end_date
3844                 || '</LABEL>'
3845                 || '<VALUE fgColor='
3846                 || 0
3847                 || '>'
3848                 || to_char(l_dc_actual_end_date,g_date_format||' hh24:mi')
3849                 || '</VALUE>';
3850 
3851              elsif l_field = 'DEPARTURE_TIME'
3852              then
3853                 l_str  :=l_str
3854                 || '<LABEL>'
3855                 || g_departure
3856                 || '</LABEL>'
3857                 || '<VALUE fgColor='
3858                 || 0
3859                 || '>'
3860                 || to_char(l_rec.departure_time,g_date_format||' hh24:mi')
3861                 || '</VALUE>';
3862              elsif l_field = 'TRAVEL_TIME'
3863              then
3864                 l_str  :=l_str
3865                 || '<LABEL>'
3866                 || g_travel_time
3867                 || '</LABEL>'
3868                 || '<VALUE fgColor='
3869                 || 0
3870                 || '>'
3871                 || l_rec.travel_time
3872                 || '</VALUE>';
3873              elsif l_field = 'COMMUTE_TIME'
3874              then
3875                 l_str  :=l_str
3876                 || '<LABEL>'
3877                 || g_off_time
3878                 || '</LABEL>'
3879                 || '<VALUE fgColor='
3880                 || 0
3881                 || '>'
3882                 || l_off_time
3883                 || '</VALUE>';
3884              elsif l_field = 'PERSONAL_TIME'
3885              then
3886                 l_str  :=l_str
3887                 || '<LABEL>'
3888                 || g_per_time
3889                 || '</LABEL>'
3890                 || '<VALUE fgColor='
3891                 || 0
3892                 || '>'
3893                 || l_per_time
3894                 || '</VALUE>';
3895              elsif l_field like 'LINE%'
3896              then
3897                  l_str :=l_str|| '<LINE></LINE>';
3898              end if;
3899         end loop;
3900      END IF;-- This is end if for g_tooltip_fields is not null and length(g_tooltip_fields) > 2
3901 	 l_str  :=l_str|| '</TOOLTIP>';
3902     RETURN l_str;
3903   END get_tooltip_data_sch_advise_cu;
3904 
3905   FUNCTION convert_to_days(p_duration NUMBER, p_uom VARCHAR2, p_uom_hours VARCHAR2)
3906     RETURN NUMBER IS
3907     l_value NUMBER;
3908   BEGIN
3909     l_value  :=
3910       inv_convert.inv_um_convert(
3911         item_id                      => 0
3912       , PRECISION                    => 20
3913       , from_quantity                => p_duration
3914       , from_unit                    => p_uom
3915       , to_unit                      => p_uom_hours
3916       , from_name                    => NULL
3917       , to_name                      => NULL
3918       );
3919     RETURN l_value / 24;
3920   END convert_to_days;
3921 
3922   FUNCTION get_green
3923     RETURN NUMBER IS
3924   BEGIN
3925     RETURN green;
3926   END;
3927 
3928 
3929   FUNCTION get_gantt_task_color(
3930     p_task_id              IN NUMBER
3931   , p_task_type_id         IN NUMBER
3932   , p_task_priority_id     IN NUMBER
3933   , p_assignment_status_id IN NUMBER
3934   , p_task_assignment_id   IN NUMBER
3935   , p_actual_start_date    IN DATE
3936   , p_actual_end_date      IN DATE
3937   , p_actual_effort        IN NUMBER
3938   , p_actual_effort_uom    IN VARCHAR2
3939   , p_planned_effort       IN NUMBER
3940   , p_planned_effort_uom   IN VARCHAR2
3941   , p_scheduled_start_date IN DATE
3942   , p_scheduled_end_date   IN DATE
3943   )
3944     RETURN NUMBER IS
3945   --variable for setting color code for gantt
3946 
3947   --variable for storing Profile value set by user
3948    -- This line is commented by vakulkar fnd_profile.value('CSF_TASK_SIGNAL_COLOR');
3949   --when you call this function from gantt, it does not get refreshed value from the buffer
3950   --instead it gets null or old value.
3951   --but when you use fnd_profile.value_specific function it returns the current value.
3952   --variable for returning color code for a task
3953   BEGIN
3954     l_task_custom_color  := 'N';
3955 
3956     IF p_task_type_id NOT IN(20, 21) THEN
3957       IF p_actual_start_date IS NOT NULL THEN
3958         IF p_actual_end_date IS NOT NULL THEN
3959           IF p_actual_end_date = p_actual_start_date THEN
3960             --set flag for color code
3961             l_task_custom_color  := 'Y';
3962           END IF;   --end if for actual_end_date=actual_start_date
3963         ELSE
3964           --     This new case is introduced according the Mini-Design made by Peter
3965           --     Which was missing in HLD
3966           --     Changed on 17-dec-2003 for bug 3306656 by vakulkar
3967           IF NVL(p_actual_effort, 0) = 0 THEN
3968             IF NVL(p_planned_effort, 0) = 0 THEN
3969               l_task_custom_color  := 'Y';
3970             END IF;
3971           END IF;
3972         --     End of the code added for the change in mini-design
3973         END IF;   --end if for actual_end_date is not null
3974       ELSE   --for actual start date is null
3975         IF p_scheduled_end_date IS NOT NULL THEN
3976           IF p_scheduled_end_date = p_scheduled_start_date THEN
3977             --set flag for color code
3978             l_task_custom_color  := 'Y';
3979           END IF;   --end if for scheduled_end_date=scheduled_start_date
3980         ELSE
3981           --set flag for color code
3982           l_task_custom_color  := 'Y';
3983         END IF;   --end if scheduled end_date is not null
3984       END IF;   --end if for actual_start_date is not null
3985     END IF;   --end if task_type_id
3986 
3987     --    condition for departure and arrival task
3988     IF p_task_type_id IN(20, 21) THEN
3989       IF p_scheduled_start_date IS NOT NULL AND p_scheduled_end_date IS NOT NULL THEN
3990         IF p_scheduled_start_date <> p_scheduled_end_date THEN
3991           IF p_scheduled_end_date > p_scheduled_start_date THEN
3992             --set the color flag
3993             l_task_custom_color  := 'Y';
3994           END IF;   --if scheduled end_date > than start_date
3995         END IF;   --end if for scheduled_end_date is not equal to start_date
3996       END IF;   --end if for scheduled_start and end_dates are not null
3997     END IF;   --end if for task_type_id
3998 
3999     IF l_task_custom_color = 'Y' THEN
4000       --l_rule_id is the profile value set by the user
4001       IF l_rule_id IS NOT NULL THEN
4002         BEGIN
4003           SELECT background_col_dec
4004             INTO l_task_dec_color
4005             FROM jtf_task_custom_colors
4006            WHERE rule_id = l_rule_id;
4007 
4008           RETURN(l_task_dec_color);
4009         EXCEPTION
4010           WHEN NO_DATA_FOUND THEN
4011             RETURN(
4012                    jtf_task_custom_colors_pub.get_task_dec_bgcolor(p_task_id, p_task_type_id
4013                    , p_task_priority_id, p_assignment_status_id)
4014                   );
4015         END;
4016       ELSE
4017         -- if profile is not set then return JTF VALUE
4018         RETURN(
4019                jtf_task_custom_colors_pub.get_task_dec_bgcolor(p_task_id, p_task_type_id
4020                , p_task_priority_id, p_assignment_status_id)
4021               );
4022       END IF;
4023     ELSE
4024       RETURN(
4025              jtf_task_custom_colors_pub.get_task_dec_bgcolor(p_task_id, p_task_type_id
4026              , p_task_priority_id, p_assignment_status_id)
4027             );
4028     END IF;
4029   END get_gantt_task_color;
4030 
4031   PROCEDURE get_planned_task(
4032     p_api_version   IN            NUMBER
4033   , p_init_msg_list IN            VARCHAR2
4034   , p_request_id    IN            VARCHAR2
4035   , x_return_status OUT NOCOPY    VARCHAR2
4036   , x_msg_count     OUT NOCOPY    NUMBER
4037   , x_msg_data      OUT NOCOPY    VARCHAR2
4038   , task_id         OUT NOCOPY    jtf_varchar2_table_100
4039   , start_date      OUT NOCOPY    jtf_date_table
4040   , end_date        OUT NOCOPY    jtf_date_table
4041   , color           OUT NOCOPY    jtf_number_table
4042   , NAME            OUT NOCOPY    jtf_varchar2_table_100
4043   , tooltip         OUT NOCOPY    jtf_varchar2_table_2000
4044   , DURATION        OUT NOCOPY    jtf_number_table
4045   , task_type_id    OUT NOCOPY    jtf_number_table
4046   , resource_key    OUT NOCOPY    jtf_varchar2_table_2000
4047   , sch_adv_tz                 In       Varchar2
4048   ) IS
4049     l_rec               tooltip_data_rec_type := NULL;
4050 
4051     CURSOR c_planned_task IS
4052       SELECT DECODE(task_id, -1, ROWNUM, task_id) || plan_option_id
4053            , start_time
4054            , end_time
4055            , 0 color
4056            , ' ' NAME
4057            , ' ' tooltip
4058            ,   TO_NUMBER(SUBSTR(travel_time, 1, INSTR(travel_time, ':', 1) - 1)) * 60
4059              + TO_NUMBER(SUBSTR(travel_time, INSTR(travel_time, ':', 1) + 1, 5)) travel_time
4060            , NVL(task_type_id, 0)
4061            , resource_id || '-' || resource_type || '-' || plan_option_id
4062         FROM csf_plan_options_v
4063        WHERE sched_request_id = TO_NUMBER(SUBSTR(p_request_id, 1, INSTR(p_request_id, '-', 1) - 1))
4064          AND (
4065                  task_id = -1
4066               OR task_id =
4067                    TO_NUMBER(SUBSTR(p_request_id, INSTR(p_request_id, '-', 1) + 1
4068                      , LENGTH(p_request_id)))
4069              )
4070          AND (task_type_id IS NULL OR(task_type_id <> 20 OR task_type_id <> 21));
4071 
4072     l_uom               VARCHAR2(2000)        := NULL;
4073 
4074     CURSOR c_uom(p_code VARCHAR2) IS
4075       SELECT unit_of_measure_tl
4076         FROM mtl_units_of_measure_vl
4077        WHERE uom_code = p_code;
4078 
4079     l_api_name CONSTANT VARCHAR2(30)          := 'get_planned_task';
4080     l_return_status     VARCHAR2(1);
4081 
4082   BEGIN
4083     task_id       := jtf_varchar2_table_100();
4084     start_date    := jtf_date_table();
4085     end_date      := jtf_date_table();
4086     color         := jtf_number_table();
4087     NAME          := jtf_varchar2_table_100();
4088     tooltip       := jtf_varchar2_table_2000();
4089     DURATION      := jtf_number_table();
4090     task_type_id  := jtf_number_table();
4091     resource_key  := jtf_varchar2_table_2000();
4092 
4093     OPEN c_planned_task;
4094     FETCH c_planned_task
4095     BULK COLLECT INTO task_id
4096          , start_date
4097          , end_date
4098          , color
4099          , NAME
4100          , tooltip
4101          , DURATION
4102          , task_type_id
4103          , resource_key;
4104 
4105     if g_tz_enabled ='Y' and g_dflt_tz_for_sc='CTZ' and task_id.count > 0
4106     then
4107       FOR i IN task_id.FIRST .. task_id.LAST
4108       LOOP
4109          start_date(i) :=fnd_date.adjust_datetime(start_date(i),g_client_tz,g_server_tz );
4110          end_date(i)   :=fnd_date.adjust_datetime(end_date(i)  ,g_client_tz,g_server_tz);
4111       END LOOP;
4112     end if;
4113 
4114     IF task_id.COUNT IS NULL THEN
4115       l_return_status  := 'E';
4116     ELSE
4117       x_return_status  := fnd_api.g_ret_sts_success;
4118     END IF;
4119 
4120     IF NOT l_return_status = fnd_api.g_ret_sts_success THEN
4121       -- just return unexpected error, no message, does
4122       -- not matter, SchedulerResource.java will just skip this resource
4123       -- without message, and only generate an error message
4124       -- when all resources have failed
4125       x_return_status  := fnd_api.g_ret_sts_unexp_error;
4126       RAISE fnd_api.g_exc_unexpected_error;
4127     END IF;
4128 
4129     --standard call to get message count and the message information
4130     fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
4131   --
4132   EXCEPTION
4133     WHEN fnd_api.g_exc_error THEN
4134       x_return_status  := fnd_api.g_ret_sts_error;
4135       fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
4136     WHEN fnd_api.g_exc_unexpected_error THEN
4137       x_return_status  := fnd_api.g_ret_sts_unexp_error;
4138       fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
4139     WHEN OTHERS THEN
4140       x_return_status  := fnd_api.g_ret_sts_unexp_error;
4141 
4142       IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
4143         fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
4144       END IF;
4145   END get_planned_task;
4146 
4147   FUNCTION get_tooltip_for_plan_task(
4148     p_task_id       NUMBER
4149   , p_resource_id   NUMBER
4150   , p_resource_type VARCHAR2
4151   , p_start_date    DATE
4152   , p_end_date      DATE
4153   , p_duration      NUMBER
4154   , p_inc_tz_code    VARCHAR2
4155   , p_server_tz_code VARCHAR2
4156   , p_client_tz_code VARCHAR2
4157   , p_timezone_enb   boolean
4158   , sch_adv_tz      varchar2
4159   , p_inc_tz_desc    varchar2
4160   )
4161     RETURN VARCHAR2 IS
4162     l_scheduled_start Date;
4163     l_scheduled_end   VARCHAR2(30);
4164     l_departure_time  DATE;
4165     l_travel_time     VARCHAR2(100);
4166     l_uom             VARCHAR2(15);
4167     l_str             VARCHAR2(2000) := NULL;
4168 
4169     l_ic_scheduled_start_date date;
4170     l_ic_scheduled_end_date   date;
4171     l_dc_scheduled_start_date date;
4172     l_dc_scheduled_end_date   date;
4173     l_inc_tz_code VARCHAR2(100);
4174     l_inc_tz_desc VARCHAR2(100);
4175     l_off_time varchar2(200);
4176     l_per_time varchar2(200);
4177     l_planned_effort varchar2(200);
4178 	l_territory   number;
4179 
4180     CURSOR c_uom(p_code VARCHAR2) IS
4181       SELECT unit_of_measure_tl
4182         FROM mtl_units_of_measure_vl
4183        WHERE uom_code = p_code;
4184 
4185 	   Cursor c_terr
4186 	IS
4187 	   SELECT territory_id
4188    	     FROM csf_dc_resources_v
4189 	    WHERE resource_id = p_resource_id
4190 	      AND resource_type   = p_resource_type;
4191 
4192 
4193 
4194   BEGIN
4195 
4196     open c_terr;
4197 	fetch c_terr into l_territory;
4198 	close c_terr;
4199     g_excl_travel := csr_scheduler_pub.get_sch_parameter_value(  'spCommuteExcludedTime'
4200                                                               , fnd_global.resp_appl_id
4201                                                               , fnd_global.resp_id
4202                                                               , fnd_global.user_id
4203                                                               , l_territory
4204                                                               , p_resource_type
4205                                                               , p_resource_id
4206                                                               );
4207 
4208     IF nvl(p_inc_tz_code,'ERROR') ='ERROR'
4209     THEN
4210       l_inc_tz_code :=NULL;
4211     ELSE
4212       l_inc_tz_code :=p_inc_tz_code;
4213     END IF;
4214 
4215     if NVL(p_inc_tz_desc,'ERROR') = 'ERROR'
4216     then
4217       l_inc_tz_desc := null;
4218     else
4219       l_inc_tz_desc := p_inc_tz_desc;
4220     end if;
4221 
4222     IF p_timezone_enb
4223     THEN
4224       IF sch_adv_tz ='ITZ'
4225       THEN
4226         l_ic_scheduled_start_date  := fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_client_tz_code);
4227         l_ic_scheduled_end_date    := fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_client_tz_code);
4228         l_scheduled_start          := l_ic_scheduled_start_date;
4229       ELSIF sch_adv_tz = 'UTZ'
4230       THEN
4231           l_dc_scheduled_start_date :=fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_client_tz_code);
4232           l_dc_scheduled_end_date   :=fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_client_tz_code);
4233           l_scheduled_start         :=l_dc_scheduled_start_date;
4234           IF p_inc_tz_code is not null and l_inc_tz_code is not null
4235           THEN
4236             l_ic_scheduled_start_date  := fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_inc_tz_code);
4237             l_ic_scheduled_end_date    := fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_inc_tz_code);
4238           END IF;
4239       ELSE
4240           l_dc_scheduled_start_date  := p_start_date;
4241           l_dc_scheduled_end_date    := p_end_date;
4242           l_scheduled_start          := l_dc_scheduled_start_date;
4243           IF p_inc_tz_code is not null and l_inc_tz_code is not null
4244           THEN
4245             l_ic_scheduled_start_date  := fnd_date.adjust_datetime(p_start_date,p_server_tz_code,p_inc_tz_code);
4246             l_ic_scheduled_end_date    := fnd_date.adjust_datetime(p_end_date,p_server_tz_code,p_inc_tz_code);
4247           END IF;
4248       END IF;
4249 
4250         l_departure_time   :=
4251          l_scheduled_start
4252             - (inv_convert.inv_um_convert(0, NULL, p_duration, g_uom_minutes, g_uom_hours, NULL
4253                  , NULL)
4254                / 24
4255               );
4256 
4257     ELSE
4258       l_dc_scheduled_start_date  := p_start_date;
4259       l_dc_scheduled_end_date    := p_end_date;
4260       l_scheduled_start          := l_dc_scheduled_start_date;
4261       l_departure_time   :=
4262         l_scheduled_start
4263             - (inv_convert.inv_um_convert(0, NULL, p_duration, g_uom_minutes, g_uom_hours, NULL
4264                  , NULL)
4265                / 24
4266               );
4267     END IF;
4268     OPEN c_uom(g_uom_minutes);
4269     FETCH c_uom
4270     INTO l_uom;
4271     IF c_uom%NOTFOUND THEN
4272       l_uom  := g_uom_minutes;
4273     END IF;
4274     CLOSE c_uom;
4275       l_travel_time      := p_duration || ' ' || l_uom;
4276       if p_duration > 0
4277       then
4278         if p_duration >  to_number(g_excl_travel)
4279         then
4280           l_off_time := (p_duration - to_number(g_excl_travel) )|| ' ' || l_uom;
4281           l_per_time := g_excl_travel || ' ' || l_uom;
4282         elsif p_duration < to_number(g_excl_travel)
4283         then
4284           l_per_time := l_travel_time;
4285         end if;
4286       end if;
4287       l_str              :=
4288        '<TOOLTIP>'
4289        || '<CENTER fgColor='
4290        || 65280
4291        || '>'
4292        || g_option
4293        || '</CENTER>';
4294 
4295 
4296     IF p_timezone_enb
4297     THEN
4298        l_str :=
4299        l_str
4300        || '<LINE></LINE>'
4301        || '<LABEL>'
4302        || g_timezone
4303        || '</LABEL>'
4304        || '<VALUE fgColor='
4305        || 65280
4306        || '>'
4307        || l_inc_tz_desc
4308        || '</VALUE>'
4309        || '<LABEL>'
4310        || g_sched_start
4311        || '</LABEL>'
4312        || '<VALUE fgColor='
4313        || 65280
4314        || '>'
4315        || to_char(l_ic_scheduled_start_date,g_date_format||' hh24:mi')
4316        || '</VALUE>'
4317        || '<LABEL>'
4318        || g_end
4319        || '</LABEL>'
4320        || '<VALUE fgColor='
4321        || 65280
4322        || '>'
4323        || to_char(l_ic_scheduled_end_date,g_date_format||' hh24:mi')
4324        || '</VALUE>'
4325        ;
4326     END IF;
4327     If sch_adv_tz <> 'ITZ'
4328     then
4329        l_str :=
4330        l_str|| '<LINE></LINE>';
4331     end if;
4332 
4333 
4334     If sch_adv_tz <> 'ITZ'
4335     then
4336        l_str :=
4337        l_str
4338        || '<LABEL>'
4339        || g_sched_start
4340        || '</LABEL>'
4341        || '<VALUE fgColor='
4342        || 65280
4343        || '>'
4344        || to_char(l_dc_scheduled_start_date,g_date_format||' hh24:mi')
4345        || '</VALUE>'
4346        || '<LABEL>'
4347        || g_end
4348        || '</LABEL>'
4349        || '<VALUE fgColor='
4350        || 65280
4351        || '>'
4352        || to_char(l_dc_scheduled_end_date,g_date_format||' hh24:mi')
4353        || '</VALUE>'
4354        || '<LABEL>'
4355        || g_planned_effort
4356        || '</LABEL>'
4357        || '<VALUE fgColor='
4358        || 65280
4359        || '>'
4360        || l_planned_effort
4361        || '</VALUE>';
4362     End If;
4363        l_str :=
4364        l_str
4365        || '<LABEL>'
4366        || g_departure
4367        || '</LABEL>'
4368        || '<VALUE fgColor='
4369        || 65280
4370        || '>'
4371        || to_char(l_departure_time,g_date_format||' hh24:mi')
4372        || '</VALUE>'
4373        || '<LABEL>'
4374        || g_travel_time
4375        || '</LABEL>'
4376        || '<VALUE fgColor='
4377        || 65280
4378        || '>'
4379        || l_travel_time
4380        || '</VALUE>';
4381     IF g_commute = 'PARTIAL'
4382     THEN
4383           l_str :=
4384           l_str
4385        || '<LABEL>'
4386        || g_off_time
4387        || '</LABEL>'
4388        || '<VALUE fgColor='
4389        || 65280
4390        || '>'
4391        || l_off_time
4392        || '</VALUE>'
4393        || '<LABEL>'
4394        || g_per_time
4395        || '</LABEL>'
4396        || '<VALUE fgColor='
4397        || 65280
4398        || '>'
4399        || l_per_time
4400        || '</VALUE>';
4401     END IF;
4402     l_str :=
4403           l_str
4404        || '</TOOLTIP>';
4405 
4406     RETURN l_str;
4407   END get_tooltip_for_plan_task;
4408 
4409   FUNCTION get_skilled_resources(
4410     p_task_id       NUMBER
4411   , p_start         DATE
4412   , p_end           DATE
4413   , p_resource_id   NUMBER DEFAULT NULL
4414   , p_resource_type VARCHAR2 DEFAULT NULL
4415   )
4416     RETURN NUMBER IS
4417     j            NUMBER                           := 0;
4418     l_levelmatch NUMBER                           := NULL;
4419     l_start      date;
4420     l_end        date;
4421 
4422     --modified the following cursor to check for skill_active date range for bug 3418658
4423     CURSOR c_resource_plan_window(
4424       p_task_id       NUMBER
4425     , p_start         DATE
4426     , p_end           DATE
4427     , p_resource_id   NUMBER
4428     , p_resource_type VARCHAR2
4429     ) IS
4430   SELECT rs.resource_id
4431          , rs.resource_type
4432          , rs.winstart
4433          , rs.winend
4434          , rs.count_of_matching_skills
4435          , rs.skill_level
4436       FROM (SELECT rs.resource_id
4437                  , rs.resource_type
4438                  , GREATEST(
4439                        MAX(rs.start_date_active)
4440                      , NVL(MAX(ss.start_date_active), p_start)
4441                      , p_start
4442                      ) winstart
4443                  , LEAST(
4444                        NVL(MIN(rs.end_date_active + 1), p_end)
4445                      , NVL(MIN(ss.end_date_active + 1), p_end)
4446                      , p_end
4447                      ) winend
4448                  , COUNT(*) count_of_matching_skills
4449                  , SUM( 1/rsl.step_value ) skill_level
4450               FROM csf_resource_skills_b rs
4451                  , csf_required_skills_b ts
4452                  , csf_skill_levels_b rsl
4453                  , csf_skill_levels_b tsl
4454                  , csf_skills_b ss
4455              WHERE DECODE(
4456                        SIGN(rsl.step_value - tsl.step_value)
4457                      , -1, DECODE(l_levelmatch, 1, 'Y', 'N')
4458                      , 0, 'Y'
4459                      , 1, DECODE(l_levelmatch, 3, 'Y', 'N')
4460                      ) = 'Y'
4461                AND rsl.skill_level_id = rs.skill_level_id
4462                AND tsl.skill_level_id = ts.skill_level_id
4463                AND TRUNC(rs.start_date_active) < p_end
4464                AND (TRUNC(rs.end_date_active + 1) > p_start OR rs.end_date_active IS NULL)
4465                AND (rs.resource_id = p_resource_id OR p_resource_id IS NULL)
4466                AND (rs.resource_type = p_resource_type OR p_resource_type IS NULL)
4467                AND NVL(ts.disabled_flag, 'N') <> 'Y'
4468                AND ts.has_skill_type = 'TASK'
4469                AND ts.has_skill_id = p_task_id
4470                AND ss.skill_id(+) = rs.skill_id
4471                AND (
4472                              ts.skill_type_id NOT IN (2, 3)
4473                          AND rs.skill_id = ts.skill_id
4474                          AND ts.skill_type_id = rs.skill_type_id
4475                          AND TRUNC(ss.start_date_active) < SYSDATE
4476                          AND TRUNC(NVL(ss.end_date_active, SYSDATE) + 1) > SYSDATE
4477                      OR      ts.skill_type_id = 2
4478                          AND rs.skill_id = ts.skill_id
4479                          AND ts.skill_type_id = rs.skill_type_id
4480                          AND EXISTS (SELECT 1 FROM mtl_system_items_kfv msi WHERE msi.inventory_item_id = rs.skill_id)
4481                      OR      ts.skill_type_id = 3
4482                          AND rs.skill_id = ts.skill_id
4483                          AND ts.skill_type_id = rs.skill_type_id
4484                          AND EXISTS (SELECT 1
4485                                        FROM mtl_item_categories mic
4486                                       WHERE mic.category_id = rs.skill_id
4487                                         AND category_set_id = fnd_profile.VALUE('CS_SR_DEFAULT_CATEGORY_SET'))
4488                    )
4489              GROUP BY rs.resource_id, rs.resource_type) rs
4490           , (
4491               SELECT COUNT(*) count_of_req_skills
4492                 FROM csf_required_skills_b
4493                WHERE NVL(disabled_flag, 'N') <> 'Y'
4494                  AND has_skill_type = 'TASK'
4495                  AND has_skill_id = p_task_id
4496             ) ts
4497      WHERE rs.count_of_matching_skills = ts.count_of_req_skills
4498        AND rs.winstart < rs.winend;
4499 
4500 
4501     l_rec        c_resource_plan_window%ROWTYPE;
4502 
4503   BEGIN
4504     -- Retrieving the profile value that will be used
4505     -- to determine the satifactory level of the skills
4506     -- needed to perform the task.
4507     -- The ff. are the possible profile values:
4508     --   1 for EQUAL TO or SMALLER THAN
4509     --   2 for EQUAL TO
4510     --   3 for EQUAL TO or GREATER THAN
4511     -- In case the profile return a null, the default value
4512     -- will be 2 (EQUAL TO).
4513     l_levelmatch  := NVL(fnd_profile.VALUE('CSF_SKILL_LEVEL_MATCH'), 2);
4514 
4515     l_start := csf_timezones_pvt.date_to_client_tz_date(p_start);
4516     l_end   := csf_timezones_pvt.date_to_client_tz_date(p_end);
4517     OPEN c_resource_plan_window(p_task_id, l_start, l_end, p_resource_id, p_resource_type);
4518     FETCH c_resource_plan_window
4519      INTO l_rec;
4520 
4521     IF c_resource_plan_window%FOUND THEN
4522       RETURN 1;
4523     END IF;
4524 
4525     CLOSE c_resource_plan_window;
4526 
4527     RETURN 0;
4528   END get_skilled_resources;
4529 
4530   FUNCTION get_resource_name(p_res_id NUMBER, p_res_type VARCHAR2)
4531     RETURN VARCHAR2 IS
4532   BEGIN
4533      RETURN csf_resource_pub.get_resource_name(p_res_id,p_res_type);
4534   EXCEPTION
4535     WHEN OTHERS THEN
4536       RETURN NULL;
4537   END get_resource_name;
4538 
4539   FUNCTION get_resource_type_name(p_res_type VARCHAR2)
4540     RETURN VARCHAR2 IS
4541 
4542   BEGIN
4543      RETURN CSF_RESOURCE_PUB.get_resource_type_name(p_res_type);
4544   EXCEPTION
4545     WHEN OTHERS THEN
4546       RETURN NULL;
4547   END get_resource_type_name;
4548 
4549   PROCEDURE drag_n_drop(
4550     p_api_version                IN            NUMBER
4551   , p_init_msg_list              IN            VARCHAR2
4552   , p_commit                     IN            VARCHAR2
4553   , p_task_id                    IN            NUMBER
4554   , p_task_assignment_id         IN            NUMBER DEFAULT NULL
4555   , p_object_version_number      IN OUT NOCOPY NUMBER
4556   , p_old_resource_type_code     IN            VARCHAR2
4557   , p_new_resource_type_code     IN            VARCHAR2
4558   , p_old_resource_id            IN            NUMBER
4559   , p_new_resource_id            IN            NUMBER
4560   , p_cancel_status_id           IN            NUMBER
4561   , p_assignment_status_id       IN            NUMBER
4562   , p_old_object_capacity_id     IN            NUMBER
4563   , p_new_object_capacity_id     IN            NUMBER
4564   , p_sched_travel_distance      IN            NUMBER DEFAULT NULL
4565   , p_sched_travel_duration      IN            NUMBER DEFAULT NULL
4566   , p_sched_travel_duration_uom  IN            VARCHAR2 DEFAULT NULL
4567   , p_old_shift_construct_id     IN            NUMBER DEFAULT NULL
4568   , p_new_shift_construct_id     IN            NUMBER DEFAULT NULL
4569   , p_shift_changed              IN            BOOLEAN
4570   , p_task_changed               IN            BOOLEAN
4571   , p_assignment_changed         IN            BOOLEAN
4572   , p_time_occupied              IN            NUMBER
4573   , p_new_sched_start_date       IN            DATE
4574   , p_new_sched_end_date         IN            DATE
4575   , p_update_plan_date           in	       VARCHAR2  DEFAULT 'N'
4576   , p_planned_start_date         IN	       DATE  DEFAULT NULL
4577   , p_planned_end_date           IN	       DATE  DEFAULT NULL
4578   , p_planned_effort		 IN	       NUMBER DEFAULT NULL
4579   , p_planned_effort_uom	 IN	       VARCHAR2  DEFAULT NULL
4580   , x_return_status              OUT NOCOPY    VARCHAR2
4581   , x_msg_count                  OUT NOCOPY    NUMBER
4582   , x_msg_data                   OUT NOCOPY    VARCHAR2
4583   , x_task_assignment_id         OUT NOCOPY    NUMBER
4584   , x_task_object_version_number OUT NOCOPY    NUMBER
4585   , x_task_status_id             OUT NOCOPY    NUMBER
4586   , x_task_status_name           OUT NOCOPY    VARCHAR2
4587   , x_task_type_id               OUT NOCOPY    NUMBER
4588   ) IS
4589     l_api_name       CONSTANT VARCHAR2(30) := 'drag_n_drop';
4590     l_api_version    CONSTANT NUMBER       := 1.0;
4591     l_old_task_obj_ver_number NUMBER;
4592     l_task_status_id          NUMBER;
4593     l_start_date              DATE;
4594     l_end_date                DATE;
4595     l_old_ta_obj_version      NUMBER;
4596     l_obj_ver_number          VARCHAR2(20);
4597     l_planned_effort          NUMBER  := fnd_api.g_miss_num;
4598     l_planned_effort_uom      VARCHAR2(10) := fnd_api.g_miss_char;
4599 
4600     l_sched_travel_duration     NUMBER:=30 ;
4601     l_sched_travel_duration_uom VARCHAR2(10);
4602 
4603     l_parent_task_id          NUMBER;
4604 
4605     CURSOR c_task(p_task_id NUMBER) IS
4606       SELECT object_version_number
4607            , task_status_id
4608            , scheduled_start_date
4609            , scheduled_end_date
4610 	   , parent_task_id
4611         FROM jtf_tasks_b
4612        WHERE task_id = p_task_id;
4613 
4614     CURSOR c_assign_obj_ver IS
4615       SELECT object_version_number
4616            , actual_start_date
4617 	   , actual_end_date
4618       FROM   JTF_TASK_ASSIGNMENTS
4619       WHERE  task_id= p_task_id
4620       AND    task_assignment_id =p_task_assignment_id;
4621 
4622     CURSOR c_parent_ovn(p_task_id number) IS
4623       SELECT object_version_number
4624        FROM  jtf_tasks_b
4625        WHERE task_id = p_task_id;
4626   BEGIN
4627     -- Standard start of API savepoint
4628     SAVEPOINT drag_n_drop;
4629 
4630     -- Standard call to check for call compatibility
4631     IF NOT fnd_api.compatible_api_call(l_api_version, p_api_version, l_api_name
4632           , 'csf_gantt_data_pkg') THEN
4633       RAISE fnd_api.g_exc_unexpected_error;
4634     END IF;
4635 
4636     -- Initialize message list if p_init_msg_list is set to TRUE
4637     IF fnd_api.to_boolean(p_init_msg_list) THEN
4638       fnd_msg_pub.initialize;
4639     END IF;
4640 
4641     -- Initialize API return status to success
4642     x_return_status  := fnd_api.g_ret_sts_success;
4643     IF p_task_changed OR p_assignment_changed THEN
4644       OPEN c_task(p_task_id);
4645 
4646       FETCH c_task
4647        INTO l_old_task_obj_ver_number
4648           , l_task_status_id
4649           , l_start_date
4650           , l_end_date
4651           , l_parent_task_id;
4652 
4653       IF c_task%NOTFOUND THEN
4654         CLOSE c_task;
4655         RAISE NO_DATA_FOUND;
4656       END IF;
4657 
4658       CLOSE c_task;
4659 
4660       OPEN  c_assign_obj_ver;
4661       FETCH c_assign_obj_ver
4662       INTO l_old_ta_obj_version,l_start_date,l_end_date;
4663       IF c_assign_obj_ver%NOTFOUND THEN
4664         CLOSE c_assign_obj_ver;
4665         RAISE NO_DATA_FOUND;
4666       END IF;
4667       CLOSE c_assign_obj_ver;
4668 
4669       IF p_assignment_changed
4670       OR p_shift_changed
4671       OR l_start_date IS NOT NULL
4672       THEN
4673          l_task_status_id := p_assignment_status_id;
4674       END IF;
4675 
4676       IF p_planned_effort IS NOT NULL
4677       AND p_planned_effort_uom IS NOT NULL
4678       THEN
4679          l_planned_effort := trunc(p_planned_effort,4);
4680         l_planned_effort_uom := p_planned_effort_uom;
4681       END IF;
4682 
4683       IF p_sched_travel_duration IS NOT NULL
4684       AND p_sched_travel_duration_uom IS NOT NULL
4685       THEN
4686         l_sched_travel_duration      := p_sched_travel_duration;
4687         l_sched_travel_duration_uom  := p_sched_travel_duration_uom;
4688 	  ELSIF
4689 	    p_sched_travel_duration_uom IS NULL then
4690 	    l_sched_travel_duration      := fnd_api.g_miss_num;
4691       END IF;
4692 
4693       /*test('Updating Task ');
4694       test('Updating Task  p_task_id :'||p_task_id);
4695       test('Updating Task  l_old_task_obj_ver_number:'||l_old_task_obj_ver_number);
4696       test('Updating Task p_planned_start_date:'||p_planned_start_date);
4697       test('Updating Task p_planned_end_date:'||p_planned_end_date);
4698       test('Updating Task p_new_sched_start_date'||p_new_sched_start_date);
4699       test('Updating Task p_new_sched_end_date'||p_new_sched_end_date);
4700       test('Updating Task l_planned_effort :'||l_planned_effort);
4701       test('Updating Task l_planned_effort_uom :'||l_planned_effort_uom);
4702       test('Updating Task l_task_status_id ;'||l_task_status_id);
4703       */
4704 
4705       csf_tasks_pub.update_task(
4706         p_api_version                => 1.0
4707       , p_init_msg_list              => fnd_api.g_true
4708       , p_commit                     => fnd_api.g_false
4709       , p_task_id                    => p_task_id
4710       , p_object_version_number      => l_old_task_obj_ver_number
4711       , p_planned_start_date         => nvl(p_planned_start_date,fnd_api.g_miss_date)
4712       , p_planned_end_date           => nvl(p_planned_end_date,fnd_api.g_miss_date)
4713       , p_scheduled_start_date       => p_new_sched_start_date
4714       , p_scheduled_end_date         => p_new_sched_end_date
4715       , p_actual_start_date          => fnd_api.g_miss_date
4716       , p_actual_end_date            => fnd_api.g_miss_date
4717       , p_planned_effort             => l_planned_effort
4718       , p_planned_effort_uom         => l_planned_effort_uom
4719       , p_task_status_id             => l_task_status_id
4720       , x_return_status              => x_return_status
4721       , x_msg_count                  => x_msg_count
4722       , x_msg_data                   => x_msg_data
4723       );
4724 
4725       IF x_return_status <> fnd_api.g_ret_sts_success THEN
4726         RAISE fnd_api.g_exc_error;
4727       END IF;
4728 
4729     END IF;
4730 
4731     IF p_assignment_changed
4732     OR l_start_date IS NOT NULL
4733     THEN
4734 
4735      /* test('Assignment Changed creating assignment :');
4736       test('Assignment Changed p_task_id :'||p_task_id);
4737       test('Assignment Changed p_new_resource_type_code :'||p_new_resource_type_code);
4738       test('Assignment Changed p_assignment_status_id :'||p_assignment_status_id);
4739       test('Assignment Changed p_new_shift_construct_id :'||p_new_shift_construct_id);
4740       test('Assignment Changed p_new_object_capacity_id:'||p_new_object_capacity_id);
4741       test('Assignment Changed p_sched_travel_distance :'||p_sched_travel_distance);
4742       test('Assignment Changed p_sched_travel_duration :'||p_sched_travel_duration);
4743       test('Assignment Changed p_sched_travel_duration_uom :'||p_sched_travel_duration_uom);
4744       */
4745 
4746 
4747 
4748       csf_task_assignments_pub.create_task_assignment(
4749         p_api_version                => 1.0
4750       , p_init_msg_list              => fnd_api.g_true
4751       , p_commit                     => fnd_api.g_false
4752       , p_task_id                    => p_task_id
4753       , p_resource_type_code         => p_new_resource_type_code
4754       , p_resource_id                => p_new_resource_id
4755       , p_assignment_status_id       => p_assignment_status_id
4756       , p_shift_construct_id         => p_new_shift_construct_id
4757       , p_object_capacity_id         => p_new_object_capacity_id
4758       , p_sched_travel_distance      => p_sched_travel_distance
4759       , p_sched_travel_duration      => l_sched_travel_duration
4760       , p_sched_travel_duration_uom  => p_sched_travel_duration_uom
4761       , x_return_status              => x_return_status
4762       , x_msg_count                  => x_msg_count
4763       , x_msg_data                   => x_msg_data
4764       , x_task_assignment_id         => x_task_assignment_id
4765       , x_ta_object_version_number   => p_object_version_number
4766       , x_task_object_version_number => x_task_object_version_number
4767       , x_task_status_id             => x_task_status_id
4768       );
4769 
4770 
4771 
4772       IF NVL(x_return_status, 'S') = fnd_api.g_ret_sts_success THEN
4773       /*test('After Creating Assignment ..');
4774       test('Assignment Changed x_task_assignment_id :'||x_task_assignment_id);
4775       test('Assignment Changed p_object_version_number :'||p_object_version_number);
4776       test('Assignment Changed x_task_object_version_number :'||x_task_object_version_number);
4777       test('Assignment Changed x_task_status_id :'||x_task_status_id);
4778       test('Now Updating Assignment ..');
4779       test('Now Updating Assignment p_task_assignment_id:'||p_task_assignment_id);
4780       test('Now Updating Assignment l_old_ta_obj_version:'||l_old_ta_obj_version);
4781       test('Now Updating Assignment p_task_id:'||p_task_id);
4782       test('Now Updating Assignment p_old_resource_type_code:'||p_old_resource_type_code);
4783       test('Now Updating Assignment p_old_resource_id :'||p_old_resource_id);
4784       test('Now Updating Assignment p_cancel_status_id:'||p_cancel_status_id);
4785       test('Now Updating Assignment p_old_shift_construct_id:'||p_old_shift_construct_id);
4786       test('Now Updating Assignment p_old_object_capacity_id:'||p_old_object_capacity_id);
4787       */
4788 
4789         OPEN  c_assign_obj_ver;
4790         FETCH c_assign_obj_ver
4791         INTO l_old_ta_obj_version,l_start_date,l_end_date;
4792         IF c_assign_obj_ver%NOTFOUND THEN
4793           CLOSE c_assign_obj_ver;
4794           RAISE NO_DATA_FOUND;
4795         END IF;
4796         CLOSE c_assign_obj_ver;
4797         csf_task_assignments_pub.update_task_assignment(
4798           p_api_version                => 1.0
4799         , p_init_msg_list              => fnd_api.g_true
4800         , p_commit                     => fnd_api.g_false
4801         , p_task_assignment_id         => p_task_assignment_id
4802         , p_object_version_number      => l_old_ta_obj_version
4803         , p_task_id                    => p_task_id
4804         , p_resource_type_code         => p_old_resource_type_code
4805         , p_resource_id                => p_old_resource_id
4806         , p_resource_territory_id      => fnd_api.g_miss_num
4807         , p_assignment_status_id       => p_cancel_status_id
4808         , p_actual_start_date          => fnd_api.g_miss_date
4809         , p_actual_end_date            => fnd_api.g_miss_date
4810         , p_sched_travel_distance      => fnd_api.g_miss_num
4811         , p_sched_travel_duration      => fnd_api.g_miss_num
4812         , p_sched_travel_duration_uom  => fnd_api.g_miss_char
4813         , p_shift_construct_id         => p_old_shift_construct_id
4814         , p_object_capacity_id         => p_old_object_capacity_id
4815         , x_return_status              => x_return_status
4816         , x_msg_count                  => x_msg_count
4817         , x_msg_data                   => x_msg_data
4818         , x_task_object_version_number => x_task_object_version_number
4819         , x_task_status_id             => x_task_status_id
4820         );
4821         IF NVL(x_return_status, 'S') <> fnd_api.g_ret_sts_success THEN
4822           RAISE fnd_api.g_exc_error;
4823         END IF;
4824       ELSE
4825        /*test('Now After Updating Assignment ..');
4826        test('Now After Updating Assignment x_task_object_version_number :'||x_task_object_version_number);
4827        test('Now After Updating Assignment x_task_status_id :'||x_task_status_id);
4828        test('Now After Updating Assignment x_return_status :'||x_return_status);
4829        test('Now After Updating Assignment x_msg_data :'||x_msg_data);
4830       */
4831         RAISE fnd_api.g_exc_error;
4832       END IF;
4833     ELSIF p_shift_changed THEN
4834       OPEN  c_assign_obj_ver;
4835       FETCH c_assign_obj_ver
4836       INTO l_old_ta_obj_version,l_start_date,l_end_date;
4837       IF c_assign_obj_ver%NOTFOUND THEN
4838         CLOSE c_assign_obj_ver;
4839         RAISE NO_DATA_FOUND;
4840       END IF;
4841       CLOSE c_assign_obj_ver;
4842       csf_task_assignments_pub.update_task_assignment(
4843         p_api_version                => 1.0
4844       , p_init_msg_list              => fnd_api.g_true
4845       , p_commit                     => fnd_api.g_false
4846       , p_task_assignment_id         => p_task_assignment_id
4847       , p_object_version_number      => l_old_ta_obj_version
4848       , p_task_id                    => p_task_id
4849       , p_resource_type_code         => p_old_resource_type_code
4850       , p_resource_id                => p_old_resource_id
4851       , p_resource_territory_id      => fnd_api.g_miss_num
4852       , p_assignment_status_id       => p_assignment_status_id
4853       , p_actual_start_date          => fnd_api.g_miss_date
4854       , p_actual_end_date            => fnd_api.g_miss_date
4855       , p_sched_travel_distance      => p_sched_travel_distance
4856       , p_sched_travel_duration      => l_sched_travel_duration
4857       , p_sched_travel_duration_uom  => p_sched_travel_duration_uom
4858       , p_shift_construct_id         => p_new_shift_construct_id
4859       , p_object_capacity_id         => p_new_object_capacity_id
4860       , x_return_status              => x_return_status
4861       , x_msg_count                  => x_msg_count
4862       , x_msg_data                   => x_msg_data
4863       , x_task_object_version_number => x_task_object_version_number
4864       , x_task_status_id             => x_task_status_id
4865       );
4866       IF NVL(x_return_status, 'S') <> fnd_api.g_ret_sts_success THEN
4867         RAISE fnd_api.g_exc_error;
4868       END IF;
4869     ELSIF p_task_changed and l_parent_task_id IS NOT NULL
4870     THEN
4871        OPEN c_parent_ovn(l_parent_task_id);
4872        FETCH c_parent_ovn INTO l_obj_ver_number;
4873        CLOSE c_parent_ovn;
4874 
4875         -- Sync up the Parent and all the other Siblings
4876         csf_tasks_pub.update_task_longer_than_shift(
4877           p_api_version            => 1.0
4878         , p_init_msg_list          => fnd_api.g_true
4879         , p_commit                 => fnd_api.g_false
4880         , x_return_status          => x_return_status
4881         , x_msg_count              => x_msg_count
4882         , x_msg_data               => x_msg_data
4883         , p_task_id                => l_parent_task_id
4884         , p_object_version_number  => l_obj_ver_number
4885         , p_action                 => csf_tasks_pub.g_action_normal_to_parent
4886         );
4887       IF NVL(x_return_status, 'S') <> fnd_api.g_ret_sts_success THEN
4888         RAISE fnd_api.g_exc_error;
4889       END IF;
4890     END IF;
4891 
4892     -- Standard check of p_commit
4893     IF fnd_api.to_boolean(p_commit) THEN
4894       COMMIT WORK;
4895     END IF;
4896 
4897     -- Standard call to get message count and if count is 1, get message info
4898     fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
4899   EXCEPTION
4900     WHEN fnd_api.g_exc_error THEN
4901       ROLLBACK TO drag_n_drop;
4902       x_return_status  := fnd_api.g_ret_sts_error;
4903       fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
4904     WHEN fnd_api.g_exc_unexpected_error THEN
4905       ROLLBACK TO drag_n_drop;
4906       x_return_status  := fnd_api.g_ret_sts_unexp_error;
4907       fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
4908     WHEN OTHERS THEN
4909       ROLLBACK TO drag_n_drop;
4910       x_return_status  := fnd_api.g_ret_sts_unexp_error;
4911 
4912       IF fnd_msg_pub.check_msg_level(fnd_msg_pub.g_msg_lvl_unexp_error) THEN
4913         fnd_msg_pub.add_exc_msg('csf_gantt_data_pkg', l_api_name);
4914       END IF;
4915 
4916       fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
4917   END drag_n_drop;
4918 
4919   PROCEDURE g_get_custom_color IS
4920     CURSOR c_custom_color IS
4921       SELECT   type_id
4922              , priority_id
4923              , assignment_status_id
4924              , escalated_task
4925              , background_col_dec
4926              , background_col_rgb
4927           FROM jtf_task_custom_colors
4928          WHERE active_flag = 'Y'
4929       ORDER BY color_determination_priority;
4930 
4931     i BINARY_INTEGER := 0;
4932   BEGIN
4933     IF gl_custom_color_tbl.COUNT = 0 THEN
4934       FOR rec IN c_custom_color LOOP
4935         i                                            := i + 1;
4936         gl_custom_color_tbl(i).task_type_id          := rec.type_id;
4937         gl_custom_color_tbl(i).task_priority_id      := rec.priority_id;
4938         gl_custom_color_tbl(i).assignment_status_id  := rec.assignment_status_id;
4939         gl_custom_color_tbl(i).escalated_task        := rec.escalated_task;
4940         gl_custom_color_tbl(i).background_col_dec    := rec.background_col_dec;
4941         gl_custom_color_tbl(i).background_col_rgb    := rec.background_col_rgb;
4942       END LOOP;
4943     END IF;
4944   END g_get_custom_color;
4945 
4946   FUNCTION g_do_match(
4947     p_task_type_id         IN NUMBER
4948   , p_task_priority_id     IN NUMBER
4949   , p_assignment_status_id IN NUMBER
4950   , p_escalated_task       IN VARCHAR2
4951   )
4952     RETURN NUMBER IS
4953   BEGIN
4954     FOR i IN gl_custom_color_tbl.FIRST .. gl_custom_color_tbl.LAST LOOP
4955       IF     NVL(gl_custom_color_tbl(i).task_type_id, p_task_type_id) = p_task_type_id
4956          AND NVL(gl_custom_color_tbl(i).task_priority_id, p_task_priority_id) = p_task_priority_id
4957          AND NVL(gl_custom_color_tbl(i).assignment_status_id, p_assignment_status_id) =
4958                                                                               p_assignment_status_id
4959          AND NVL(gl_custom_color_tbl(i).escalated_task, p_escalated_task) = p_escalated_task THEN
4960         RETURN NVL(gl_custom_color_tbl(i).background_col_dec, 0);
4961       END IF;
4962     END LOOP;
4963 
4964     RETURN 0;
4965   END g_do_match;
4966 function convert_to_min
4967     ( p_duration  number
4968     , p_uom       varchar2
4969     , p_uom_min varchar2
4970     )
4971   return number
4972   is
4973     l_value number;
4974   begin
4975     l_value := inv_convert.inv_um_convert
4976                  ( item_id       => 0
4977                  , precision     => null
4978                  , from_quantity => p_duration
4979                  , from_unit     => nvl(p_uom,g_uom_minutes)
4980                  , to_unit       => nvl(p_uom_min,g_uom_minutes)
4981                  , from_name     => null
4982                  , to_name       => null
4983                  );
4984     return l_value;
4985   end convert_to_min;
4986 
4987    Procedure get_dispatch_task_dtls (
4988   p_api_version              IN         Number
4989 , p_init_msg_list            IN         Varchar2 DEFAULT NULL
4990 , x_return_status            OUT NOCOPY Varchar2
4991 , x_msg_count                OUT NOCOPY Number
4992 , x_msg_data                 OUT NOCOPY Varchar2
4993 , p_start_date_range         IN         DATE
4994 , p_end_date_range           IN         DATE
4995 , p_res_id                   OUT NOCOPY jtf_number_table
4996 , p_res_type                 OUT NOCOPY jtf_varchar2_table_2000
4997 , p_res_name                 OUT NOCOPY jtf_varchar2_table_2000
4998 , p_res_typ_name             OUT NOCOPY jtf_varchar2_table_2000
4999 , p_res_key                  OUT NOCOPY jtf_varchar2_table_2000
5000 , p_trip_id                  OUT NOCOPY jtf_number_table
5001 , p_shift_start_date         OUT NOCOPY jtf_date_table
5002 , p_shift_end_date           OUT NOCOPY jtf_date_table
5003 , p_block_trip               OUT NOCOPY jtf_number_table
5004 , p_shift_res_key            OUT NOCOPY jtf_varchar2_table_2000
5005 , p_vir_task_id		         OUT NOCOPY jtf_varchar2_table_100
5006 , p_vir_start_date	         OUT NOCOPY jtf_date_table
5007 , p_vir_end_date	         OUT NOCOPY jtf_date_table
5008 , p_vir_color		         OUT NOCOPY jtf_number_table
5009 , p_vir_name		         OUT NOCOPY jtf_varchar2_table_100
5010 , p_vir_duration	         OUT NOCOPY jtf_number_table
5011 , p_vir_task_type_id	     OUT NOCOPY jtf_number_table
5012 , p_vir_tooltip		         OUT NOCOPY jtf_varchar2_table_2000
5013 , p_vir_resource_key	     OUT NOCOPY jtf_varchar2_table_2000
5014 , real_task_id         OUT NOCOPY    jtf_varchar2_table_100
5015 , real_start_date      OUT NOCOPY    jtf_date_table
5016 , real_end_date        OUT NOCOPY    jtf_date_table
5017 , real_color           OUT NOCOPY    jtf_number_table
5018 , real_NAME            OUT NOCOPY    jtf_varchar2_table_2000
5019 , real_tooltip         OUT NOCOPY    jtf_varchar2_table_2000
5020 , real_DURATION        OUT NOCOPY    jtf_number_table
5021 , real_task_type_id    OUT NOCOPY    jtf_number_table
5022 , real_resource_key    OUT NOCOPY    jtf_varchar2_table_2000
5023 , real_parts_required  OUT NOCOPY    jtf_varchar2_table_100
5024 , real_access_hours    OUT NOCOPY    jtf_varchar2_table_100
5025 , real_after_hours     OUT NOCOPY    jtf_varchar2_table_100
5026 , real_customer_conf   OUT NOCOPY    jtf_varchar2_table_100
5027 , real_task_depend     OUT NOCOPY    jtf_varchar2_table_100
5028 , real_child_task      OUT NOCOPY    jtf_varchar2_table_100
5029 , p_vir_avail_type	   OUT NOCOPY    jtf_varchar2_table_2000
5030 , p_show_arr_dep_tasks IN	     varchar2   DEFAULT 'N'
5031 , p_terr_name          OUT NOCOPY jtf_varchar2_table_2000
5032 , p_contact            OUT NOCOPY jtf_varchar2_table_2000
5033    )
5034   IS
5035       l_assignment_id          jtf_number_table;
5036       l_task_priority_id       jtf_number_table;
5037       l_status_id			   jtf_number_table;
5038       l_planned_start_date     jtf_date_table;
5039       l_planned_end_date	 jtf_date_table;
5040       l_actual_start_date	 jtf_date_table;
5041       l_actual_end_date	 		jtf_date_table;
5042       l_actual_effort		 jtf_number_table;
5043       l_actual_effort_uom	 jtf_varchar2_table_100;
5044       l_planned_effort	 jtf_number_table;
5045       l_planned_effort_uom     jtf_varchar2_table_100;
5046       l_escalated_task         jtf_varchar2_table_100;
5047       l_scheduled_start_date	 jtf_date_table;
5048       l_scheduled_end_date     jtf_date_table;
5049 	  l_availability_type       jtf_varchar2_table_100;
5050 
5051 	  l_task_customer_name      jtf_varchar2_table_1000;
5052 	  l_task_number				jtf_varchar2_table_100;
5053 	  l_Task_Name			    jtf_varchar2_table_1000;
5054 	  l_Task_Priority_Name		jtf_varchar2_table_1000;
5055 	  l_task_City_name			jtf_varchar2_table_1000;
5056 	  l_task_Site_Name  		jtf_varchar2_table_1000;
5057 	  l_task_Postal_Code		jtf_varchar2_table_1000;
5058 	  l_task_attr_list			VARCHAR2(1000);
5059 	  l_task_attr_list_tmp	    VARCHAR2(1000);
5060       ---------------------------------------------------
5061       --The below variables are used in color coding proc
5062       ---------------------------------------------------
5063       p_cur_task_type_id     NUMBER(10);
5064       p_cur_task_priority_id NUMBER(10);
5065       p_cur_task_status_id   NUMBER(10);
5066       p_cur_escalated_task   VARCHAR2(1);
5067       p_color                NUMBER(30);
5068       p_cur_color            NUMBER(30);
5069       p_rule_id              NUMBER(10);
5070 
5071 	  p_vir_avail_key        jtf_varchar2_table_100;
5072 
5073 	l_shift_reg varchar2(1);
5074 	l_shift_std varchar2(1);
5075 	l_shift_type varchar2(10);
5076 
5077     CURSOR C_Terr_Resource
5078       IS
5079  	     SELECT RESOURCE_ID ,
5080 				RESOURCE_TYPE     ,
5081 				RESOURCE_NAME     ,
5082 				RESOURCE_TYPE_NAME,
5083 				RES_KEY           ,
5084 				NAME,
5085 				PHONE
5086 		FROM (
5087 		    SELECT DISTINCT TR.RESOURCE_ID RESOURCE_ID                                      ,
5088 				   TR.RESOURCE_TYPE RESOURCE_TYPE                                                  ,
5089 				   TR.RESOURCE_NAME RESOURCE_NAME                                                  ,
5090 				   CSF_GANTT_DATA_PKG.GET_RESOURCE_TYPE_NAME( TR.RESOURCE_TYPE ) RESOURCE_TYPE_NAME,
5091 				   TR.RESOURCE_ID
5092 				   ||'-'
5093 				   ||TR.RESOURCE_TYPE RES_KEY,
5094 				   TERR.NAME,
5095 				   JRS.PHONE
5096 			 FROM CSF_DC_RESOURCES_V TR,
5097 				  JTF_TERR_ALL TERR,
5098 				  JTF_RS_RESOURCES_VL JRS
5099 			 WHERE TERR.TERR_ID = TR.TERRITORY_ID
5100 			   AND JRS.RESOURCE_ID = TR.RESOURCE_ID
5101 			   AND JRS.RESOURCE_TYPE = TR.RESOURCE_TYPE
5102 			 )
5103 ORDER BY UPPER(RESOURCE_NAME);
5104 
5105     -- cursor to fetch resources having active 'Field Service Representative' role
5106     CURSOR c_res_technician
5107     IS
5108 	    SELECT RESOURCE_ID,
5109 			   RESOURCE_TYPE,
5110 			   RESOURCE_NAME,
5111 			   RESOURCE_TYPE_NAME,
5112 			   RES_KEY,
5113 			   NAME ,
5114 			   PHONE
5115 		FROM (
5116 			SELECT  DISTINCT
5117 			        RES.RESOURCE_ID RESOURCE_ID,
5118 					RES.RESOURCE_TYPE RESOURCE_TYPE,
5119 					RES.RESOURCE_NAME RESOURCE_NAME,
5120 					CSF_GANTT_DATA_PKG.GET_RESOURCE_TYPE_NAME(RES.RESOURCE_TYPE) RESOURCE_TYPE_NAME,
5121                     RES.RESOURCE_ID || '-' || RES.RESOURCE_TYPE RES_KEY,
5122 					TERR.NAME,
5123 					JRS.PHONE
5124             FROM 	CSF_DC_RESOURCES_V RES,
5125           			JTF_RS_ROLE_RELATIONS RR,
5126 					JTF_RS_ROLES_B RL ,
5127 					FND_LOOKUPS LKP,
5128 					JTF_TERR_ALL TERR,
5129 					JTF_RS_RESOURCES_VL JRS
5130 			WHERE   RR.ROLE_ID               = RL.ROLE_ID
5131 			AND     RL.ROLE_TYPE_CODE        = LKP.LOOKUP_CODE
5132 			AND     LKP.LOOKUP_TYPE          = 'JTF_RS_ROLE_TYPE'
5133 			AND     RES.RESOURCE_ID          = RR.ROLE_RESOURCE_ID
5134 			AND     RL.ROLE_TYPE_CODE        = 'CSF_REPRESENTATIVE'
5135 			AND     (SYSDATE                >= TRUNC (RR.start_date_active) OR RR.start_date_active     IS NULL)
5136 			AND     (SYSDATE                <= TRUNC (RR.end_date_active) + 1 OR RR.end_date_active       IS NULL)
5137 			AND     NVL(RR.DELETE_FLAG, 'N') = 'N'
5138 			AND     TERR.TERR_ID = RES.TERRITORY_ID
5139 			AND 	JRS.RESOURCE_ID = RES.RESOURCE_ID
5140 			AND 	JRS.RESOURCE_TYPE = RES.RESOURCE_TYPE
5141 			)
5142         ORDER BY UPPER (RESOURCE_NAME);
5143 
5144       CURSOR C_Resource_Shift(p_start_date DATE, p_end_date DATE) IS
5145       SELECT object_capacity_id
5146            , start_date_time
5147            , end_date_time
5148            , status blocked_trip
5149            , res_info.resource_id||'-'||res_info.resource_type resource_key
5150            , nvl(ca.availability_type,'NULL')
5151        FROM cac_sr_object_capacity ca,(SELECT TO_NUMBER(
5152                                          SUBSTR(column_value
5153                                                 , 1
5154                                                 , INSTR(column_value, '-', 1, 1) - 1
5155                                                 )
5156                                                 )resource_id
5157                                         , SUBSTR(column_value
5158                                                  , INSTR(column_value, '-', 1, 1) + 1
5159                                                  ,LENGTH(column_value)
5160                                                  ) resource_type
5161                                 FROM TABLE(CAST(p_res_key AS jtf_varchar2_table_2000))
5162                                 ) res_info
5163       WHERE ca.object_type = res_info.resource_type
5164         AND   ca.object_id   = res_info.resource_id
5165         AND   TRUNC(ca.start_date_time) >= trunc(p_start_date -1)
5166         AND   TRUNC(ca.end_date_time)   <= trunc(p_end_date);
5167 
5168       CURSOR get_tdu_color(t_rule_id NUMBER) IS
5169       SELECT background_col_dec
5170       FROM jtf_task_custom_colors
5171       WHERE rule_id = t_rule_id;
5172 
5173       CURSOR C_Virtual_Tasks
5174       IS
5175       SELECT /*+ ORDERED use_nl (res_info a t tt tsa tsb)
5176                  INDEX (t,JTF_TASKS_B_U3)
5177                  INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
5178              a.task_id || '-' || a.task_assignment_id
5179            , scheduled_start_date
5180            , scheduled_end_date
5181            , 0 color
5182            , ' ' task_name
5183            , NVL(sched_travel_duration, 0)
5184            , t.task_type_id
5185            , '0' tooltip
5186            , a.resource_id || '-' || a.resource_type_code resource_key
5187            , task_assignment_id
5188            , task_priority_id
5189            , assignment_status_id
5190            , planned_start_date
5191            , planned_end_date
5192            , a.actual_start_date
5193            , a.actual_end_date
5194            , t.actual_effort
5195            , t.actual_effort_uom
5196            , t.planned_effort
5197            , t.planned_effort_uom
5198            , 'N' escalated_task
5199            , scheduled_start_date
5200            , scheduled_end_date
5201 		   , csr.availability_type
5202       FROM (SELECT TO_NUMBER(SUBSTR(column_value
5203                                  , 1
5204                                  , INSTR(column_value, '-', 1, 1) - 1
5205                                  )
5206                           )resource_id
5207                           , SUBSTR(column_value
5208                                    , INSTR(column_value, '-', 1, 1) + 1
5209                                    ,LENGTH(column_value)
5210                                    ) resource_type
5211                                 FROM TABLE(CAST(p_res_key AS jtf_varchar2_table_2000))
5212                            ) res_info
5213     	   , jtf_task_assignments a
5214            , jtf_tasks_b t
5215            , jtf_task_types_b tt
5216            , jtf_task_statuses_b tsa
5217            , jtf_task_statuses_b tsb
5218 		   , cac_sr_object_capacity csr
5219       WHERE t.task_id = a.task_id
5220         AND t.task_type_id = tt.task_type_id
5221         AND (t.task_type_id = 20 OR t.task_type_id = 21)
5222         AND NVL(t.deleted_flag, 'N') <> 'Y'
5223         AND booking_end_date >= booking_start_date
5224         AND booking_start_date >= (p_start_date_range -1)
5225         AND TRUNC(booking_end_date) <= TRUNC(p_end_date_range)
5226         AND a.resource_id = res_info.resource_id
5227         AND a.resource_type_code = res_info.resource_type
5228         AND tsb.task_status_id = t.task_status_id
5229         AND tsa.task_status_id = a.assignment_status_id
5230 		AND csr.object_capacity_id(+)=a.object_capacity_id
5231         AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
5232         AND NVL(tsb.cancelled_flag, 'N') <> 'Y';
5233 
5234 
5235       l_resource_dtls csf_resource_pub.resource_rec_type;
5236       l_cnt number (10);
5237 
5238       --------------------------------------------------------------------
5239       --all the variable and cursor used for getting real task information
5240       --------------------------------------------------------------------
5241       l_task_depends               varchar2(1);
5242       l_actual_travel_duration     jtf_number_table;
5243       l_actual_travel_duration_uom jtf_varchar2_table_100;
5244       l_task_depend                jtf_varchar2_table_100;
5245       l_csf_default_effort         NUMBER;
5246 	  l_real_sched_end_date        DATE;
5247 	  l_real_sched_start_date      DATE;
5248 	  l_real_end_date              DATE;
5249 	  l_real_actual_start_date     DATE;
5250 
5251       CURSOR c_icon_setup
5252       IS
5253       SELECT active
5254       FROM   csf_gnticons_setup_v
5255       WHERE  seq_id = 6;
5256 
5257 
5258       CURSOR c_task_bar_info
5259       IS
5260       SELECT icon_file_name
5261       FROM   csf_gnticons_setup_v
5262       WHERE  INSTR(ICON_FILE_NAME,'TASK') >0
5263 	  AND     nvl(active,'N')='Y'
5264 	  ORDER BY RANKING;
5265 
5266 
5267 
5268       ---------------------------------------------------------------------------------------------
5269        --Cursor C1 introduced when show labels on taskbar is true i.e join for hz_parties for showing
5270        --party name on taskbar and this cursor is without task dependenciea join.
5271       ---------------------------------------------------------------------------------------------
5272 
5273       CURSOR c1
5274       IS
5275       SELECT /*+ ORDERED use_nl (res_info a t tl tt jtp jtpl tsa tsb pi ps l ca cr)
5276                      INDEX (t,JTF_TASKS_B_U3)
5277                      INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
5278 			 DISTINCT
5279              a.task_id || '-' || a.task_assignment_id
5280 		   , t.task_number
5281 		   , tl.task_name
5282 		   , jtpl.name
5283 		   , NVL(l.postal_code,' ')
5284            , NVL(l.city,' ')
5285 		   , NVL(ps.party_site_name,' ')
5286            , scheduled_start_date
5287            , scheduled_end_date
5288            , 0 color
5289            , NVL(sched_travel_duration, 0)
5290            , t.task_type_id
5291            , t.task_priority_id
5292            , a.assignment_status_id
5293            , '0' tooltip
5294            , a.resource_id || '-' || a.resource_type_code resource_key
5295            , nvl(pi.party_name,' ') incident_customer_name
5296 		   , nvl(pi.party_name,' ') incident_customer_name1
5297            , planned_start_date
5298            , planned_end_date
5299            , a.actual_start_date
5300            , a.actual_end_date
5301            , NVL(a.actual_effort, t.actual_effort)
5302            , NVL(a.actual_effort_uom, t.actual_effort_uom)
5303            , t.planned_effort
5304            , t.planned_effort_uom
5305            , 'N' escalated_task
5306            , NVL(accesshour_required, 'N')
5307            , NVL(after_hours_flag, 'N')
5308            , NVL(task_confirmation_status, 'N')
5309            , 'N' task_dep
5310            , DECODE(cr.task_id, t.task_id, 'Y', 'N') parts_req
5311            , NVL(child_position, 'N') child_task
5312            , a.actual_travel_duration
5313            , a.actual_travel_duration_uom
5314       FROM (SELECT TO_NUMBER(SUBSTR(column_value
5315                                       , 1
5316 		                      , INSTR(column_value, '-', 1, 1) - 1
5317                                       )
5318                                )resource_id
5319                               ,SUBSTR(column_value
5320                                       , INSTR(column_value, '-', 1, 1) + 1
5321                                       , LENGTH(column_value)
5322                                       ) resource_type
5323                                 FROM TABLE(CAST(p_res_key AS jtf_varchar2_table_2000))
5324                                 ) res_info
5325            , jtf_task_assignments a
5326            , jtf_tasks_B t
5327 		   , jtf_tasks_tl tl
5328            , jtf_task_types_b tt
5329 		   , jtf_task_priorities_B jtp
5330 		   , jtf_task_priorities_tl jtpl
5331            , jtf_task_statuses_b tsb
5332            , jtf_task_statuses_b tsa
5333            , hz_parties pi
5334 		   , hz_party_sites ps
5335            , hz_locations l
5336 	       , csf_access_hours_b ca
5337            , csp_requirement_headers cr
5338       WHERE t.task_id = a.task_id
5339 	    AND tl.task_id =t.task_id
5340 		AND tl.language=userenv('LANG')
5341         AND t.source_object_type_code in( 'SR','TASK')
5342         AND NVL(t.deleted_flag, 'N') <> 'Y'
5343         AND t.task_type_id NOT IN (20,21)
5344         AND t.task_type_id = tt.task_type_id
5345 		AND jtp.task_priority_id=t.task_priority_id
5346 		AND jtpl.task_priority_id         = jtp.task_priority_id
5347 		AND jtpl.language=userenv('LANG')
5348 		AND booking_start_date <= (p_end_date_range)
5349         AND booking_end_date >= (p_start_date_range -1)
5350         AND a.resource_id = res_info.resource_id
5351         AND a.resource_type_code = res_info.resource_type
5352         AND tsa.task_status_id = t.task_status_id
5353         AND tsb.task_status_id = a.assignment_status_id
5354 		AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
5355         AND NVL(tsb.cancelled_flag, 'N') <> 'Y'
5356         AND ca.task_id(+) = t.task_id
5357         AND pi.party_id(+) = t.customer_id
5358 		AND ps.party_site_id(+) = t.address_id
5359         AND l.location_id(+) = csf_tasks_pub.get_task_location_id(t.task_id,t.address_id,t.location_id)
5360         AND cr.task_id(+) = t.task_id
5361         AND booking_end_date >= booking_start_date;
5362 
5363       ---------------------------------------------------------------------------------------------
5364       --Cursor C3 introduced if task_dependency is set to active in scheduling chart icon setup form
5365       -- this cursor also has hz_parties join for party name to be shown on task bar
5366       ---------------------------------------------------------------------------------------------
5367       CURSOR c3 IS
5368       SELECT /*+ ORDERED use_nl (res_info a t tt jtp jtpl tsa tsb pi ps l ca jd jdd cr)
5369                      INDEX (t,JTF_TASKS_B_U3)
5370                      INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
5371              DISTINCT
5372              a.task_id || '-' || a.task_assignment_id
5373 		   , t.task_number
5374 		   , tl.task_name
5375 		   , jtpl.name
5376 		   , NVL(l.postal_code,' ')
5377            , NVL(l.city,' ')
5378 		   , NVL(ps.party_site_name,' ')
5379            , scheduled_start_date
5380            , scheduled_end_date
5381            , 0 color
5382            , NVL(sched_travel_duration, 0)
5383            , t.task_type_id
5384            , t.task_priority_id
5385            , a.assignment_status_id
5386            , '0' tooltip
5387            , a.resource_id || '-' || a.resource_type_code resource_key
5388            , nvl(pi.party_name,' ') incident_customer_name
5389 		   , nvl(pi.party_name,' ') incident_customer_name1
5390            , planned_start_date
5391            , planned_end_date
5392            , a.actual_start_date
5393            , a.actual_end_date
5394            , NVL(a.actual_effort, t.actual_effort)
5395            , NVL(a.actual_effort_uom, t.actual_effort_uom)
5396            , t.planned_effort
5397            , t.planned_effort_uom
5398            , 'N' escalated_task
5399            , NVL(accesshour_required, 'N')
5400            , NVL(after_hours_flag, 'N')
5401            , NVL(task_confirmation_status, 'N')
5402            , DECODE(nvl(t.task_id,0),jd.task_id,'Y','N') task_dep
5403            , DECODE(cr.task_id, t.task_id, 'Y', 'N') parts_req
5404            , NVL(child_position, 'N') child_task
5405            , a.actual_travel_duration
5406            , a.actual_travel_duration_uom
5407            , nvl(jdd.dependent_on_task_id,0) task_dep1
5408       FROM (SELECT TO_NUMBER(SUBSTR(column_value
5409                                       , 1
5410 		                      , INSTR(column_value, '-', 1, 1) - 1
5411                                       )
5412                                )resource_id
5413                               ,SUBSTR(column_value
5414                                       , INSTR(column_value, '-', 1, 1) + 1
5415                                       , LENGTH(column_value)
5416                                       ) resource_type
5417                                 FROM TABLE(CAST(p_res_key AS jtf_varchar2_table_2000))
5418                                 ) res_info
5419 	       , jtf_task_assignments a
5420            , jtf_tasks_b t
5421 		   , jtf_tasks_tl tl
5422            , jtf_task_types_b tt
5423 		   , jtf_task_priorities_B jtp
5424 		   , jtf_task_priorities_tl jtpl
5425            , jtf_task_statuses_b tsb
5426            , jtf_task_statuses_b tsa
5427 	       , hz_parties pi
5428 		   , hz_party_sites ps
5429            , hz_locations l
5430 	       , csf_access_hours_b ca
5431            , jtf_task_depends jd
5432            , jtf_task_depends jdd
5433            , csp_requirement_headers cr
5434       WHERE t.task_id = a.task_id
5435         AND t.source_object_type_code in( 'SR','TASK')
5436         AND NVL(t.deleted_flag, 'N') <> 'Y'
5437         AND t.task_type_id NOT IN (20,21)
5438         AND t.task_type_id = tt.task_type_id
5439 		AND tl.task_id =t.task_id
5440 		AND tl.language=userenv('LANG')
5441 		AND jtp.task_priority_id=t.task_priority_id
5442 		AND jtpl.task_priority_id         = jtp.task_priority_id
5443 		AND jtpl.language=userenv('LANG')
5444 		AND booking_start_date <= (p_end_date_range)
5445         AND booking_end_date >= (p_start_date_range -1)
5446         AND a.resource_id = res_info.resource_id
5447         AND a.resource_type_code = res_info.resource_type
5448         AND tsa.task_status_id = t.task_status_id
5449         AND tsb.task_status_id = a.assignment_status_id
5450         AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
5451         AND NVL(tsb.cancelled_flag, 'N') <> 'Y'
5452         AND ca.task_id(+) = t.task_id
5453         AND jd.task_id(+) = t.task_id
5454         AND jdd.dependent_on_task_id(+) = t.task_id
5455         AND pi.party_id(+) = t.customer_id
5456 		AND ps.party_site_id(+) = t.address_id
5457         AND l.location_id(+) = csf_tasks_pub.get_task_location_id(t.task_id,t.address_id,t.location_id)
5458         AND cr.task_id(+) = t.task_id
5459         AND booking_end_date >= booking_start_date;
5460       ---------------------------------------------------------------------------------------------
5461       --Cursor C2 introduced when show labels on taskbar is false i.e remove join for hz_parties
5462       -- the diffrence between c1 and c2 join for hz_parties
5463       ---------------------------------------------------------------------------------------------
5464       CURSOR c2 IS
5465       SELECT /*+ ORDERED use_nl (res_info a t tt tsa tsb ca cr)
5466                      INDEX (t,JTF_TASKS_B_U3)
5467                      INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
5468              a.task_id || '-' || a.task_assignment_id
5469            , scheduled_start_date
5470            , scheduled_end_date
5471            , 0 color
5472            , NVL(sched_travel_duration, 0)
5473            , t.task_type_id
5474            , task_priority_id
5475            , a.assignment_status_id
5476            , '0' tooltip
5477            , a.resource_id || '-' || a.resource_type_code resource_key
5478            , ' ' incident_customer_name
5479            , planned_start_date
5480            , planned_end_date
5481            , a.actual_start_date
5482            , a.actual_end_date
5483            , NVL(a.actual_effort, t.actual_effort)
5484            , NVL(a.actual_effort_uom, t.actual_effort_uom)
5485            , t.planned_effort
5486            , t.planned_effort_uom
5487            , 'N' escalated_task
5488            , NVL(accesshour_required, 'N')
5489            , NVL(after_hours_flag, 'N')
5490            , NVL(task_confirmation_status, 'N')
5491            , 'N' task_dep
5492            , DECODE(cr.task_id, t.task_id, 'Y', 'N') parts_req
5493            , NVL(child_position, 'N') child_task
5494            , a.actual_travel_duration
5495            , a.actual_travel_duration_uom
5496       FROM (SELECT TO_NUMBER(SUBSTR(column_value
5497                                       , 1
5498 		                      , INSTR(column_value, '-', 1, 1) - 1
5499                                       )
5500                                )resource_id
5501                               ,SUBSTR(column_value
5502                                       , INSTR(column_value, '-', 1, 1) + 1
5503                                       , LENGTH(column_value)
5504                                       ) resource_type
5505                                 FROM TABLE(CAST(p_res_key AS jtf_varchar2_table_2000))
5506                                 ) res_info
5507     	     , jtf_task_assignments a
5508            , jtf_tasks_b t
5509            , jtf_task_types_b tt
5510            , jtf_task_statuses_b tsb
5511            , jtf_task_statuses_b tsa
5512 	         , csf_access_hours_b ca
5513            , csp_requirement_headers cr
5514       WHERE t.task_id = a.task_id
5515         AND t.source_object_type_code in( 'SR','TASK')
5516         AND NVL(t.deleted_flag, 'N') <> 'Y'
5517         AND t.task_type_id NOT IN (20,21)
5518         AND t.task_type_id = tt.task_type_id
5519 		AND booking_start_date <= (p_end_date_range)
5520         AND booking_end_date >= (p_start_date_range -1)
5521         AND a.resource_id = res_info.resource_id
5522         AND a.resource_type_code = res_info.resource_type
5523         AND tsa.task_status_id = t.task_status_id
5524         AND tsb.task_status_id = a.assignment_status_id
5525         AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
5526         AND NVL(tsb.cancelled_flag, 'N') <> 'Y'
5527         AND ca.task_id(+) = t.task_id
5528         AND cr.task_id(+) = t.task_id
5529         AND booking_end_date >= booking_start_date;
5530       ---------------------------------------------------------------------------------------------
5531       --Cursor C4 introduced if task_dependency is set to active in scheduling chart icon setup form
5532       -- this cursor does not have hz_parties join like c2 but has dependencies join
5533       ---------------------------------------------------------------------------------------------
5534       CURSOR C4
5535       IS
5536       SELECT /*+ ORDERED use_nl (res_info a t tt tsa tsb ca jd jdd cr)
5537                      INDEX (t,JTF_TASKS_B_U3)
5538                      INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
5539              DISTINCT
5540              a.task_id || '-' || a.task_assignment_id
5541            , scheduled_start_date
5542            , scheduled_end_date
5543            , 0 color
5544            , NVL(sched_travel_duration, 0)
5545            , t.task_type_id
5546            , task_priority_id
5547            , a.assignment_status_id
5548            , '0' tooltip
5549            , a.resource_id || '-' || a.resource_type_code resource_key
5550            , ' ' incident_customer_name
5551            , planned_start_date
5552            , planned_end_date
5553            , a.actual_start_date
5554            , a.actual_end_date
5555            , NVL(a.actual_effort, t.actual_effort)
5556            , NVL(a.actual_effort_uom, t.actual_effort_uom)
5557            , t.planned_effort
5558            , t.planned_effort_uom
5559            , 'N' escalated_task
5560            , NVL(accesshour_required, 'N')
5561            , NVL(after_hours_flag, 'N')
5562            , NVL(task_confirmation_status, 'N')
5563            , DECODE(nvl(t.task_id,0),jd.task_id,'Y','N') task_dep
5564            , DECODE(cr.task_id, t.task_id, 'Y', 'N') parts_req
5565            , NVL(child_position, 'N') child_task
5566            , a.actual_travel_duration
5567            , a.actual_travel_duration_uom
5568            , nvl(jdd.dependent_on_task_id,0) task_dep1
5569       FROM (SELECT TO_NUMBER(SUBSTR(column_value
5570                                       , 1
5571 		                      , INSTR(column_value, '-', 1, 1) - 1
5572                                       )
5573                                )resource_id
5574                               ,SUBSTR(column_value
5575                                       , INSTR(column_value, '-', 1, 1) + 1
5576                                       , LENGTH(column_value)
5577                                       ) resource_type
5578                                 FROM TABLE(CAST(p_res_key AS jtf_varchar2_table_2000))
5579                                 ) res_info
5580     	     , jtf_task_assignments a
5581            , jtf_tasks_b t
5582            , jtf_task_types_b tt
5583            , jtf_task_statuses_b tsb
5584            , jtf_task_statuses_b tsa
5585 	         , csf_access_hours_b ca
5586            , jtf_task_depends jd
5587            , jtf_task_depends jdd
5588            , csp_requirement_headers cr
5589       WHERE t.task_id = a.task_id
5590         AND t.source_object_type_code in( 'SR','TASK')
5591         AND NVL(t.deleted_flag, 'N') <> 'Y'
5592         AND t.task_type_id NOT IN (20,21)
5593         AND t.task_type_id = tt.task_type_id
5594 		AND booking_start_date <= (p_end_date_range)
5595         AND booking_end_date >= (p_start_date_range -1)
5596         AND a.resource_id = res_info.resource_id
5597         AND a.resource_type_code = res_info.resource_type
5598         AND tsa.task_status_id = t.task_status_id
5599         AND tsb.task_status_id = a.assignment_status_id
5600         AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
5601         AND NVL(tsb.cancelled_flag, 'N') <> 'Y'
5602         AND ca.task_id(+) = t.task_id
5603         AND jd.task_id(+) = t.task_id
5604         AND jdd.dependent_on_task_id(+) = t.task_id
5605         AND cr.task_id(+) = t.task_id
5606         AND booking_end_date >= booking_start_date;
5607 
5608       TYPE custom_color_rec IS RECORD(
5609        task_type_id         NUMBER
5610       , task_priority_id     NUMBER
5611       , assignment_status_id NUMBER
5612       , escalated_task       VARCHAR2(1)
5613       , background_col_dec   NUMBER
5614       , background_col_rgb   VARCHAR2(12)
5615       );
5616 
5617       TYPE custom_color_tbl IS TABLE OF custom_color_rec
5618       INDEX BY BINARY_INTEGER;
5619 
5620       g_custom_color_tbl       custom_color_tbl;
5621 
5622       PROCEDURE get_custom_color IS
5623         CURSOR c_custom_color IS
5624         SELECT   type_id
5625                , priority_id
5626                , assignment_status_id
5627                , escalated_task
5628                , background_col_dec
5629                , background_col_rgb
5630             FROM jtf_task_custom_colors
5631            WHERE active_flag = 'Y'
5632         ORDER BY color_determination_priority;
5633 
5634         i BINARY_INTEGER := 0;
5635       BEGIN
5636         IF g_custom_color_tbl.COUNT = 0
5637         THEN
5638           FOR rec IN c_custom_color
5639 	  LOOP
5640             i := i + 1;
5641             g_custom_color_tbl(i).task_type_id          := rec.type_id;
5642             g_custom_color_tbl(i).task_priority_id      := rec.priority_id;
5643             g_custom_color_tbl(i).assignment_status_id  := rec.assignment_status_id;
5644             g_custom_color_tbl(i).escalated_task        := rec.escalated_task;
5645             g_custom_color_tbl(i).background_col_dec    := rec.background_col_dec;
5646             g_custom_color_tbl(i).background_col_rgb    := rec.background_col_rgb;
5647           END LOOP;
5648         END IF;
5649       END get_custom_color;
5650 
5651       FUNCTION do_match(
5652         p_task_type_id         IN NUMBER
5653       , p_task_priority_id     IN NUMBER
5654       , p_assignment_status_id IN NUMBER
5655       , p_escalated_task       IN VARCHAR2
5656       )
5657         RETURN NUMBER IS
5658       BEGIN
5659         FOR i IN g_custom_color_tbl.FIRST .. g_custom_color_tbl.LAST
5660 	LOOP
5661           IF  NVL(g_custom_color_tbl(i).task_type_id, p_task_type_id) = p_task_type_id
5662           AND NVL(g_custom_color_tbl(i).task_priority_id, p_task_priority_id) = p_task_priority_id
5663           AND NVL(g_custom_color_tbl(i).assignment_status_id, p_assignment_status_id) =
5664                                                                               p_assignment_status_id
5665           AND NVL(g_custom_color_tbl(i).escalated_task, p_escalated_task) = p_escalated_task THEN
5666             RETURN g_custom_color_tbl(i).background_col_dec;
5667           END IF;
5668         END LOOP;
5669         RETURN 0;
5670       END do_match;
5671 
5672 
5673   BEGIN
5674 
5675       p_res_id                   :=jtf_number_table();
5676       p_res_type                 :=jtf_varchar2_table_2000();
5677       p_res_name                 :=jtf_varchar2_table_2000();
5678       p_res_typ_name             :=jtf_varchar2_table_2000();
5679       p_res_key                  :=jtf_varchar2_table_2000();
5680 	  p_terr_name                :=jtf_varchar2_table_2000();
5681 	  p_contact                  :=jtf_varchar2_table_2000();
5682       --------------------------------------
5683       --Tables for getting shift information
5684       --------------------------------------
5685       p_trip_id                  :=jtf_number_table();
5686       p_shift_start_date         :=jtf_date_table();
5687       p_shift_end_date           :=jtf_date_table();
5688       p_block_trip               :=jtf_number_table();
5689       p_shift_res_key            :=jtf_varchar2_table_2000();
5690       p_vir_avail_key            := jtf_varchar2_table_100() ;
5691       ----------------------------------------------------------
5692       --tables used for getting virtual task information
5693       ----------------------------------------------------------
5694       p_vir_task_id		:= jtf_varchar2_table_100() ;
5695       p_vir_start_date	:= jtf_date_table();
5696       p_vir_end_date		:= jtf_date_table();
5697       p_vir_color		:= jtf_number_table();
5698       p_vir_name		:= jtf_varchar2_table_100();
5699       p_vir_duration		:= jtf_number_table();
5700       p_vir_task_type_id	:= jtf_number_table();
5701       p_vir_tooltip		:= jtf_varchar2_table_2000();
5702       p_vir_resource_key 	:= jtf_varchar2_table_2000();
5703       p_vir_avail_type   := jtf_varchar2_table_2000();
5704 
5705       l_assignment_id         := jtf_number_table();
5706       l_task_priority_id      := jtf_number_table();
5707       l_status_id		:= jtf_number_table();
5708       l_planned_start_date    := jtf_date_table();
5709       l_planned_end_date	:= jtf_date_table();
5710       l_actual_start_date	:= jtf_date_table();
5711       l_actual_end_date	:= jtf_date_table();
5712       l_actual_effort		:= jtf_number_table();
5713       l_actual_effort_uom	:= jtf_varchar2_table_100();
5714       l_planned_effort	:= jtf_number_table();
5715       l_planned_effort_uom    := jtf_varchar2_table_100();
5716       l_escalated_task        := jtf_varchar2_table_100();
5717       l_scheduled_start_date	:= jtf_date_table();
5718       l_scheduled_end_date    := jtf_date_table();
5719 	  l_availability_type     := jtf_varchar2_table_100();
5720 	  -------------------------------------------------------
5721 	  --Tables for getting taskbar label information
5722 	  -------------------------------------------------------
5723 	  l_task_customer_name      := jtf_varchar2_table_1000();
5724 	  l_task_number 			:=jtf_varchar2_table_100();
5725 	  l_Task_Name			    :=jtf_varchar2_table_1000();
5726 	  l_Task_Priority_Name		:=jtf_varchar2_table_1000();
5727 	  l_task_City_name			:=jtf_varchar2_table_1000();
5728 	  l_task_Site_Name  		:=jtf_varchar2_table_1000();
5729 	  l_task_Postal_Code		:=jtf_varchar2_table_1000();
5730 
5731       -------------------------------------------------------
5732       --tables used for getting real task information
5733       -------------------------------------------------------
5734       real_task_id        := jtf_varchar2_table_100();
5735       real_start_date     := jtf_date_table();
5736       real_end_date       := jtf_date_table();
5737       real_color          := jtf_number_table();
5738       real_name           := jtf_varchar2_table_2000();
5739       real_tooltip        := jtf_varchar2_table_2000();
5740       real_duration       := jtf_number_table();
5741       real_task_type_id   := jtf_number_table();
5742       real_resource_key   := jtf_varchar2_table_2000();
5743       real_parts_required := jtf_varchar2_table_100();
5744       real_access_hours   := jtf_varchar2_table_100();
5745       real_after_hours    := jtf_varchar2_table_100();
5746       real_customer_conf  := jtf_varchar2_table_100();
5747       real_task_depend    := jtf_varchar2_table_100();
5748       real_child_task     := jtf_varchar2_table_100();
5749 
5750       l_actual_travel_duration     := jtf_number_table();
5751       l_actual_travel_duration_uom := jtf_varchar2_table_100();
5752       l_task_depend                :=jtf_varchar2_table_100();
5753       --------------------------------------------------------------------------
5754       -- This was added because  profile values were getting cached
5755       -- though we change profile values in application and re-login
5756       -- we were not able to see the changed effects.so decided to
5757       -- move these profiles intialisation in this procedure
5758       -- as this procedure gets executed first for populating dispatch
5759       -- cente gantt.
5760       ---------------------------------------------------------------------------
5761       l_default_effort_uom     := fnd_profile.value_specific('CSF_DEFAULT_EFFORT_UOM', g_user_id);
5762       l_default_effort         := fnd_profile.value_specific('CSF_DEFAULT_EFFORT', g_user_id);
5763       l_rule_id                := fnd_profile.value_specific('CSF_TASK_SIGNAL_COLOR', g_user_id);
5764       l_profile_value          := fnd_profile.value_specific('CSF_USE_CUSTOM_CHROMATICS', g_user_id);
5765       g_label_on_task          := fnd_profile.value_specific('CSF_DISPLAY_LABEL_ON_TASK', g_user_id) = 'Y';
5766       g_dflt_tz_for_dc         := fnd_profile.value_specific('CSF_DEFAULT_TIMEZONE_DC', g_user_id);
5767       g_dflt_tz_for_sc         := fnd_profile.value_specific('CSF_DEFAULT_TIMEZONE_SC', g_user_id);
5768       -------------------------------------------------------------------------------
5769       -- End for adding profile values
5770       -------------------------------------------------------------------------------
5771 
5772     -- fetch resources
5773     IF NVL(FND_PROFILE.value('CSF_DC_DISPLAY_ONLY_TECHNICIANS'), 'N') = 'Y' THEN
5774       OPEN c_res_technician;
5775       FETCH c_res_technician
5776         BULK COLLECT INTO
5777           p_res_id
5778         , p_res_type
5779         , p_res_name
5780         , p_res_typ_name
5781         , p_res_key
5782 		, p_terr_name
5783 		, p_contact;
5784       CLOSE c_res_technician;
5785     ELSE
5786       OPEN c_terr_resource;
5787       FETCH c_terr_resource
5788         BULK COLLECT INTO
5789           p_res_id
5790         , p_res_type
5791         , p_res_name
5792         , p_res_typ_name
5793         , p_res_key
5794 		, p_terr_name
5795 		, p_contact;
5796       CLOSE c_terr_resource;
5797     END IF;
5798     l_shift_std := substr(p_show_arr_dep_tasks,3,1);
5799 	l_shift_reg := substr(p_show_arr_dep_tasks,2,1);
5800 
5801 	  IF nvl(l_shift_std,'N') ='S' and nvl(l_shift_reg,'N') ='R'
5802 	THEN
5803 	   l_shift_type:=null;
5804 	elsif nvl(l_shift_reg,'N') ='R' then
5805 		l_shift_type:='REGULAR';
5806 	elsif nvl(l_shift_std,'N') ='S' then
5807 	 	l_shift_type:='STANDBY';
5808 	elsif (l_shift_std ='H' and  l_shift_reg ='H' )
5809 		OR (l_shift_std IS NULL AND l_shift_reg IS NULL)
5810 	then
5811 	    l_shift_type:='HIDE';
5812 	end if;
5813       OPEN C_Resource_Shift(p_start_date_range,p_end_date_range);
5814       FETCH C_Resource_Shift
5815       BULK COLLECT INTO p_trip_id,p_shift_start_date,p_shift_end_date,p_block_trip,p_shift_res_key,p_vir_avail_type ;
5816 
5817       if g_tz_enabled ='Y' and g_dflt_tz_for_dc='CTZ' and p_trip_id.count > 0
5818       then
5819         FOR i IN p_trip_id.FIRST .. p_trip_id.LAST
5820         LOOP
5821           p_shift_start_date(i) :=fnd_date.adjust_datetime(p_shift_start_date(i),g_client_tz,g_server_tz );
5822           p_shift_end_date(i)   :=fnd_date.adjust_datetime(p_shift_end_date(i)  ,g_client_tz,g_server_tz);
5823         END LOOP;
5824       end if;
5825 
5826       IF g_use_custom_chromatics
5827       THEN
5828         get_custom_color;
5829       END IF;
5830 
5831       IF substr(p_show_arr_dep_tasks,1,1) = 'Y'
5832       THEN			/* Added this if condition for bug 6676658 */
5833 
5834       OPEN C_Virtual_Tasks;
5835       FETCH C_Virtual_Tasks
5836       BULK COLLECT INTO
5837       p_vir_task_id
5838     , p_vir_start_date
5839     , p_vir_end_date
5840     , p_vir_color
5841     , p_vir_name
5842     , p_vir_duration
5843     , p_vir_task_type_id
5844     , p_vir_tooltip
5845     , p_vir_resource_key
5846     , l_assignment_id
5847     , l_task_priority_id
5848     , l_status_id
5849     , l_planned_start_date
5850     , l_planned_end_date
5851     , l_actual_start_date
5852     , l_actual_end_date
5853     , l_actual_effort
5854     , l_actual_effort_uom
5855     , l_planned_effort
5856     , l_planned_effort_uom
5857     , l_escalated_task
5858     , l_scheduled_start_date
5859     , l_scheduled_end_date
5860 	, l_availability_type;
5861 
5862 
5863       IF p_vir_task_id.COUNT IS NOT NULL AND p_vir_task_id.COUNT > 0
5864       THEN
5865       FOR i IN p_vir_task_id.FIRST .. p_vir_task_id.LAST
5866       LOOP
5867 	    if (l_shift_type is Null OR l_shift_type =nvl(l_availability_type(i),'REGULAR'))
5868 		then
5869         ------------------------------------------
5870         --for scheduled start dates
5871         ------------------------------------------
5872         IF l_scheduled_start_date(i) IS NOT NULL AND l_scheduled_end_date(i) IS NOT NULL
5873         THEN
5874           IF l_scheduled_end_date(i) = l_scheduled_start_date(i)
5875       	  THEN
5876             IF NVL(l_planned_effort(i), 0) = 0 AND p_vir_task_type_id(i) = 20
5877             THEN
5878               p_vir_start_date(i)  :=(l_scheduled_start_date(i) - 5 / 1440);
5879             END IF; --planned effort
5880           ELSE
5881             IF     l_scheduled_end_date(i) > l_scheduled_start_date(i) AND NVL(l_planned_effort(i), 0) = 0
5882             AND p_vir_task_type_id(i) = 20
5883     	    THEN
5884               p_vir_start_date(i)  :=(l_scheduled_start_date(i) - 5 / 1440);
5885             END IF;   --if scheduled_end_date > scheduled_start_date
5886           END IF;   --if scheduled end_date = scheduled_start_date
5887         END IF;
5888         --end if for r.scheduled_start_date is not null and r.scheduled_end_date is not null
5889         ------------------------------------------
5890         --end for scheduled start dates
5891         ------------------------------------------
5892         ------------------------------------------
5893         --for scheduled end dates dates
5894         ------------------------------------------
5895         IF l_scheduled_start_date(i) IS NOT NULL AND l_scheduled_end_date(i) IS NOT NULL
5896         THEN
5897           IF l_scheduled_start_date(i) = l_scheduled_end_date(i)
5898           THEN
5899             IF NVL(l_planned_effort(i), 0) = 0 AND p_vir_task_type_id(i) = 21
5900             THEN
5901               p_vir_end_date(i)  :=(l_scheduled_start_date(i) + 5 / 1440);
5902             ELSE
5903               IF l_planned_effort(i) IS NOT NULL AND l_planned_effort(i) > 0
5904               THEN
5905                 l_planned_effort(i):=convert_to_days(l_planned_effort(i),NVL(l_planned_effort_uom(i),g_uom_hours),g_uom_hours);
5906               END IF;
5907               p_vir_end_date(i):=(l_scheduled_start_date(i) + NVL(l_planned_effort(i), 0));
5908             END IF;   --planned effort
5909           ELSE
5910             IF l_scheduled_end_date(i) > l_scheduled_start_date(i)
5911             THEN
5912               IF NVL(l_planned_effort(i), 0) = 0 AND p_vir_task_type_id(i) = 21
5913       	      THEN
5914                 p_vir_end_date(i)  :=(l_scheduled_start_date(i) + 5 / 1440);
5915               ELSE
5916                 IF l_planned_effort(i) IS NOT NULL AND l_planned_effort(i) > 0
5917                 THEN
5918                   l_planned_effort(i):=convert_to_days(l_planned_effort(i),NVL(l_planned_effort_uom(i),g_uom_hours),g_uom_hours);
5919                 END IF;
5920                 p_vir_end_date(i)  :=(l_scheduled_start_date(i) + NVL(l_planned_effort(i), 0));
5921               END IF; --planned effort
5922             END IF; --if scheduled_end_date > scheduled_start_date
5923           END IF; --if scheduled end_date = scheduled_start_date
5924         END IF; --end if for r.scheduled_start_date is not null and r.scheduled_end_date is not null
5925         ------------------------------------------
5926         --end for scheduled end dates
5927         ------------------------------------------
5928 	IF g_use_custom_chromatics
5929 	THEN
5930 	  l_task_custom_color  := 'N';
5931 	  IF l_rule_id IS NOT NULL
5932 	  THEN
5933 	    IF l_actual_start_date(i) IS NOT NULL
5934   	    THEN
5935           IF l_actual_end_date(i) IS NOT NULL
5936    	      THEN
5937             IF l_actual_end_date(i) = l_actual_start_date(i)
5938             THEN
5939 	          l_task_custom_color  := 'Y';
5940                 END IF;   --end if for actual_end_date=actual_start_date
5941               ELSE
5942                 IF NVL(l_actual_effort(i), 0) = 0
5943     	        THEN
5944                   IF NVL(l_planned_effort(i), 0) = 0
5945                   THEN
5946                     l_task_custom_color  := 'Y';
5947                   END IF;
5948                 END IF;
5949               END IF;   --end if for actual_end_date is not null
5950             ELSE   --for actual start date is null
5951               IF p_vir_end_date(i) IS NOT NULL
5952               THEN
5953                 IF p_vir_end_date(i) = p_vir_start_date(i)
5954 	        THEN
5955                   l_task_custom_color  := 'Y';
5956                 END IF;
5957               ELSE
5958                 l_task_custom_color  := 'Y';
5959               END IF;   --end if scheduled end_date is not null
5960             END IF;   --end if for actual_start_date is not null
5961           END IF;   --rule id condition for task date usage
5962           IF l_task_custom_color = 'Y'
5963           THEN
5964            IF l_rule_id IS NOT NULL
5965            THEN
5966              IF NVL(p_rule_id, 1) <> l_rule_id
5967              THEN
5968                OPEN get_tdu_color(l_rule_id);
5969     	       FETCH get_tdu_color
5970       	       INTO p_color;
5971 	       IF get_tdu_color%NOTFOUND
5972 	       THEN
5973                  CLOSE get_tdu_color;
5974 	         IF(NVL(p_cur_task_type_id, -1) <> p_vir_task_type_id(i)
5975                  OR NVL(p_cur_task_priority_id, -1) <> l_task_priority_id(i)
5976                  OR NVL(p_cur_task_status_id, -1) <> l_status_id(i)
5977                  OR NVL(p_cur_escalated_task, 'G') <> l_escalated_task(i)
5978                    )
5979 	         THEN
5980                    p_vir_color(i):=do_match(p_vir_task_type_id(i),l_task_priority_id(i),l_status_id(i),l_escalated_task(i));
5981                    p_cur_color             := p_vir_color(i);
5982                    p_cur_task_type_id      := p_vir_task_type_id(i);
5983                    p_cur_task_priority_id  := l_task_priority_id(i);
5984                    p_cur_task_status_id    := l_status_id(i);
5985                    p_cur_escalated_task    := l_escalated_task(i);
5986                  ELSE
5987                    p_vir_color(i)  := p_cur_color;
5988                  END IF;
5989                ELSE
5990                  p_vir_color(i)  := p_color;
5991                  CLOSE get_tdu_color;
5992                END IF;
5993              ELSE
5994                p_vir_color(i)  := p_color;
5995              END IF;
5996            ELSE
5997 	     IF(NVL(p_cur_task_type_id, -1) <> p_vir_task_type_id(i)
5998    	     OR NVL(p_cur_task_priority_id, -1) <> l_task_priority_id(i)
5999   	     OR NVL(p_cur_task_status_id, -1) <> l_status_id(i)
6000 	     OR NVL(p_cur_escalated_task, 'G') <> l_escalated_task(i)
6001    	       )
6002  	     THEN
6003                p_vir_color(i):=do_match(p_vir_task_type_id(i), l_task_priority_id(i), l_status_id(i),l_escalated_task(i));
6004   	       p_cur_color             := p_vir_color(i);
6005 	       p_cur_task_type_id      := p_vir_task_type_id(i);
6006 	       p_cur_task_priority_id  := l_task_priority_id(i);
6007 	       p_cur_task_status_id    := l_status_id(i);
6008 	       p_cur_escalated_task    := l_escalated_task(i);
6009 	     ELSE
6010 	       p_vir_color(i)  := p_cur_color;
6011 	     END IF;
6012            END IF;
6013          ELSE
6014            IF (NVL(p_cur_task_type_id, -1) <> p_vir_task_type_id(i)
6015            OR NVL(p_cur_task_priority_id, -1) <> l_task_priority_id(i)
6016            OR NVL(p_cur_task_status_id, -1) <> l_status_id(i)
6017            OR NVL(p_cur_escalated_task, 'G') <> l_escalated_task(i)
6018               )
6019            THEN
6020              p_vir_color(i):=do_match(p_vir_task_type_id(i), l_task_priority_id(i), l_status_id(i), l_escalated_task(i));
6021 	     p_cur_color             := p_vir_color(i);
6022    	     p_cur_task_type_id      := p_vir_task_type_id(i);
6023 	     p_cur_task_priority_id  := l_task_priority_id(i);
6024 	     p_cur_task_status_id    := l_status_id(i);
6025   	     p_cur_escalated_task    := l_escalated_task(i);
6026   	   ELSE
6027              p_vir_color(i)  := p_cur_color;
6028            END IF;
6029          END IF;
6030        ELSE
6031          IF l_actual_start_date(i) IS NOT NULL
6032          THEN
6033            p_vir_color(i)  := yellow;
6034          ELSE
6035            p_vir_color(i)  := blue;
6036          END IF;
6037        END IF;
6038 
6039        IF g_tz_enabled ='Y' and g_dflt_tz_for_dc='CTZ'
6040        THEN
6041          p_vir_start_date(i) :=fnd_date.adjust_datetime(p_vir_start_date(i),g_client_tz,g_server_tz );
6042          p_vir_end_date(i)   :=fnd_date.adjust_datetime(p_vir_end_date(i)  ,g_client_tz,g_server_tz);
6043        END IF;
6044 	   END IF; -- l_shift_type
6045       END LOOP;
6046       END IF;
6047       END IF;   -- for p_show_arr_dep_tasks = 'Y'
6048 
6049       l_task_depends :='N';
6050       FOR i IN c_icon_setup
6051       LOOP
6052         l_task_depends :='Y';
6053 
6054       END LOOP;
6055 
6056       IF  l_task_depends ='Y'
6057       THEN
6058         IF g_label_on_task
6059         THEN
6060           OPEN c3;
6061           FETCH c3
6062           BULK COLLECT INTO real_task_id
6063 		   ,l_task_number
6064 		   ,l_Task_Name
6065 		   ,l_Task_Priority_Name
6066 		   ,l_task_Postal_Code
6067 		   ,l_task_City_name
6068 		   ,l_task_Site_Name
6069            , real_start_date
6070            , real_end_date
6071            , real_color
6072            , real_duration
6073            , real_task_type_id
6074            , l_task_priority_id
6075            , l_status_id
6076            , real_tooltip
6077            , real_resource_key
6078            , real_name
6079 		   , l_task_customer_name
6080            , l_planned_start_date
6081            , l_planned_end_date
6082            , l_actual_start_date
6083            , l_actual_end_date
6084            , l_actual_effort
6085            , l_actual_effort_uom
6086            , l_planned_effort
6087            , l_planned_effort_uom
6088            , l_escalated_task
6089            , real_access_hours
6090            , real_after_hours
6091            , real_customer_conf
6092            , real_task_depend
6093            , real_parts_required
6094            , real_child_task
6095            , l_actual_travel_duration
6096            , l_actual_travel_duration_uom
6097            , l_task_depend
6098            ;
6099           CLOSE c3;
6100         ELSE
6101           OPEN c4;
6102           FETCH c4
6103           BULK COLLECT INTO real_task_id
6104            , real_start_date
6105            , real_end_date
6106            , real_color
6107            , real_duration
6108            , real_task_type_id
6109            , l_task_priority_id
6110            , l_status_id
6111            , real_tooltip
6112            , real_resource_key
6113            , real_name
6114            , l_planned_start_date
6115            , l_planned_end_date
6116            , l_actual_start_date
6117            , l_actual_end_date
6118            , l_actual_effort
6119            , l_actual_effort_uom
6120            , l_planned_effort
6121            , l_planned_effort_uom
6122            , l_escalated_task
6123            , real_access_hours
6124            , real_after_hours
6125            , real_customer_conf
6126            , real_task_depend
6127            , real_parts_required
6128            , real_child_task
6129            , l_actual_travel_duration
6130            , l_actual_travel_duration_uom
6131            , l_task_depend
6132            ;
6133           CLOSE c4;
6134         END IF;
6135       ELSIF  nvl(l_task_depends,'N') ='N'
6136       THEN
6137         IF g_label_on_task
6138         THEN
6139           OPEN c1;
6140           FETCH c1
6141           BULK COLLECT INTO real_task_id
6142 		   ,l_task_number
6143 		   ,l_Task_Name
6144 		   ,l_Task_Priority_Name
6145 		   ,l_task_Postal_Code
6146 		   ,l_task_City_name
6147 		   ,l_task_Site_Name
6148            , real_start_date
6149            , real_end_date
6150            , real_color
6151            , real_duration
6152            , real_task_type_id
6153            , l_task_priority_id
6154            , l_status_id
6155            , real_tooltip
6156            , real_resource_key
6157            , real_name
6158 		   , l_task_customer_name
6159            , l_planned_start_date
6160            , l_planned_end_date
6161            , l_actual_start_date
6162            , l_actual_end_date
6163            , l_actual_effort
6164            , l_actual_effort_uom
6165            , l_planned_effort
6166            , l_planned_effort_uom
6167            , l_escalated_task
6168            , real_access_hours
6169            , real_after_hours
6170            , real_customer_conf
6171            , real_task_depend
6172            , real_parts_required
6173            , real_child_task
6174            , l_actual_travel_duration
6175            , l_actual_travel_duration_uom
6176            ;
6177           CLOSE c1;
6178         ELSE
6179           OPEN c2;
6180           FETCH c2
6181           BULK COLLECT INTO real_task_id
6182            , real_start_date
6183            , real_end_date
6184            , real_color
6185            , real_duration
6186            , real_task_type_id
6187            , l_task_priority_id
6188            , l_status_id
6189            , real_tooltip
6190            , real_resource_key
6191            , real_name
6192            , l_planned_start_date
6193            , l_planned_end_date
6194            , l_actual_start_date
6195            , l_actual_end_date
6196            , l_actual_effort
6197            , l_actual_effort_uom
6198            , l_planned_effort
6199            , l_planned_effort_uom
6200            , l_escalated_task
6201            , real_access_hours
6202            , real_after_hours
6203            , real_customer_conf
6204            , real_task_depend
6205            , real_parts_required
6206            , real_child_task
6207            , l_actual_travel_duration
6208            , l_actual_travel_duration_uom
6209            ;
6210           CLOSE c2;
6211         END IF;
6212       END IF;
6213 
6214 	  IF g_label_on_task
6215       THEN
6216 		OPEN c_task_bar_info;
6217 		LOOP
6218 		FETCH c_task_bar_info into l_task_attr_list_tmp;
6219 		EXIT WHEN c_task_bar_info%notfound;
6220 			l_task_attr_list :=l_task_attr_list||l_task_attr_list_tmp;
6221 		END LOOP;
6222 	 END IF;
6223 
6224 
6225 
6226 
6227 
6228 
6229     IF real_task_id.COUNT IS NOT NULL AND real_task_id.COUNT > 0
6230     THEN
6231     FOR i IN real_task_id.FIRST .. real_task_id.LAST
6232     LOOP
6233       IF g_label_on_task
6234       THEN
6235 		  real_name(i) := ' ';
6236 		  l_task_attr_list_tmp := l_task_attr_list;
6237 
6238 		  LOOP
6239 		    EXIT WHEN l_task_attr_list_tmp IS NULL OR LENGTH(l_task_attr_list_tmp) =0;
6240 			IF SUBSTR(l_task_attr_list_tmp,1,8) ='TASK_NUM'
6241 			THEN
6242 			   IF l_task_number(i) IS NOT NULL
6243 			   THEN
6244 				 real_name(i) :=real_name(i)||' '||l_task_number(i);
6245 			   END IF;
6246 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)= 'TASK_NAM'
6247 			THEN
6248 			   IF l_Task_Name(i) is NOT NULL
6249 			   THEN
6250 			   real_name(i) :=real_name(i)||' '||l_Task_Name(i);
6251 			   END IF;
6252 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_CUS'
6253 			THEN
6254 			   IF l_task_customer_name(i) IS NOT NULL
6255 			   THEN
6256 			     real_name(i) :=real_name(i)||' '||l_task_customer_name(i);
6257 			   END IF;
6258 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_CST'
6259 			THEN
6260 			  IF l_task_Site_Name(i) IS NOT NULL
6261 			  THEN
6262 				real_name(i) :=real_name(i)||' '||l_task_Site_Name(i);
6263 			  END IF;
6264 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_CIT'
6265 			THEN
6266 			  IF l_task_City_name(i) IS NOT NULL
6267 			  THEN
6268 				real_name(i) :=real_name(i)||' '||l_task_City_name(i);
6269 			  END IF;
6270 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_POS'
6271 			THEN
6272 			  IF l_task_Postal_Code(i) IS NOT NULL
6273 			  THEN
6274 			    real_name(i) :=real_name(i)||' '||l_task_Postal_Code(i);
6275 			  END IF;
6276 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_PRI'
6277 			THEN
6278 			  IF l_Task_Priority_Name(i) IS NOT NULL
6279 			  THEN
6280 				real_name(i) :=real_name(i)||' '||l_Task_Priority_Name(i);
6281 			  END IF;
6282 			END IF;
6283 			l_task_attr_list_tmp := SUBSTR(l_task_attr_list_tmp,9);
6284 		  END LOOP;
6285 
6286 
6287       IF l_task_attr_list IS NULL
6288       THEN
6289          IF l_task_number(i) IS NOT NULL
6290 			   THEN
6291             real_name(i) :=real_name(i)||' '||l_task_number(i);
6292 			   END IF;
6293       END IF;
6294 	  END IF;--This end if is for g_label_on_task
6295 
6296 
6297       IF nvl(l_task_depends,'N') ='Y'
6298       THEN
6299         IF to_number(substr(real_task_id(i),1,instr(real_task_id(i),'-')-1)) = l_task_depend(i)
6300         THEN
6301           real_task_depend(i) := 'Y';
6302         END IF;
6303       END IF;
6304       ------------------------------------------
6305       --for scheduled start dates
6306       ------------------------------------------
6307       IF l_actual_start_date(i) IS NOT NULL
6308       THEN
6309         real_start_date(i)  := l_actual_start_date(i);
6310       END IF;
6311       ------------------------------------------
6312       --end for scheduled start dates
6313       ------------------------------------------
6314       ------------------------------------------
6315       --for scheduled end dates dates
6316       ------------------------------------------
6317       IF l_actual_start_date(i) IS NOT NULL
6318       THEN
6319         IF l_actual_end_date(i) IS NULL
6320         THEN
6321           IF l_actual_effort(i) IS NULL OR l_actual_effort(i) = 0
6322           THEN
6323             IF l_planned_effort(i) IS NOT NULL AND l_planned_effort(i) > 0
6324             THEN
6325               l_planned_effort(i):=csf_gantt_data_pkg.convert_to_days(l_planned_effort(i),NVL(l_planned_effort_uom(i),g_uom_hours),g_uom_hours);
6326             END IF;
6327             IF l_default_effort IS NOT NULL AND l_default_effort > 0
6328             THEN
6329               l_csf_default_effort:=csf_gantt_data_pkg.convert_to_days(l_default_effort,NVL(l_default_effort_uom,g_uom_hours),g_uom_hours);
6330             END IF;
6331             real_end_date(i):=(l_actual_start_date(i) + NVL(l_planned_effort(i), NVL(l_csf_default_effort, 0)));
6332           ELSE
6333             l_actual_effort(i):=csf_gantt_data_pkg.convert_to_days(l_actual_effort(i),NVL(l_actual_effort_uom(i),g_uom_hours),g_uom_hours);
6334             real_end_date(i):=(l_actual_start_date(i) + NVL(l_actual_effort(i), 0));
6335           END IF;
6336         ELSE
6337           IF l_actual_end_date(i) <= l_actual_start_date(i)
6338           THEN
6339             IF l_actual_effort(i) IS NULL OR l_actual_effort(i) = 0
6340             THEN -- this is true then calculate the actual end_date based uppon the profile values.
6341               IF l_planned_effort(i) IS NOT NULL AND l_planned_effort(i) > 0
6342     	      THEN
6343                 l_planned_effort(i):=csf_gantt_data_pkg.convert_to_days(l_planned_effort(i),NVL(l_planned_effort_uom(i),g_uom_hours),g_uom_hours);
6344               END IF;
6345               IF l_default_effort IS NOT NULL AND l_default_effort > 0
6346 	           THEN
6347                 l_csf_default_effort:=csf_gantt_data_pkg.convert_to_days(l_default_effort,NVL(l_default_effort_uom,g_uom_hours),g_uom_hours);
6348               END IF;
6349               real_end_date(i):=(l_actual_start_date(i) + NVL(l_planned_effort(i), NVL(l_csf_default_effort, 0)));
6350             ELSE  -- if not null then actual effort to the actual_end_date
6351               l_actual_effort(i):=csf_gantt_data_pkg.convert_to_days(l_actual_effort(i),NVL(l_actual_effort_uom(i),g_uom_hours),g_uom_hours);
6352 			  l_real_end_date :=(l_actual_start_date(i) + NVL(l_actual_effort(i), 0));
6353 			  l_real_actual_start_date :=l_actual_start_date(i) + 1/1440;
6354               if l_real_end_date < l_real_actual_start_date
6355   			  then
6356 				  real_end_date(i):=l_real_actual_start_date;
6357 			  else
6358 				  real_end_date(i):=(l_actual_start_date(i) + NVL(l_actual_effort(i), 0));
6359 			  end if;
6360             END IF;   --end if for actual effort is nul or zero
6361           ELSE -- actual end date is not null, check if actual_end_date > actual_start_date
6362             IF l_actual_end_date(i) > l_actual_start_date(i)
6363      	    THEN
6364               real_end_date(i):= l_actual_end_date(i);
6365             END IF;-- end if
6366           END IF; --end if for r_sch_end_date.actual_end_date = r_sch_end_date.actual_start_date
6367         END IF; -- end if for actual_end_date is null
6368         IF l_actual_travel_duration(i) > 0
6369         THEN
6370           IF l_actual_travel_duration_uom(i) IS NOT NULL
6371           THEN
6372             real_duration(i):=convert_to_min(l_actual_travel_duration(i),l_actual_travel_duration_uom(i),g_uom_minutes);
6373           END IF;
6374         ELSE
6375           real_duration(i):=0;
6376         END IF;
6377       ELSE --else for actual_start_date is null
6378         IF real_start_date(i) IS NOT NULL
6379         THEN     -- scheduled_start_date is not null then check if scheduled_end_date is null
6380           IF real_end_date(i) IS NOT NULL
6381           THEN  -- scheduled_start_date is not null then check if scheduled_start_date=scheduled_end_date
6382             IF real_start_date(i) = real_end_date(i)
6383 	    THEN
6384               IF (l_planned_effort(i) IS NULL) OR(l_planned_effort(i) = 0)
6385     	      THEN
6386                 IF l_default_effort IS NOT NULL AND l_default_effort > 0
6387 	            THEN
6388                   l_csf_default_effort:=csf_gantt_data_pkg.convert_to_days(l_default_effort,NVL(l_default_effort_uom, g_uom_hours),g_uom_hours);
6389                 END IF;
6390                 real_end_date(i):=(real_start_date(i) + NVL(l_csf_default_effort, 0));
6391               ELSE
6392                 IF l_planned_effort(i) IS NOT NULL AND l_planned_effort(i) > 0
6393                 THEN
6394                   l_planned_effort(i):=csf_gantt_data_pkg.convert_to_days(l_planned_effort(i),NVL(l_planned_effort_uom(i),g_uom_hours),g_uom_hours);
6395                 END IF;
6396 				l_real_sched_end_date :=(real_start_date(i) + NVL(l_actual_effort(i), 0));
6397 			    l_real_sched_start_date :=real_start_date(i) + 1/1440;
6398                 if l_real_sched_end_date < l_real_sched_start_date
6399   			    then
6400 				  real_end_date(i):=l_real_sched_start_date;
6401 		  	    else
6402 				  real_end_date(i):=(real_start_date(i) + NVL(l_planned_effort(i), 0));
6403 			    end if;
6404 
6405               END IF;
6406             END IF;
6407           ELSE -- scheduled_end_date is null then check for planned effort null
6408             IF (l_planned_effort(i) IS NULL) OR(l_planned_effort(i) = 0)
6409             THEN
6410               IF l_default_effort IS NOT NULL AND l_default_effort > 0
6411               THEN
6412                 l_csf_default_effort:=csf_gantt_data_pkg.convert_to_days(l_default_effort,NVL(l_default_effort_uom,g_uom_hours),g_uom_hours);
6413               END IF;
6414               real_end_date(i):=(real_start_date(i) + NVL(l_csf_default_effort, 0));
6415             ELSE       -- declar variable l_planned_effort to get uom coverted into days for actual effort for
6416               IF l_planned_effort(i) IS NOT NULL AND l_planned_effort(i) > 0
6417               THEN
6418                 l_planned_effort(i):=csf_gantt_data_pkg.convert_to_days(l_planned_effort(i),NVL(l_planned_effort_uom(i),g_uom_hours),g_uom_hours);
6419               END IF;
6420               real_end_date(i)  :=(real_start_date(i) + NVL(l_planned_effort(i), 0));
6421             END IF;
6422           END IF;   -- end if for scheduled_end_date is null
6423         END IF;   -- end if for scheduled_start_date is not null
6424       END IF;   -- end if for actual_start_date is not null
6425       ------------------------------------------
6426       --end for scheduled end dates
6427       ------------------------------------------
6428       IF is_task_escalated(to_number(SUBSTR(real_task_id(i),1,instr(real_task_id(i),'-')-1)))   --added for the bug 7307125
6429       THEN
6430           l_escalated_task(i) := 'Y';
6431       ELSE
6432           l_escalated_task(i) := 'N';
6433       END IF;
6434       IF g_use_custom_chromatics
6435       THEN
6436         l_task_custom_color  := 'N';
6437         IF l_rule_id IS NOT NULL
6438         THEN
6439           IF l_actual_start_date(i) IS NOT NULL
6440           THEN
6441             IF l_actual_end_date(i) IS NOT NULL
6442     	    THEN
6443               IF l_actual_end_date(i) = l_actual_start_date(i)
6444    	      THEN
6445 	        l_task_custom_color  := 'Y';
6446               END IF;   --end if for actual_end_date=actual_start_date
6447             ELSE
6448               IF NVL(l_actual_effort(i), 0) = 0
6449               THEN
6450                 IF NVL(l_planned_effort(i), 0) = 0
6451 	        THEN
6452                   l_task_custom_color  := 'Y';
6453                 END IF;
6454               END IF;
6455             END IF;   --end if for actual_end_date is not null
6456           ELSE   --for actual start date is null
6457             IF real_end_date(i) IS NOT NULL
6458   	    THEN
6459               IF real_end_date(i) = real_start_date(i)
6460    	      THEN
6461                 l_task_custom_color  := 'Y';
6462               END IF;
6463             ELSE
6464               l_task_custom_color  := 'Y';
6465             END IF;   --end if scheduled end_date is not null
6466           END IF;   --end if for actual_start_date is not null
6467         END IF;   --rule id condition for task date usage
6468         IF l_task_custom_color = 'Y'
6469         THEN
6470           IF l_rule_id IS NOT NULL
6471           THEN
6472 	    IF NVL(p_rule_id, 1) <> l_rule_id
6473 	    THEN
6474               OPEN get_tdu_color(l_rule_id);
6475 	      FETCH get_tdu_color
6476 	      INTO p_color;
6477 	      IF get_tdu_color%NOTFOUND
6478 	      THEN
6479                 CLOSE get_tdu_color;
6480 	        IF(NVL(p_cur_task_type_id, -1) <> real_task_type_id(i)
6481                 OR NVL(p_cur_task_priority_id, -1) <> l_task_priority_id(i)
6482                 OR NVL(p_cur_task_status_id, -1) <> l_status_id(i)
6483                 OR NVL(p_cur_escalated_task, 'G') <> l_escalated_task(i)
6484                   )
6485   	        THEN
6486                   real_color(i):=do_match(real_task_type_id(i),l_task_priority_id(i),l_status_id(i),l_escalated_task(i));
6487                   p_cur_color             := real_color(i);
6488                   p_cur_task_type_id      := real_task_type_id(i);
6489                   p_cur_task_priority_id  := l_task_priority_id(i);
6490                   p_cur_task_status_id    := l_status_id(i);
6491                   p_cur_escalated_task    := l_escalated_task(i);
6492                 ELSE
6493                   real_color(i)  := p_cur_color;
6494                 END IF;
6495               ELSE
6496                 real_color(i)  := p_color;
6497                 CLOSE get_tdu_color;
6498               END IF;
6499             ELSE
6500               real_color(i)  := p_color;
6501             END IF;
6502           ELSE
6503   	    IF(NVL(p_cur_task_type_id, -1) <> real_task_type_id(i)
6504    	    OR NVL(p_cur_task_priority_id, -1) <> l_task_priority_id(i)
6505 	    OR NVL(p_cur_task_status_id, -1) <> l_status_id(i)
6506  	    OR NVL(p_cur_escalated_task, 'G') <> l_escalated_task(i)
6507 	      )
6508 	    THEN
6509               real_color(i):=do_match(real_task_type_id(i), l_task_priority_id(i), l_status_id(i),l_escalated_task(i));
6510 	      p_cur_color             := real_color(i);
6511 	      p_cur_task_type_id      := real_task_type_id(i);
6512               p_cur_task_priority_id  := l_task_priority_id(i);
6513 	      p_cur_task_status_id    := l_status_id(i);
6514 	      p_cur_escalated_task    := l_escalated_task(i);
6515 	    ELSE
6516 	      real_color(i)  := p_cur_color;
6517 	    END IF;
6518           END IF;
6519         ELSE
6520           IF (NVL(p_cur_task_type_id, -1) <> real_task_type_id(i)
6521           OR NVL(p_cur_task_priority_id, -1) <> l_task_priority_id(i)
6522           OR NVL(p_cur_task_status_id, -1) <> l_status_id(i)
6523           OR NVL(p_cur_escalated_task, 'G') <> l_escalated_task(i)
6524              )
6525           THEN
6526             real_color(i):=do_match(real_task_type_id(i), l_task_priority_id(i), l_status_id(i), l_escalated_task(i));
6527 	    p_cur_color             := real_color(i);
6528 	    p_cur_task_type_id      := real_task_type_id(i);
6529 	    p_cur_task_priority_id  := l_task_priority_id(i);
6530 	    p_cur_task_status_id    := l_status_id(i);
6531 	    p_cur_escalated_task    := l_escalated_task(i);
6532 	  ELSE
6533             real_color(i)  := p_cur_color;
6534           END IF;
6535         END IF;
6536       ELSE
6537         IF l_actual_start_date(i) IS NOT NULL --added for the bug 7307125
6538         THEN
6539           real_color(i)  := yellow;
6540         ELSE
6541           real_color(i)  := blue;
6542         END IF;
6543       END IF;
6544       IF l_escalated_task(i) = 'Y'
6545         THEN
6546           real_color(i)  := red;
6547       END IF;
6548       IF real_color(i) IS NULL THEN
6549 	     real_color(i) := red;
6550 	  END IF;
6551 
6552       IF g_tz_enabled ='Y' and g_dflt_tz_for_dc='CTZ'
6553       THEN
6554          real_start_date(i) :=fnd_date.adjust_datetime(real_start_date(i),g_client_tz,g_server_tz );
6555          real_end_date(i)   :=fnd_date.adjust_datetime(real_end_date(i)  ,g_client_tz,g_server_tz);
6556       END IF;
6557     END LOOP;
6558     END IF;
6559 
6560   END;
6561 
6562    PROCEDURE get_schedule_advise_options
6563    (
6564       p_api_version              IN         NUMBER
6565     , p_init_msg_list            IN         VARCHAR2 DEFAULT NULL
6566     , x_return_status            OUT NOCOPY VARCHAR2
6567     , x_msg_count                OUT NOCOPY NUMBER
6568     , x_msg_data                 OUT NOCOPY VARCHAR2
6569     , p_display_option           IN         VARCHAR2
6570     , p_resource_id              IN         NUMBER
6571     , p_resource_type            IN         VARCHAR2
6572     , p_req_id                   IN         NUMBER
6573     , p_par_task                 IN         NUMBER
6574     , p_task_id                  IN         NUMBER
6575     , p_res_id                   OUT NOCOPY jtf_number_table
6576     , p_res_type                 OUT NOCOPY jtf_varchar2_table_2000
6577     , p_res_name                 OUT NOCOPY jtf_varchar2_table_2000
6578     , p_res_typ_name             OUT NOCOPY jtf_varchar2_table_2000
6579     , p_res_key                  OUT NOCOPY jtf_varchar2_table_2000
6580     , p_cost                     OUT NOCOPY jtf_number_table
6581     , p_start_date               IN         DATE
6582     , p_end_date                 IN         DATE
6583     , sch_adv_tz                 IN         Varchar2
6584     , inc_tz_code                IN         Varchar2
6585     , trip_id                    OUT NOCOPY jtf_number_table
6586     , start_date                 OUT NOCOPY jtf_date_table
6587     , end_date                   OUT NOCOPY jtf_date_table
6588     , block_trip                 OUT NOCOPY jtf_number_table
6589     , p_bck_res_key              OUT NOCOPY jtf_varchar2_table_2000
6590     , plan_task_key              OUT NOCOPY    jtf_varchar2_table_100
6591     , plan_start_date            OUT NOCOPY    jtf_date_table
6592     , plan_end_date              OUT NOCOPY    jtf_date_table
6593     , plan_color                 OUT NOCOPY    jtf_number_table
6594     , plan_name                  OUT NOCOPY    jtf_varchar2_table_2000
6595     , plan_tooltip               OUT NOCOPY    jtf_varchar2_table_2000
6596     , plan_duration              OUT NOCOPY    jtf_number_table
6597     , plan_task_type_id          OUT NOCOPY    jtf_number_table
6598     , plan_resource_key          OUT NOCOPY    jtf_varchar2_table_2000
6599     , real_task_key              OUT NOCOPY    jtf_varchar2_table_100
6600     , real_start_date            OUT NOCOPY    jtf_date_table
6601     , real_end_date              OUT NOCOPY    jtf_date_table
6602     , real_color                 OUT NOCOPY    jtf_number_table
6603     , real_name                  OUT NOCOPY    jtf_varchar2_table_2000
6604     , real_tooltip               OUT NOCOPY    jtf_varchar2_table_2000
6605     , real_duration              OUT NOCOPY    jtf_number_table
6606     , real_task_type_id          OUT NOCOPY    jtf_number_table
6607     , real_resource_key          OUT NOCOPY    jtf_varchar2_table_2000
6608     , child_task                 OUT Nocopy    jtf_varchar2_table_100
6609     , real_parts_required        OUT NOCOPY    jtf_varchar2_table_100
6610     , real_access_hours          OUT NOCOPY    jtf_varchar2_table_100
6611     , real_after_hours           OUT NOCOPY    jtf_varchar2_table_100
6612     , real_customer_conf         OUT NOCOPY    jtf_varchar2_table_100
6613     , real_task_depend           OUT NOCOPY    jtf_varchar2_table_100
6614     , oth_real_task_id           OUT Nocopy    jtf_varchar2_table_100
6615     , oth_real_start_date        OUT Nocopy    jtf_date_table
6616     , oth_real_end_date          OUT Nocopy    jtf_date_table
6617     , oth_real_color             OUT Nocopy    jtf_number_table
6618     , oth_real_Name              OUT Nocopy    jtf_varchar2_table_2000
6619     , oth_real_Duration          OUT Nocopy    jtf_number_table
6620     , oth_real_task_type_id      OUT Nocopy    jtf_number_table
6621     , oth_real_resource_key      OUT Nocopy    jtf_varchar2_table_2000
6622     , oth_real_child_task        OUT Nocopy    jtf_varchar2_table_100
6623     , oth_real_parts_required    OUT NOCOPY    jtf_varchar2_table_100
6624     , oth_real_access_hours      OUT NOCOPY    jtf_varchar2_table_100
6625     , oth_real_after_hours       OUT NOCOPY    jtf_varchar2_table_100
6626     , oth_real_customer_conf     OUT NOCOPY    jtf_varchar2_table_100
6627     , oth_real_task_depend       OUT NOCOPY    jtf_varchar2_table_100
6628    	, p_vir_avail_type	         OUT NOCOPY    jtf_varchar2_table_2000
6629     )
6630    IS
6631      L_RESOURCE_QUERY                 VARCHAR2(4000);
6632      L_COMMON_WHERE_RESOURCE_QUERY    VARCHAR2(4000);
6633      L_COMMON_WHERE_PARENT            VARCHAR2(4000);
6634      L_COMMON_ORDERBY                 VARCHAR2(4000);
6635      L_RESOURCE_QUERY_COST            VARCHAR2(4000);
6636      L_COMMON_WHERE_RESOURCE_COST     VARCHAR2(4000);
6637      L_RESOURCE_QUERY_COST_DAY        VARCHAR2(4000);
6638      L_COMMON_WHERE_RESOURCE_SINGLE   VARCHAR2(4000);
6639      L_RESOURCE_SINGLE_QUERY          VARCHAR2(4000);
6640      L_QUERY                          VARCHAR2(8000);
6641       ---------------------------------------------------
6642       --The below variables are used in color coding proc
6643       ---------------------------------------------------
6644       p_cur_task_type_id     NUMBER(10);
6645       p_cur_task_priority_id NUMBER(10);
6646       p_cur_task_status_id   NUMBER(10);
6647       p_cur_escalated_task   VARCHAR2(1);
6648       p_color                NUMBER(30);
6649       p_cur_color            NUMBER(30);
6650       p_rule_id              NUMBER(10);
6651 
6652      l_return_status     VARCHAR2(1);
6653 
6654      TYPE SchResType IS REF CURSOR;
6655      ResInfo SchResType;
6656 
6657     tmp_trip_id				      jtf_number_table;
6658     l_task_priority_id			      jtf_number_table;
6659     l_assignment_status_id		      jtf_number_table;
6660     l_escalated_task			      jtf_varchar2_table_100;
6661 
6662     l_planned_start_date		      jtf_date_table;
6663     l_planned_end_date			      jtf_date_table;
6664     l_actual_start_date			      jtf_date_table;
6665     l_actual_end_date			      jtf_date_table;
6666     l_actual_effort			      jtf_number_table;
6667     l_actual_effort_uom			      jtf_varchar2_table_100;
6668     l_planned_effort			      jtf_number_table;
6669     l_planned_effort_uom		      jtf_varchar2_table_100;
6670     l_actual_travel_duration		      jtf_number_table;
6671     l_actual_travel_duration_uom	      jtf_varchar2_table_100;
6672     l_status_id				      jtf_number_table;
6673     l_csf_default_effort		      NUMBER;
6674     l_task_depends			      varchar2(1);
6675     l_task_depend			      jtf_varchar2_table_100;
6676     oth_real_tooltip			      jtf_varchar2_table_2000;
6677 
6678 
6679 	  l_task_customer_name      jtf_varchar2_table_1000;
6680 	  l_task_number				jtf_varchar2_table_100;
6681 	  l_Task_Name			    jtf_varchar2_table_1000;
6682 	  l_Task_Priority_Name		jtf_varchar2_table_1000;
6683 	  l_task_City_name			jtf_varchar2_table_1000;
6684 	  l_task_Site_Name  		jtf_varchar2_table_1000;
6685 	  l_task_Postal_Code		jtf_varchar2_table_1000;
6686 	  l_task_attr_list			VARCHAR2(1000);
6687 	  l_task_attr_list_tmp	    VARCHAR2(1000);
6688 
6689 
6690 
6691     CURSOR c_icon_setup
6692       IS
6693       SELECT active
6694       FROM   csf_gnticons_setup_v
6695       WHERE  seq_id = 6;
6696 
6697     CURSOR get_tdu_color(t_rule_id NUMBER) IS
6698       SELECT background_col_dec
6699       FROM jtf_task_custom_colors
6700       WHERE rule_id = t_rule_id;
6701 
6702 	  CURSOR c_task_bar_info
6703       IS
6704       SELECT icon_file_name
6705       FROM   csf_gnticons_setup_v
6706       WHERE  INSTR(ICON_FILE_NAME,'TASK') >0
6707 	  AND     nvl(active,'N')='Y'
6708 	  ORDER BY RANKING;
6709 
6710 
6711     CURSOR c_res_detail IS
6712       SELECT DISTINCT cs.object_capacity_id cs
6713                     , ca.object_capacity_id
6714                     , ca.start_date_time
6715                     , ca.end_date_time
6716                     , status blocked_trip
6717                     , resource_id
6718 					, nvl(ca.availability_type,'NULL')
6719                  FROM cac_sr_object_capacity ca
6720                     , (SELECT resource_id || '-' || resource_type || '-' || plan_option_id
6721                                                                                         resource_id
6722                             , object_capacity_id
6723                             , resource_id res_id
6724                             , resource_type res_typ
6725                          FROM csf_plan_options_v
6726                         WHERE sched_request_id = p_req_id
6727                           AND task_type_id IN(20, 21)
6728 			) cs
6729                 WHERE ca.object_id = cs.res_id
6730                   AND ca.object_type = cs.res_typ
6731                   AND ca.start_date_time >= p_start_date -1
6732                   AND ca.end_date_time <= p_end_date;
6733 
6734      ---------------------------------------------------------------------------------------------
6735        --Cursor c_real_task_1 introduced when show labels on taskbar is true i.e join for hz_parties for showing
6736        --party name on taskbar and this cursor is without task dependencies join.
6737       ---------------------------------------------------------------------------------------------
6738 	CURSOR c_real_task_1 IS
6739 
6740         SELECT
6741 	     cpv.task_id || '-' || cpv.plan_option_id real_task_key
6742            , cpv.resource_id || '-' || cpv.resource_type || '-' || cpv.plan_option_id real_resource_key
6743            , cpv.start_time
6744            , cpv.end_time
6745 		   , t.task_number
6746 		   , tl.task_name
6747 		   , jtpl.name
6748 		   , NVL(l.postal_code,' ')
6749            , NVL(l.city,' ')
6750 		   , NVL(ps.party_site_name,' ')
6751            , 0 color
6752            , ' ' tooltip
6753            , NVL(
6754                  TO_NUMBER(SUBSTR(travel_time, 1, INSTR(travel_time, ':', 1) - 1)) * 60
6755                + TO_NUMBER(SUBSTR(travel_time, INSTR(travel_time, ':', 1) + 1, 5))
6756              , 0
6757              ) travel_time
6758            , t.task_type_id
6759            , t.task_priority_id
6760            , a.assignment_status_id
6761            , a.actual_start_date
6762            , a.actual_end_date
6763            , nvl(pi.party_name,' ') incident_customer_name
6764 		   , nvl(pi.party_name,' ') incident_customer_name1
6765            , NVL(
6766                DECODE(t.task_type_id, 22, DECODE(t.escalation_level, 'DE', 'N', 'NE', 'N', 'Y'))
6767              , 'N'
6768              ) escalated_task
6769            , NVL(accesshour_required, 'N')
6770            , NVL(after_hours_flag, 'N')
6771            , NVL(task_confirmation_status, 'N')
6772            , 'N' task_dep
6773            , DECODE(cr.task_id, t.task_id, 'Y', 'N') parts_req
6774            , NVL(child_position, 'N') child_task
6775       FROM   csf_plan_options_v cpv
6776            , jtf_task_assignments a
6777            , jtf_tasks_b t
6778 		   , jtf_tasks_tl tl
6779            , jtf_task_types_b tt
6780 		   , jtf_task_priorities_B jtp
6781 		   , jtf_task_priorities_tl jtpl
6782      	   , hz_parties pi
6783 		   , hz_party_sites ps
6784            , hz_locations l
6785    	       , csf_access_hours_b ca
6786            , csp_requirement_headers cr
6787            , jtf_task_statuses_b tsa
6788            , jtf_task_statuses_b tsb
6789       WHERE cpv.sched_request_id = p_req_id
6790         AND NVL(cpv.task_type_id, 0) NOT IN(20, 21)
6791 		AND t.task_type_id = tt.task_type_id
6792 		AND tl.task_id =t.task_id
6793 		AND tl.language=userenv('LANG')
6794 		AND jtp.task_priority_id=t.task_priority_id
6795 		AND jtpl.task_priority_id = jtp.task_priority_id
6796 		AND jtpl.language=userenv('LANG')
6797         AND cpv.start_time >= p_start_date
6798         AND cpv.end_time <= p_end_date
6799     	AND cpv.task_id = t.task_id
6800 	    AND cpv.task_id = a.task_id
6801         AND ca.task_id(+) = t.task_id
6802         AND pi.party_id(+) = t.customer_id
6803  	    AND ps.party_site_id(+) = t.address_id
6804         AND l.location_id(+) = csf_tasks_pub.get_task_location_id(t.task_id,t.address_id,t.location_id)
6805         AND cr.task_id(+) = t.task_id
6806 	    AND (cpv.task_id <> -1 AND cpv.task_id <> p_task_id)
6807         AND tsb.task_status_id = t.task_status_id
6808         AND tsa.task_status_id = a.assignment_status_id
6809         AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
6810         AND NVL(tsb.cancelled_flag, 'N') <> 'Y';
6811 
6812       ---------------------------------------------------------------------------------------------
6813       --Cursor c_real_task_3 introduced if task_dependency is set to active in scheduling chart icon setup form
6814       -- this cursor also has hz_parties join for party name to be shown on task bar
6815       ---------------------------------------------------------------------------------------------
6816 	CURSOR c_real_task_3 IS
6817 
6818    SELECT
6819 	     cpv.task_id || '-' || cpv.plan_option_id real_task_key
6820            , cpv.resource_id || '-' || cpv.resource_type || '-' || cpv.plan_option_id real_resource_key
6821            , cpv.start_time
6822            , cpv.end_time
6823 		   , t.task_number
6824 		   , tl.task_name
6825 		   , jtpl.name
6826 		   , NVL(l.postal_code,' ')
6827            , NVL(l.city,' ')
6828 		   , NVL(ps.party_site_name,' ')
6829            , 0 color
6830            , ' ' tooltip
6831            , NVL(
6832                  TO_NUMBER(SUBSTR(travel_time, 1, INSTR(travel_time, ':', 1) - 1)) * 60
6833                + TO_NUMBER(SUBSTR(travel_time, INSTR(travel_time, ':', 1) + 1, 5))
6834              , 0
6835              ) travel_time
6836            , t.task_type_id
6837            , t.task_priority_id
6838            , a.assignment_status_id
6839            , a.actual_start_date
6840            , a.actual_end_date
6841            , nvl(pi.party_name,' ') incident_customer_name
6842 		   , nvl(pi.party_name,' ') incident_customer_name1
6843            , NVL(
6844                DECODE(t.task_type_id, 22, DECODE(t.escalation_level, 'DE', 'N', 'NE', 'N', 'Y'))
6845              , 'N'
6846 
6847              ) escalated_task
6848            , NVL(accesshour_required, 'N')
6849            , NVL(after_hours_flag, 'N')
6850            , NVL(task_confirmation_status, 'N')
6851            , DECODE(nvl(t.task_id,0),jd.task_id,'Y','N') task_dep
6852            , DECODE(cr.task_id, t.task_id, 'Y', 'N') parts_req
6853            , NVL(child_position, 'N') child_task
6854 	       , nvl(jdd.dependent_on_task_id,0) || '-' || plan_option_id task_dep1
6855       FROM   csf_plan_options_v cpv
6856            , jtf_task_assignments a
6857            , jtf_tasks_b t
6858            , jtf_tasks_tl tl
6859            , jtf_task_types_b tt
6860 		   , jtf_task_priorities_B jtp
6861 		   , jtf_task_priorities_tl jtpl
6862     	   , hz_parties pi
6863 		   , hz_party_sites ps
6864            , hz_locations l
6865   	       , csf_access_hours_b ca
6866            , csp_requirement_headers cr
6867 	       , jtf_task_depends jd
6868            , jtf_task_depends jdd
6869            , jtf_task_statuses_b tsa
6870            , jtf_task_statuses_b tsb
6871       WHERE cpv.sched_request_id = p_req_id
6872         AND NVL(cpv.task_type_id, 0) NOT IN(20, 21)
6873         AND t.task_type_id = tt.task_type_id
6874 		AND tl.task_id =t.task_id
6875 		AND tl.language=userenv('LANG')
6876 		AND jtp.task_priority_id=t.task_priority_id
6877 		AND jtpl.task_priority_id = jtp.task_priority_id
6878 		AND jtpl.language=userenv('LANG')
6879         AND cpv.start_time >= p_start_date
6880         AND cpv.end_time <= p_end_date
6881     	AND cpv.task_id = t.task_id
6882     	AND cpv.task_id = a.task_id
6883         AND ca.task_id(+) = t.task_id
6884         AND pi.party_id(+) = t.customer_id
6885  	    AND ps.party_site_id(+) = t.address_id
6886         AND l.location_id(+) = csf_tasks_pub.get_task_location_id(t.task_id,t.address_id,t.location_id)
6887         AND cr.task_id(+) = t.task_id
6888   	    AND (cpv.task_id <> -1 AND cpv.task_id <> p_task_id)
6889 	    AND jd.task_id(+) = t.task_id
6890         AND jdd.dependent_on_task_id(+) = t.task_id
6891         AND tsb.task_status_id = t.task_status_id
6892         AND tsa.task_status_id = a.assignment_status_id
6893         AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
6894         AND NVL(tsb.cancelled_flag, 'N') <> 'Y';
6895 
6896 
6897 
6898 
6899 
6900 
6901       ---------------------------------------------------------------------------------------------
6902       --Cursor c_real_task_2 introduced when show labels on taskbar is false i.e remove join for hz_parties
6903       -- the diffrence between c1 and c2 join for hz_parties
6904       ---------------------------------------------------------------------------------------------
6905 	CURSOR c_real_task_2 IS
6906         SELECT
6907 	     cpv.task_id || '-' || cpv.plan_option_id real_task_key
6908            , cpv.resource_id || '-' || cpv.resource_type || '-' || cpv.plan_option_id real_resource_key
6909            , cpv.start_time
6910            , cpv.end_time
6911            , 0 color
6912            , ' ' tooltip
6913            , NVL(
6914                  TO_NUMBER(SUBSTR(travel_time, 1, INSTR(travel_time, ':', 1) - 1)) * 60
6915                + TO_NUMBER(SUBSTR(travel_time, INSTR(travel_time, ':', 1) + 1, 5))
6916              , 0
6917              ) travel_time
6918            , t.task_type_id
6919            , task_priority_id
6920            , a.assignment_status_id
6921            , a.actual_start_date
6922            , a.actual_end_date
6923            , ' ' incident_customer_name
6924            , NVL(
6925                DECODE(t.task_type_id, 22, DECODE(t.escalation_level, 'DE', 'N', 'NE', 'N', 'Y'))
6926              , 'N'
6927              ) escalated_task
6928            , NVL(accesshour_required, 'N')
6929            , NVL(after_hours_flag, 'N')
6930            , NVL(task_confirmation_status, 'N')
6931            , 'N' task_dep
6932            , DECODE(cr.task_id, t.task_id, 'Y', 'N') parts_req
6933            , NVL(child_position, 'N') child_task
6934       FROM   csf_plan_options_v cpv
6935            , jtf_task_assignments a
6936            , jtf_tasks_b t
6937      	   , csf_access_hours_b ca
6938            , csp_requirement_headers cr
6939            , jtf_task_statuses_b tsa
6940            , jtf_task_statuses_b tsb
6941       WHERE cpv.sched_request_id = p_req_id
6942         AND NVL(cpv.task_type_id, 0) NOT IN(20, 21)
6943         AND cpv.start_time >= p_start_date
6944         AND cpv.end_time <= p_end_date
6945     	AND cpv.task_id = t.task_id
6946 	AND cpv.task_id = a.task_id
6947         AND ca.task_id(+) = t.task_id
6948         AND cr.task_id(+) = t.task_id
6949 	AND (cpv.task_id <> -1 AND cpv.task_id <> p_task_id)
6950         AND tsb.task_status_id = t.task_status_id
6951         AND tsa.task_status_id = a.assignment_status_id
6952         AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
6953         AND NVL(tsb.cancelled_flag, 'N') <> 'Y';
6954 
6955       ---------------------------------------------------------------------------------------------
6956       --Cursor c_real_task_4 introduced if task_dependency is set to active in scheduling chart icon setup form
6957       -- this cursor does not have hz_parties join like c2 but has dependencies join
6958       ---------------------------------------------------------------------------------------------
6959 	CURSOR c_real_task_4 IS
6960         SELECT
6961 	     cpv.task_id || '-' || cpv.plan_option_id real_task_key
6962            , cpv.resource_id || '-' || cpv.resource_type || '-' || cpv.plan_option_id real_resource_key
6963            , cpv.start_time
6964            , cpv.end_time
6965            , 0 color
6966            , ' ' tooltip
6967            , NVL(
6968                  TO_NUMBER(SUBSTR(travel_time, 1, INSTR(travel_time, ':', 1) - 1)) * 60
6969                + TO_NUMBER(SUBSTR(travel_time, INSTR(travel_time, ':', 1) + 1, 5))
6970              , 0
6971              ) travel_time
6972            , t.task_type_id
6973            , task_priority_id
6974            , a.assignment_status_id
6975            , a.actual_start_date
6976            , a.actual_end_date
6977            , ' ' incident_customer_name
6978            , NVL(
6979                DECODE(t.task_type_id, 22, DECODE(t.escalation_level, 'DE', 'N', 'NE', 'N', 'Y'))
6980              , 'N'
6981              ) escalated_task
6982            , NVL(accesshour_required, 'N')
6983            , NVL(after_hours_flag, 'N')
6984            , NVL(task_confirmation_status, 'N')
6985            , DECODE(nvl(t.task_id,0),jd.task_id,'Y','N') task_dep
6986            , DECODE(cr.task_id, t.task_id, 'Y', 'N') parts_req
6987            , NVL(child_position, 'N') child_task
6988            , NVL(jdd.dependent_on_task_id,0) || '-' || plan_option_id task_dep1
6989       FROM   csf_plan_options_v cpv
6990            , jtf_task_assignments a
6991            , jtf_tasks_b t
6992      	   , csf_access_hours_b ca
6993            , csp_requirement_headers cr
6994 	   , jtf_task_depends jd
6995            , jtf_task_depends jdd
6996            , jtf_task_statuses_b tsa
6997            , jtf_task_statuses_b tsb
6998       WHERE cpv.sched_request_id = p_req_id
6999         AND NVL(cpv.task_type_id, 0) NOT IN(20, 21)
7000         AND cpv.start_time >= p_start_date
7001         AND cpv.end_time <= p_end_date
7002     	AND cpv.task_id = t.task_id
7003 	AND cpv.task_id = a.task_id
7004         AND ca.task_id(+) = t.task_id
7005         AND cr.task_id(+) = t.task_id
7006 	AND (cpv.task_id <> -1 AND cpv.task_id <> p_task_id)
7007 	AND jd.task_id(+) = t.task_id
7008         AND jdd.dependent_on_task_id(+) = t.task_id
7009         AND tsb.task_status_id = t.task_status_id
7010         AND tsa.task_status_id = a.assignment_status_id
7011         AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
7012         AND NVL(tsb.cancelled_flag, 'N') <> 'Y';
7013 
7014     CURSOR c_planned_task IS
7015       SELECT DECODE(task_id, -1, ROWNUM, task_id) || plan_option_id plan_task_key
7016            , resource_id || '-' || resource_type || '-' || plan_option_id plan_resource_key
7017            , start_time
7018            , end_time
7019            , 65280 color
7020            , ' ' NAME
7021            , ' ' tooltip
7022            , NVL(
7023                  TO_NUMBER(SUBSTR(travel_time, 1, INSTR(travel_time, ':', 1) - 1)) * 60
7024                + TO_NUMBER(SUBSTR(travel_time, INSTR(travel_time, ':', 1) + 1, 5))
7025              , 0
7026              ) travel_time
7027            , NVL(task_type_id, 0)
7028         FROM csf_plan_options_v
7029        WHERE sched_request_id = p_req_id
7030          AND NVL(task_type_id, 0) NOT IN(20, 21)
7031          AND start_time >= p_start_date
7032          AND end_time <= p_end_date
7033 	 AND (task_id = -1 OR task_id = p_task_id);
7034 
7035 	 ---------------------------------------------------------------------------------------------
7036        --Cursor C1 introduced when show labels on taskbar is true i.e join for hz_parties for showing
7037        --party name on taskbar and this cursor is without task dependenciea join.
7038       ---------------------------------------------------------------------------------------------
7039 
7040       CURSOR c1
7041       IS
7042       SELECT /*+ ORDERED use_nl (res_info a t tt tsa tsb pi ca cr)
7043                      INDEX (t,JTF_TASKS_B_U3)
7044                      INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
7045              a.task_id || '-'|| plan_option_id
7046 			, t.task_number
7047 		    , tl.task_name
7048 		    , jtpl.name
7049 		    , NVL(l.postal_code,' ')
7050             , NVL(l.city,' ')
7051 		    , NVL(ps.party_site_name,' ')
7052            , t.scheduled_start_date
7053            , t.scheduled_end_date
7054            , 0 color
7055            , NVL(sched_travel_duration, 0)
7056            , t.task_type_id
7057            , t.task_priority_id
7058            , a.assignment_status_id
7059            , '0' tooltip
7060            , a.resource_id || '-' || a.resource_type_code || '-'|| plan_option_id resource_key
7061            , nvl(pi.party_name,' ') incident_customer_name
7062 		   , nvl(pi.party_name,' ') incident_customer_name1
7063            , t.planned_start_date
7064            , t.planned_end_date
7065            , a.actual_start_date
7066            , a.actual_end_date
7067            , NVL(a.actual_effort, t.actual_effort)
7068            , NVL(a.actual_effort_uom, t.actual_effort_uom)
7069            , t.planned_effort
7070            , t.planned_effort_uom
7071            , NVL(
7072                DECODE(t.task_type_id, 22, DECODE(t.escalation_level, 'DE', 'N', 'NE', 'N', 'Y'))
7073              , 'N'
7074              ) escalated_task
7075            , NVL(accesshour_required, 'N')
7076            , NVL(after_hours_flag, 'N')
7077            , NVL(task_confirmation_status, 'N')
7078            , 'N' task_dep
7079            , DECODE(cr.task_id, t.task_id, 'Y', 'N') parts_req
7080            , NVL(child_position, 'N') child_task
7081            , a.actual_travel_duration
7082            , a.actual_travel_duration_uom
7083       FROM (SELECT distinct rr.resource_id, rr.resource_type,pop.plan_option_id,pt.object_capacity_id
7084 	    FROM csf_r_request_tasks rt,
7085 	       csf_r_resource_results rr,
7086 	       csf_r_plan_options pop,
7087 	       csf_r_plan_option_tasks pt,
7088 	       jtf_tasks_b t
7089    	   WHERE rt.request_task_id = rr.request_task_id
7090 	   AND rr.resource_result_id = POP.resource_result_id
7091 	   AND POP.plan_option_id = pt.plan_option_id
7092 	   AND pt.task_id = t.task_id(+)
7093 	   AND rt.sched_request_id = p_req_id
7094 	   AND nvl(t.task_type_id, 0) not in(20, 21)) res_info
7095 	       , jtf_task_assignments a
7096            , jtf_tasks_b t
7097            , jtf_task_types_b tt
7098            , jtf_tasks_tl tl
7099            , jtf_task_priorities_B jtp
7100 		   , jtf_task_priorities_tl jtpl
7101            , jtf_task_statuses_b tsb
7102            , jtf_task_statuses_b tsa
7103 	       , hz_parties pi
7104 	       , hz_party_sites ps
7105            , hz_locations l
7106 	       , csf_access_hours_b ca
7107            , csp_requirement_headers cr
7108       WHERE t.task_id = a.task_id
7109         AND t.source_object_type_code in( 'SR','TASK')
7110         AND NVL(t.deleted_flag, 'N') <> 'Y'
7111         AND t.task_type_id NOT IN (20,21)
7112         AND t.task_type_id = tt.task_type_id
7113 		AND tl.task_id =t.task_id
7114 		AND tl.language=userenv('LANG')
7115 		AND jtp.task_priority_id=t.task_priority_id
7116 		AND jtpl.task_priority_id         = jtp.task_priority_id
7117 		AND jtpl.language=userenv('LANG')
7118 		AND booking_start_date <= (p_end_date)
7119         AND booking_end_date   >= (p_start_date -1)
7120         AND a.resource_id = res_info.resource_id
7121         AND a.resource_type_code = res_info.resource_type
7122         AND tsa.task_status_id = t.task_status_id
7123         AND tsb.task_status_id = a.assignment_status_id
7124         AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
7125         AND NVL(tsb.cancelled_flag, 'N') <> 'Y'
7126         AND ca.task_id(+) = t.task_id
7127         AND pi.party_id(+) = t.customer_id
7128 		AND ps.party_site_id(+) = t.address_id
7129         AND l.location_id(+) = csf_tasks_pub.get_task_location_id(t.task_id,t.address_id,t.location_id)
7130         AND cr.task_id(+) = t.task_id
7131         AND booking_end_date >= booking_start_date
7132 	    AND a.object_capacity_id <>res_info.object_capacity_id;
7133 
7134       ---------------------------------------------------------------------------------------------
7135       --Cursor C3 introduced if task_dependency is set to active in scheduling chart icon setup form
7136       -- this cursor also has hz_parties join for party name to be shown on task bar
7137       ---------------------------------------------------------------------------------------------
7138       CURSOR c3 IS
7139       SELECT /*+ ORDERED use_nl (res_info a t tt tsa tsb pi ca jd jdd cr)
7140                      INDEX (t,JTF_TASKS_B_U3)
7141                      INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
7142              DISTINCT
7143              a.task_id || '-'|| plan_option_id
7144 			, t.task_number
7145 		    , tl.task_name
7146 		    , jtpl.name
7147 		    , NVL(l.postal_code,' ')
7148             , NVL(l.city,' ')
7149 		    , NVL(ps.party_site_name,' ')
7150            , t.scheduled_start_date
7151            , t.scheduled_end_date
7152            , 0 color
7153            , NVL(sched_travel_duration, 0)
7154            , t.task_type_id
7155            , t.task_priority_id
7156            , a.assignment_status_id
7157            , '0' tooltip
7158            , a.resource_id || '-' || a.resource_type_code || '-'|| plan_option_id resource_key
7159            , nvl(pi.party_name,' ') incident_customer_name
7160 		   , nvl(pi.party_name,' ') incident_customer_name1
7161            , t.planned_start_date
7162            , t.planned_end_date
7163            , a.actual_start_date
7164            , a.actual_end_date
7165            , NVL(a.actual_effort, t.actual_effort)
7166            , NVL(a.actual_effort_uom, t.actual_effort_uom)
7167            , t.planned_effort
7168            , t.planned_effort_uom
7169            , NVL(
7170                DECODE(t.task_type_id, 22, DECODE(t.escalation_level, 'DE', 'N', 'NE', 'N', 'Y'))
7171              , 'N'
7172              ) escalated_task
7173            , NVL(accesshour_required, 'N')
7174            , NVL(after_hours_flag, 'N')
7175            , NVL(task_confirmation_status, 'N')
7176            , DECODE(nvl(t.task_id,0),jd.task_id,'Y','N') task_dep
7177            , DECODE(cr.task_id, t.task_id, 'Y', 'N') parts_req
7178            , NVL(child_position, 'N') child_task
7179            , a.actual_travel_duration
7180            , a.actual_travel_duration_uom
7181            , nvl(jdd.dependent_on_task_id,0) || '-' || plan_option_id task_dep1
7182       FROM (SELECT distinct rr.resource_id, rr.resource_type,pop.plan_option_id,pt.object_capacity_id
7183 	    FROM csf_r_request_tasks rt,
7184 	       csf_r_resource_results rr,
7185 	       csf_r_plan_options pop,
7186 	       csf_r_plan_option_tasks pt,
7187 	       jtf_tasks_b t
7188    	   WHERE rt.request_task_id = rr.request_task_id
7189 	   AND rr.resource_result_id = POP.resource_result_id
7190 	   AND POP.plan_option_id = pt.plan_option_id
7191 	   AND pt.task_id = t.task_id(+)
7192 	   AND rt.sched_request_id = p_req_id
7193 	   AND nvl(t.task_type_id, 0) not in(20, 21)) res_info
7194 		   , jtf_task_assignments a
7195            , jtf_tasks_b t
7196 		   , jtf_tasks_tl tl
7197            , jtf_task_types_b tt
7198 	       , jtf_task_priorities_B jtp
7199 		   , jtf_task_priorities_tl jtpl
7200            , jtf_task_statuses_b tsb
7201            , jtf_task_statuses_b tsa
7202 	       , hz_parties pi
7203 	       , hz_party_sites ps
7204            , hz_locations l
7205 	       , csf_access_hours_b ca
7206            , jtf_task_depends jd
7207            , jtf_task_depends jdd
7208            , csp_requirement_headers cr
7209       WHERE t.task_id = a.task_id
7210         AND t.source_object_type_code in( 'SR','TASK')
7211         AND NVL(t.deleted_flag, 'N') <> 'Y'
7212         AND t.task_type_id NOT IN (20,21)
7213         AND t.task_type_id = tt.task_type_id
7214 		AND tl.task_id =t.task_id
7215 		AND tl.language=userenv('LANG')
7216 		AND jtp.task_priority_id=t.task_priority_id
7217 		AND jtpl.task_priority_id         = jtp.task_priority_id
7218 		AND jtpl.language=userenv('LANG')
7219 		AND booking_start_date <= (p_end_date)
7220         AND booking_end_date >= (p_start_date -1)
7221         AND a.resource_id = res_info.resource_id
7222         AND a.resource_type_code = res_info.resource_type
7223         AND tsa.task_status_id = t.task_status_id
7224         AND tsb.task_status_id = a.assignment_status_id
7225         AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
7226         AND NVL(tsb.cancelled_flag, 'N') <> 'Y'
7227         AND ca.task_id(+) = t.task_id
7228         AND jd.task_id(+) = t.task_id
7229         AND jdd.dependent_on_task_id(+) = t.task_id
7230         AND pi.party_id(+) = t.customer_id
7231 		AND ps.party_site_id(+) = t.address_id
7232 		AND l.location_id(+) = csf_tasks_pub.get_task_location_id(t.task_id,t.address_id,t.location_id)
7233         AND cr.task_id(+) = t.task_id
7234         AND booking_end_date >= booking_start_date
7235     	AND a.object_capacity_id <>res_info.object_capacity_id;
7236 
7237       ---------------------------------------------------------------------------------------------
7238       --Cursor C2 introduced when show labels on taskbar is false i.e remove join for hz_parties
7239       -- the diffrence between c1 and c2 join for hz_parties
7240       ---------------------------------------------------------------------------------------------
7241       CURSOR c2 IS
7242       SELECT /*+ ORDERED use_nl (res_info a t tt tsa tsb ca cr)
7243                      INDEX (t,JTF_TASKS_B_U3)
7244                      INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
7245              a.task_id || '-'|| plan_option_id
7246            , scheduled_start_date
7247            , scheduled_end_date
7248            , 0 color
7249            , NVL(sched_travel_duration, 0)
7250            , t.task_type_id
7251            , task_priority_id
7252            , a.assignment_status_id
7253            , '0' tooltip
7254            , a.resource_id || '-' || a.resource_type_code || '-'|| plan_option_id resource_key
7255            , ' ' incident_customer_name
7256            , planned_start_date
7257            , planned_end_date
7258            , a.actual_start_date
7259            , a.actual_end_date
7260            , NVL(a.actual_effort, t.actual_effort)
7261            , NVL(a.actual_effort_uom, t.actual_effort_uom)
7262            , t.planned_effort
7263            , t.planned_effort_uom
7264            , NVL(
7265                DECODE(t.task_type_id, 22, DECODE(t.escalation_level, 'DE', 'N', 'NE', 'N', 'Y'))
7266              , 'N'
7267              ) escalated_task
7268            , NVL(accesshour_required, 'N')
7269            , NVL(after_hours_flag, 'N')
7270            , NVL(task_confirmation_status, 'N')
7271            , 'N' task_dep
7272            , DECODE(cr.task_id, t.task_id, 'Y', 'N') parts_req
7273            , NVL(child_position, 'N') child_task
7274            , a.actual_travel_duration
7275            , a.actual_travel_duration_uom
7276       FROM (SELECT distinct rr.resource_id, rr.resource_type,pop.plan_option_id,pt.object_capacity_id
7277 	    FROM csf_r_request_tasks rt,
7278 	       csf_r_resource_results rr,
7279 	       csf_r_plan_options pop,
7280 	       csf_r_plan_option_tasks pt,
7281 	       jtf_tasks_b t
7282    	   WHERE rt.request_task_id = rr.request_task_id
7283 	   AND rr.resource_result_id = POP.resource_result_id
7284 	   AND POP.plan_option_id = pt.plan_option_id
7285 	   AND pt.task_id = t.task_id(+)
7286 	   AND rt.sched_request_id = p_req_id
7287 	   AND nvl(t.task_type_id, 0) not in(20, 21)) res_info
7288     	   , jtf_task_assignments a
7289            , jtf_tasks_b t
7290            , jtf_task_types_b tt
7291            , jtf_task_statuses_b tsb
7292            , jtf_task_statuses_b tsa
7293 	       , csf_access_hours_b ca
7294            , csp_requirement_headers cr
7295       WHERE t.task_id = a.task_id
7296         AND t.source_object_type_code in( 'SR','TASK')
7297         AND NVL(t.deleted_flag, 'N') <> 'Y'
7298         AND t.task_type_id NOT IN (20,21)
7299         AND t.task_type_id = tt.task_type_id
7300 		AND booking_start_date <= (p_end_date)
7301         AND booking_end_date >= (p_start_date -1)
7302         AND a.resource_id = res_info.resource_id
7303         AND a.resource_type_code = res_info.resource_type
7304         AND tsa.task_status_id = t.task_status_id
7305         AND tsb.task_status_id = a.assignment_status_id
7306         AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
7307         AND NVL(tsb.cancelled_flag, 'N') <> 'Y'
7308         AND ca.task_id(+) = t.task_id
7309         AND cr.task_id(+) = t.task_id
7310         AND booking_end_date >= booking_start_date
7311 	AND a.object_capacity_id <>res_info.object_capacity_id;
7312       ---------------------------------------------------------------------------------------------
7313       --Cursor C4 introduced if task_dependency is set to active in scheduling chart icon setup form
7314       -- this cursor does not have hz_parties join like c2 but has dependencies join
7315       ---------------------------------------------------------------------------------------------
7316       CURSOR C4
7317       IS
7318       SELECT /*+ ORDERED use_nl (res_info a t tt tsa tsb ca jd jdd cr)
7319                      INDEX (t,JTF_TASKS_B_U3)
7320                      INDEX (a,JTF_TASK_ASSIGNMENTS_N1) */
7321              DISTINCT
7322              a.task_id || '-'|| plan_option_id
7323            , scheduled_start_date
7324            , scheduled_end_date
7325            , 0 color
7326            , NVL(sched_travel_duration, 0)
7327            , t.task_type_id
7328            , task_priority_id
7329            , a.assignment_status_id
7330            , '0' tooltip
7331            , a.resource_id || '-' || a.resource_type_code || '-'|| plan_option_id resource_key
7332            , ' ' incident_customer_name
7333            , planned_start_date
7334            , planned_end_date
7335            , a.actual_start_date
7336            , a.actual_end_date
7337            , NVL(a.actual_effort, t.actual_effort)
7338            , NVL(a.actual_effort_uom, t.actual_effort_uom)
7339            , t.planned_effort
7340            , t.planned_effort_uom
7341            , NVL(
7342                DECODE(t.task_type_id, 22, DECODE(t.escalation_level, 'DE', 'N', 'NE', 'N', 'Y'))
7343              , 'N'
7344              ) escalated_task
7345            , NVL(accesshour_required, 'N')
7346            , NVL(after_hours_flag, 'N')
7347            , NVL(task_confirmation_status, 'N')
7348            , DECODE(nvl(t.task_id,0),jd.task_id,'Y','N') task_dep
7349            , DECODE(cr.task_id, t.task_id, 'Y', 'N') parts_req
7350            , NVL(child_position, 'N') child_task
7351            , a.actual_travel_duration
7352            , a.actual_travel_duration_uom
7353            , nvl(jdd.dependent_on_task_id,0) || '-' || plan_option_id task_dep1
7354       FROM (SELECT distinct rr.resource_id, rr.resource_type,POP.plan_option_id,pt.object_capacity_id
7355 	    FROM csf_r_request_tasks rt,
7356 	       csf_r_resource_results rr,
7357 	       csf_r_plan_options pop,
7358 	       csf_r_plan_option_tasks pt,
7359 	       jtf_tasks_b t
7360    	   WHERE rt.request_task_id = rr.request_task_id
7361 	   AND rr.resource_result_id = POP.resource_result_id
7362 	   AND POP.plan_option_id = pt.plan_option_id
7363 	   AND pt.task_id = t.task_id(+)
7364 	   AND rt.sched_request_id = p_req_id
7365 	   AND nvl(t.task_type_id, 0) not in(20, 21)) res_info
7366     	   , jtf_task_assignments a
7367            , jtf_tasks_b t
7368            , jtf_task_types_b tt
7369            , jtf_task_statuses_b tsb
7370            , jtf_task_statuses_b tsa
7371 	       , csf_access_hours_b ca
7372            , jtf_task_depends jd
7373            , jtf_task_depends jdd
7374            , csp_requirement_headers cr
7375       WHERE t.task_id = a.task_id
7376         AND t.source_object_type_code in( 'SR','TASK')
7377         AND NVL(t.deleted_flag, 'N') <> 'Y'
7378         AND t.task_type_id NOT IN (20,21)
7379         AND t.task_type_id = tt.task_type_id
7380 		AND booking_start_date <= (p_end_date)
7381         AND booking_end_date >= (p_start_date -1)
7382         AND a.resource_id = res_info.resource_id
7383         AND a.resource_type_code = res_info.resource_type
7384         AND tsa.task_status_id = t.task_status_id
7385         AND tsb.task_status_id = a.assignment_status_id
7386         AND NVL(tsa.cancelled_flag, 'N') <> 'Y'
7387         AND NVL(tsb.cancelled_flag, 'N') <> 'Y'
7388         AND ca.task_id(+) = t.task_id
7389         AND jd.task_id(+) = t.task_id
7390         AND jdd.dependent_on_task_id(+) = t.task_id
7391         AND cr.task_id(+) = t.task_id
7392         AND booking_end_date >= booking_start_date
7393 	AND a.object_capacity_id <>res_info.object_capacity_id;
7394 
7395 
7396 	 TYPE custom_color_rec IS RECORD(
7397        task_type_id         NUMBER
7398       , task_priority_id     NUMBER
7399       , assignment_status_id NUMBER
7400       , escalated_task       VARCHAR2(1)
7401       , background_col_dec   NUMBER
7402       , background_col_rgb   VARCHAR2(12)
7403       );
7404 
7405       TYPE custom_color_tbl IS TABLE OF custom_color_rec
7406       INDEX BY BINARY_INTEGER;
7407 
7408       g_custom_color_tbl       custom_color_tbl;
7409 
7410       PROCEDURE get_custom_color IS
7411         CURSOR c_custom_color IS
7412         SELECT   type_id
7413                , priority_id
7414                , assignment_status_id
7415                , escalated_task
7416                , background_col_dec
7417                , background_col_rgb
7418             FROM jtf_task_custom_colors
7419            WHERE active_flag = 'Y'
7420         ORDER BY color_determination_priority;
7421 
7422         i BINARY_INTEGER := 0;
7423       BEGIN
7424         IF g_custom_color_tbl.COUNT = 0
7425         THEN
7426           FOR rec IN c_custom_color
7427 	  LOOP
7428             i := i + 1;
7429             g_custom_color_tbl(i).task_type_id          := rec.type_id;
7430             g_custom_color_tbl(i).task_priority_id      := rec.priority_id;
7431             g_custom_color_tbl(i).assignment_status_id  := rec.assignment_status_id;
7432             g_custom_color_tbl(i).escalated_task        := rec.escalated_task;
7433             g_custom_color_tbl(i).background_col_dec    := rec.background_col_dec;
7434             g_custom_color_tbl(i).background_col_rgb    := rec.background_col_rgb;
7435           END LOOP;
7436         END IF;
7437       END get_custom_color;
7438 
7439       FUNCTION do_match(
7440         p_task_type_id         IN NUMBER
7441       , p_task_priority_id     IN NUMBER
7442       , p_assignment_status_id IN NUMBER
7443       , p_escalated_task       IN VARCHAR2
7444       )
7445         RETURN NUMBER IS
7446       BEGIN
7447         FOR i IN g_custom_color_tbl.FIRST .. g_custom_color_tbl.LAST
7448 	LOOP
7449           IF  NVL(g_custom_color_tbl(i).task_type_id, p_task_type_id) = p_task_type_id
7450           AND NVL(g_custom_color_tbl(i).task_priority_id, p_task_priority_id) = p_task_priority_id
7451           AND NVL(g_custom_color_tbl(i).assignment_status_id, p_assignment_status_id) =
7452                                                                               p_assignment_status_id
7453           AND NVL(g_custom_color_tbl(i).escalated_task, p_escalated_task) = p_escalated_task THEN
7454             RETURN g_custom_color_tbl(i).background_col_dec;
7455           END IF;
7456         END LOOP;
7457         RETURN 0;
7458       END do_match;
7459 
7460 
7461 
7462    BEGIN
7463 
7464 
7465      --- Fix for bug 7282611 forward ported.
7466      g_server_tz := fnd_timezones.get_server_timezone_code;
7467      g_client_tz := fnd_timezones.get_client_timezone_code;
7468      --- end of fix for bug 7282611
7469      p_res_id                   := jtf_number_table();
7470      p_res_type                 := jtf_varchar2_table_2000();
7471      p_res_name                 := jtf_varchar2_table_2000();
7472      p_res_typ_name             := jtf_varchar2_table_2000();
7473      p_res_key                  := jtf_varchar2_table_2000();
7474      p_cost                     := jtf_number_table();
7475 
7476      trip_id                    := jtf_number_table();
7477      start_date                 := jtf_date_table();
7478      end_date                   := jtf_date_table();
7479      block_trip                 := jtf_number_table();
7480      tmp_trip_id                := jtf_number_table();
7481      p_bck_res_key              := jtf_varchar2_table_2000();
7482 
7483      ---------------------------------------------------------
7484      --tables used for getting real/to be plan task parameters
7485      ---------------------------------------------------------
7486      plan_task_key              := jtf_varchar2_table_100();
7487      plan_start_date            := jtf_date_table();
7488      plan_end_date              := jtf_date_table();
7489      plan_color                 := jtf_number_table();
7490      plan_name                  := jtf_varchar2_table_2000();
7491      plan_tooltip               := jtf_varchar2_table_2000();
7492      plan_duration              := jtf_number_table();
7493      plan_task_type_id          := jtf_number_table();
7494      plan_resource_key          := jtf_varchar2_table_2000();
7495      real_task_key              := jtf_varchar2_table_100();
7496      real_start_date            := jtf_date_table();
7497      real_end_date              := jtf_date_table();
7498      real_color                 := jtf_number_table();
7499      real_name                  := jtf_varchar2_table_2000();
7500      real_tooltip               := jtf_varchar2_table_2000();
7501      real_duration              := jtf_number_table();
7502      real_task_type_id          := jtf_number_table();
7503      real_resource_key          := jtf_varchar2_table_2000();
7504      child_task                 := jtf_varchar2_table_100();
7505      real_parts_required        := jtf_varchar2_table_100();
7506      real_access_hours          := jtf_varchar2_table_100();
7507      real_after_hours           := jtf_varchar2_table_100();
7508      real_customer_conf         := jtf_varchar2_table_100();
7509      real_task_depend           := jtf_varchar2_table_100();
7510      l_task_priority_id         := jtf_number_table();
7511      l_assignment_status_id     := jtf_number_table();
7512      l_escalated_task           := jtf_varchar2_table_100();
7513 
7514      oth_real_task_id           := jtf_varchar2_table_100();
7515      oth_real_start_date        := jtf_date_table();
7516      oth_real_end_date          := jtf_date_table();
7517      oth_real_color             := jtf_number_table();
7518      oth_real_NAME              := jtf_varchar2_table_2000();
7519      oth_real_tooltip           := jtf_varchar2_table_2000();
7520      oth_real_DURATION          := jtf_number_table();
7521      oth_real_task_type_id      := jtf_number_table();
7522      oth_real_resource_key      := jtf_varchar2_table_2000();
7523      oth_real_child_task        := jtf_varchar2_table_100();
7524      oth_real_parts_required    := jtf_varchar2_table_100();
7525      oth_real_access_hours      := jtf_varchar2_table_100();
7526      oth_real_after_hours       := jtf_varchar2_table_100();
7527      oth_real_customer_conf     := jtf_varchar2_table_100();
7528      oth_real_task_depend       := jtf_varchar2_table_100();
7529 
7530       p_vir_avail_type 		    := jtf_varchar2_table_2000();
7531 
7532      l_planned_start_date       := jtf_date_table();
7533      l_planned_end_date         := jtf_date_table();
7534      l_actual_start_date        := jtf_date_table();
7535      l_actual_end_date          := jtf_date_table();
7536      l_actual_effort            := jtf_number_table();
7537      l_actual_effort_uom        := jtf_varchar2_table_100();
7538      l_planned_effort           := jtf_number_table();
7539      l_planned_effort_uom       := jtf_varchar2_table_100();
7540      l_actual_travel_duration   := jtf_number_table();
7541      l_actual_travel_duration_uom :=jtf_varchar2_table_100();
7542      l_status_id                := jtf_number_table();
7543 
7544 	 	  -------------------------------------------------------
7545 	  --Tables for getting taskbar label information
7546 	  -------------------------------------------------------
7547 	  l_task_customer_name      := jtf_varchar2_table_1000();
7548 	  l_task_number 			:=jtf_varchar2_table_100();
7549 	  l_Task_Name			    :=jtf_varchar2_table_1000();
7550 	  l_Task_Priority_Name		:=jtf_varchar2_table_1000();
7551 	  l_task_City_name			:=jtf_varchar2_table_1000();
7552 	  l_task_Site_Name  		:=jtf_varchar2_table_1000();
7553 	  l_task_Postal_Code		:=jtf_varchar2_table_1000();
7554 
7555 	   g_label_on_task          := fnd_profile.value_specific('CSF_DISPLAY_LABEL_ON_TASK', g_user_id) = 'Y';
7556        g_dflt_tz_for_dc         := fnd_profile.value_specific('CSF_DEFAULT_TIMEZONE_DC', g_user_id);
7557        g_dflt_tz_for_sc         := fnd_profile.value_specific('CSF_DEFAULT_TIMEZONE_SC', g_user_id);
7558 
7559 
7560 
7561 
7562 L_COMMON_WHERE_RESOURCE_SINGLE:= ' AND (NVL(PT.TASK_ID,0)= :4 OR NVL(PT.TASK_ID,0) = -1)';
7563 L_COMMON_WHERE_RESOURCE_QUERY := ' AND (NVL(PT.TASK_ID,0)= :2 OR NVL(PT.TASK_ID,0) = -1) ';
7564 L_COMMON_WHERE_PARENT         := ' AND NVL(PT.TASK_ID,0) = -1 ';
7565 L_COMMON_ORDERBY              := ' ORDER BY POP.PLAN_OPTION_ID, PT.SCHEDULED_START_DATE ';
7566 L_COMMON_WHERE_RESOURCE_COST  := ' AND (NVL(PT.TASK_ID,0)= :3 OR NVL(PT.TASK_ID,0) = -1)';
7567 
7568 
7569 L_RESOURCE_QUERY              := ' SELECT  RR.RESOURCE_ID'
7570 			       ||',RR.RESOURCE_TYPE'
7571 			       ||',CSF_RESOURCE_PUB.GET_RESOURCE_NAME (RR.RESOURCE_ID,RR.RESOURCE_TYPE) RESOURCE_NAME'
7572 			       ||',CSF_GANTT_DATA_PKG.GET_RESOURCE_TYPE_NAME(RR.RESOURCE_TYPE ) RESOURCE_TYPE_NAME'
7573 			       ||',RR.RESOURCE_ID||''-''||RR.RESOURCE_TYPE||''-''||POP.PLAN_OPTION_ID RESOURCE_KEY'
7574 			       ||',POP.COST'
7575 			       ||' FROM '
7576 			       ||' CSF_R_REQUEST_TASKS RT,'
7577 			       ||' CSF_R_RESOURCE_RESULTS RR,'
7578 			       ||' CSF_R_PLAN_OPTIONS POP,'
7579 			       ||' CSF_R_PLAN_OPTION_TASKS PT,'
7580 			       ||' JTF_TASKS_B T'
7581 			       ||' WHERE RT.SCHED_REQUEST_ID =:1'
7582 			       ||' AND (NVL(T.TASK_TYPE_ID,0) NOT IN (20,21))'
7583 			       ||' AND RT.REQUEST_TASK_ID = RR.REQUEST_TASK_ID'
7584 			       ||' AND RR.RESOURCE_RESULT_ID = POP.RESOURCE_RESULT_ID'
7585 			       ||' AND POP.PLAN_OPTION_ID = PT.PLAN_OPTION_ID'
7586 			       ||' AND PT.TASK_ID = T.TASK_ID(+)';
7587 
7588 L_RESOURCE_QUERY_COST         := ' SELECT  RR.RESOURCE_ID'
7589 			       ||',RR.RESOURCE_TYPE'
7590 			       ||',CSF_RESOURCE_PUB.GET_RESOURCE_NAME (RR.RESOURCE_ID,RR.RESOURCE_TYPE) RESOURCE_NAME'
7591 			       ||',CSF_GANTT_DATA_PKG.GET_RESOURCE_TYPE_NAME(RR.RESOURCE_TYPE ) RESOURCE_TYPE_NAME'
7592 			       ||',RR.RESOURCE_ID||''-''||RR.RESOURCE_TYPE||''-''||POP.PLAN_OPTION_ID RESOURCE_KEY'
7593 			       ||',POP.COST'
7594 			       ||' FROM '
7595 			       ||' CSF_R_REQUEST_TASKS RT,'
7596 			       ||' CSF_R_RESOURCE_RESULTS RR,'
7597 			       ||' CSF_R_PLAN_OPTIONS POP,'
7598 			       ||' CSF_R_PLAN_OPTION_TASKS PT,'
7599 			       ||' JTF_TASKS_B T'
7600 			       ||' WHERE RT.SCHED_REQUEST_ID =:1'
7601 			       ||' AND RT.REQUEST_TASK_ID = RR.REQUEST_TASK_ID'
7602 			       ||' AND RR.RESOURCE_RESULT_ID = POP.RESOURCE_RESULT_ID'
7603 			       ||' AND POP.PLAN_OPTION_ID = PT.PLAN_OPTION_ID'
7604 			       ||' AND PT.TASK_ID = T.TASK_ID(+)'
7605 			       ||' AND (NVL(T.TASK_TYPE_ID,0) NOT IN (20,21))'
7606 		 	       ||' AND (RR.RESOURCE_ID,POP.COST)'
7607 			       ||' IN '
7608 			       ||' (SELECT RR.RESOURCE_ID,MIN(POP.COST)'
7609 			       ||' FROM'
7610 			       ||' CSF_R_REQUEST_TASKS RT,'
7611 			       ||' CSF_R_RESOURCE_RESULTS RR,'
7612 			       ||' CSF_R_PLAN_OPTIONS POP,'
7613 			       ||' CSF_R_PLAN_OPTION_TASKS PT,'
7614 			       ||' JTF_TASKS_B T'
7615 			       ||' WHERE RT.SCHED_REQUEST_ID =:2'
7616        			       ||' AND RT.REQUEST_TASK_ID = RR.REQUEST_TASK_ID'
7617 			       ||' AND RR.RESOURCE_RESULT_ID = POP.RESOURCE_RESULT_ID'
7618 			       ||' AND POP.PLAN_OPTION_ID = PT.PLAN_OPTION_ID'
7619 			       ||' AND PT.TASK_ID = T.TASK_ID(+)'
7620 			       ||' AND (NVL(T.TASK_TYPE_ID,0) NOT IN (20,21))'
7621 			       ||' GROUP BY RR.RESOURCE_ID)';
7622 
7623 L_RESOURCE_QUERY_COST_DAY    :=   ' SELECT RR.RESOURCE_ID '
7624 				||' ,RR.RESOURCE_TYPE '
7625 				||' ,CSF_RESOURCE_PUB.GET_RESOURCE_NAME (RR.RESOURCE_ID,RR.RESOURCE_TYPE) RESOURCE_NAME '
7626 				||' ,CSF_GANTT_DATA_PKG.GET_RESOURCE_TYPE_NAME(RR.RESOURCE_TYPE ) RESOURCE_TYPE_NAME '
7627 				||' ,RR.RESOURCE_ID||''-''||RR.RESOURCE_TYPE||''-''||POP.PLAN_OPTION_ID RESOURCE_KEY '
7628 				||' ,POP.COST '
7629 				||' FROM '
7630 				||' CSF_R_REQUEST_TASKS RT, '
7631 				||' CSF_R_RESOURCE_RESULTS RR, '
7632 				||' CSF_R_PLAN_OPTIONS POP, '
7633 				||' CSF_R_PLAN_OPTION_TASKS PT, '
7634 				||' JTF_TASKS_B T '
7635 				||' WHERE RT.SCHED_REQUEST_ID = :1 '
7636 				||' AND RT.REQUEST_TASK_ID = RR.REQUEST_TASK_ID '
7637 				||' AND RR.RESOURCE_RESULT_ID = POP.RESOURCE_RESULT_ID '
7638 				||' AND POP.PLAN_OPTION_ID = PT.PLAN_OPTION_ID '
7639 				||' AND PT.TASK_ID = T.TASK_ID(+) '
7640 				||' AND (NVL(T.TASK_TYPE_ID,0) NOT IN (20,21)) '
7641 				||' AND PT.PLAN_OPTION_ID IN ( '
7642 				||' SELECT PLAN_OPTION_ID FROM  '
7643 				||' (SELECT PT.PLAN_OPTION_ID, MIN(trunc(PT.SCHEDULED_START_DATE)) START_TIME,MIN(POP.COST) COST '
7644 				||' FROM '
7645 				||' CSF_R_REQUEST_TASKS RT, '
7646 				||' CSF_R_RESOURCE_RESULTS RR, '
7647 				||' CSF_R_PLAN_OPTIONS POP, '
7648 				||' CSF_R_PLAN_OPTION_TASKS PT, '
7649 				||' JTF_TASKS_B T '
7650 				||' WHERE RT.SCHED_REQUEST_ID = :2 '
7651 				||' AND RT.REQUEST_TASK_ID = RR.REQUEST_TASK_ID '
7652 				||' AND RR.RESOURCE_RESULT_ID = POP.RESOURCE_RESULT_ID '
7653 				||' AND POP.PLAN_OPTION_ID = PT.PLAN_OPTION_ID '
7654 				||' AND PT.TASK_ID = T.TASK_ID(+) '
7655 				||' AND (NVL(T.TASK_TYPE_ID,0) NOT IN (20,21)) '
7656 				||' GROUP BY PT.PLAN_OPTION_ID '
7657 				||' ) WHERE (TRUNC(START_TIME),COST) IN  '
7658 				||' (select TRUNC(START_TIME), MIN(COST) from '
7659 				||' (SELECT MIN(trunc(PT.SCHEDULED_START_DATE)) START_TIME,MIN(POP.COST) COST '
7660 				||' FROM '
7661 				||' CSF_R_REQUEST_TASKS RT, '
7662 				||' CSF_R_RESOURCE_RESULTS RR, '
7663 				||' CSF_R_PLAN_OPTIONS POP, '
7664 				||' CSF_R_PLAN_OPTION_TASKS PT, '
7665 				||' JTF_TASKS_B T '
7666 				||' WHERE RT.SCHED_REQUEST_ID = :4 '
7667 				||' AND RT.REQUEST_TASK_ID = RR.REQUEST_TASK_ID '
7668 				||' AND RR.RESOURCE_RESULT_ID = POP.RESOURCE_RESULT_ID '
7669 				||' AND POP.PLAN_OPTION_ID = PT.PLAN_OPTION_ID '
7670 				||' AND PT.TASK_ID = T.TASK_ID(+) '
7671 				||' AND (NVL(T.TASK_TYPE_ID,0) NOT IN (20,21)) '
7672 				||' GROUP BY PT.PLAN_OPTION_ID) '
7673 				||' GROUP BY TRUNC(START_TIME))) ';
7674 
7675 L_RESOURCE_SINGLE_QUERY       :=' SELECT  RR.RESOURCE_ID'
7676 			       ||',RR.RESOURCE_TYPE'
7677 			       ||',CSF_RESOURCE_PUB.GET_RESOURCE_NAME (RR.RESOURCE_ID,RR.RESOURCE_TYPE) RESOURCE_NAME'
7678 			       ||',CSF_GANTT_DATA_PKG.GET_RESOURCE_TYPE_NAME(RR.RESOURCE_TYPE ) RESOURCE_TYPE_NAME'
7679 			       ||',RR.RESOURCE_ID||''-''||RR.RESOURCE_TYPE||''-''||POP.PLAN_OPTION_ID RESOURCE_KEY'
7680 			       ||',POP.COST'
7681 			       ||' FROM '
7682 			       ||' CSF_R_REQUEST_TASKS RT,'
7683 			       ||' CSF_R_RESOURCE_RESULTS RR,'
7684 			       ||' CSF_R_PLAN_OPTIONS POP,'
7685 			       ||' CSF_R_PLAN_OPTION_TASKS PT,'
7686 			       ||' JTF_TASKS_B T'
7687 			       ||' WHERE RT.SCHED_REQUEST_ID =:1'
7688       			       ||' AND RT.REQUEST_TASK_ID = RR.REQUEST_TASK_ID'
7689 			       ||' AND RR.RESOURCE_RESULT_ID = POP.RESOURCE_RESULT_ID'
7690 			       ||' AND POP.PLAN_OPTION_ID = PT.PLAN_OPTION_ID'
7691 			       ||' AND PT.TASK_ID = T.TASK_ID(+)'
7692 			       ||' AND (NVL(T.TASK_TYPE_ID,0) NOT IN (20,21))'
7693 	   		       ||' AND  RR.RESOURCE_ID	   = :2'
7694 			       ||' AND  RR.RESOURCE_TYPE    = :3';
7695 
7696      IF p_par_task is not null and p_par_task > 0
7697      THEN
7698        IF p_display_option = 'D'
7699        THEN
7700 
7701          L_QUERY :=L_RESOURCE_QUERY_COST_DAY||L_COMMON_WHERE_PARENT||L_COMMON_ORDERBY;
7702 
7703        ELSIF p_display_option = 'R'
7704        THEN
7705 
7706          L_QUERY :=L_RESOURCE_QUERY_COST ||L_COMMON_WHERE_PARENT||L_COMMON_ORDERBY;
7707        ELSIF p_display_option = 'S'
7708        THEN
7709 
7710          L_QUERY := L_RESOURCE_SINGLE_QUERY||L_COMMON_WHERE_PARENT||L_COMMON_ORDERBY;
7711        ELSE
7712          L_QUERY := L_RESOURCE_QUERY||L_COMMON_WHERE_PARENT||L_COMMON_ORDERBY;
7713        END IF;
7714      ELSE
7715        IF p_display_option = 'D'
7716        THEN
7717          L_QUERY := L_RESOURCE_QUERY_COST_DAY||L_COMMON_WHERE_RESOURCE_COST||L_COMMON_ORDERBY;
7718        ELSIF p_display_option = 'R'
7719        THEN
7720 		 L_QUERY := L_RESOURCE_QUERY_COST||L_COMMON_WHERE_RESOURCE_COST||L_COMMON_ORDERBY;
7721        ELSIF p_display_option = 'S'
7722        THEN
7723          L_QUERY := L_RESOURCE_SINGLE_QUERY||L_COMMON_WHERE_RESOURCE_SINGLE||L_COMMON_ORDERBY;
7724        ELSE
7725          L_QUERY := L_RESOURCE_QUERY||L_COMMON_WHERE_RESOURCE_QUERY||L_COMMON_ORDERBY;
7726        END IF;
7727      END IF;
7728      IF p_par_task is not null and p_par_task > 0
7729      THEN
7730 	IF  p_display_option = 'D'
7731 	THEN
7732   	  OPEN  ResInfo FOR L_QUERY USING p_req_id,p_req_id,p_req_id;
7733           FETCH ResInfo BULK COLLECT INTO p_res_id,p_res_type,p_res_name,p_res_typ_name,p_res_key,p_cost;
7734           CLOSE ResInfo;
7735 	ELSIF p_display_option = 'R'
7736 	THEN
7737   	  OPEN  ResInfo FOR L_QUERY USING p_req_id,p_req_id;
7738           FETCH ResInfo BULK COLLECT INTO p_res_id,p_res_type,p_res_name,p_res_typ_name,p_res_key,p_cost;
7739           CLOSE ResInfo;
7740         ELSIF p_display_option = 'S'
7741         THEN
7742   	  OPEN  ResInfo FOR L_QUERY USING p_req_id,p_resource_id,p_resource_type;
7743           FETCH ResInfo BULK COLLECT INTO p_res_id,p_res_type,p_res_name,p_res_typ_name,p_res_key,p_cost;
7744           CLOSE ResInfo;
7745         ELSE
7746   	  OPEN  ResInfo FOR L_QUERY USING p_req_id;
7747           FETCH ResInfo BULK COLLECT INTO p_res_id,p_res_type,p_res_name,p_res_typ_name,p_res_key,p_cost;
7748           CLOSE ResInfo;
7749         END IF;
7750      ELSE
7751        IF p_display_option = 'D'
7752        THEN
7753          OPEN  ResInfo FOR L_QUERY USING p_req_id,p_req_id,p_req_id,p_task_id;
7754          FETCH ResInfo BULK COLLECT INTO p_res_id,p_res_type,p_res_name,p_res_typ_name,p_res_key,p_cost;
7755          CLOSE ResInfo;
7756        ELSIF p_display_option = 'R'
7757        THEN
7758          OPEN  ResInfo FOR L_QUERY USING p_req_id,p_req_id,p_task_id;
7759          FETCH ResInfo BULK COLLECT INTO p_res_id,p_res_type,p_res_name,p_res_typ_name,p_res_key,p_cost;
7760          CLOSE ResInfo;
7761        ELSIF p_display_option = 'S'
7762        THEN
7763          OPEN  ResInfo FOR L_QUERY USING p_req_id,p_resource_id,p_resource_type ,p_task_id;
7764          FETCH ResInfo BULK COLLECT INTO p_res_id,p_res_type,p_res_name,p_res_typ_name,p_res_key,p_cost;
7765          CLOSE ResInfo;
7766        ELSE
7767          OPEN  ResInfo FOR L_QUERY USING p_req_id,p_task_id;
7768          FETCH ResInfo BULK COLLECT INTO p_res_id,p_res_type,p_res_name,p_res_typ_name,p_res_key,p_cost;
7769          CLOSE ResInfo;
7770        END IF;
7771      END IF;
7772 
7773      OPEN c_res_detail;
7774      FETCH c_res_detail
7775      BULK COLLECT INTO tmp_trip_id
7776          , trip_id
7777          , start_date
7778          , end_date
7779          , block_trip
7780          , p_bck_res_key
7781 		 , p_vir_avail_type;
7782      CLOSE c_res_detail;
7783 
7784     if g_tz_enabled ='Y' and sch_adv_tz='CTZ' and trip_id.count > 0
7785     then
7786       IF trip_id.COUNT IS NOT NULL AND trip_id.COUNT > 0
7787       THEN
7788         FOR i IN trip_id.FIRST .. trip_id.LAST
7789         LOOP
7790           start_date(i) :=fnd_date.adjust_datetime(start_date(i),g_client_tz,g_server_tz );
7791           end_date(i)   :=fnd_date.adjust_datetime(end_date(i)  ,g_client_tz,g_server_tz);
7792         END LOOP;
7793       END IF;
7794     elsif g_tz_enabled ='Y' and sch_adv_tz='ITZ' and trip_id.count > 0
7795     then
7796       IF trip_id.COUNT IS NOT NULL AND trip_id.COUNT > 0
7797       THEN
7798         FOR i IN trip_id.FIRST .. trip_id.LAST
7799         LOOP
7800           start_date(i) :=fnd_date.adjust_datetime(start_date(i),g_client_tz,inc_tz_code );
7801           end_date(i)   :=fnd_date.adjust_datetime(end_date(i)  ,g_client_tz,inc_tz_code);
7802         END LOOP;
7803       END IF;
7804     end if;
7805 
7806     OPEN  c_planned_task;
7807     FETCH c_planned_task
7808     BULK COLLECT INTO plan_task_key
7809          , plan_resource_key
7810          , plan_start_date
7811          , plan_end_date
7812          , plan_color
7813          , plan_name
7814          , plan_tooltip
7815          , plan_duration
7816          , plan_task_type_id;
7817     CLOSE c_planned_task;
7818 
7819     IF plan_task_key.COUNT IS NOT NULL AND plan_task_key.COUNT > 0
7820     THEN
7821       FOR i IN plan_task_key.first..plan_task_key.last
7822       LOOP
7823         IF g_tz_enabled ='Y' AND sch_adv_tz='CTZ'
7824         THEN
7825           plan_start_date(i):=fnd_date.adjust_datetime(plan_start_date(i),g_client_tz,g_server_tz );
7826         ELSIF g_tz_enabled ='Y' AND sch_adv_tz='ITZ'
7827         THEN
7828           plan_start_date(i):=fnd_date.adjust_datetime(plan_start_date(i),g_client_tz,inc_tz_code );
7829         END IF;
7830         IF g_tz_enabled ='Y' AND sch_adv_tz='CTZ'
7831         THEN
7832           plan_end_date(i):=fnd_date.adjust_datetime(plan_end_date(i),g_client_tz,g_server_tz);
7833         ELSIF g_tz_enabled ='Y' AND  sch_adv_tz='ITZ'
7834         THEN
7835           plan_end_date(i):=fnd_date.adjust_datetime(plan_end_date(i),g_client_tz,inc_tz_code);
7836         END IF;
7837       END LOOP;
7838     END IF;
7839 
7840     IF g_use_custom_chromatics
7841     THEN
7842       get_custom_color;
7843     END IF;
7844 
7845     l_task_depends :='N';
7846     FOR i IN c_icon_setup
7847     LOOP
7848 	  IF i.active is not null
7849 	  THEN
7850        l_task_depends :=i.active;
7851 	  ELSE
7852 	   l_task_depends :='N';
7853 	  END IF;
7854     END LOOP;
7855 
7856     IF  l_task_depends ='Y'
7857     THEN
7858       IF g_label_on_task
7859       THEN
7860 
7861         OPEN c3;
7862         FETCH c3
7863         BULK COLLECT INTO oth_real_task_id
7864 		   ,l_task_number
7865 		   ,l_Task_Name
7866 		   ,l_Task_Priority_Name
7867 		   ,l_task_Postal_Code
7868 		   ,l_task_City_name
7869 		   ,l_task_Site_Name
7870            , oth_real_start_date
7871            , oth_real_end_date
7872            , oth_real_color
7873            , oth_real_DURATION
7874            , oth_real_task_type_id
7875            , l_task_priority_id
7876            , l_status_id
7877            , oth_real_tooltip
7878            , oth_real_resource_key
7879            , oth_real_NAME
7880 		   ,l_task_customer_name
7881            , l_planned_start_date
7882            , l_planned_end_date
7883            , l_actual_start_date
7884            , l_actual_end_date
7885            , l_actual_effort
7886            , l_actual_effort_uom
7887            , l_planned_effort
7888            , l_planned_effort_uom
7889            , l_escalated_task
7890 		, oth_real_access_hours
7891 	   , oth_real_after_hours
7892 	   , oth_real_customer_conf
7893 	   , oth_real_task_depend
7894            , oth_real_parts_required
7895 	   , oth_real_child_task
7896            , l_actual_travel_duration
7897            , l_actual_travel_duration_uom
7898            , l_task_depend
7899            ;
7900         CLOSE c3;
7901       ELSE
7902 
7903         OPEN c4;
7904         FETCH c4
7905         BULK COLLECT INTO oth_real_task_id
7906            , oth_real_start_date
7907            , oth_real_end_date
7908            , oth_real_color
7909            , oth_real_DURATION
7910            , oth_real_task_type_id
7911            , l_task_priority_id
7912            , l_status_id
7913            , oth_real_tooltip
7914            , oth_real_resource_key
7915            , oth_real_NAME
7916            , l_planned_start_date
7917            , l_planned_end_date
7918            , l_actual_start_date
7919            , l_actual_end_date
7920            , l_actual_effort
7921            , l_actual_effort_uom
7922            , l_planned_effort
7923            , l_planned_effort_uom
7924            , l_escalated_task
7925 	   , oth_real_access_hours
7926 	   , oth_real_after_hours
7927 	   , oth_real_customer_conf
7928 	   , oth_real_task_depend
7929            , oth_real_parts_required
7930 	   , oth_real_child_task
7931            , l_actual_travel_duration
7932            , l_actual_travel_duration_uom
7933            , l_task_depend
7934            ;
7935         CLOSE c4;
7936       END IF;
7937     ELSIF  nvl(l_task_depends,'N') ='N'
7938     THEN
7939 
7940       IF g_label_on_task
7941       THEN
7942 
7943         OPEN c1;
7944         FETCH c1
7945         BULK COLLECT INTO oth_real_task_id
7946 		   ,l_task_number
7947 		   ,l_Task_Name
7948 		   ,l_Task_Priority_Name
7949 		   ,l_task_Postal_Code
7950 		   ,l_task_City_name
7951 		   , l_task_Site_Name
7952            , oth_real_start_date
7953            , oth_real_end_date
7954            , oth_real_color
7955            , oth_real_DURATION
7956            , oth_real_task_type_id
7957            , l_task_priority_id
7958            , l_status_id
7959            , oth_real_tooltip
7960            , oth_real_resource_key
7961            , oth_real_NAME
7962 		   , l_task_customer_name
7963            , l_planned_start_date
7964            , l_planned_end_date
7965            , l_actual_start_date
7966            , l_actual_end_date
7967            , l_actual_effort
7968            , l_actual_effort_uom
7969            , l_planned_effort
7970            , l_planned_effort_uom
7971            , l_escalated_task
7972 	   , oth_real_access_hours
7973 	   , oth_real_after_hours
7974 	   , oth_real_customer_conf
7975 	   , oth_real_task_depend
7976            , oth_real_parts_required
7977 	   , oth_real_child_task
7978            , l_actual_travel_duration
7979            , l_actual_travel_duration_uom;
7980         CLOSE c1;
7981       ELSE
7982 
7983         OPEN c2;
7984         FETCH c2
7985         BULK COLLECT INTO oth_real_task_id
7986            , oth_real_start_date
7987            , oth_real_end_date
7988            , oth_real_color
7989            , oth_real_DURATION
7990            , oth_real_task_type_id
7991            , l_task_priority_id
7992            , l_status_id
7993            , oth_real_tooltip
7994            , oth_real_resource_key
7995            , oth_real_NAME
7996            , l_planned_start_date
7997            , l_planned_end_date
7998            , l_actual_start_date
7999            , l_actual_end_date
8000            , l_actual_effort
8001            , l_actual_effort_uom
8002            , l_planned_effort
8003            , l_planned_effort_uom
8004            , l_escalated_task
8005 	   , oth_real_access_hours
8006 	   , oth_real_after_hours
8007 	   , oth_real_customer_conf
8008 	   , oth_real_task_depend
8009            , oth_real_parts_required
8010 	   , oth_real_child_task
8011            , l_actual_travel_duration
8012            , l_actual_travel_duration_uom;
8013         CLOSE c2;
8014       END IF;
8015     END IF;
8016 
8017 
8018 	IF g_label_on_task
8019     THEN
8020 		OPEN c_task_bar_info;
8021 		LOOP
8022 		FETCH c_task_bar_info into l_task_attr_list_tmp;
8023 		EXIT WHEN c_task_bar_info%notfound;
8024 			l_task_attr_list :=l_task_attr_list||l_task_attr_list_tmp;
8025 		END LOOP;
8026 
8027 	END IF;
8028     IF oth_real_task_id.COUNT IS NOT NULL AND oth_real_task_id.COUNT > 0
8029     THEN
8030       FOR i IN oth_real_task_id.FIRST..oth_real_task_id.LAST
8031       LOOP
8032         IF g_label_on_task
8033         THEN
8034 		  oth_real_NAME(i) := ' ';
8035 		  l_task_attr_list_tmp := l_task_attr_list;
8036 		  LOOP
8037 		    EXIT WHEN l_task_attr_list_tmp IS NULL OR LENGTH(l_task_attr_list_tmp) =0;
8038 
8039 			IF SUBSTR(l_task_attr_list_tmp,1,8) ='TASK_NUM'
8040 			THEN
8041 			   IF l_task_number(i) IS NOT NULL
8042 			   THEN
8043 				 oth_real_NAME(i) :=oth_real_NAME(i)||' '||l_task_number(i);
8044 			   END IF;
8045 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)= 'TASK_NAM'
8046 			THEN
8047 			   IF l_Task_Name(i) is NOT NULL
8048 			   THEN
8049 			   oth_real_NAME(i) :=oth_real_NAME(i)||' '||l_Task_Name(i);
8050 			   END IF;
8051 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_CUS'
8052 			THEN
8053 			   IF l_task_customer_name(i) IS NOT NULL
8054 			   THEN
8055 			     oth_real_NAME(i) :=oth_real_NAME(i)||' '||l_task_customer_name(i);
8056 			   END IF;
8057 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_CST'
8058 			THEN
8059 			  IF l_task_Site_Name(i) IS NOT NULL
8060 			  THEN
8061 				oth_real_NAME(i) :=oth_real_NAME(i)||' '||l_task_Site_Name(i);
8062 			  END IF;
8063 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_CIT'
8064 			THEN
8065 			  IF l_task_City_name(i) IS NOT NULL
8066 			  THEN
8067 				oth_real_NAME(i) :=oth_real_NAME(i)||' '||l_task_City_name(i);
8068 			  END IF;
8069 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_POS'
8070 			THEN
8071 			  IF l_task_Postal_Code(i) IS NOT NULL
8072 			  THEN
8073 			    oth_real_NAME(i) :=oth_real_NAME(i)||' '||l_task_Postal_Code(i);
8074 			  END IF;
8075 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_PRI'
8076 			THEN
8077 			  IF l_Task_Priority_Name(i) IS NOT NULL
8078 			  THEN
8079 				oth_real_NAME(i) :=oth_real_NAME(i)||' '||l_Task_Priority_Name(i);
8080 			  END IF;
8081 			END IF;
8082 			l_task_attr_list_tmp := SUBSTR(l_task_attr_list_tmp,9);
8083 		  END LOOP;
8084 	    END IF;--This end if is for g_label_on_task
8085 
8086 
8087 
8088 
8089 
8090 
8091         IF nvl(l_task_depends,'N') ='Y'
8092         THEN
8093           IF oth_real_task_id(i) = l_task_depend(i)
8094           THEN
8095             oth_real_task_depend(i) := 'Y';
8096           END IF;
8097         END IF;
8098         IF l_actual_start_date(i) IS NOT NULL THEN
8099           oth_real_start_date(i)  := l_actual_start_date(i);
8100         END IF;
8101 
8102         IF l_actual_start_date(i) IS NOT NULL THEN
8103           IF l_actual_end_date(i) IS NULL THEN
8104             IF l_actual_effort(i) IS NULL OR l_actual_effort(i) = 0 THEN
8105               IF l_planned_effort(i) IS NOT NULL AND l_planned_effort(i) > 0 THEN
8106                 l_planned_effort(i)  :=
8107                   csf_gantt_data_pkg.convert_to_days(l_planned_effort(i)
8108                     , NVL(l_planned_effort_uom(i), g_uom_hours), g_uom_hours);
8109               END IF;
8110 
8111               IF l_default_effort IS NOT NULL AND l_default_effort > 0 THEN
8112                 l_csf_default_effort  :=
8113                   csf_gantt_data_pkg.convert_to_days(l_default_effort
8114                   , NVL(l_default_effort_uom, g_uom_hours), g_uom_hours);
8115               END IF;
8116 
8117               oth_real_end_date(i)  :=
8118                   (
8119                    l_actual_start_date(i) + NVL(l_planned_effort(i), NVL(l_csf_default_effort, 0))
8120                   );
8121             ELSE
8122               l_actual_effort(i)  :=
8123                 csf_gantt_data_pkg.convert_to_days(l_actual_effort(i)
8124                 , NVL(l_actual_effort_uom(i), g_uom_hours), g_uom_hours);
8125               oth_real_end_date(i)         :=(l_actual_start_date(i) + NVL(l_actual_effort(i), 0));
8126             END IF;
8127           ELSE
8128             IF l_actual_end_date(i) <= l_actual_start_date(i) THEN
8129               IF l_actual_effort(i) IS NULL OR l_actual_effort(i) = 0 THEN
8130                 -- this is true then calculate the actual end_date based uppon the profile values.
8131                 IF l_planned_effort(i) IS NOT NULL AND l_planned_effort(i) > 0 THEN
8132                   l_planned_effort(i)  :=
8133                     csf_gantt_data_pkg.convert_to_days(l_planned_effort(i)
8134                     , NVL(l_planned_effort_uom(i), g_uom_hours), g_uom_hours);
8135                 END IF;
8136 
8137                 IF l_default_effort IS NOT NULL AND l_default_effort > 0 THEN
8138                   l_csf_default_effort  :=
8139                     csf_gantt_data_pkg.convert_to_days(l_default_effort
8140                     , NVL(l_default_effort_uom, g_uom_hours), g_uom_hours);
8141                 END IF;
8142 
8143                 oth_real_end_date(i)  :=
8144                     (
8145                      l_actual_start_date(i) + NVL(l_planned_effort(i), NVL(l_csf_default_effort, 0))
8146                     );
8147               ELSE
8148                 -- if not null then actual effort to the actual_end_date
8149                 l_actual_effort(i)  :=
8150                   csf_gantt_data_pkg.convert_to_days(l_actual_effort(i)
8151                   , NVL(l_actual_effort_uom(i), g_uom_hours), g_uom_hours);
8152                 oth_real_end_date(i)         :=(l_actual_start_date(i) + NVL(l_actual_effort(i), 0));
8153               END IF;   --end if for actual effort is nul or zero
8154             ELSE
8155               -- actual end date is not null, check if actual_end_date > actual_start_date
8156               IF l_actual_end_date(i) > l_actual_start_date(i) THEN
8157                oth_real_end_date(i)  := l_actual_end_date(i);
8158               END IF;   -- end if
8159             END IF;
8160             --end if for r_sch_end_date.actual_end_date = r_sch_end_date.actual_start_date
8161           END IF;   -- end if for actual_end_date is null
8162           IF l_actual_travel_duration IS NOT NULL
8163           THEN
8164             IF l_actual_travel_duration_uom IS NOT NULL
8165             THEN
8166               oth_real_DURATION(i):=convert_to_min(l_actual_travel_duration(i),l_actual_travel_duration_uom(i),g_uom_minutes);
8167             END IF;
8168           ELSE
8169             oth_real_DURATION(i):=0;
8170           END IF;
8171         ELSE   --else for actual_start_date is null
8172           IF oth_real_start_date(i) IS NOT NULL THEN
8173             -- scheduled_start_date is not null then check if scheduled_end_date is null
8174             IF oth_real_end_date(i) IS NOT NULL THEN
8175               -- scheduled_start_date is not null then check if scheduled_start_date=scheduled_end_date
8176               IF oth_real_start_date(i) = oth_real_end_date(i) THEN
8177                 IF (l_planned_effort(i) IS NULL) OR(l_planned_effort(i) = 0) THEN
8178                   IF l_default_effort IS NOT NULL AND l_default_effort > 0 THEN
8179                     l_csf_default_effort  :=
8180                       csf_gantt_data_pkg.convert_to_days(l_default_effort
8181                       , NVL(l_default_effort_uom, g_uom_hours), g_uom_hours);
8182                   END IF;
8183 
8184                   oth_real_end_date(i)  :=(oth_real_start_date(i) + NVL(l_csf_default_effort, 0));
8185                 ELSE
8186                   IF l_planned_effort(i) IS NOT NULL AND l_planned_effort(i) > 0 THEN
8187                     l_planned_effort(i)  :=
8188                       csf_gantt_data_pkg.convert_to_days(l_planned_effort(i)
8189                       , NVL(l_planned_effort_uom(i), g_uom_hours), g_uom_hours);
8190                   END IF;
8191 
8192                   oth_real_end_date(i)  :=(oth_real_start_date(i) + NVL(l_planned_effort(i), 0));
8193                 END IF;
8194               END IF;
8195             ELSE
8196               -- scheduled_end_date is null then check for planned effort null
8197               IF (l_planned_effort(i) IS NULL) OR(l_planned_effort(i) = 0) THEN
8198                 IF l_default_effort IS NOT NULL AND l_default_effort > 0 THEN
8199                   l_csf_default_effort  :=
8200                     csf_gantt_data_pkg.convert_to_days(l_default_effort
8201                     , NVL(l_default_effort_uom, g_uom_hours), g_uom_hours);
8202                 END IF;
8203 
8204                 oth_real_end_date(i)  :=(oth_real_start_date(i) + NVL(l_csf_default_effort, 0));
8205               ELSE
8206                 -- declar variable l_planned_effort to get uom coverted into days for actual effort for
8207                 IF l_planned_effort(i) IS NOT NULL AND l_planned_effort(i) > 0 THEN
8208                   l_planned_effort(i)  :=
8209                     csf_gantt_data_pkg.convert_to_days(l_planned_effort(i)
8210                     , NVL(l_planned_effort_uom(i), g_uom_hours), g_uom_hours);
8211                 END IF;
8212 
8213                 oth_real_end_date(i)  :=(oth_real_start_date(i) + NVL(l_planned_effort(i), 0));
8214               END IF;
8215             END IF;   -- end if for scheduled_end_date is null
8216           END IF;   -- end if for scheduled_start_date is not null
8217         END IF;   -- end if for actual_start_date is not null
8218         ------------------------------------------
8219         --end for scheduled end dates
8220         ------------------------------------------
8221         IF g_use_custom_chromatics
8222         THEN
8223           l_task_custom_color  := 'N';
8224           IF l_rule_id IS NOT NULL
8225           THEN
8226             IF l_actual_start_date(i) IS NOT NULL
8227             THEN
8228               IF l_actual_end_date(i) IS NOT NULL
8229     	      THEN
8230                 IF l_actual_end_date(i) = l_actual_start_date(i)
8231                 THEN
8232 	          l_task_custom_color  := 'Y';
8233                 END IF;   --end if for actual_end_date=actual_start_date
8234               ELSE
8235                 IF NVL(l_actual_effort(i), 0) = 0
8236                 THEN
8237                   IF NVL(l_planned_effort(i), 0) = 0
8238 	          THEN
8239                     l_task_custom_color  := 'Y';
8240                   END IF;
8241                 END IF;
8242               END IF;   --end if for actual_end_date is not null
8243             ELSE   --for actual start date is null
8244               IF oth_real_end_date(i) IS NOT NULL
8245               THEN
8246                 IF oth_real_end_date(i) = oth_real_start_date(i)
8247    	        THEN
8248                   l_task_custom_color  := 'Y';
8249                 END IF;
8250               ELSE
8251                 l_task_custom_color  := 'Y';
8252               END IF;   --end if scheduled end_date is not null
8253             END IF;   --end if for actual_start_date is not null
8254           END IF;   --rule id condition for task date usage
8255           IF l_task_custom_color = 'Y'
8256           THEN
8257             IF l_rule_id IS NOT NULL
8258             THEN
8259               IF NVL(p_rule_id, 1) <> l_rule_id
8260               THEN
8261                 OPEN get_tdu_color(l_rule_id);
8262     	        FETCH get_tdu_color
8263 	          INTO p_color;
8264     	        IF get_tdu_color%NOTFOUND
8265                 THEN
8266                   CLOSE get_tdu_color;
8267 	          IF(NVL(p_cur_task_type_id, -1) <> oth_real_task_type_id(i)
8268                   OR NVL(p_cur_task_priority_id, -1) <> l_task_priority_id(i)
8269                   OR NVL(p_cur_task_status_id, -1) <> l_status_id(i)
8270                   OR NVL(p_cur_escalated_task, 'G') <> l_escalated_task(i))
8271       	          THEN
8272       	            real_color(i):=do_match(oth_real_task_type_id(i),l_task_priority_id(i),l_status_id(i),l_escalated_task(i));
8273                     p_cur_color             := oth_real_color(i);
8274                     p_cur_task_type_id      := oth_real_task_type_id(i);
8275                     p_cur_task_priority_id  := l_task_priority_id(i);
8276                     p_cur_task_status_id    := l_status_id(i);
8277                     p_cur_escalated_task    := l_escalated_task(i);
8278                   ELSE
8279                     oth_real_color(i)  := p_cur_color;
8280                   END IF;
8281                 ELSE
8282                   oth_real_color(i)  := p_color;
8283                   CLOSE get_tdu_color;
8284                 END IF;
8285               ELSE
8286                 oth_real_color(i)  := p_color;
8287               END IF;
8288             ELSE
8289       	      IF(NVL(p_cur_task_type_id, -1) <> oth_real_task_type_id(i)
8290        	      OR NVL(p_cur_task_priority_id, -1) <> l_task_priority_id(i)
8291     	      OR NVL(p_cur_task_status_id, -1) <> l_status_id(i)
8292      	      OR NVL(p_cur_escalated_task, 'G') <> l_escalated_task(i)
8293     	        )
8294     	      THEN
8295                 oth_real_color(i):=do_match(oth_real_task_type_id(i), l_task_priority_id(i), l_status_id(i),l_escalated_task(i));
8296     	        p_cur_color             := oth_real_color(i);
8297     	        p_cur_task_type_id      := oth_real_task_type_id(i);
8298                 p_cur_task_priority_id  := l_task_priority_id(i);
8299                 p_cur_task_status_id    := l_status_id(i);
8300     	        p_cur_escalated_task    := l_escalated_task(i);
8301               ELSE
8302                 oth_real_color(i)  := p_cur_color;
8303     	      END IF;
8304             END IF;
8305           ELSE
8306             IF (NVL(p_cur_task_type_id, -1) <> oth_real_task_type_id(i)
8307             OR NVL(p_cur_task_priority_id, -1) <> l_task_priority_id(i)
8308             OR NVL(p_cur_task_status_id, -1) <> l_status_id(i)
8309             OR NVL(p_cur_escalated_task, 'G') <> l_escalated_task(i)
8310                )
8311             THEN
8312               oth_real_color(i):=do_match(oth_real_task_type_id(i), l_task_priority_id(i), l_status_id(i), l_escalated_task(i));
8313               p_cur_color             := oth_real_color(i);
8314     	      p_cur_task_type_id      := oth_real_task_type_id(i);
8315               p_cur_task_priority_id  := l_task_priority_id(i);
8316     	      p_cur_task_status_id    := l_status_id(i);
8317               p_cur_escalated_task    := l_escalated_task(i);
8318     	    ELSE
8319               oth_real_color(i)  := p_cur_color;
8320             END IF;
8321           END IF;
8322         ELSE
8323           IF l_escalated_task(i) = 'Y'
8324           THEN
8325             oth_real_color(i)  := red;
8326           ELSIF l_actual_start_date(i) IS NOT NULL
8327           THEN
8328             oth_real_color(i)  := yellow;
8329           ELSE
8330             oth_real_color(i)  := blue;
8331           END IF;
8332         END IF;
8333 
8334         if g_tz_enabled ='Y' and sch_adv_tz='CTZ'
8335         then
8336           oth_real_start_date(i) :=fnd_date.adjust_datetime(oth_real_start_date(i),g_client_tz,g_server_tz );
8337           oth_real_end_date(i)   :=fnd_date.adjust_datetime(oth_real_end_date(i)  ,g_client_tz,g_server_tz);
8338         elsif g_tz_enabled ='Y' and sch_adv_tz='ITZ'
8339         then
8340           oth_real_start_date(i) :=fnd_date.adjust_datetime(oth_real_start_date(i),g_client_tz,inc_tz_code );
8341           oth_real_end_date(i)   :=fnd_date.adjust_datetime(oth_real_end_date(i)  ,g_client_tz,inc_tz_code);
8342         end if;
8343       END LOOP;
8344     END IF;
8345 
8346     IF  l_task_depends ='Y'
8347     THEN
8348       IF g_label_on_task
8349       THEN
8350 
8351         OPEN c_real_task_3;
8352         FETCH c_real_task_3
8353         BULK COLLECT INTO
8354 	         real_task_key
8355 	       , real_resource_key
8356 	       , real_start_date
8357 	       , real_end_date
8358 		   ,l_task_number
8359 		   ,l_Task_Name
8360 		   ,l_Task_Priority_Name
8361 		   ,l_task_Postal_Code
8362 		   ,l_task_City_name
8363 		   ,l_task_Site_Name
8364 	       , real_color
8365 	       , real_tooltip
8366 	       , real_duration
8367 	       , real_task_type_id
8368 	       , l_task_priority_id
8369 	       , l_assignment_status_id
8370 	       , l_actual_start_date
8371 	       , l_actual_end_date
8372 	       , real_name
8373 		   ,l_task_customer_name
8374 	       , l_escalated_task
8375 	       , real_access_hours
8376 	       , real_after_hours
8377 	       , real_customer_conf
8378 	       , real_task_depend
8379 	       , real_parts_required
8380 	       , child_task
8381            , l_task_depend;
8382         CLOSE c_real_task_3;
8383       ELSE
8384         OPEN c_real_task_4;
8385         FETCH c_real_task_4
8386         BULK COLLECT INTO
8387 	         real_task_key
8388 	       , real_resource_key
8389 	       , real_start_date
8390 	       , real_end_date
8391 	       , real_color
8392 	       , real_tooltip
8393 	       , real_duration
8394 	       , real_task_type_id
8395 	       , l_task_priority_id
8396 	       , l_assignment_status_id
8397 	       , l_actual_start_date
8398 	       , l_actual_end_date
8399 	       , real_name
8400 		   , l_escalated_task
8401 	       , real_access_hours
8402 	       , real_after_hours
8403 	       , real_customer_conf
8404 	       , real_task_depend
8405 	       , real_parts_required
8406 	       , child_task
8407            , l_task_depend;
8408         CLOSE c_real_task_4;
8409       END IF;
8410     ELSIF  nvl(l_task_depends,'N') ='N'
8411     THEN
8412       IF g_label_on_task
8413       THEN
8414 
8415         OPEN c_real_task_1;
8416         FETCH c_real_task_1
8417         BULK COLLECT INTO
8418              real_task_key
8419 	       , real_resource_key
8420 	       , real_start_date
8421 	       , real_end_date
8422 		   , l_task_number
8423 		   , l_Task_Name
8424 		   , l_Task_Priority_Name
8425 		   , l_task_Postal_Code
8426 		   , l_task_City_name
8427 		   , l_task_Site_Name
8428 	       , real_color
8429 	       , real_tooltip
8430 	       , real_duration
8431 	       , real_task_type_id
8432 	       , l_task_priority_id
8433 	       , l_assignment_status_id
8434 	       , l_actual_start_date
8435 	       , l_actual_end_date
8436 	       , real_name
8437 		   ,l_task_customer_name
8438 	       , l_escalated_task
8439 	       , real_access_hours
8440 	       , real_after_hours
8441 	       , real_customer_conf
8442 	       , real_task_depend
8443 	       , real_parts_required
8444 	       , child_task;
8445         CLOSE c_real_task_1;
8446       ELSE
8447         OPEN c_real_task_2;
8448         FETCH c_real_task_2
8449         BULK COLLECT INTO
8450                  real_task_key
8451 	       , real_resource_key
8452 	       , real_start_date
8453 	       , real_end_date
8454 	       , real_color
8455 	       , real_tooltip
8456 	       , real_duration
8457 	       , real_task_type_id
8458 	       , l_task_priority_id
8459 	       , l_assignment_status_id
8460 	       , l_actual_start_date
8461 	       , l_actual_end_date
8462 	       , real_name
8463 	       , l_escalated_task
8464 	       , real_access_hours
8465 	       , real_after_hours
8466 	       , real_customer_conf
8467 	       , real_task_depend
8468 	       , real_parts_required
8469 	       , child_task;
8470         CLOSE c_real_task_2;
8471       END IF;
8472     END IF;
8473 
8474     IF real_task_key.COUNT IS NOT NULL AND real_task_key.COUNT > 0
8475     THEN
8476       FOR i IN real_task_key.first..real_task_key.last
8477       LOOP
8478 		IF g_label_on_task
8479         THEN
8480 
8481 		  real_name(i) := ' ';
8482 		  l_task_attr_list_tmp := l_task_attr_list;
8483 		  LOOP
8484 		    EXIT WHEN l_task_attr_list_tmp IS NULL OR LENGTH(l_task_attr_list_tmp) =0;
8485 
8486 			IF SUBSTR(l_task_attr_list_tmp,1,8) ='TASK_NUM'
8487 			THEN
8488 			   IF l_task_number(i) IS NOT NULL
8489 			   THEN
8490 				 real_name(i) :=real_name(i)||' '||l_task_number(i);
8491 			   END IF;
8492 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)= 'TASK_NAM'
8493 			THEN
8494 			   IF l_Task_Name(i) is NOT NULL
8495 			   THEN
8496 			   real_name(i) :=real_name(i)||' '||l_Task_Name(i);
8497 			   END IF;
8498 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_CUS'
8499 			THEN
8500 			   IF l_task_customer_name(i) IS NOT NULL
8501 			   THEN
8502 			     real_name(i) :=real_name(i)||' '||l_task_customer_name(i);
8503 			   END IF;
8504 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_CST'
8505 			THEN
8506 			  IF l_task_Site_Name(i) IS NOT NULL
8507 			  THEN
8508 				real_name(i) :=real_name(i)||' '||l_task_Site_Name(i);
8509 			  END IF;
8510 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_CIT'
8511 			THEN
8512 			  IF l_task_City_name(i) IS NOT NULL
8513 			  THEN
8514 				real_name(i) :=real_name(i)||' '||l_task_City_name(i);
8515 			  END IF;
8516 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_POS'
8517 			THEN
8518 			  IF l_task_Postal_Code(i) IS NOT NULL
8519 			  THEN
8520 			    real_name(i) :=real_name(i)||' '||l_task_Postal_Code(i);
8521 			  END IF;
8522 			ELSIF SUBSTR(l_task_attr_list_tmp,1,8)='TASK_PRI'
8523 			THEN
8524 			  IF l_Task_Priority_Name(i) IS NOT NULL
8525 			  THEN
8526 				real_name(i) :=real_name(i)||' '||l_Task_Priority_Name(i);
8527 			  END IF;
8528 			END IF;
8529 			l_task_attr_list_tmp := SUBSTR(l_task_attr_list_tmp,9);
8530 		  END LOOP;
8531 	    END IF;--This end if is for g_label_on_task
8532 
8533         IF g_tz_enabled ='Y' AND sch_adv_tz='CTZ'
8534         THEN
8535           real_start_date(i) :=fnd_date.adjust_datetime(real_start_date(i),g_client_tz,g_server_tz );
8536         ELSIF g_tz_enabled ='Y' AND sch_adv_tz='ITZ'
8537         THEN
8538           real_start_date(i) :=fnd_date.adjust_datetime(real_start_date(i),g_client_tz,inc_tz_code );
8539         END IF;
8540         IF g_tz_enabled ='Y' AND sch_adv_tz='CTZ'
8541         THEN
8542           real_end_date(i)    :=fnd_date.adjust_datetime(real_end_date(i),g_client_tz,g_server_tz);
8543         ELSIF g_tz_enabled ='Y' AND sch_adv_tz='ITZ'
8544         THEN
8545           real_end_date(i)    :=fnd_date.adjust_datetime(real_end_date(i),g_client_tz,inc_tz_code);
8546         END IF;
8547 
8548         IF nvl(l_task_depends,'N') ='Y'
8549         THEN
8550           IF real_task_key(i) = l_task_depend(i)
8551           THEN
8552             real_task_depend(i) := 'Y';
8553           END IF;
8554         END IF;
8555 
8556         IF g_use_custom_chromatics
8557         THEN
8558           l_task_custom_color  := 'N';
8559           IF l_rule_id IS NOT NULL
8560           THEN
8561             IF real_end_date(i) IS NOT NULL
8562   	    THEN
8563               IF real_end_date(i) = real_start_date(i)
8564    	      THEN
8565                 l_task_custom_color  := 'Y';
8566               END IF;
8567             ELSE
8568               l_task_custom_color  := 'Y';
8569             END IF;   --end if for scheduled_start_date is not null
8570           END IF;   --rule id condition for task date usage
8571 
8572 	  IF l_task_custom_color = 'Y'
8573           THEN
8574             IF l_rule_id IS NOT NULL
8575             THEN
8576 	      IF NVL(p_rule_id, 1) <> l_rule_id
8577               THEN
8578                 OPEN get_tdu_color(l_rule_id);
8579 	        FETCH get_tdu_color
8580 	        INTO p_color;
8581                 IF get_tdu_color%NOTFOUND
8582 	        THEN
8583                   CLOSE get_tdu_color;
8584                   IF(NVL(p_cur_task_type_id, -1) <> real_task_type_id(i)
8585                   OR NVL(p_cur_task_priority_id, -1) <> l_task_priority_id(i)
8586                   OR NVL(p_cur_task_status_id, -1) <> l_assignment_status_id(i)
8587                   OR NVL(p_cur_escalated_task, 'G') <> l_escalated_task(i)
8588                      )
8589   	          THEN
8590                     real_color(i):=do_match(real_task_type_id(i),l_task_priority_id(i),l_assignment_status_id(i),l_escalated_task(i));
8591                     p_cur_color             := real_color(i);
8592                     p_cur_task_type_id      := real_task_type_id(i);
8593                     p_cur_task_priority_id  := l_task_priority_id(i);
8594                     p_cur_task_status_id    := l_assignment_status_id(i);
8595                     p_cur_escalated_task    := l_escalated_task(i);
8596                   ELSE
8597                     real_color(i)  := p_cur_color;
8598                   END IF;
8599                 ELSE
8600                   real_color(i)  := p_color;
8601                   CLOSE get_tdu_color;
8602                 END IF;
8603               ELSE
8604                 real_color(i)  := p_color;
8605               END IF;
8606             ELSE
8607               IF(NVL(p_cur_task_type_id, -1) <> real_task_type_id(i)
8608               OR NVL(p_cur_task_priority_id, -1) <> l_task_priority_id(i)
8609               OR NVL(p_cur_task_status_id, -1) <> l_assignment_status_id(i)
8610  	      OR NVL(p_cur_escalated_task, 'G') <> l_escalated_task(i)
8611                 )
8612 	      THEN
8613                 real_color(i):=do_match(real_task_type_id(i), l_task_priority_id(i), l_assignment_status_id(i),l_escalated_task(i));
8614                 p_cur_color             := real_color(i);
8615 	        p_cur_task_type_id      := real_task_type_id(i);
8616                 p_cur_task_priority_id  := l_task_priority_id(i);
8617                 p_cur_task_status_id    := l_assignment_status_id(i);
8618 	        p_cur_escalated_task    := l_escalated_task(i);
8619 	      ELSE
8620                 real_color(i)  := p_cur_color;
8621               END IF;
8622             END IF;
8623           ELSE
8624             IF (NVL(p_cur_task_type_id, -1) <> real_task_type_id(i)
8625             OR NVL(p_cur_task_priority_id, -1) <> l_task_priority_id(i)
8626             OR NVL(p_cur_task_status_id, -1) <> l_assignment_status_id(i)
8627             OR NVL(p_cur_escalated_task, 'G') <> l_escalated_task(i)
8628               )
8629             THEN
8630               real_color(i):=do_match(real_task_type_id(i), l_task_priority_id(i), l_assignment_status_id(i), l_escalated_task(i));
8631 	      p_cur_color             := real_color(i);
8632               p_cur_task_type_id      := real_task_type_id(i);
8633 	      p_cur_task_priority_id  := l_task_priority_id(i);
8634               p_cur_task_status_id    := l_assignment_status_id(i);
8635 	      p_cur_escalated_task    := l_escalated_task(i);
8636             ELSE
8637               real_color(i)  := p_cur_color;
8638             END IF;
8639           END IF;
8640         ELSE
8641           IF l_escalated_task(i) = 'Y'
8642           THEN
8643             real_color(i)  := red;
8644           ELSIF l_actual_start_date(i) IS NOT NULL
8645           THEN
8646             real_color(i)  := yellow;
8647           ELSE
8648             real_color(i)  := blue;
8649           END IF;
8650         END IF;
8651       END LOOP;
8652     END IF;
8653 
8654     IF trip_id.COUNT IS NULL THEN
8655       l_return_status  := 'E';
8656     ELSE
8657       x_return_status  := fnd_api.g_ret_sts_success;
8658     END IF;
8659    END get_schedule_advise_options;
8660 
8661 
8662    PROCEDURE insert_rows
8663   ( p_setup_type		IN	varchar2
8664   , p_tooltip_setup_tbl IN	tooltip_setup_tbl
8665   , p_delete_rows	IN	boolean
8666   , p_user_id		IN	number
8667   , p_login_id     IN   number
8668   )
8669   IS
8670   BEGIN
8671     if p_delete_rows then
8672        delete_rows(p_user_id);
8673     end if;
8674 
8675     for i in p_tooltip_setup_tbl.first..p_tooltip_setup_tbl.last
8676     loop
8677        insert into csf_gantt_chart_setup
8678         (created_by,creation_date,last_updated_by, last_update_date, last_update_login, user_id, setup_type, seq_no, field_name, field_value)
8679          values (p_user_id, sysdate, p_user_id,sysdate,p_login_id, p_user_id,p_setup_type,p_tooltip_setup_tbl(i).seq_no,p_tooltip_setup_tbl(i).field_name,p_tooltip_setup_tbl(i).field_value);
8680     end loop;
8681 
8682   END INSERT_ROWS;
8683 
8684   PROCEDURE DELETE_ROWS(p_user_id number)
8685   is
8686   begin
8687     delete from csf_gantt_chart_setup where user_id = p_user_id;
8688   END DELETE_ROWS;
8689 
8690 
8691 
8692 BEGIN
8693   -- package instantiation
8694   set_tooltip_labels;
8695   g_use_custom_chromatics  := fnd_profile.VALUE('CSF_USE_CUSTOM_CHROMATICS') = 'Y';
8696 
8697   IF g_use_custom_chromatics THEN
8698     g_get_custom_color;
8699   END IF;
8700   g_user_id                := fnd_global.user_id;
8701   g_uom_minutes           := fnd_profile.value_specific('CSF_UOM_MINUTES', g_user_id);
8702   g_uom_hours             := fnd_profile.value_specific('CSF_UOM_HOURS', g_user_id);
8703   g_date_format            := fnd_profile.value_specific('ICX_DATE_FORMAT_MASK');
8704   l_language               := USERENV('LANG');
8705   g_resource_id            :=csf_resource_pub.resource_id;
8706   g_resource_type          :=csf_resource_pub.resource_type;
8707   g_server_tz := fnd_timezones.get_server_timezone_code;
8708   g_client_tz := fnd_timezones.get_client_timezone_code;
8709   g_tz_enabled := 'N';
8710 
8711     -- this function is currently not present in fnd_timezones 1158
8712     -- copied from AFTZONEB.pls 115.3 and modified
8713     if  nvl(fnd_profile.value('ENABLE_TIMEZONE_CONVERSIONS'),'N') = 'Y'
8714     then
8715       g_tz_enabled := 'Y';
8716    end if;
8717 
8718 END CSF_GANTT_DATA_PKG;