DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEU_UWQ_UTIL

Source


1 PACKAGE BODY IEU_UWQ_UTIL AS
2 /* $Header: IEUVUTLB.pls 120.0 2005/06/02 15:59:05 appldev noship $ */
3 
4 PROCEDURE ADD_DATES
5  (l_start_date in DATE,
6   l_time_value IN NUMBER,
7   l_time_uom IN VARCHAR2,
8   l_final_date OUT NOCOPY DATE) IS
9 
10 
11 l_curr_date VARCHAR2(25);
12 l_curr_time VARCHAR2(25);
13 l_curr_hh   NUMBER := 0;
14 l_curr_mi   NUMBER := 0;
15 l_curr_ss   NUMBER := 0;
16 l_hh        NUMBER := 0;
17 l_mi        NUMBER := 0;
18 l_ss        NUMBER := 0;
19 
20 BEGIN
21 
22         SELECT to_char(l_start_date, 'hh24:mi:ss')
23         INTO   l_curr_time
24         FROM   dual;
25         l_curr_ss := substr(l_curr_time, instr(l_curr_time, ':', 1, 2) + 1,
26                              length(l_curr_time)- instr(l_curr_time, ':', 1, 2) );
27         l_curr_mi := substr(l_curr_time, instr(l_curr_time, ':', 1, 1) + 1,
28                            (instr(l_curr_time, ':', 1, 2) - instr(l_curr_time, ':', 1, 1) - 1 ) );
29         l_curr_hh := substr(l_curr_time, instr(l_curr_time, ' ', 1, 1) + 1,
30                            (instr(l_curr_time, ':', 1, 1) - instr(l_curr_time, ' ', 1, 1) - 1) );
31 
32     IF (l_time_uom = 'HH')
33     THEN
34 
35         l_ss := l_curr_ss;
36         l_mi := l_curr_mi;
37         l_hh := l_curr_hh + l_time_value;
38         IF (l_hh > 24)
39         THEN
40            l_curr_date := to_char((l_start_date + floor(l_hh/24)), 'dd-mon-yyyy');
41            l_hh := l_hh - (floor(l_hh/24)*24);
42         ELSE
43            l_curr_date := to_char(l_start_date, 'dd-mon-yyyy');
44         END IF;
45 
46         l_curr_date := l_curr_date || ' '||l_hh||':'||l_mi||':'||l_ss;
47  --       l_final_date := to_date(l_curr_date, 'dd-mon-yyyy hh24:mi:ss');
48         l_final_date := FND_DATE.STRING_TO_DATE(l_curr_date, 'dd-mon-yyyy hh24:mi:ss');
49 
50      ELSIF ( l_time_uom = 'MI')
51      THEN
52         l_ss := l_curr_ss;
53         l_mi := l_curr_mi + l_time_value;
54         IF (l_mi > 60)
55         THEN
56           l_hh := l_curr_hh + floor(l_mi/60);
57           l_mi := l_mi - (floor(l_mi/60)*60);
58         ELSE
59           l_hh := l_curr_hh;
60         END IF;
61 
62         IF (l_hh > 24)
63         THEN
64            l_curr_date := to_char((l_start_date + floor(l_hh/24)), 'dd-mon-yyyy');
65            l_hh := l_hh - (floor(l_hh/24)*24);
66         ELSE
67            l_curr_date := to_char(l_start_date, 'dd-mon-yyyy');
68         END IF;
69 
70         l_curr_date := l_curr_date || ' '||l_hh||':'||l_mi||':'||l_ss;
71  --       l_final_date := to_date(l_curr_date, 'dd-mon-yyyy hh24:mi:ss');
72         l_final_date := FND_DATE.STRING_TO_DATE(l_curr_date, 'dd-mon-yyyy hh24:mi:ss');
73 
74      ELSIF ( l_time_uom = 'SS')
75      THEN
76 
77         l_ss := l_curr_ss + l_time_value;
78         IF (l_ss > 60)
79         THEN
80           l_mi := l_curr_mi + floor(l_ss/60);
81           l_ss := l_ss - (floor(l_ss/60)*60);
82         ELSE
83           l_mi := l_curr_mi;
84         END IF;
85         IF (l_mi > 60)
86         THEN
87           l_hh := l_curr_hh + floor(l_mi/60);
88           l_mi := l_mi - (floor(l_mi/60)*60);
89         ELSE
90           l_hh := l_curr_hh;
91         END IF;
92 
93         IF (l_hh > 24)
94         THEN
95            l_curr_date := to_char((l_start_date + floor(l_curr_date/24)), 'dd-mon-yyyy');
96            l_hh := l_hh - (floor(l_curr_date/24)*24);
97         ELSE
98            l_curr_date := to_char(l_start_date,'dd-mon-yyyy');
99         END IF;
100 
101         l_curr_date := l_curr_date || ' '||l_hh||':'||l_mi||':'||l_ss;
102  --       l_final_date := to_date(l_curr_date, 'dd-mon-yyyy hh24:mi:ss');
103         l_final_date := FND_DATE.STRING_TO_DATE(l_curr_date, 'dd-mon-yyyy hh24:mi:ss');
104 
105      ELSIF ( l_time_uom = 'DAYS' )
106      THEN
107        l_final_date := l_start_date + l_time_value;
108 
109      ELSIF ( l_time_uom = 'WEEKS')
110      THEN
111        l_final_date := l_start_date + (l_time_value * 7);
112 
113      ELSIF ( l_time_uom = 'MONTHS' )
114      THEN
115        l_final_date := ADD_MONTHS(l_start_date, l_time_value);
116 
117      END IF;
118 
119  END ADD_DATES;
120 
121 END IEU_UWQ_UTIL;
122