[Home] [Help]
PACKAGE BODY: APPS.FND_DOCUMENT_DATATYPES_PKG
Source
1 package body FND_DOCUMENT_DATATYPES_PKG as
2 /* $Header: AFAKDTPB.pls 115.15 2004/05/27 21:07:41 blash ship $ */
3
4
5 procedure INSERT_ROW (
6 X_ROWID in out NOCOPY VARCHAR2,
7 X_DATATYPE_ID in NUMBER,
8 X_LANGUAGE in VARCHAR2,
9 X_NAME in VARCHAR2,
10 X_START_DATE_ACTIVE in DATE,
11 X_END_DATE_ACTIVE in DATE,
12 X_USER_NAME in VARCHAR2,
13 X_CREATION_DATE in DATE,
14 X_CREATED_BY in NUMBER,
15 X_LAST_UPDATE_DATE in DATE,
16 X_LAST_UPDATED_BY in NUMBER,
17 X_LAST_UPDATE_LOGIN in NUMBER
18 )is
19 cursor C is select ROWID from FND_DOCUMENT_DATATYPES
20 where DATATYPE_ID = X_DATATYPE_ID
21 and LANGUAGE = X_LANGUAGE
22 and NAME = X_NAME
23 and LANGUAGE = userenv('LANG');
24 begin
25 insert into FND_DOCUMENT_DATATYPES (
26 DATATYPE_ID,
27 NAME,
28 USER_NAME,
29 CREATION_DATE,
30 CREATED_BY,
31 LAST_UPDATE_DATE,
32 LAST_UPDATED_BY,
33 LAST_UPDATE_LOGIN,
34 START_DATE_ACTIVE,
35 END_DATE_ACTIVE,
36 LANGUAGE,
37 SOURCE_LANG
38 ) select
39 X_DATATYPE_ID,
40 X_NAME,
41 X_USER_NAME,
42 X_CREATION_DATE,
43 X_CREATED_BY,
44 X_LAST_UPDATE_DATE,
45 X_LAST_UPDATED_BY,
46 X_LAST_UPDATE_LOGIN,
47 X_START_DATE_ACTIVE,
48 X_END_DATE_ACTIVE,
49 L.LANGUAGE_CODE,
50 userenv('LANG')
51 from FND_LANGUAGES L
52 where L.INSTALLED_FLAG in ('I', 'B')
53 and not exists
54 (select NULL
55 from FND_DOCUMENT_DATATYPES T
56 where T.DATATYPE_ID = X_DATATYPE_ID
57 and T.LANGUAGE = X_LANGUAGE
58 and T.NAME = X_NAME
59 and T.LANGUAGE = L.LANGUAGE_CODE);
60
61 open c;
62 fetch c into X_ROWID;
63 if (c%notfound) then
64 close c;
65 raise no_data_found;
66 end if;
67 close c;
68
69 end INSERT_ROW;
70
71 procedure LOCK_ROW (
72 X_DATATYPE_ID in NUMBER,
73 X_LANGUAGE in VARCHAR2,
74 X_NAME in VARCHAR2,
75 X_START_DATE_ACTIVE in DATE,
76 X_END_DATE_ACTIVE in DATE,
77 X_USER_NAME in VARCHAR2
78 ) is
79 cursor c1 is select
80 START_DATE_ACTIVE,
81 END_DATE_ACTIVE,
82 USER_NAME
83 from FND_DOCUMENT_DATATYPES
84 where DATATYPE_ID = X_DATATYPE_ID
85 and LANGUAGE = X_LANGUAGE
86 and NAME = X_NAME
87 and LANGUAGE = userenv('LANG')
88 for update of DATATYPE_ID nowait;
89 tlinfo c1%rowtype;
90
91 begin
92 open c1;
93 fetch c1 into tlinfo;
94 if (c1%notfound) then
95 close c1;
96 return;
97 end if;
98 close c1;
99
100 if ( (tlinfo.USER_NAME = X_USER_NAME)
101 AND ((tlinfo.START_DATE_ACTIVE = X_START_DATE_ACTIVE)
102 OR ((tlinfo.START_DATE_ACTIVE is null) AND (X_START_DATE_ACTIVE is null)))
103 AND ((tlinfo.END_DATE_ACTIVE = X_END_DATE_ACTIVE)
104 OR ((tlinfo.END_DATE_ACTIVE is null) AND (X_END_DATE_ACTIVE is null)))
105 ) then
106 null;
107 else
108 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
109 app_exception.raise_exception;
110 end if;
111 return;
112 end LOCK_ROW;
113
114 procedure UPDATE_ROW (
115 X_DATATYPE_ID in NUMBER,
116 X_LANGUAGE in VARCHAR2,
117 X_NAME in VARCHAR2,
118 X_START_DATE_ACTIVE in DATE,
119 X_END_DATE_ACTIVE in DATE,
120 X_USER_NAME in VARCHAR2,
121 X_LAST_UPDATE_DATE in DATE,
122 X_LAST_UPDATED_BY in NUMBER,
123 X_LAST_UPDATE_LOGIN in NUMBER
124 ) is
125 begin
126 update FND_DOCUMENT_DATATYPES set
127 START_DATE_ACTIVE = X_START_DATE_ACTIVE,
128 END_DATE_ACTIVE = X_END_DATE_ACTIVE,
129 USER_NAME = X_USER_NAME,
130 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
131 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
132 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
133 SOURCE_LANG = userenv('LANG')
134 where DATATYPE_ID = X_DATATYPE_ID
135 and LANGUAGE = X_LANGUAGE
136 and NAME = X_NAME
137 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
138
139 if (sql%notfound) then
140 raise no_data_found;
141 end if;
142 end UPDATE_ROW;
143
144 procedure DELETE_ROW (
145 X_DATATYPE_ID in NUMBER,
146 X_LANGUAGE in VARCHAR2,
147 X_NAME in VARCHAR2
148 ) is
149 begin
150 delete from FND_DOCUMENT_DATATYPES
151 where DATATYPE_ID = X_DATATYPE_ID
152 and LANGUAGE = X_LANGUAGE
153 and NAME = X_NAME;
154
155 if (sql%notfound) then
156 raise no_data_found;
157 end if;
158 end DELETE_ROW;
159
160 procedure ADD_LANGUAGE
161 is
162 begin
163
164 /* Mar/19/03 requested by Ric Ginsberg */
165 /* The following update statements are commented out */
166 /* as a quick workaround to fix the time-consuming table handler issue */
167 /* Eventually we'll need to turn them into a separate fix_language procedure */
168 /*
169
170 update FND_DOCUMENT_DATATYPES T set (
171 USER_NAME
172 ) = (select
173 B.USER_NAME
174 from FND_DOCUMENT_DATATYPES B
175 where B.DATATYPE_ID = T.DATATYPE_ID
176 and B.NAME = T.NAME
177 and B.LANGUAGE = T.SOURCE_LANG)
178 where (
179 T.DATATYPE_ID,
180 T.NAME,
181 T.LANGUAGE
182 ) in (select
183 SUBT.DATATYPE_ID,
184 SUBT.NAME,
185 SUBT.LANGUAGE
186 from FND_DOCUMENT_DATATYPES SUBB, FND_DOCUMENT_DATATYPES SUBT
187 where SUBB.DATATYPE_ID = SUBT.DATATYPE_ID
188 and SUBB.NAME = SUBT.NAME
189 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
190 and (SUBB.USER_NAME <> SUBT.USER_NAME
191 ));
192 */
193
194 insert into FND_DOCUMENT_DATATYPES (
195 DATATYPE_ID,
196 NAME,
197 USER_NAME,
198 CREATION_DATE,
199 CREATED_BY,
200 LAST_UPDATE_DATE,
201 LAST_UPDATED_BY,
202 LAST_UPDATE_LOGIN,
203 START_DATE_ACTIVE,
204 END_DATE_ACTIVE,
205 LANGUAGE,
206 SOURCE_LANG
207 ) select
208 B.DATATYPE_ID,
209 B.NAME,
210 B.USER_NAME,
211 B.CREATION_DATE,
212 B.CREATED_BY,
213 B.LAST_UPDATE_DATE,
214 B.LAST_UPDATED_BY,
215 B.LAST_UPDATE_LOGIN,
216 B.START_DATE_ACTIVE,
217 B.END_DATE_ACTIVE,
218 L.LANGUAGE_CODE,
219 B.SOURCE_LANG
220 from FND_DOCUMENT_DATATYPES B, FND_LANGUAGES L
221 where L.INSTALLED_FLAG in ('I', 'B')
222 and B.LANGUAGE = userenv('LANG')
223 and not exists
224 (select NULL
225 from FND_DOCUMENT_DATATYPES T
226 where T.DATATYPE_ID = B.DATATYPE_ID
227 and T.NAME = B.NAME
228 and T.LANGUAGE = L.LANGUAGE_CODE);
229 end ADD_LANGUAGE;
230
231 procedure TRANSLATE_ROW (
232 X_DATATYPE_ID in VARCHAR2,
233 X_NAME in VARCHAR2,
234 X_USER_NAME in VARCHAR2,
235 X_OWNER in VARCHAR2) IS
236 begin
237
238 update fnd_document_datatypes set
239 user_name = nvl(X_USER_NAME,user_name),
240 last_update_date = sysdate,
241 last_updated_by = decode(X_OWNER, 'SEED', 1, 0),
242 last_update_login = 0,
243 source_lang = userenv('LANG')
244 where name = X_NAME
245 and datatype_id = to_number(X_DATATYPE_ID)
246 and userenv('LANG') in (language, source_lang);
247
248 end TRANSLATE_ROW;
249
250 -- Overloaded for BUG 3087292.
251 procedure TRANSLATE_ROW (
252 X_DATATYPE_ID in VARCHAR2,
253 X_NAME in VARCHAR2,
254 X_USER_NAME in VARCHAR2,
255 X_OWNER in VARCHAR2,
256 X_LAST_UPDATE_DATE in VARCHAR2,
257 X_CUSTOM_MODE in VARCHAR2) IS
258
259 f_luby number; -- entity owner in file
260 f_ludate date; -- entity update date in file
261 db_luby number; -- entity owner in db
262 db_ludate date; -- entity update date in db
263
264 begin
265 -- Translate owner to file_last_updated_by
266 f_luby := fnd_load_util.owner_id(x_owner);
267
268 -- Translate char last_update_date to date
269 f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
270
271 select LAST_UPDATED_BY, LAST_UPDATE_DATE
272 into db_luby, db_ludate
273 from fnd_document_datatypes
274 where name = X_NAME
275 and datatype_id = to_number(X_DATATYPE_ID)
276 and LANGUAGE = userenv('LANG');
277
278 if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
279 db_ludate, X_CUSTOM_MODE)) then
280 update fnd_document_datatypes set
281 user_name = nvl(X_USER_NAME,user_name),
282 last_update_date = f_ludate,
283 last_updated_by = f_luby,
284 last_update_login = 0,
285 source_lang = userenv('LANG')
286 where name = X_NAME
287 and datatype_id = to_number(X_DATATYPE_ID)
288 and userenv('LANG') in (language, source_lang);
289 end if;
290
291 end TRANSLATE_ROW;
292
293 procedure LOAD_ROW (
294 X_DATATYPE_ID in VARCHAR2,
295 X_NAME in VARCHAR2,
296 X_OWNER in VARCHAR2,
297 X_START_DATE_ACTIVE in VARCHAR2,
298 X_END_DATE_ACTIVE in VARCHAR2,
299 X_USER_NAME in VARCHAR2)
300 IS
301 l_user_id number := 0 ;
302 l_row_id varchar2(64);
303
304 begin
305
306 if (X_OWNER = 'SEED') then
307 l_user_id := 1;
308 end if;
309
310 UPDATE_ROW (
311 X_DATATYPE_ID => to_number(X_DATATYPE_ID),
312 X_LANGUAGE => userenv('LANG'),
313 X_NAME => X_NAME,
314 X_START_DATE_ACTIVE => to_date(X_START_DATE_ACTIVE, 'YYYY/MM/DD'),
315 X_END_DATE_ACTIVE => to_date(X_END_DATE_ACTIVE, 'YYYY/MM/DD'),
316 X_USER_NAME => X_USER_NAME,
317 X_LAST_UPDATE_DATE => sysdate,
318 X_LAST_UPDATED_BY => l_user_id,
319 X_LAST_UPDATE_LOGIN => 0 );
320
321 exception
322 when NO_DATA_FOUND then
323
324 INSERT_ROW (
325 X_ROWID => l_row_id,
326 X_DATATYPE_ID => to_number(X_DATATYPE_ID),
327 X_LANGUAGE => userenv('LANG'),
328 X_NAME => X_NAME,
329 X_START_DATE_ACTIVE => to_date(X_START_DATE_ACTIVE, 'YYYY/MM/DD'),
330 X_END_DATE_ACTIVE => to_date(X_END_DATE_ACTIVE, 'YYYY/MM/DD'),
331 X_USER_NAME => X_USER_NAME,
332 X_CREATION_DATE => sysdate,
333 X_CREATED_BY => l_user_id,
334 X_LAST_UPDATE_DATE => sysdate,
335 X_LAST_UPDATED_BY => l_user_id,
336 X_LAST_UPDATE_LOGIN => 0);
337
338 end LOAD_ROW;
339
340 -- Overloaded for BUG 3087292.
341 procedure LOAD_ROW (
342 X_DATATYPE_ID in VARCHAR2,
343 X_NAME in VARCHAR2,
344 X_OWNER in VARCHAR2,
345 X_START_DATE_ACTIVE in VARCHAR2,
346 X_END_DATE_ACTIVE in VARCHAR2,
347 X_USER_NAME in VARCHAR2,
348 X_LAST_UPDATE_DATE in VARCHAR2,
349 X_CUSTOM_MODE in VARCHAR2)
350 IS
351 l_user_id number := 0 ;
352 l_row_id varchar2(64);
353 f_luby number; -- entity owner in file
354 f_ludate date; -- entity update date in file
355 db_luby number; -- entity owner in db
356 db_ludate date; -- entity update date in db
357
358 begin
359
360 -- Translate owner to file_last_updated_by
361 f_luby := fnd_load_util.owner_id(x_owner);
362
363 -- Translate char last_update_date to date
364 f_ludate := nvl(to_date(x_last_update_date, 'YYYY/MM/DD'), sysdate);
365
366 select LAST_UPDATED_BY, LAST_UPDATE_DATE
367 into db_luby, db_ludate
368 from fnd_document_datatypes
369 where name = X_NAME
370 and language = userenv('LANG')
371 and datatype_id = to_number(X_DATATYPE_ID);
372
373 if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
374 db_ludate, X_CUSTOM_MODE)) then
375 UPDATE_ROW (
376 X_DATATYPE_ID => to_number(X_DATATYPE_ID),
377 X_LANGUAGE => userenv('LANG'),
378 X_NAME => X_NAME,
379 X_START_DATE_ACTIVE => to_date(X_START_DATE_ACTIVE, 'YYYY/MM/DD'),
380 X_END_DATE_ACTIVE => to_date(X_END_DATE_ACTIVE, 'YYYY/MM/DD'),
381 X_USER_NAME => X_USER_NAME,
382 X_LAST_UPDATE_DATE => f_ludate,
383 X_LAST_UPDATED_BY => f_luby,
384 X_LAST_UPDATE_LOGIN => 0 );
385 end if;
386
387 exception
388 when NO_DATA_FOUND then
389
390 INSERT_ROW (
391 X_ROWID => l_row_id,
392 X_DATATYPE_ID => to_number(X_DATATYPE_ID),
393 X_LANGUAGE => userenv('LANG'),
394 X_NAME => X_NAME,
395 X_START_DATE_ACTIVE => to_date(X_START_DATE_ACTIVE, 'YYYY/MM/DD'),
396 X_END_DATE_ACTIVE => to_date(X_END_DATE_ACTIVE, 'YYYY/MM/DD'),
397 X_USER_NAME => X_USER_NAME,
398 X_CREATION_DATE => f_ludate,
399 X_CREATED_BY => f_luby,
400 X_LAST_UPDATE_DATE => f_ludate,
401 X_LAST_UPDATED_BY => f_luby,
402 X_LAST_UPDATE_LOGIN => 0);
403
404 end LOAD_ROW;
405
406 end FND_DOCUMENT_DATATYPES_PKG;