DBA Data[Home] [Help]

PACKAGE BODY: APPS.BSC_CALENDAR_PVT

Source


1 PACKAGE BODY BSC_CALENDAR_PVT AS
2 /* $Header: BSCVCALB.pls 120.2 2005/11/30 02:47:25 kyadamak noship $ */
3 /*
4 REM +==================================================================================+
5 REM |    Copyright (c) 2004 Oracle Corporation, Redwood Shores, CA, USA                |
6 REM |                         All rights reserved.                                     |
7 REM +==================================================================================+
8 REM | FILENAME                                                                         |
9 REM |     BSCVCALB.pls                                                                 |
10 REM |                                                                                  |
11 REM | DESCRIPTION                                                                      |
12 REM |     Module: Private package for populating the calendar  tables                  |
13 REM | NOTES                                                                            |
14 REM | 07-JUN-2005 Krishna  Created.                                                    |
15 REM | 31-AUG-2004 Aditya Rao fixed Bug#4565308 for START_DAY of fiscal year            |
16 REM | 29-NOV-2005 kyadamak Added API Update_PeriodNames_In_Calendar for Enh#4711274    |
17 REM +==================================================================================+
18 */
19 
20 G_PKG_NAME CONSTANT VARCHAR2(30):='BSC_CALENDAR_PVT';
21 
22 PROCEDURE Create_Calendar
23 ( p_Api_Version            IN          NUMBER
24 , p_Commit                 IN          VARCHAR2
25 , p_Calendar_Record        IN          BSC_CALENDAR_PUB.Calendar_Type_Record
26 , x_Return_Status          OUT NOCOPY  VARCHAR2
27 , x_Msg_Count              OUT NOCOPY  NUMBER
28 , x_Msg_Data               OUT NOCOPY  VARCHAR2
29 )IS
30 
31 BEGIN
32   SAVEPOINT CreateCalendarSP;
33   FND_MSG_PUB.Initialize;
34   x_Return_Status := FND_API.G_RET_STS_SUCCESS;
35 
36   INSERT INTO bsc_sys_calendars_b
37   ( calendar_id
38   , edw_flag
39   , edw_calendar_id
40   , edw_calendar_type_id
41   , fiscal_year
42   , fiscal_change
43   , range_yr_mod
44   , current_year
45   , start_month
46   , start_day
47   , created_by
48   , creation_date
49   , last_updated_by
50   , last_update_date
51   , last_update_login
52   , short_name
53   )
54   VALUES
55   ( p_Calendar_Record.Calendar_Id
56   , p_Calendar_Record.Edw_Flag
57   , p_Calendar_Record.Edw_Calendar_Id
58   , p_Calendar_Record.Edw_Calendar_Type_Id
59   , p_Calendar_Record.Fiscal_Year
60   , p_Calendar_Record.Fiscal_Change
61   , p_Calendar_Record.Range_Yr_Mod
62   , p_Calendar_Record.Current_Year
63   , p_Calendar_Record.Start_Month
64   , p_Calendar_Record.Start_Day
65   , NVL(p_Calendar_Record.Created_By,FND_GLOBAL.USER_ID)
66   , NVL(p_Calendar_Record.Creation_Date,SYSDATE)
67   , NVL(p_Calendar_Record.Last_Updated_By,FND_GLOBAL.USER_ID)
68   , NVL(p_Calendar_Record.Last_Update_Date,SYSDATE)
69   , NVL(p_Calendar_Record.Last_Update_Login,FND_GLOBAL.LOGIN_ID)
70   , p_Calendar_Record.Dim_Short_Name
71   );
72 
73   INSERT INTO bsc_sys_calendars_tl
74   ( calendar_id
75   , language
76   , source_lang
77   , name
78   , help
79   , created_by
80   , creation_date
81   , last_updated_by
82   , last_update_date
83   , last_update_login
84   )
85   SELECT
86     p_Calendar_Record.Calendar_Id
87   , L.LANGUAGE_CODE
88   , USERENV('LANG')
89   , p_Calendar_Record.name
90   , p_Calendar_Record.Help
91   , NVL(p_Calendar_Record.Created_By,FND_GLOBAL.USER_ID)
92   , NVL(p_Calendar_Record.Last_Update_Date,SYSDATE)
93   , NVL(p_Calendar_Record.Last_Updated_By,FND_GLOBAL.USER_ID)
94   , NVL(p_Calendar_Record.Last_Update_Date,SYSDATE)
95   , NVL(p_Calendar_Record.Last_Update_Login,FND_GLOBAL.LOGIN_ID)
96   FROM FND_LANGUAGES L
97   WHERE L.INSTALLED_FLAG IN ('I', 'B')
98   AND NOT EXISTS
99   (
100     SELECT NULL
101     FROM   bsc_sys_calendars_tl T
102     WHERE  T.calendar_id = p_Calendar_Record.Calendar_Id
103     AND    T.LANGUAGE    = L.LANGUAGE_CODE
104   );
105 
106   IF ((p_Commit IS NOT NULL) AND (p_Commit = FND_API.G_TRUE)) THEN
107     COMMIT;
108   END IF;
109 
110 EXCEPTION
111   WHEN NO_DATA_FOUND THEN
112     ROLLBACK TO CreateCalendarSP;
113     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
114     IF (x_msg_data IS NOT NULL) THEN
115       x_msg_data      :=  x_msg_data||' -> BSC_CALENDAR_PVT.Create_Calendar ';
116     ELSE
117       x_msg_data      :=  SQLERRM||' at BSC_CALENDAR_PVT.Create_Calendar ';
118     END IF;
119   WHEN OTHERS THEN
120     ROLLBACK TO CreateCalendarSP;
121     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
122     IF (x_msg_data IS NOT NULL) THEN
123       x_msg_data      :=  x_msg_data||' -> BSC_CALENDAR_PVT.Create_Calendar ';
124     ELSE
125       x_msg_data      :=  SQLERRM||' at BSC_CALENDAR_PVT.Create_Calendar ';
126     END IF;
127 END Create_Calendar;
128 
129 /****************************************************************************************/
130 
131 PROCEDURE Update_Calendar
132 ( p_Api_Version            IN          NUMBER
133 , p_Commit                 IN          VARCHAR2
134 , p_Calendar_Record        IN          BSC_CALENDAR_PUB.Calendar_Type_Record
135 , x_Return_Status          OUT NOCOPY  VARCHAR2
136 , x_Msg_Count              OUT NOCOPY  NUMBER
137 , x_Msg_Data               OUT NOCOPY  VARCHAR2
138 )IS
139 l_System_Stage   bsc_sys_init.property_value%TYPE;
140 BEGIN
141   SAVEPOINT UpdateCalendarSP;
142   FND_MSG_PUB.Initialize;
143   x_Return_Status := FND_API.G_RET_STS_SUCCESS;
144 
145   -- added for Bug#4565308
146   UPDATE bsc_sys_calendars_b
147   SET  fiscal_year        = p_Calendar_Record.Fiscal_Year
148      , current_year       = p_Calendar_Record.Current_Year
149      , start_month        = p_Calendar_Record.Start_Month
150      , start_day          = p_Calendar_Record.Start_Day
151      , last_updated_by    = p_Calendar_Record.Last_Updated_By
152      , last_update_date   = p_Calendar_Record.Last_Update_Date
153      , last_update_login  = p_Calendar_Record.Last_Update_Login
154   WHERE calendar_id       = p_Calendar_Record.Calendar_Id;
155 
156   UPDATE bsc_sys_calendars_tl
157   SET  name               = p_Calendar_Record.Name
158      , help               = p_Calendar_Record.Help
159      , last_updated_by    = p_Calendar_Record.Last_Updated_By
160      , last_update_date   = p_Calendar_Record.Last_Update_Date
161      , last_update_login  = p_Calendar_Record.Last_Update_Login
162      , source_lang        = USERENV('LANG')
163   WHERE calendar_id       = p_Calendar_Record.Calendar_Id
164   AND USERENV('LANG')     IN (LANGUAGE, SOURCE_LANG);
165 
166   UPDATE bsc_kpi_periodicities
167   SET    current_period = p_Calendar_Record.Fiscal_Year
168   WHERE  periodicity_id IN
169   ( SELECT periodicity_id
170     FROM   bsc_sys_periodicities
171     WHERE  calendar_id = p_Calendar_Record.Calendar_Id
172     AND    periodicity_type = 1
173   );
174 
175   IF ((p_Commit IS NOT NULL) AND (p_Commit = FND_API.G_TRUE)) THEN
176     COMMIT;
177   END IF;
178 
179 EXCEPTION
180   WHEN NO_DATA_FOUND THEN
181     ROLLBACK TO UpdateCalendarSP;
182     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
183     IF (x_msg_data IS NOT NULL) THEN
184       x_msg_data      :=  x_msg_data||' -> BSC_CALENDAR_PVT.Update_Calendar ';
185     ELSE
186       x_msg_data      :=  SQLERRM||' at BSC_CALENDAR_PVT.Update_Calendar ';
187     END IF;
188   WHEN OTHERS THEN
189     ROLLBACK TO UpdateCalendarSP;
190     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
191     IF (x_msg_data IS NOT NULL) THEN
192       x_msg_data      :=  x_msg_data||' -> BSC_CALENDAR_PVT.Update_Calendar ';
193     ELSE
194       x_msg_data      :=  SQLERRM||' at BSC_CALENDAR_PVT.Update_Calendar ';
195     END IF;
196 END Update_Calendar;
197 
198 PROCEDURE Delete_Calendar
199 ( p_Api_Version            IN          NUMBER
200 , p_Commit                 IN          VARCHAR2
201 , p_Calendar_Record        IN          BSC_CALENDAR_PUB.Calendar_Type_Record
202 , x_Return_Status          OUT NOCOPY  VARCHAR2
203 , x_Msg_Count              OUT NOCOPY  NUMBER
204 , x_Msg_Data               OUT NOCOPY  VARCHAR2
205 )IS
206 
207 BEGIN
208   SAVEPOINT DeleteCalendarSP;
209   FND_MSG_PUB.Initialize;
210   x_Return_Status := FND_API.G_RET_STS_SUCCESS;
211 
212   DELETE bsc_db_week_maps
213   WHERE  calendar_id = p_Calendar_Record.Calendar_Id;
214 
215   DELETE bsc_db_calendar
216   WHERE  calendar_id = p_Calendar_Record.Calendar_Id;
217 
218   DELETE bsc_sys_periods_tl
219   WHERE  periodicity_id IN
220   (
221     SELECT periodicity_id
222     FROM   bsc_sys_periodicities
223     WHERE  calendar_id = p_Calendar_Record.Calendar_Id
224   );
225 
226   DELETE bsc_sys_periods
227   WHERE  periodicity_id IN
228   (
229     SELECT periodicity_id
230     FROM   bsc_sys_periodicities
231     WHERE  calendar_id = p_Calendar_Record.Calendar_Id
232   );
233 
234   DELETE bsc_sys_periodicities_tl
235   WHERE  periodicity_id IN
236   (
237     SELECT periodicity_id
238     FROM   bsc_sys_periodicities
239     WHERE  calendar_id = p_Calendar_Record.Calendar_Id
240   );
241 
242   DELETE bsc_sys_periodicities
243   WHERE  calendar_id = p_Calendar_Record.Calendar_Id;
244 
245   DELETE bsc_sys_calendars_tl
246   WHERE  calendar_id = p_Calendar_Record.Calendar_Id;
247   --dbms_output.put_line(' deleting from bsc_sys_calendars_b with calendar id as :- ' || p_Calendar_Record.Calendar_Id);
248 
249   DELETE bsc_sys_calendars_b
250   WHERE  calendar_id = p_Calendar_Record.Calendar_Id;
251 
252   IF ((p_Commit IS NOT NULL) AND (p_Commit = FND_API.G_TRUE)) THEN
253     COMMIT;
254   END IF;
255 
256 EXCEPTION
257   WHEN NO_DATA_FOUND THEN
258     ROLLBACK TO DeleteCalendarSP;
259     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
260     IF (x_msg_data IS NOT NULL) THEN
261       x_msg_data      :=  x_msg_data||' -> BSC_CALENDAR_PVT.Delete_Calendar ';
262     ELSE
263       x_msg_data      :=  SQLERRM||' at BSC_CALENDAR_PVT.Delete_Calendar ';
264     END IF;
265   WHEN OTHERS THEN
266     ROLLBACK TO DeleteCalendarSP;
267     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
268     IF (x_msg_data IS NOT NULL) THEN
269       x_msg_data      :=  x_msg_data||' -> BSC_CALENDAR_PVT.Delete_Calendar ';
270     ELSE
271       x_msg_data      :=  SQLERRM||' at BSC_CALENDAR_PVT.Delete_Calendar ';
272     END IF;
273 END Delete_Calendar;
274 
275 PROCEDURE Update_Fiscal_Change
276 ( p_Api_Version            IN          NUMBER
277 , p_Commit                 IN          VARCHAR2
278 , p_Calendar_Id            IN          NUMBER
279 , x_Return_Status          OUT NOCOPY  VARCHAR2
280 , x_Msg_Count              OUT NOCOPY  NUMBER
281 , x_Msg_Data               OUT NOCOPY  VARCHAR2
282 )IS
283 BEGIN
284   SAVEPOINT DeleteCalendarSP;
285   FND_MSG_PUB.Initialize;
286   x_Return_Status := FND_API.G_RET_STS_SUCCESS;
287 
288   UPDATE bsc_sys_calendars_b
289   SET    fiscal_change = 1
290   WHERE  calendar_id = p_Calendar_Id;
291 
292   IF ((p_Commit IS NOT NULL) AND (p_Commit = FND_API.G_TRUE)) THEN
293     COMMIT;
294   END IF;
295 
296 EXCEPTION
297   WHEN NO_DATA_FOUND THEN
298     ROLLBACK TO DeleteCalendarSP;
299     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
300     IF (x_msg_data IS NOT NULL) THEN
301       x_msg_data      :=  x_msg_data||' -> BSC_CALENDAR_PVT.Update_Fiscal_Change ';
302     ELSE
303       x_msg_data      :=  SQLERRM||' at BSC_CALENDAR_PVT.Update_Fiscal_Change ';
304     END IF;
305   WHEN OTHERS THEN
306     ROLLBACK TO DeleteCalendarSP;
307     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
308     IF (x_msg_data IS NOT NULL) THEN
309       x_msg_data      :=  x_msg_data||' -> BSC_CALENDAR_PVT.Update_Fiscal_Change ';
310     ELSE
311       x_msg_data      :=  SQLERRM||' at BSC_CALENDAR_PVT.Update_Fiscal_Change ';
312     END IF;
313 END Update_Fiscal_Change;
314 
315 PROCEDURE Update_PeriodNames_In_Calendar
316 ( p_Calendar_Id            IN  NUMBER
317 , x_Return_Status          OUT NOCOPY  VARCHAR2
318 , x_Msg_Count              OUT NOCOPY  NUMBER
319 , x_Msg_Data               OUT NOCOPY  VARCHAR2
320 ) IS
321 
322 CURSOR C_Period_Names IS
323 SELECT BSCPER.short_name
324       ,BSCPER.name
325       ,BSCDIM.dim_level_id
326       ,BISDIM.level_id
327 FROM   bsc_sys_periodicities_vl BSCPER,
328        bsc_sys_dim_levels_vl    BSCDIM,
329        bis_levels_vl            BISDIM
330 WHERE  BSCPER.short_name = BSCDIM.short_name
331 AND    BSCPER.short_name = BISDIM.short_name
332 AND    BSCDIM.short_name = BISDIM.short_name
333 AND    BSCPER.calendar_id = p_Calendar_Id;
334 
335 
336 l_Dimobj_New_Name     BSC_SYS_DIM_LEVELS_TL.NAME%TYPE;
337 
338 BEGIN
339   FOR CD IN C_Period_Names LOOP
340     l_Dimobj_New_Name := BSC_PERIODS_UTILITY_PKG.get_Dimobj_Name_From_period
341                          ( p_Calendar_Id      => p_Calendar_Id
342                          , p_Periodicity_Name => CD.name
343                          );
344 
345     UPDATE bsc_sys_dim_levels_tl
346     SET    name         = l_Dimobj_New_Name
347           ,SOURCE_LANG  = userenv('LANG')
348     WHERE  dim_level_id = CD.dim_level_id
349     AND USERENV('LANG') IN (LANGUAGE, SOURCE_LANG);
350 
351     UPDATE bis_levels_tl
352     SET    name         = l_Dimobj_New_Name
353           ,SOURCE_LANG  = userenv('LANG')
354     WHERE  level_id     = CD.level_id
355     AND USERENV('LANG') IN (LANGUAGE, SOURCE_LANG);
356 
357   END LOOP;
358 
359 EXCEPTION
360   WHEN NO_DATA_FOUND THEN
361     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
362     IF (x_msg_data IS NOT NULL) THEN
363       x_msg_data      :=  x_msg_data||' -> BSC_CALENDAR_PVT.Update_PeriodNames_In_Calendar ';
364     ELSE
365       x_msg_data      :=  SQLERRM||' at BSC_CALENDAR_PVT.Update_PeriodNames_In_Calendar ';
366     END IF;
367   WHEN OTHERS THEN
368     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
369     IF (x_msg_data IS NOT NULL) THEN
370       x_msg_data      :=  x_msg_data||' -> BSC_CALENDAR_PVT.Update_PeriodNames_In_Calendar ';
371     ELSE
372       x_msg_data      :=  SQLERRM||' at BSC_CALENDAR_PVT.Update_PeriodNames_In_Calendar ';
373     END IF;
374 
375 END Update_PeriodNames_In_Calendar;
376 
377 
378 END BSC_CALENDAR_PVT;