DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_TIMELINE_UTIL

Source


1 PACKAGE BODY  PA_TIMELINE_UTIL as
2 /* $Header: PARLUTSB.pls 120.4 2006/03/28 00:11:42 vkadimes noship $ */
3 
4 --	Procedure		Create_Time_Scale
5 --	Pursose			To create time scale records in a
6 --				temp table while displaying timeline
7 --
8 --	Parameters
9 --
10 --		p_start_date	 Date
11 --		p_scale_type	 VARCHAR2 MONTH or THREE_MONTH
12 --
13 
14 -- Global variables Added for bug No 5079785.
15 
16 g_debug_mode	CONSTANT varchar2(1) :=  fnd_profile.value('PA_DEBUG_MODE');
17 --fnd_profile.get('PA_DEBUG_MODE', g_debug_mode);
18 PROCEDURE Create_Time_Scale (p_start_date					 IN		 DATE,
19 														 p_end_date						 IN		 DATE := null,
20 														 p_scale_type					 IN		 VARCHAR2,
21 														 x_return_status			 OUT	 NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
22 														 x_msg_count					 OUT	 NOCOPY NUMBER, --File.Sql.39 bug 4440895
23 														 x_msg_data						 OUT	 NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
24 														)
25 IS
26 
27 	 l_start_date					DATE;
28 	 l_end_date						DATE;
29 	 t_date								DATE;
30 	 l_date								DATE;
31 	 l_month_date					DATE;
32 	 l_msg_index_out				 NUMBER;
33          -- added for Bug: 4537865
34          l_new_msg_data					 VARCHAR2(2000);
35          -- added for Bug: 4537865
36 
37 	 TmpTimeScaleTabTyp		PA_TIMELINE_GLOB.TimeScaleTabTyp;
38 
39 	 I										INTEGER := 0;
40 	 l_invalid_scale_type EXCEPTION;
41 
42 BEGIN
43 
44 	 PA_TIMELINE_TIME_SCALE_PKG.delete_row( x_return_status,
45 		 x_msg_count,
46 		 x_msg_data);
47 
48 	 l_date := p_start_date;
49 	 l_start_date	 := p_start_date ;	--Get the Week start date */
50 	 l_month_date	 := l_start_date;
51 	 t_date				 := l_start_date;
52 	 l_end_date := p_end_date;
53 
54 	 IF (p_end_date IS NULL) THEN
55 			IF (p_scale_type =  'MONTH') THEN
56 				 l_end_date := p_start_date + 34;
57 			ELSIF (p_scale_type = 'THREE_MONTH') THEN
58 				 l_end_date := p_start_date + 97;
59 			ELSE
60 				 raise l_invalid_scale_type;
61 			END IF;
62 	 END IF;
63 
64 	 IF p_scale_type	= 'MONTH' THEN
65 
66 			l_date			:= p_start_date +6;
67 
68 			I	 := I + 1;
69 
70 			LOOP
71 
72 				 TmpTimeScaleTabTyp(i).start_date			 := t_date ;
73 				 TmpTimeScaleTabTyp(i).end_date				 := t_date ;
74 				 TmpTimeScaleTabTyp(i).scale_row_type	 := 'DAY_NUM' ;
75 				 TmpTimeScaleTabTyp(i).scale_type			 := p_scale_type;	 --Input value
76 				 TmpTimeScaleTabTyp(i).scale_marker_code		:= ' ';
77 				 TmpTimeScaleTabTyp(i).scale_text			 := TO_CHAR(t_date,'DD');
78 
79 
80 				 IF (l_date = t_date) THEN
81 
82 						TmpTimeScaleTabTyp(i).scale_marker_code		 := 'W';
83 						l_date := l_date + 7;	 --Get the next week end date	 */
84 
85 				 END IF;
86 
87 
88 				 IF to_char(t_date,'MON') <> to_char(t_date + 1, 'MON') THEN
89 
90 
91 							I := I + 1;
92 
93 							TmpTimeScaleTabTyp(i).scale_row_type	:= 'MONTH' ;
94 							TmpTimeScaleTabTyp(i).scale_type			:= p_scale_type; --Input value
95 							TmpTimeScaleTabTyp(i).scale_text			:= TO_CHAR(t_date,'Mon, YYYY');
96 							TmpTimeScaleTabTyp(i).scale_marker_code		 := 'M';
97 							TmpTimeScaleTabTyp(i).start_date			:= l_month_date ;
98 							TmpTimeScaleTabTyp(i).end_date				:= t_date ;
99 
100 							l_month_date := t_date + 1;	 -- Storing the Start date of the next month
101 
102 					END IF;
103 
104 					t_date := t_date + 1;
105 
106 					I := I + 1;
107 
108 					EXIT WHEN t_date > l_end_date;
109 
110 			 END LOOP;
111 
112 							TmpTimeScaleTabTyp(i).scale_row_type	:= 'MONTH' ;
113 							TmpTimeScaleTabTyp(i).scale_type			:= p_scale_type;
114 							TmpTimeScaleTabTyp(i).scale_text			:= TO_CHAR(t_date,'Mon, YYYY');
115 							TmpTimeScaleTabTyp(i).scale_marker_code		 := 'M';
116 							TmpTimeScaleTabTyp(i).start_date			:= l_month_date ;
117 							TmpTimeScaleTabTyp(i).end_date				:= l_end_date ;
118 
119 
120 			ELSIF (p_scale_type = 'THREE_MONTH') THEN
121 
122 
123 				l_date				:= p_start_date +6 ;	--Get the Week start date
124 
125 				i	 := i + 1;
126 
127 			LOOP
128 
129 				 TmpTimeScaleTabTyp(i).start_date			 := t_date ;
130 				 TmpTimeScaleTabTyp(i).end_date				 := l_date ;
131 				 TmpTimeScaleTabTyp(i).scale_row_type	 := 'WEEK_DAY_NUM' ;
132 				 TmpTimeScaleTabTyp(i).scale_type			 := p_scale_type; --Input value
133 				 TmpTimeScaleTabTyp(i).scale_marker_code		:= 'W';
134 				 TmpTimeScaleTabTyp(i).scale_text			 := TO_CHAR(l_date,'DD');
135 
136 	--dbms_output.put_line(' Running Tdate	' || to_char(t_date) || '	 '
137 		--		|| 'ldate	 ' || to_char(l_date) || '	'
138 		--		|| 'lmonth	' || to_char(l_month_date));
139 
140 
141 				 IF to_char(l_date,'MON') <> to_char(l_month_date, 'MON') THEN
142 
143 			 -- dbms_output.put_line(' Before Month Change	 ' || to_char(t_date) || '	'
144 		--		|| 'ldate	 ' || to_char(l_date) || '	'
145 		--		|| 'lmonth	' || to_char(l_month_date));
146 
147 							i := i + 1;
148 
149 							TmpTimeScaleTabTyp(i).scale_row_type	:= 'MONTH' ;
150 							TmpTimeScaleTabTyp(i).scale_type			:= p_scale_type; -- Input value
151 							TmpTimeScaleTabTyp(i).scale_text			:= TO_CHAR(l_month_date,'Mon, YYYY');
152 							TmpTimeScaleTabTyp(i).scale_marker_code		 := 'M';
153 							TmpTimeScaleTabTyp(i).start_date			:= l_month_date ;
154 
155 		--dbms_output.put_line('Last Day	 ' || to_char(LAST_DAY(l_month_date)));
156 
157 							TmpTimeScaleTabTyp(i).end_date				:= LAST_DAY(l_month_date);
158 
159 							l_month_date := LAST_DAY(TmpTimeScaleTabTyp(i).end_date) + 1;					 -- Storing the Start date of the next month */
160 
161 			 --dbms_output.put_line(' After Month Change	 ' || to_char(t_date) || '	' || 'ldate	 ' || to_char(l_date) || '	' || 'lmonth	' || to_char(l_month_date));
162 					END IF;
163 
164 					t_date := l_date + 1;
165 					l_date := l_date + 7;
166 
167 					I := I + 1;
168 
169 					EXIT WHEN l_date > l_end_date;
170 
171 
172 			 END LOOP;
173 
174 							TmpTimeScaleTabTyp(i).scale_row_type	:= 'MONTH' ;
175 							TmpTimeScaleTabTyp(i).scale_type			:= p_scale_type;
176 							TmpTimeScaleTabTyp(i).scale_text			:= TO_CHAR(t_date,'Mon, YYYY');
177 							TmpTimeScaleTabTyp(i).scale_marker_code		 := 'M';
178 							TmpTimeScaleTabTyp(i).start_date			:= l_month_date ;
179 							TmpTimeScaleTabTyp(i).end_date				:= l_end_date ;
180 
181 
182 	END IF;
183 
184 
185 -- Insert Record into pa_timeline_time_scale table
186 
187 		PA_TIMELINE_TIME_SCALE_PKG.insert_row(TmpTimeScaleTabTyp,
188 																					x_return_status,
189 																					x_msg_count,
190 																					x_msg_data
191 																				 );
192 
193 		x_return_status := FND_API.G_RET_STS_SUCCESS;
194 
195 	 EXCEPTION
196 			WHEN l_invalid_scale_type THEN
197 				x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
198 				x_msg_count := 1;
199 				x_msg_data  := 'Error in PA_TIMELINE_UTIL.CREATE_TIME_SCALE: Invalid Scale Type';
200 				FND_MSG_PUB.add_exc_msg( p_pkg_name         => 'PA_TIMELINE_UTIL',
201 					       p_procedure_name   => 'create_time_scale');
202 				If x_msg_count = 1 THEN
203 					 pa_interface_utils_pub.get_messages
204 						 (p_encoded        => FND_API.G_TRUE,
205 						 p_msg_index      => 1,
206 						 p_msg_count      => x_msg_count,
207 						 p_msg_data       => x_msg_data,
208 					       --p_data           => x_msg_data,		* commented for Bug: 4537865
209 						 p_data		  => l_new_msg_data,		-- added for Bug: 4537865
210 						 p_msg_index_out  => l_msg_index_out );
211 				-- added for Bug: 4537865
212 				x_msg_data := l_new_msg_data;
213 				-- added for Bug: 4537865
214 		    End If;
215 				RAISE;  -- This is optional depending on the needs
216 			WHEN OTHERS THEN
217 					 x_msg_count		 := 1;
218 					 x_msg_data			 := sqlerrm;
219 					 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
220 					 FND_MSG_PUB.add_exc_msg(p_pkg_name => 'PA_TIMELINE_PVT',
221 					 p_procedure_name => 'Create_Time_Scale');
222 			 If x_msg_count = 1 THEN
223 				pa_interface_utils_pub.get_messages
224 					(p_encoded				=> FND_API.G_TRUE ,
225 					 p_msg_index			=> 1,
226 					 p_msg_count		=> x_msg_count ,
227 					 p_msg_data		=> x_msg_data ,
228 				       --p_data			=> x_msg_data, 		* commented for bug: 4537865
229 					 p_data			=> l_new_msg_data,	-- added for Bug: 4537865
230 					 p_msg_index_out	=> l_msg_index_out );
231 
232 			 -- added for Bug: 4537865
233 			 x_msg_data := l_new_msg_data;
234 			 -- added for Bug: 4537865
235 			 End If;
236 			RAISE ; -- 4537865 : Included RAISE for WHEN OTHERS block of create_time_scale
237 END create_time_scale;
238 
239 /*----------------------------------------------------------------------
240 |		Function	Get_Week_End_Date
241 |		Purpose		To get weekend date for given date and org
242 |
243 |		Parameters
244 |
245 |			p_org_id	IN	Organization ID a
246 |			p_given_date	IN	Given date
247 +-----------------------------------------------------------------------*/
248 
249 FUNCTION Get_Week_End_Date(p_org_id     IN NUMBER,
250                            p_given_date IN DATE) RETURN DATE IS
251 
252   x_week_ending               DATE;
253   x_week_ending_day           VARCHAR2(80);
254   -- Retrieve week_ending_index from the FND profile value.
255   x_week_ending_day_index     NUMBER := TO_NUMBER(FND_PROFILE.VALUE('PA_GLOBAL_WEEK_START_DAY')) + 6;
256 
257 
258 BEGIN
259 
260        /* ( 	SELECT DECODE(exp_cycle_start_day_code,1,8,exp_cycle_start_day_code) -1
261           	  INTO x_week_ending_day_index
262           	  FROM pa_implementations_all
263         	 WHERE  NVL(org_id,-99) = NVL(p_org_id,-99);
264 
265         	SELECT TO_CHAR(TO_DATE('01-01-1950','DD-MM-YYYY') + NVL(x_week_ending_day_index,0)-1,'Day')
266           	INTO x_week_ending_day
267           	FROM sys.dual;
268 
269         	SELECT NEXT_DAY(p_given_date-1,x_week_ending_day)
270           	INTO x_week_ending
271           	FROM sys.dual;
272 
273 
274         RETURN(x_week_ending); ) */
275 
276    -- Bug fix #1393829
277 --        BEGIN
278 /* Bug - 1799636 This part of code is commented to resolve the performance bug
279 
280         SELECT TO_CHAR(TO_DATE('01-01-1950','DD-MM-YYYY') + NVL(x_week_ending_day_index,0)-1,'Day')
281         INTO x_week_ending_day
282         FROM sys.dual;
283 
284         -- 1604283 (jmarques): Removed unnecessary TO_DATE call around
285         -- DATE parameter.
286         SELECT NEXT_DAY(p_given_date -1,x_week_ending_day)
287         INTO x_week_ending
288         FROM sys.dual;
289     END;
290 */
291 	x_week_ending_day:= TO_CHAR(TO_DATE('01-01-1950','DD-MM-YYYY') + NVL(x_week_ending_day_index,0)-1,'Day');
292 	x_week_ending :=  NEXT_DAY(p_given_date -1,x_week_ending_day);
293 
294    RETURN(x_week_ending);
295 
296 
297 END Get_Week_End_Date;
298 
299 /*------------------------------------------------------------------------
300 |	Procedure	   :	get_timeline_period
301 |	Purpose		   :	This procedure is used to get the next
302 |				timeline display period for a given date.
303 |	GUI how it is used :
304 |				All Timelines have Month and 3-Month time scales.
305 |				Initial default is Month.
306 |				Navigation to Previous Month and Next Month via
307 |				links on each side of the timeline.
308 |				Each click of this link shifts the time scale by 5 weeks.
309 |				A maximum of 25 timeline data rows will be shown at a time.
310 |				If there are more than 25 rows, show following links:
311 |				Previous and Next to shift up or down next set of 25 rows
312 |
313 |	Parameters
314 |		p_current_date		IN	Given Date
315 |		p_Scale_type		IN	MONTH or THREE_MONTH
316 |		p_navigate_type		IN	PREV_MONTH,NEXT_MONTH,
317 |						NEXT_THREE_MONTH,
318 |						 PREV_THREE_MONTH
319 |		p_org_id		IN	Organization ID
320 |		x_period_start_date    OUT	Next display start date
321 |		x_period_end_date    OUT	Next display end date
322 +-----------------------------------------------------------------------------------*/
323 
324 PROCEDURE get_timeline_period ( p_current_date           IN DATE,
325 																p_num_days               IN NUMBER := NULL,
326 																p_scale_type             IN VARCHAR2,
327 																p_navigate_type          IN VARCHAR2,
328 																p_org_id                 IN NUMBER,
329 																x_period_start_date     OUT NOCOPY DATE, --File.Sql.39 bug 4440895
330 																x_period_end_date       OUT NOCOPY DATE, --File.Sql.39 bug 4440895
331 																x_return_status         OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
332 																x_msg_count             OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
333 																x_msg_data              OUT NOCOPY VARCHAR2 )  IS --File.Sql.39 bug 4440895
334 
335 	 td_date		DATE;
336 	 l_msg_index_out		     NUMBER;
337 	 l_num_days  NUMBER;
338 	 -- added for bug: 4537865
339 	 l_new_msg_data		VARCHAR2(2000);
340 	 -- added for bug: 4537865
341 	 l_invalid_scale_type EXCEPTION;
342 BEGIN
343 	 l_num_days := p_num_days;
344 
345 	 IF (p_num_days IS NULL) THEN
346 			IF (p_scale_type =  'MONTH') THEN
347 				 l_num_days := 35;
348 			ELSIF (p_scale_type = 'THREE_MONTH') THEN
349 				 l_num_days := 98;
350 			ELSE
351 				 raise l_invalid_scale_type;
352 			END IF;
353 	 END IF;
354 
355 	 td_date :=	get_week_end_date(p_org_id, p_current_date);
356 
357 	 IF p_navigate_type='NEXT_MONTH' THEN
358 			x_period_start_date	:=td_date +29;   -- Add 4 weeks + 1 day
359 	 ELSIF p_navigate_type='PREV_MONTH' THEN
360 			x_period_start_date	:=td_date -41;   -- Subtract 6 weeks - 1 day
361 	 ELSIF p_navigate_type='NEXT_WEEK' THEN
362 			x_period_start_date	:=td_date + 1;   -- add 0 weeks + 1 day
363 	 ELSIF p_navigate_type='PREV_WEEK' THEN
364 			x_period_start_date	:=td_date - 13;  -- Subtract 2 weeks - 1 day
365 	 ELSIF p_navigate_type='NEXT_THREE_MONTH' THEN
366 			x_period_start_date	:=td_date + 92 ;  -- Add 13 weeks + 1 day
367 	 ELSIF p_navigate_type='PREV_THREE_MONTH' THEN
368 			x_period_start_date	:=td_date - 104; -- Subtract 15 weeks - 1 day
369 	 ELSIF p_navigate_type='CURRENT' THEN
370 			x_period_start_date	:= td_date -6;
371 	 END IF;
372 
373 	 x_period_end_date := x_period_start_date + l_num_days - 1;
374 
375 	 x_return_status := FND_API.G_RET_STS_SUCCESS;
376 
377 EXCEPTION
378 	 WHEN l_invalid_scale_type THEN
379 
380 	   -- 4537865
381 	   x_period_end_date := NULL ;
382 	   x_period_start_date := NULL ;
383 
384 	   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
385 	   x_msg_count := 1;
386 	   x_msg_data  := 'Error in PA_TIMELINE_UTIL.GET_TIMELINE_PERIOD: Invalid Scale Type';
387 	   FND_MSG_PUB.add_exc_msg( p_pkg_name         => 'PA_TIMELINE_UTIL',
388 	                          p_procedure_name   => 'get_timeline_period');
389 	   If x_msg_count = 1 THEN
390 					pa_interface_utils_pub.get_messages
391 						(p_encoded        => FND_API.G_TRUE,
392 						p_msg_index      => 1,
393 						p_msg_count      => x_msg_count,
394 						p_msg_data       => x_msg_data,
395 					      --p_data           => x_msg_data,			* Commented for Bug: 4537865
396 						p_data		 => l_new_msg_data,		-- added for bug: 4537865
397 						p_msg_index_out  => l_msg_index_out );
398 				-- added for bug: 4537865
399 					x_msg_data := l_new_msg_data;
400 				-- added for bug: 4537865
401 		 End If;
402 	   RAISE;  -- This is optional depending on the needs
403 	 WHEN OTHERS THEN
404            -- 4537865
405            x_period_end_date := NULL ;
406            x_period_start_date := NULL ;
407 
408 		 x_msg_count     := 1;
409 		 x_msg_data      := sqlerrm;
410 		 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
411 		 FND_MSG_PUB.add_exc_msg(p_pkg_name => 'PA_TIMELINE_PVT',
412 			 p_procedure_name => 'get_timeline_period ');
413 		 If x_msg_count = 1 THEN
414 				pa_interface_utils_pub.get_messages
415 					(p_encoded        => FND_API.G_TRUE ,
416 					p_msg_index      => 1,
417 					p_msg_count      => x_msg_count ,
418 					p_msg_data       => x_msg_data ,
419 				      --p_data           => x_msg_data, 		* Commented for Bug fix: 4537865
420 					p_data		 => l_new_msg_data,		-- added for Bug Fix: 4537865
421 					p_msg_index_out  => l_msg_index_out );
422 		 	-- added for Bug Fix: 4537865
423 			x_msg_data := l_new_msg_data;
424 			-- added for Bug Fix: 4537865
425 		 End If;
426 		RAISE; -- 4537865
427 END get_timeline_period;
428 
429 /*------------------------------------------------------------------------
430 |       Procedure               Get_Week_Dates_Range
431 |       Purpose                 This procedure is used to get the next
432 |                               timeline display period for a given date.
433 |
434 +-------------------------------------------------------------------------*/
435 
436 PROCEDURE Get_Week_Dates_Range( p_org_id                IN      NUMBER,
437                                 p_start_date            IN      DATE,
438                                 p_end_date              IN      DATE,
439                                 x_WeekDatesRangeTab     OUT     NOCOPY PA_TIMELINE_GLOB.WeekDatesRangeTabTyp, --File.Sql.39 bug 4440895
440                                 x_return_status         OUT     NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
441                                 x_msg_count             OUT     NOCOPY NUMBER, --File.Sql.39 bug 4440895
442                                 x_msg_data              OUT     NOCOPY VARCHAR2) IS --File.Sql.39 bug 4440895
443 
444                 ld_temp_date    DATE;
445                 ld_start_date   DATE;
446                 ld_end_date     DATE;
447                 li_cnt          INTEGER:=1;
448 BEGIN
449 
450         BEGIN
451                 ld_temp_date := p_start_date;
452 
453         LOOP
454 
455                 ld_end_date     := Get_Week_End_Date(p_org_id, ld_temp_date);
456                 ld_start_date   := ld_end_date -6;
457                 x_WeekDatesRangeTab(li_cnt).week_start_date := ld_start_date;
458                 x_WeekDatesRangeTab(li_cnt).week_end_date := ld_end_date;
459                 ld_temp_date    := ld_end_date +1;
460                 EXIT WHEN (trunc(ld_temp_date) > trunc(p_end_date));
461                 li_cnt := li_cnt +1;
462 
463 
464         END LOOP;
465 
466   	x_return_status := FND_API.G_RET_STS_SUCCESS;
467 
468         EXCEPTION
469         WHEN OTHERS THEN
470 	   -- 4537865
471 	   x_WeekDatesRangeTab.delete; -- Delete the table contents so that the Unexp. state wrong data cant be used further
472 
473            x_msg_count     := 1;
474            x_msg_data      := sqlerrm;
475            x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
476            FND_MSG_PUB.add_exc_msg(p_pkg_name => 'PA_TIMELINE_PVT',
477            p_procedure_name => 'Get_Week_Dates_Range');
478 
479 
480         END;
481 
482 END Get_Week_Dates_Range;
483 /*------------------------------------------------------------------------
484 |       Function               Get_Timeline_Profile_Setup
485 |       Purpose                function is to get profile options
486 +-------------------------------------------------------------------------*/
487 FUNCTION Get_Timeline_Profile_Setup RETURN PA_TIMELINE_GLOB.TimelineProfileSetup IS
488 
489 	TmpTimelineProfileSetup PA_TIMELINE_GLOB.TimelineProfileSetup;
490 
491 BEGIN
492 	BEGIN
493 
494 	 	TmpTimelineProfileSetup.res_capacity_percentage :=
495 			FND_NUMBER.CANONICAL_TO_NUMBER(FND_PROFILE.VALUE('PA_RES_CAPACITY_PERCENTAGE'));
496 
497 
498 		TmpTimelineProfileSetup.availability_cal_period :=
499 				FND_PROFILE.VALUE('PA_AVAILABILITY_CAL_PERIOD');
500 
501 
502 		TmpTimelineProfileSetup.availability_duration :=
503 			FND_NUMBER.CANONICAL_TO_NUMBER(FND_PROFILE.VALUE('PA_AVAILABILITY_DURATION'));
504 
505                 EXCEPTION
506                 WHEN OTHERS THEN
507                         raise;
508         END;
509 
510 
511 	RETURN (TmpTimelineProfileSetup);
512 
513 END Get_Timeline_Profile_Setup;
514 /*------------------------------------------------------------------------
515 |       Function               Get_Color_Pattern_Code
516 |       Purpose                function is to get color pattern code for
517 |			       a specific system status
518 +-------------------------------------------------------------------------*/
519 
520 FUNCTION Get_Color_Pattern_Code(p_lookup_code IN VARCHAR2) RETURN VARCHAR2 IS
521 		lv_color_pattern VARCHAR2(2);
522 l_lookup_type VARCHAR2(30) ;
523 BEGIN
524 	BEGIN
525 l_lookup_type := 'TIMELINE_STATUS';
526     		SELECT color_pattern_code
527       		  INTO lv_color_pattern
528       		  FROM pa_timeline_colors
529       		 WHERE lookup_code = p_lookup_code
530            AND lookup_type = l_lookup_type;
531 
532 		EXCEPTION
533 		WHEN OTHERS THEN
534 			raise;
535 	END;
536 	RETURN(lv_color_pattern);
537 END GET_COLOR_PATTERN_CODE;
538 
539 PROCEDURE debug(p_text IN VARCHAR2) IS
540   -- commented for Bug 5079785
541   --l_debug_mode            VARCHAR2(20) := 'N'; -- Added for Bug 4344821
542 BEGIN
543      -- dbms_output.put_line('log : ' || 'pa.plsql.pa_timeline_pvt' ||
544      --                      ' : ' || p_text);
545 -- commented for Bug 5079785 chenged from l_debug_mode to g_debug_mode
546 --  fnd_profile.get('PA_DEBUG_MODE', l_debug_mode);
547 --  IF l_debug_mode = 'Y' THEN
548   IF g_debug_mode = 'Y' THEN
549      PA_DEBUG.WRITE_LOG(
550        x_module => 'pa.plsql.pa_timeline_pvt',
551        x_msg => p_text,
552        x_log_level => 6);
553      pa_debug.write_file('print_message: ' || 'Log :'||p_text);
554   END IF;
555 END debug;
556 
557 PROCEDURE debug(p_module IN VARCHAR2,
558                 p_msg IN VARCHAR2,
559                 p_log_level IN NUMBER DEFAULT 6) IS
560 -- commented for Bug 5079785
561 --  l_debug_mode            VARCHAR2(20) := 'N'; -- Added for Bug 4344821
562 BEGIN
563      -- dbms_output.put_line('log : ' || p_module || ' : ' || p_msg);
564 -- commented for Bug 5079785 chenged from l_debug_mode to g_debug_mode
565  -- fnd_profile.get('PA_DEBUG_MODE', l_debug_mode);
566 -- IF l_debug_mode = 'Y' THEN
567  IF g_debug_mode ='Y' THEN
568      PA_DEBUG.WRITE_LOG(
569        x_module => p_module,
570        x_msg => p_msg,
571        x_log_level => p_log_level);
572      pa_debug.write_file('print_message: ' || 'Log :'||p_msg);
573   END IF;
574 END debug;
575 
576 
577 END PA_TIMELINE_UTIL;