[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;