[Home] [Help]
PACKAGE BODY: APPS.XDP_PROC_BODY_PKG
Source
1 PACKAGE BODY XDP_PROC_BODY_PKG AS
2 /* $Header: XDPPBDYB.pls 120.2 2005/07/15 01:52:00 appldev ship $ */
3 procedure INSERT_ROW (
4 X_ROWID in OUT NOCOPY VARCHAR2,
5 X_PROC_NAME in VARCHAR2,
6 X_PROC_SPEC in VARCHAR2,
7 X_PROC_BODY in VARCHAR2,
8 X_PROC_TYPE in VARCHAR2,
9 X_DISPLAY_NAME in VARCHAR2,
10 X_DESCRIPTION in VARCHAR2,
11 X_CREATION_DATE in DATE,
12 X_CREATED_BY in NUMBER,
13 X_LAST_UPDATE_DATE in DATE,
14 X_LAST_UPDATED_BY in NUMBER,
15 X_LAST_UPDATE_LOGIN in NUMBER,
16 X_PROTECTED_FLAG in VARCHAR2 := 'N'
17 ) is
18 cursor C is select ROWID from XDP_PROC_BODY
19 where PROC_NAME = X_PROC_NAME
20 ;
21 lv_lob_i CLOB;
22 begin
23 -- Bug Fix 1489219.
24 -- Removed references to CLOB
25
26 insert into XDP_PROC_BODY (
27 proc_name,
28 proc_type,
29 protected_flag,
30 proc_spec,
31 proc_body,
32 creation_date,
33 created_by,
34 last_update_date,
35 last_updated_by,
36 last_update_login )
37 values
38 (X_PROC_NAME,
39 X_PROC_TYPE,
40 X_PROTECTED_FLAG,
41 X_PROC_SPEC,
42 empty_clob(),
43 sysdate,
44 X_CREATED_BY,
45 sysdate,
46 X_LAST_UPDATED_BY,
47 0)
48 returning proc_body into lv_lob_i;
49
50 dbms_lob.write(lv_lob_i, length(X_PROC_BODY), 1, X_PROC_BODY);
51
52 insert into XDP_PROC_BODY_TL (
53 proc_name,
54 display_name,
55 description,
56 created_by,
57 creation_date,
58 last_updated_by,
59 last_update_date,
60 last_update_login,
61 language,
62 source_lang
63 ) select
64 X_PROC_NAME,
65 X_DISPLAY_NAME,
66 X_DESCRIPTION,
67 X_CREATED_BY,
68 sysdate,
69 X_LAST_UPDATED_BY,
70 sysdate,
71 0,
72 L.LANGUAGE_CODE,
73 userenv('LANG')
74 from FND_LANGUAGES L
75 where L.INSTALLED_FLAG in ('I', 'B')
76 and not exists
77 (select NULL
78 from XDP_PROC_BODY_TL T
79 where T.PROC_NAME = X_PROC_NAME
80 and T.LANGUAGE = L.LANGUAGE_CODE);
81
82 open c;
83 fetch c into X_ROWID;
84 if (c%notfound) then
85 close c;
86 raise no_data_found;
87 end if;
88 close c;
89 end INSERT_ROW;
90
91 procedure LOCK_ROW (
92 X_PROC_NAME in VARCHAR2,
93 X_PROC_SPEC in VARCHAR2,
94 X_PROC_BODY in CLOB,
95 X_PROC_TYPE in VARCHAR2,
96 X_DISPLAY_NAME in VARCHAR2,
97 X_DESCRIPTION in VARCHAR2,
98 X_PROTECTED_FLAG in VARCHAR2 := 'N'
99 ) is
100 cursor c is select
101 PROC_BODY,
102 PROC_SPEC,
103 PROC_TYPE,
104 PROTECTED_FLAG
105 from XDP_PROC_BODY
106 where PROC_NAME = X_PROC_NAME
107 for update of PROC_NAME nowait;
108 recinfo c%rowtype;
109
110 cursor c1 is select
111 DISPLAY_NAME,
112 DESCRIPTION,
113 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
114 from XDP_PROC_BODY_TL
115 where PROC_NAME = X_PROC_NAME
116 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
117 for update of PROC_NAME nowait;
118 begin
119 open c;
120 fetch c into recinfo;
121 if (c%notfound) then
122 close c;
123 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
124 app_exception.raise_exception;
125 end if;
126 close c;
127 if ( (DBMS_LOB.COMPARE (recinfo.PROC_BODY, X_PROC_BODY, DBMS_LOB.GETLENGTH(X_PROC_BODY), 1, 1) = 0)
128 AND (recinfo.PROC_TYPE = X_PROC_TYPE)
129 AND (recinfo.PROC_SPEC = X_PROC_SPEC)
130 AND (recinfo.PROTECTED_FLAG = X_PROTECTED_FLAG)
131 ) then
132 null;
133 else
134 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
135 app_exception.raise_exception;
136 end if;
137
138 for tlinfo in c1 loop
139 if (tlinfo.BASELANG = 'Y') then
140 if ( (tlinfo.DISPLAY_NAME = X_DISPLAY_NAME)
141 AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
142 OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
143 ) then
144 null;
145 else
146 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
147 app_exception.raise_exception;
148 end if;
149 end if;
150 end loop;
151 return;
152 end LOCK_ROW;
153
154 procedure UPDATE_ROW (
155 X_PROC_NAME in VARCHAR2,
156 X_PROC_SPEC in VARCHAR2,
157 X_PROC_BODY in VARCHAR2,
158 X_PROC_TYPE in VARCHAR2,
159 X_DISPLAY_NAME in VARCHAR2,
160 X_DESCRIPTION in VARCHAR2,
161 X_LAST_UPDATE_DATE in DATE,
162 X_LAST_UPDATED_BY in NUMBER,
163 X_LAST_UPDATE_LOGIN in NUMBER,
164 X_PROTECTED_FLAG in VARCHAR2 := 'N'
165 ) is
166 lv_lob_u CLOB;
167 begin
168
169 -- Bug Fix 1489219.
170 -- Removed references to CLOB
171
172 update XDP_PROC_BODY
173 set
174 proc_spec = X_PROC_SPEC,
175 proc_body = empty_clob(),
176 proc_type = X_PROC_TYPE,
177 protected_flag = X_PROTECTED_FLAG,
178 last_updated_by = X_LAST_UPDATED_BY,
179 last_update_date = sysdate,
180 last_update_login = 0
181 where
182 proc_name = X_PROC_NAME
183 returning proc_body into lv_lob_u;
184
185 if sql%notfound then
186 raise NO_DATA_FOUND;
187 end if;
188
189 DBMS_LOB.WRITE(lv_lob_u,length(X_PROC_BODY),1,X_PROC_BODY);
190
191
192 update XDP_PROC_BODY_TL
193 set
194 display_name = X_DISPLAY_NAME,
195 description = X_DESCRIPTION,
196 last_updated_by = X_LAST_UPDATED_BY,
197 last_update_date = sysdate,
198 last_update_login = 0,
199 source_lang = userenv('LANG')
200 where proc_name = X_PROC_NAME
201 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
202
203 if sql%notfound then
204 raise NO_DATA_FOUND;
205 end if;
206
207 end UPDATE_ROW;
208
209 procedure DELETE_ROW (
210 X_PROC_NAME in VARCHAR2
211 ) is
212 begin
213 delete from XDP_PROC_BODY_TL
214 where PROC_NAME = X_PROC_NAME;
215
216 if (sql%notfound) then
217 raise no_data_found;
218 end if;
219
220 delete from XDP_PROC_BODY
221 where PROC_NAME = X_PROC_NAME;
222
223 if (sql%notfound) then
224 raise no_data_found;
225 end if;
226 end DELETE_ROW;
227
228 procedure ADD_LANGUAGE
229 is
230 begin
231 delete from XDP_PROC_BODY_TL T
232 where not exists
233 (select NULL
234 from XDP_PROC_BODY B
235 where B.PROC_NAME = T.PROC_NAME
236 );
237
238
239
240 /******
241
242 -- rephrased the query to use EXISTS ratherthan using IN
243 -- skilaru 03/26/2001
244
245 update XDP_PROC_BODY_TL T set (
246 DISPLAY_NAME,
247 DESCRIPTION
248 ) = (select
249 B.DISPLAY_NAME,
250 B.DESCRIPTION
251 from XDP_PROC_BODY_TL B
252 where B.PROC_NAME = T.PROC_NAME
253 and B.LANGUAGE = T.SOURCE_LANG)
254 where (
255 T.PROC_NAME,
256 T.LANGUAGE
257 ) in (select
258 SUBT.PROC_NAME,
259 SUBT.LANGUAGE
260 from XDP_PROC_BODY_TL SUBB, XDP_PROC_BODY_TL SUBT
261 where SUBB.PROC_NAME = SUBT.PROC_NAME
262 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
263 and (SUBB.DISPLAY_NAME <> SUBT.DISPLAY_NAME
264 or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
265 or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
266 or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
267 ));
268
269 *****/
270
271
272 update XDP_PROC_BODY_TL T
273 set ( DISPLAY_NAME, DESCRIPTION) = (select B.DISPLAY_NAME, B.DESCRIPTION
274 from XDP_PROC_BODY_TL B
275 where B.PROC_NAME = T.PROC_NAME
276 and B.LANGUAGE = T.SOURCE_LANG)
277 where EXISTS (select SUBT.PROC_NAME, SUBT.LANGUAGE
278 from XDP_PROC_BODY_TL SUBB, XDP_PROC_BODY_TL SUBT
279 where SUBB.PROC_NAME = SUBT.PROC_NAME
280 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
281 and (SUBB.DISPLAY_NAME <> SUBT.DISPLAY_NAME
282 or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
283 or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
284 or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null))
285 and SUBT.proc_name = T.PROC_NAME
286 and SUBT.language = T.LANGUAGE
287 );
288
289
290 insert into XDP_PROC_BODY_TL (
291 PROC_NAME,
292 DISPLAY_NAME,
293 DESCRIPTION,
294 CREATED_BY,
295 CREATION_DATE,
296 LAST_UPDATED_BY,
297 LAST_UPDATE_DATE,
298 LAST_UPDATE_LOGIN,
299 LANGUAGE,
300 SOURCE_LANG
301 ) select
302 B.PROC_NAME,
303 B.DISPLAY_NAME,
304 B.DESCRIPTION,
305 B.CREATED_BY,
306 B.CREATION_DATE,
307 B.LAST_UPDATED_BY,
308 B.LAST_UPDATE_DATE,
309 B.LAST_UPDATE_LOGIN,
310 L.LANGUAGE_CODE,
311 B.SOURCE_LANG
312 from XDP_PROC_BODY_TL B, FND_LANGUAGES L
313 where L.INSTALLED_FLAG in ('I', 'B')
314 and B.LANGUAGE = userenv('LANG')
315 and not exists
316 (select NULL
317 from XDP_PROC_BODY_TL T
318 where T.PROC_NAME = B.PROC_NAME
319 and T.LANGUAGE = L.LANGUAGE_CODE);
320 end ADD_LANGUAGE;
321
322 procedure LOAD_ROW (
323 X_PROC_NAME in VARCHAR2,
324 X_PROC_SPEC in VARCHAR2,
325 X_PROC_BODY in VARCHAR2,
326 X_PROC_TYPE in VARCHAR2,
327 X_DISPLAY_NAME in VARCHAR2,
328 X_DESCRIPTION in VARCHAR2,
329 X_OWNER in VARCHAR2,
330 X_PROTECTED_FLAG in VARCHAR2 := 'N'
331 ) IS
332 begin
333
334 declare
335 user_id number := 0;
336 row_id varchar2(64);
337
338 begin
339
340 /* The following derivation has been replaced with the FND API. dputhiye 15-JUL-2005. R12 ATG "Seed Version by Date" Uptake */
341 --if (X_OWNER = 'SEED') then
342 -- user_id := 1;
343 --end if;
344 user_id := fnd_load_util.owner_id(X_OWNER);
345
346 XDP_PROC_BODY_PKG.UPDATE_ROW (
347 X_PROC_NAME => X_PROC_NAME,
348 X_PROC_SPEC => X_PROC_SPEC,
349 X_PROC_BODY => X_PROC_BODY,
350 X_PROC_TYPE => X_PROC_TYPE,
351 X_DISPLAY_NAME => X_DISPLAY_NAME,
352 X_DESCRIPTION => X_DESCRIPTION,
353 X_LAST_UPDATE_DATE => sysdate,
354 X_LAST_UPDATED_BY => user_id,
355 X_LAST_UPDATE_LOGIN => 0,
356 X_PROTECTED_FLAG => X_PROTECTED_FLAG);
357
358 exception
359 when NO_DATA_FOUND then
360 XDP_PROC_BODY_PKG.INSERT_ROW (
361 X_ROWID => row_id,
362 X_PROC_NAME => X_PROC_NAME,
363 X_PROC_SPEC => X_PROC_SPEC,
364 X_PROC_BODY => X_PROC_BODY,
365 X_PROC_TYPE => X_PROC_TYPE,
366 X_DISPLAY_NAME => X_DISPLAY_NAME,
367 X_DESCRIPTION => X_DESCRIPTION,
368 X_CREATION_DATE => sysdate,
369 X_CREATED_BY => user_id,
370 X_LAST_UPDATE_DATE => sysdate,
371 X_LAST_UPDATED_BY => user_id,
372 X_LAST_UPDATE_LOGIN => 0 ,
373 X_PROTECTED_FLAG => X_PROTECTED_FLAG);
374 end;
375 end LOAD_ROW;
376
377 procedure TRANSLATE_ROW (
378 X_PROC_NAME in VARCHAR2,
379 X_DISPLAY_NAME in VARCHAR2,
380 X_DESCRIPTION in VARCHAR2,
381 X_OWNER in VARCHAR2) IS
382
383 begin
384
385 -- only update rows that have not been altered by user
386
387 update XDP_PROC_BODY_TL
388 set description = X_DESCRIPTION,
389 display_name = X_DISPLAY_NAME,
390 source_lang = userenv('LANG'),
391 last_update_date = sysdate,
392 --last_updated_by = decode(X_OWNER, 'SEED', 1, 0), /*dputhiye 15-JUL-2005. DECODE replaced with FND API.*/
393 last_updated_by = fnd_load_util.owner_id(X_OWNER),
394 last_update_login = 0
395 where proc_name = X_PROC_NAME
396 and userenv('LANG') in (language, source_lang);
397
398 end TRANSLATE_ROW;
399
400
401 end XDP_PROC_BODY_PKG;