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