DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_TIMEZONE_PKG

Source


1 package body HZ_TIMEZONE_PKG as
2 /*$Header: ARHTZTHB.pls 115.4 2003/09/05 22:14:21 awu ship $ */
3 procedure INSERT_ROW (
4   X_ROWID in out nocopy VARCHAR2,
5   X_TIMEZONE_ID in NUMBER,
6   X_GLOBAL_TIMEZONE_NAME in VARCHAR2,
7   X_STANDARD_TIME_SHORT_CODE in VARCHAR2,
8   X_DAYLIGHT_SAVINGS_SHORT_CODE in VARCHAR2,
9   X_GMT_DEVIATION_HOURS in NUMBER,
10   X_DAYLIGHT_SAVINGS_TIME_FLAG in VARCHAR2,
11   X_BEGIN_DST_MONTH in VARCHAR2,
12   X_BEGIN_DST_DAY in NUMBER,
13   X_BEGIN_DST_WEEK_OF_MONTH in NUMBER,
14   X_BEGIN_DST_DAY_OF_WEEK in NUMBER,
15   X_BEGIN_DST_HOUR in NUMBER,
16   X_END_DST_MONTH in VARCHAR2,
17   X_END_DST_DAY in NUMBER,
18   X_END_DST_WEEK_OF_MONTH in NUMBER,
19   X_END_DST_DAY_OF_WEEK in NUMBER,
20   X_END_DST_HOUR in NUMBER,
21   X_PRIMARY_ZONE_FLAG in VARCHAR2,
22   X_NAME in VARCHAR2,
23   X_DESCRIPTION in VARCHAR2,
24   X_CREATION_DATE in DATE,
25   X_CREATED_BY in NUMBER,
26   X_LAST_UPDATE_DATE in DATE,
27   X_LAST_UPDATED_BY in NUMBER,
28   X_LAST_UPDATE_LOGIN in NUMBER
29 ) is
30   cursor C is select ROWID from HZ_TIMEZONES
31     where TIMEZONE_ID = X_TIMEZONE_ID
32     ;
33 begin
34   insert into HZ_TIMEZONES (
35     TIMEZONE_ID,
36     GLOBAL_TIMEZONE_NAME,
37     STANDARD_TIME_SHORT_CODE,
38     DAYLIGHT_SAVINGS_SHORT_CODE,
39     GMT_DEVIATION_HOURS,
40     DAYLIGHT_SAVINGS_TIME_FLAG,
41     BEGIN_DST_MONTH,
42     BEGIN_DST_DAY,
43     BEGIN_DST_WEEK_OF_MONTH,
44     BEGIN_DST_DAY_OF_WEEK,
45     BEGIN_DST_HOUR,
46     END_DST_MONTH,
47     END_DST_DAY,
48     END_DST_WEEK_OF_MONTH,
49     END_DST_DAY_OF_WEEK,
50     END_DST_HOUR,
51     PRIMARY_ZONE_FLAG,
52     CREATION_DATE,
53     CREATED_BY,
54     LAST_UPDATE_DATE,
55     LAST_UPDATED_BY,
56     LAST_UPDATE_LOGIN
57   ) values (
58     X_TIMEZONE_ID,
59     X_GLOBAL_TIMEZONE_NAME,
60     X_STANDARD_TIME_SHORT_CODE,
61     X_DAYLIGHT_SAVINGS_SHORT_CODE,
62     X_GMT_DEVIATION_HOURS,
63     X_DAYLIGHT_SAVINGS_TIME_FLAG,
64     X_BEGIN_DST_MONTH,
65     X_BEGIN_DST_DAY,
66     X_BEGIN_DST_WEEK_OF_MONTH,
67     X_BEGIN_DST_DAY_OF_WEEK,
68     X_BEGIN_DST_HOUR,
69     X_END_DST_MONTH,
70     X_END_DST_DAY,
71     X_END_DST_WEEK_OF_MONTH,
72     X_END_DST_DAY_OF_WEEK,
73     X_END_DST_HOUR,
74     X_PRIMARY_ZONE_FLAG,
75     X_CREATION_DATE,
76     X_CREATED_BY,
77     X_LAST_UPDATE_DATE,
78     X_LAST_UPDATED_BY,
79     X_LAST_UPDATE_LOGIN
80   );
81 
82   insert into HZ_TIMEZONES_TL (
83     CREATION_DATE,
84     CREATED_BY,
85     LAST_UPDATE_DATE,
86     LAST_UPDATED_BY,
87     LAST_UPDATE_LOGIN,
88     TIMEZONE_ID,
89     NAME,
90     DESCRIPTION,
91     LANGUAGE,
92     SOURCE_LANG
93   ) select
94     X_CREATION_DATE,
95     X_CREATED_BY,
96     X_LAST_UPDATE_DATE,
97     X_LAST_UPDATED_BY,
98     X_LAST_UPDATE_LOGIN,
99     X_TIMEZONE_ID,
100     X_NAME,
101     X_DESCRIPTION,
102     L.LANGUAGE_CODE,
103     userenv('LANG')
104   from FND_LANGUAGES L
105   where L.INSTALLED_FLAG in ('I', 'B')
106   and not exists
107     (select NULL
108     from HZ_TIMEZONES_TL T
109     where T.TIMEZONE_ID = X_TIMEZONE_ID
110     and T.LANGUAGE = L.LANGUAGE_CODE);
111 
112   open c;
113   fetch c into X_ROWID;
114   if (c%notfound) then
115     close c;
116     raise no_data_found;
117   end if;
118   close c;
119 
120 end INSERT_ROW;
121 
122 procedure LOCK_ROW (
123   X_TIMEZONE_ID in NUMBER,
124   X_GLOBAL_TIMEZONE_NAME in VARCHAR2,
125   X_STANDARD_TIME_SHORT_CODE in VARCHAR2,
126   X_DAYLIGHT_SAVINGS_SHORT_CODE in VARCHAR2,
127   X_GMT_DEVIATION_HOURS in NUMBER,
128   X_DAYLIGHT_SAVINGS_TIME_FLAG in VARCHAR2,
129   X_BEGIN_DST_MONTH in VARCHAR2,
130   X_BEGIN_DST_DAY in NUMBER,
131   X_BEGIN_DST_WEEK_OF_MONTH in NUMBER,
132   X_BEGIN_DST_DAY_OF_WEEK in NUMBER,
133   X_BEGIN_DST_HOUR in NUMBER,
134   X_END_DST_MONTH in VARCHAR2,
135   X_END_DST_DAY in NUMBER,
136   X_END_DST_WEEK_OF_MONTH in NUMBER,
137   X_END_DST_DAY_OF_WEEK in NUMBER,
138   X_END_DST_HOUR in NUMBER,
139   X_PRIMARY_ZONE_FLAG in VARCHAR2,
140   X_NAME in VARCHAR2,
141   X_DESCRIPTION in VARCHAR2
142 ) is
143   cursor c is select
144       GLOBAL_TIMEZONE_NAME,
145       STANDARD_TIME_SHORT_CODE,
146       DAYLIGHT_SAVINGS_SHORT_CODE,
147       GMT_DEVIATION_HOURS,
148       DAYLIGHT_SAVINGS_TIME_FLAG,
149       BEGIN_DST_MONTH,
150       BEGIN_DST_DAY,
151       BEGIN_DST_WEEK_OF_MONTH,
152       BEGIN_DST_DAY_OF_WEEK,
153       BEGIN_DST_HOUR,
154       END_DST_MONTH,
155       END_DST_DAY,
156       END_DST_WEEK_OF_MONTH,
157       END_DST_DAY_OF_WEEK,
158       END_DST_HOUR,
159       PRIMARY_ZONE_FLAG
160     from HZ_TIMEZONES
161     where TIMEZONE_ID = X_TIMEZONE_ID
162     for update of TIMEZONE_ID nowait;
163   recinfo c%rowtype;
164 
165   cursor c1 is select
166       NAME,
167       DESCRIPTION,
168       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
169     from HZ_TIMEZONES_TL
170     where TIMEZONE_ID = X_TIMEZONE_ID
171     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
172     for update of TIMEZONE_ID nowait;
173 begin
174   open c;
175   fetch c into recinfo;
176   if (c%notfound) then
177     close c;
178     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
179     app_exception.raise_exception;
180   end if;
181   close c;
182   if (    (recinfo.GLOBAL_TIMEZONE_NAME = X_GLOBAL_TIMEZONE_NAME)
183       AND (recinfo.STANDARD_TIME_SHORT_CODE = X_STANDARD_TIME_SHORT_CODE)
184       AND ((recinfo.DAYLIGHT_SAVINGS_SHORT_CODE = X_DAYLIGHT_SAVINGS_SHORT_CODE)
185            OR ((recinfo.DAYLIGHT_SAVINGS_SHORT_CODE is null) AND (X_DAYLIGHT_SAVINGS_SHORT_CODE is null)))
186       AND (recinfo.DAYLIGHT_SAVINGS_TIME_FLAG = X_DAYLIGHT_SAVINGS_TIME_FLAG)
187       AND ((recinfo.BEGIN_DST_MONTH = X_BEGIN_DST_MONTH)
188            OR ((recinfo.BEGIN_DST_MONTH is null) AND (X_BEGIN_DST_MONTH is null)))
189       AND ((recinfo.BEGIN_DST_DAY = X_BEGIN_DST_DAY)
190            OR ((recinfo.BEGIN_DST_DAY is null) AND (X_BEGIN_DST_DAY is null)))
191       AND ((recinfo.BEGIN_DST_WEEK_OF_MONTH = X_BEGIN_DST_WEEK_OF_MONTH)
192            OR ((recinfo.BEGIN_DST_WEEK_OF_MONTH is null) AND (X_BEGIN_DST_WEEK_OF_MONTH is null)))
193       AND ((recinfo.BEGIN_DST_DAY_OF_WEEK = X_BEGIN_DST_DAY_OF_WEEK)
194            OR ((recinfo.BEGIN_DST_DAY_OF_WEEK is null) AND (X_BEGIN_DST_DAY_OF_WEEK is null)))
195       AND ((recinfo.BEGIN_DST_HOUR = X_BEGIN_DST_HOUR)
196            OR ((recinfo.BEGIN_DST_HOUR is null) AND (X_BEGIN_DST_HOUR is null)))
197       AND ((recinfo.END_DST_MONTH = X_END_DST_MONTH)
198            OR ((recinfo.END_DST_MONTH is null) AND (X_END_DST_MONTH is null)))
199       AND ((recinfo.END_DST_DAY = X_END_DST_DAY)
200            OR ((recinfo.END_DST_DAY is null) AND (X_END_DST_DAY is null)))
201       AND ((recinfo.END_DST_WEEK_OF_MONTH = X_END_DST_WEEK_OF_MONTH)
202            OR ((recinfo.END_DST_WEEK_OF_MONTH is null) AND (X_END_DST_WEEK_OF_MONTH is null)))
203       AND ((recinfo.END_DST_DAY_OF_WEEK = X_END_DST_DAY_OF_WEEK)
204            OR ((recinfo.END_DST_DAY_OF_WEEK is null) AND (X_END_DST_DAY_OF_WEEK is null)))
205       AND ((recinfo.END_DST_HOUR = X_END_DST_HOUR)
206            OR ((recinfo.END_DST_HOUR is null) AND (X_END_DST_HOUR is null)))
207       AND ((recinfo.PRIMARY_ZONE_FLAG = X_PRIMARY_ZONE_FLAG)
208            OR ((recinfo.PRIMARY_ZONE_FLAG is null) AND (X_PRIMARY_ZONE_FLAG is null)))
209   ) then
210     null;
211   else
212     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
213     app_exception.raise_exception;
214   end if;
215 
216   for tlinfo in c1 loop
217     if (tlinfo.BASELANG = 'Y') then
218       if (    (tlinfo.NAME = X_NAME)
219           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
220                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
221       ) then
222         null;
223       else
224         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
225         app_exception.raise_exception;
226       end if;
227     end if;
228   end loop;
229   return;
230 end LOCK_ROW;
231 
232 procedure UPDATE_ROW (
233   X_TIMEZONE_ID in NUMBER,
234   X_GLOBAL_TIMEZONE_NAME in VARCHAR2,
235   X_STANDARD_TIME_SHORT_CODE in VARCHAR2,
236   X_DAYLIGHT_SAVINGS_SHORT_CODE in VARCHAR2,
237   X_GMT_DEVIATION_HOURS in NUMBER,
238   X_DAYLIGHT_SAVINGS_TIME_FLAG in VARCHAR2,
239   X_BEGIN_DST_MONTH in VARCHAR2,
240   X_BEGIN_DST_DAY in NUMBER,
241   X_BEGIN_DST_WEEK_OF_MONTH in NUMBER,
242   X_BEGIN_DST_DAY_OF_WEEK in NUMBER,
243   X_BEGIN_DST_HOUR in NUMBER,
244   X_END_DST_MONTH in VARCHAR2,
245   X_END_DST_DAY in NUMBER,
246   X_END_DST_WEEK_OF_MONTH in NUMBER,
247   X_END_DST_DAY_OF_WEEK in NUMBER,
248   X_END_DST_HOUR in NUMBER,
249   X_PRIMARY_ZONE_FLAG in VARCHAR2,
250   X_NAME in VARCHAR2,
251   X_DESCRIPTION in VARCHAR2,
252   X_LAST_UPDATE_DATE in DATE,
253   X_LAST_UPDATED_BY in NUMBER,
254   X_LAST_UPDATE_LOGIN in NUMBER
255 ) is
256 begin
257   update HZ_TIMEZONES set
258     GLOBAL_TIMEZONE_NAME = X_GLOBAL_TIMEZONE_NAME,
259     STANDARD_TIME_SHORT_CODE = X_STANDARD_TIME_SHORT_CODE,
260     DAYLIGHT_SAVINGS_SHORT_CODE = X_DAYLIGHT_SAVINGS_SHORT_CODE,
261     GMT_DEVIATION_HOURS = X_GMT_DEVIATION_HOURS,
262     DAYLIGHT_SAVINGS_TIME_FLAG = X_DAYLIGHT_SAVINGS_TIME_FLAG,
263     BEGIN_DST_MONTH = X_BEGIN_DST_MONTH,
264     BEGIN_DST_DAY = X_BEGIN_DST_DAY,
265     BEGIN_DST_WEEK_OF_MONTH = X_BEGIN_DST_WEEK_OF_MONTH,
266     BEGIN_DST_DAY_OF_WEEK = X_BEGIN_DST_DAY_OF_WEEK,
267     BEGIN_DST_HOUR = X_BEGIN_DST_HOUR,
268     END_DST_MONTH = X_END_DST_MONTH,
269     END_DST_DAY = X_END_DST_DAY,
270     END_DST_WEEK_OF_MONTH = X_END_DST_WEEK_OF_MONTH,
271     END_DST_DAY_OF_WEEK = X_END_DST_DAY_OF_WEEK,
272     END_DST_HOUR = X_END_DST_HOUR,
273     PRIMARY_ZONE_FLAG = X_PRIMARY_ZONE_FLAG,
274     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
275     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
276     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
277   where TIMEZONE_ID = X_TIMEZONE_ID;
278 
279   if (sql%notfound) then
280     raise no_data_found;
281   end if;
282 
283   update HZ_TIMEZONES_TL set
284     NAME = X_NAME,
285     DESCRIPTION = X_DESCRIPTION,
286     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
287     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
288     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
289     SOURCE_LANG = userenv('LANG')
290   where TIMEZONE_ID = X_TIMEZONE_ID
291   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
292 
293   if (sql%notfound) then
294     raise no_data_found;
295   end if;
296 end UPDATE_ROW;
297 
298 procedure DELETE_ROW (
299   X_TIMEZONE_ID in NUMBER
300 ) is
301 begin
302   delete from HZ_TIMEZONES_TL
303   where TIMEZONE_ID = X_TIMEZONE_ID;
304 
305   if (sql%notfound) then
306     raise no_data_found;
307   end if;
308 
309   delete from HZ_TIMEZONES
310   where TIMEZONE_ID = X_TIMEZONE_ID;
311 
312   if (sql%notfound) then
313     raise no_data_found;
314   end if;
315 end DELETE_ROW;
316 
317 procedure ADD_LANGUAGE
318 is
319 begin
320   delete from HZ_TIMEZONES_TL T
321   where not exists
322     (select NULL
323     from HZ_TIMEZONES B
324     where B.TIMEZONE_ID = T.TIMEZONE_ID
325     );
326 
327   update HZ_TIMEZONES_TL T set (
328       NAME,
329       DESCRIPTION
330     ) = (select
331       B.NAME,
332       B.DESCRIPTION
333     from HZ_TIMEZONES_TL B
334     where B.TIMEZONE_ID = T.TIMEZONE_ID
335     and B.LANGUAGE = T.SOURCE_LANG)
336   where (
337       T.TIMEZONE_ID,
338       T.LANGUAGE
339   ) in (select
340       SUBT.TIMEZONE_ID,
341       SUBT.LANGUAGE
342     from HZ_TIMEZONES_TL SUBB, HZ_TIMEZONES_TL SUBT
343     where SUBB.TIMEZONE_ID = SUBT.TIMEZONE_ID
344     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
345     and (SUBB.NAME <> SUBT.NAME
346       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
347       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
348       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
349   ));
350 
351   insert into HZ_TIMEZONES_TL (
352     CREATION_DATE,
353     CREATED_BY,
354     LAST_UPDATE_DATE,
355     LAST_UPDATED_BY,
356     LAST_UPDATE_LOGIN,
357     TIMEZONE_ID,
358     NAME,
359     DESCRIPTION,
360     LANGUAGE,
361     SOURCE_LANG
362   ) select
363     B.CREATION_DATE,
364     B.CREATED_BY,
365     B.LAST_UPDATE_DATE,
366     B.LAST_UPDATED_BY,
367     B.LAST_UPDATE_LOGIN,
368     B.TIMEZONE_ID,
369     B.NAME,
370     B.DESCRIPTION,
371     L.LANGUAGE_CODE,
372     B.SOURCE_LANG
373   from HZ_TIMEZONES_TL B, FND_LANGUAGES L
374   where L.INSTALLED_FLAG in ('I', 'B')
375   and B.LANGUAGE = userenv('LANG')
376   and not exists
377     (select NULL
378     from HZ_TIMEZONES_TL T
379     where T.TIMEZONE_ID = B.TIMEZONE_ID
380     and T.LANGUAGE = L.LANGUAGE_CODE);
381 end ADD_LANGUAGE;
382 
383 end HZ_TIMEZONE_PKG;