[Home] [Help]
PACKAGE BODY: APPS.HZ_TRANS_ATTRIBUTES_PKG
Source
1 PACKAGE BODY HZ_TRANS_ATTRIBUTES_PKG AS
2 /*$Header: ARHDQTAB.pls 120.6 2005/10/30 04:19:24 appldev noship $ */
3
4 procedure INSERT_ROW (
5 X_ATTRIBUTE_ID in OUT NOCOPY NUMBER,
6 X_ENTITY_NAME in VARCHAR2,
7 X_CUSTOM_ATTRIBUTE_PROCEDURE in VARCHAR2,
8 X_SOURCE_TABLE in VARCHAR2,
9 X_ATTRIBUTE_NAME in VARCHAR2,
10 X_USER_DEFINED_ATTRIBUTE_NAME in VARCHAR2,
11 x_DENORM_FLAG in VARCHAR2,
12 X_CREATION_DATE in DATE,
13 X_CREATED_BY in NUMBER,
14 X_LAST_UPDATE_DATE in DATE,
15 X_LAST_UPDATED_BY in NUMBER,
16 X_LAST_UPDATE_LOGIN in NUMBER,
17 X_OBJECT_VERSION_NUMBER in NUMBER
18 ) is
19 CURSOR C2 IS SELECT HZ_TRANS_ATTRIBUTES_s.nextval FROM sys.dual;
20 l_success VARCHAR2(1) := 'N';
21 begin
22 WHILE l_success = 'N' LOOP
23 BEGIN
24 IF ( X_ATTRIBUTE_ID IS NULL) OR (X_ATTRIBUTE_ID = FND_API.G_MISS_NUM) THEN
25 OPEN C2;
26 FETCH C2 INTO X_ATTRIBUTE_ID;
27 CLOSE C2;
28 END IF;
29
30 insert into HZ_TRANS_ATTRIBUTES_B (
31 ATTRIBUTE_ID,
32 ATTRIBUTE_NAME,
33 ENTITY_NAME,
34 CUSTOM_ATTRIBUTE_PROCEDURE,
35 SOURCE_TABLE,
36 DENORM_FLAG,
37 CREATION_DATE,
38 CREATED_BY,
39 LAST_UPDATE_DATE,
40 LAST_UPDATED_BY,
41 LAST_UPDATE_LOGIN,
42 OBJECT_VERSION_NUMBER
43 ) values (
44 X_ATTRIBUTE_ID,
45 X_ATTRIBUTE_NAME,
46 X_ENTITY_NAME,
47 X_CUSTOM_ATTRIBUTE_PROCEDURE,
48 X_SOURCE_TABLE,
49 X_DENORM_FLAG,
50 X_CREATION_DATE,
51 X_CREATED_BY,
52 X_LAST_UPDATE_DATE,
53 X_LAST_UPDATED_BY,
54 X_LAST_UPDATE_LOGIN,
55 1
56 );
57
58 l_success := 'Y';
59 EXCEPTION WHEN DUP_VAL_ON_INDEX THEN
60 IF INSTRB( SQLERRM, 'HZ_TRANS_ATTRIBUTES_B_U1' ) <> 0 THEN
61 DECLARE
62 l_count NUMBER;
63 l_dummy VARCHAR2(1);
64 BEGIN
65 l_count := 1;
66 WHILE l_count > 0 LOOP
67 SELECT HZ_TRANS_ATTRIBUTES_s.nextval
68 into X_ATTRIBUTE_ID FROM sys.dual;
69 BEGIN
70 SELECT 'Y' INTO l_dummy
71 FROM HZ_TRANS_ATTRIBUTES_B
72 WHERE ATTRIBUTE_ID = X_ATTRIBUTE_ID;
73 l_count := 1;
74 EXCEPTION WHEN NO_DATA_FOUND THEN
75 l_count := 0;
76 END;
77 END LOOP;
78 END;
79 END IF;
80 END;
81 END LOOP;
82
83 insert into HZ_TRANS_ATTRIBUTES_TL (
84 LAST_UPDATE_DATE,
85 CREATION_DATE,
86 CREATED_BY,
87 LAST_UPDATED_BY,
88 LAST_UPDATE_LOGIN,
89 USER_DEFINED_ATTRIBUTE_NAME,
90 ATTRIBUTE_ID,
91 LANGUAGE,
92 SOURCE_LANG,
93 OBJECT_VERSION_NUMBER
94 ) select
95 X_LAST_UPDATE_DATE,
96 X_CREATION_DATE,
97 X_CREATED_BY,
98 X_LAST_UPDATED_BY,
99 X_LAST_UPDATE_LOGIN,
100 X_USER_DEFINED_ATTRIBUTE_NAME,
101 X_ATTRIBUTE_ID,
102 L.LANGUAGE_CODE,
103 userenv('LANG'),
104 1
105 from FND_LANGUAGES L
106 where L.INSTALLED_FLAG in ('I', 'B')
107 and not exists
108 (select NULL
109 from HZ_TRANS_ATTRIBUTES_TL T
110 where T.ATTRIBUTE_ID = X_ATTRIBUTE_ID
111 and T.LANGUAGE = L.LANGUAGE_CODE);
112
113 end INSERT_ROW;
114
115 procedure LOCK_ROW (
116 X_ATTRIBUTE_ID in NUMBER,
117 X_OBJECT_VERSION_NUMBER IN number
118 ) is
119 cursor c is select
120 OBJECT_VERSION_NUMBER
121 from HZ_TRANS_ATTRIBUTES_B
122 where ATTRIBUTE_ID = X_ATTRIBUTE_ID
123 for update of ATTRIBUTE_ID nowait;
124 recinfo c%rowtype;
125
126 cursor c1 is select
127 OBJECT_VERSION_NUMBER,
128 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
129 from HZ_TRANS_ATTRIBUTES_TL
130 where ATTRIBUTE_ID = X_ATTRIBUTE_ID
131 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
132 for update of ATTRIBUTE_ID nowait;
133 begin
134 open c;
135 fetch c into recinfo;
136 if (c%notfound) then
137 close c;
138 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
139 app_exception.raise_exception;
140 end if;
141 close c;
142 if ( ((recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
143 OR ((recinfo.OBJECT_VERSION_NUMBER is null) AND (X_OBJECT_VERSION_NUMBER is null)))
144 ) then
145 null;
146 else
147 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
148 app_exception.raise_exception;
149 end if;
150
151 for tlinfo in c1 loop
152 if (tlinfo.BASELANG = 'Y') then
153 if ( ((tlinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
154 OR ((tlinfo.OBJECT_VERSION_NUMBER is null) AND (X_OBJECT_VERSION_NUMBER is null)))
155 ) then
156 null;
157 else
158 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
159 app_exception.raise_exception;
160 end if;
161 end if;
162 end loop;
163 return;
164 end LOCK_ROW;
165
166
167 procedure LOCK_ROW (
168 X_ATTRIBUTE_ID in NUMBER,
169 X_OBJECT_VERSION_NUMBER IN number,
170 X_USER_DEFINED_ATTRIBUTE_NAME IN varchar2
171 ) is
172 cursor c is select
173 OBJECT_VERSION_NUMBER
174 from HZ_TRANS_ATTRIBUTES_B
175 where ATTRIBUTE_ID = X_ATTRIBUTE_ID
176 for update of ATTRIBUTE_ID nowait;
177 recinfo c%rowtype;
178
179 cursor c1 is select
180 USER_DEFINED_ATTRIBUTE_NAME,
181 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
182 from HZ_TRANS_ATTRIBUTES_TL
183 where ATTRIBUTE_ID = X_ATTRIBUTE_ID
184 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
185 for update of ATTRIBUTE_ID nowait;
186 begin
187 open c;
188 fetch c into recinfo;
189 if (c%notfound) then
190 close c;
191 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
192 app_exception.raise_exception;
193 end if;
194 close c;
195 if ( ((recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
196 OR ((recinfo.OBJECT_VERSION_NUMBER is null) AND (X_OBJECT_VERSION_NUMBER is null)))
197 ) then
198 null;
199 else
200 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
201 app_exception.raise_exception;
202 end if;
203
204 for tlinfo in c1 loop
205 if (tlinfo.BASELANG = 'Y') then
206 if ( ((tlinfo.USER_DEFINED_ATTRIBUTE_NAME = X_USER_DEFINED_ATTRIBUTE_NAME)
207 OR ((tlinfo.USER_DEFINED_ATTRIBUTE_NAME is null) AND (X_USER_DEFINED_ATTRIBUTE_NAME is null)))
208 ) then
209 null;
210 else
211 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
212 app_exception.raise_exception;
213 end if;
214 end if;
215 end loop;
216 return;
217 end LOCK_ROW;
218
219
220 procedure UPDATE_ROW (
221 X_ATTRIBUTE_ID in NUMBER,
222 X_ENTITY_NAME in VARCHAR2,
223 X_CUSTOM_ATTRIBUTE_PROCEDURE in VARCHAR2,
224 X_SOURCE_TABLE in VARCHAR2,
225 X_ATTRIBUTE_NAME in VARCHAR2,
226 X_USER_DEFINED_ATTRIBUTE_NAME in VARCHAR2,
227 X_DENORM_FLAG in VARCHAR2,
228 X_LAST_UPDATE_DATE in DATE,
229 X_LAST_UPDATED_BY in NUMBER,
230 X_LAST_UPDATE_LOGIN in NUMBER,
231 X_OBJECT_VERSION_NUMBER IN out nocopy NUMBER
232 ) is
233
234 l_object_version_number number;
235 l_db_atr_name VARCHAR2(255);
236 l_db_user_def_atr VARCHAR2(255);
237 l_db_cus_atr_proc VARCHAR2(600);
238 l_db_upd_by NUMBER;
239 l_db_denorm_flag VARCHAR2(1);
240 TMP NUMBER;
241 begin
242
243 SELECT 1 INTO TMP FROM HZ_TRANS_ATTRIBUTES_VL
244 where attribute_id=X_ATTRIBUTE_ID;
245
246 l_object_version_number := NVL(X_object_version_number, 1) + 1;
247
248 select ATTRIBUTE_NAME, USER_DEFINED_ATTRIBUTE_NAME,
249 CUSTOM_ATTRIBUTE_PROCEDURE, LAST_UPDATED_BY, nvl(DENORM_FLAG,'N')
250 into l_db_atr_name, l_db_user_def_atr, l_db_cus_atr_proc, l_db_upd_by, l_db_denorm_flag
251 from HZ_TRANS_ATTRIBUTES_VL
252 where attribute_id=X_ATTRIBUTE_ID;
253
254 IF (X_LAST_UPDATED_BY = 1 AND l_db_upd_by <> 1) THEN
255 -- coming from seed and data modified by user
256 IF (l_db_cus_atr_proc <> X_CUSTOM_ATTRIBUTE_PROCEDURE) THEN
257 update HZ_TRANS_ATTRIBUTES_B set
258 CUSTOM_ATTRIBUTE_PROCEDURE = X_CUSTOM_ATTRIBUTE_PROCEDURE,
259 OBJECT_VERSION_NUMBER = l_object_version_number
260 where ATTRIBUTE_ID = X_ATTRIBUTE_ID;
261
262 update hz_trans_functions_b
263 set staged_flag = 'N'
264 where attribute_id = X_ATTRIBUTE_ID;
265 END IF;
266 ELSE
267 update HZ_TRANS_ATTRIBUTES_B set
268 ENTITY_NAME = X_ENTITY_NAME,
269 CUSTOM_ATTRIBUTE_PROCEDURE = X_CUSTOM_ATTRIBUTE_PROCEDURE,
270 SOURCE_TABLE = X_SOURCE_TABLE,
271 DENORM_FLAG = X_DENORM_FLAG,
272 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
273 LAST_UPDATED_BY = X_LAST_UPDATED_BY, -- L_LAST_UPDATED_BY,
274 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
275 OBJECT_VERSION_NUMBER = l_object_version_number
276 where ATTRIBUTE_ID = X_ATTRIBUTE_ID;
277
278 update HZ_TRANS_ATTRIBUTES_TL set
279 USER_DEFINED_ATTRIBUTE_NAME = X_USER_DEFINED_ATTRIBUTE_NAME,
280 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
281 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
282 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
283 -- OBJECT_VERSION_NUMBER =l_object_version_number,
284 SOURCE_LANG = userenv('LANG')
285 where ATTRIBUTE_ID = X_ATTRIBUTE_ID
286 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
287
288 IF (l_db_cus_atr_proc <> X_CUSTOM_ATTRIBUTE_PROCEDURE) THEN
289 update hz_trans_functions_b
290 set staged_flag = 'N'
291 where attribute_id = X_ATTRIBUTE_ID;
292 END IF;
293 END IF;
294 X_object_version_number := l_object_version_number;
295 end UPDATE_ROW;
296
297 procedure DELETE_ROW (
298 X_ATTRIBUTE_ID in NUMBER
299 ) is
300 begin
301 delete from HZ_TRANS_ATTRIBUTES_TL
302 where ATTRIBUTE_ID = X_ATTRIBUTE_ID;
303
304 if (sql%notfound) then
305 raise no_data_found;
306 end if;
307
308 delete from HZ_TRANS_ATTRIBUTES_B
309 where ATTRIBUTE_ID = X_ATTRIBUTE_ID;
310
311 if (sql%notfound) then
312 raise no_data_found;
313 end if;
314 end DELETE_ROW;
315
316 procedure ADD_LANGUAGE
317 is
318 begin
319 delete from HZ_TRANS_ATTRIBUTES_TL T
320 where not exists
321 (select NULL
322 from HZ_TRANS_ATTRIBUTES_B B
323 where B.ATTRIBUTE_ID = T.ATTRIBUTE_ID
324 );
325
326 update HZ_TRANS_ATTRIBUTES_TL T set (
327 USER_DEFINED_ATTRIBUTE_NAME
328 ) = (select
329 B.USER_DEFINED_ATTRIBUTE_NAME
330 from HZ_TRANS_ATTRIBUTES_TL B
331 where B.ATTRIBUTE_ID = T.ATTRIBUTE_ID
332 and B.LANGUAGE = T.SOURCE_LANG)
333 where (
334 T.ATTRIBUTE_ID,
335 T.LANGUAGE
336 ) in (select
337 SUBT.ATTRIBUTE_ID,
338 SUBT.LANGUAGE
339 from HZ_TRANS_ATTRIBUTES_TL SUBB, HZ_TRANS_ATTRIBUTES_TL SUBT
340 where SUBB.ATTRIBUTE_ID = SUBT.ATTRIBUTE_ID
341 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
342 and SUBB.USER_DEFINED_ATTRIBUTE_NAME <> SUBT.USER_DEFINED_ATTRIBUTE_NAME
343 );
344
345 insert into HZ_TRANS_ATTRIBUTES_TL (
346 LAST_UPDATE_DATE,
347 CREATION_DATE,
348 CREATED_BY,
349 LAST_UPDATED_BY,
350 LAST_UPDATE_LOGIN,
351 USER_DEFINED_ATTRIBUTE_NAME,
352 ATTRIBUTE_ID,
353 LANGUAGE,
354 SOURCE_LANG
355 ) select
356 B.LAST_UPDATE_DATE,
357 B.CREATION_DATE,
358 B.CREATED_BY,
359 B.LAST_UPDATED_BY,
360 B.LAST_UPDATE_LOGIN,
361 B.USER_DEFINED_ATTRIBUTE_NAME,
362 B.ATTRIBUTE_ID,
363 L.LANGUAGE_CODE,
364 B.SOURCE_LANG
365 from HZ_TRANS_ATTRIBUTES_TL B, FND_LANGUAGES L
366 where L.INSTALLED_FLAG in ('I', 'B')
367 and B.LANGUAGE = userenv('LANG')
368 and not exists
369 (select NULL
370 from HZ_TRANS_ATTRIBUTES_TL T
371 where T.ATTRIBUTE_ID = B.ATTRIBUTE_ID
372 and T.LANGUAGE = L.LANGUAGE_CODE);
373 end ADD_LANGUAGE;
374
375 procedure LOAD_ROW (
376 X_ATTRIBUTE_ID in NUMBER,
377 X_ENTITY_NAME in VARCHAR2,
378 X_CUSTOM_ATTRIBUTE_PROCEDURE in VARCHAR2,
379 X_SOURCE_TABLE in VARCHAR2,
380 X_ATTRIBUTE_NAME in VARCHAR2,
381 X_USER_DEFINED_ATTRIBUTE_NAME in VARCHAR2,
382 X_DENORM_FLAG in VARCHAR2,
383 X_LAST_UPDATE_DATE in DATE,
384 X_LAST_UPDATED_BY in NUMBER,
385 X_LAST_UPDATE_LOGIN in NUMBER,
386 X_OBJECT_VERSION_NUMBER in NUMBER,
387 X_OWNER in VARCHAR2) IS
388 begin
389
390 declare
391 user_id number := 0;
392 row_id varchar2(64);
393 L_ATTRIBUTE_ID NUMBER := X_ATTRIBUTE_ID;
394 L_OBJECT_VERSION_NUMBER number;
395
396 begin
397
398 if (X_OWNER = 'SEED') then
399 user_id := 1;
400 end if;
401
402 L_OBJECT_VERSION_NUMBER := NVL(X_OBJECT_VERSION_NUMBER, 1) + 1;
403
404 HZ_TRANS_ATTRIBUTES_PKG.UPDATE_ROW(
405 X_ATTRIBUTE_ID => X_ATTRIBUTE_ID ,
406 X_ENTITY_NAME => X_ENTITY_NAME,
407 X_CUSTOM_ATTRIBUTE_PROCEDURE =>X_CUSTOM_ATTRIBUTE_PROCEDURE ,
408 X_SOURCE_TABLE => X_SOURCE_TABLE ,
409 X_DENORM_FLAG => X_DENORM_FLAG ,
410 X_ATTRIBUTE_NAME => X_ATTRIBUTE_NAME ,
411 X_USER_DEFINED_ATTRIBUTE_NAME =>X_USER_DEFINED_ATTRIBUTE_NAME ,
412 X_LAST_UPDATE_DATE => sysdate,
413 X_LAST_UPDATED_BY => user_id,
414 X_LAST_UPDATE_LOGIN => 0,
415 X_OBJECT_VERSION_NUMBER => L_OBJECT_VERSION_NUMBER);
416
417 exception
418 when NO_DATA_FOUND then
419
420 HZ_TRANS_ATTRIBUTES_PKG.INSERT_ROW(
421 X_ATTRIBUTE_ID => L_ATTRIBUTE_ID ,
422 X_ENTITY_NAME => X_ENTITY_NAME,
423 X_CUSTOM_ATTRIBUTE_PROCEDURE =>X_CUSTOM_ATTRIBUTE_PROCEDURE ,
424 X_SOURCE_TABLE => X_SOURCE_TABLE ,
425 X_ATTRIBUTE_NAME => X_ATTRIBUTE_NAME ,
426 X_USER_DEFINED_ATTRIBUTE_NAME =>X_USER_DEFINED_ATTRIBUTE_NAME ,
427 X_DENORM_FLAG => X_DENORM_FLAG ,
428 X_CREATION_DATE=>SYSDATE ,
429 X_CREATED_BY =>USER_ID,
430 X_LAST_UPDATE_DATE => sysdate,
431 X_LAST_UPDATED_BY => user_id,
432 X_LAST_UPDATE_LOGIN => 0,
433 X_OBJECT_VERSION_NUMBER => 1);
434
435 end;
436 end LOAD_ROW;
437
438 procedure TRANSLATE_ROW (
439 X_ATTRIBUTE_ID in NUMBER,
440 X_USER_DEFINED_ATTRIBUTE_NAME in VARCHAR2,
441 X_OWNER in VARCHAR2) IS
442
443 begin
444 -- only update rows that have not been altered by user
445 update HZ_TRANS_ATTRIBUTES_TL set
446 USER_DEFINED_ATTRIBUTE_NAME= X_USER_DEFINED_ATTRIBUTE_NAME,
447 source_lang = userenv('LANG'),
448 last_update_date = sysdate,
449 last_updated_by = decode(X_OWNER, 'SEED', 1, 0),
450 last_update_login = 0
451 where ATTRIBUTE_ID= X_ATTRIBUTE_ID
452 and userenv('LANG') in (language, source_lang);
453
454 end TRANSLATE_ROW;
455 end HZ_TRANS_ATTRIBUTES_PKG;