DBA Data[Home] [Help]

PACKAGE BODY: APPS.IEC_G_CAL_DAYS_PKG

Source


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