[Home] [Help]
PACKAGE BODY: APPS.PQH_ATT_SHD
Source
1 Package Body pqh_att_shd as
2 /* $Header: pqattrhi.pkb 120.3.12000000.2 2007/04/19 12:37:00 brsinha noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- | Private Global Definitions |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package varchar2(33) := ' pqh_att_shd.'; -- Global package name
9 --
10 -- ----------------------------------------------------------------------------
11 -- |---------------------------< constraint_error >---------------------------|
12 -- ----------------------------------------------------------------------------
13 Procedure constraint_error
14 (p_constraint_name in all_constraints.constraint_name%TYPE) Is
15 --
16 l_proc varchar2(72) := g_package||'constraint_error';
17 --
18 Begin
19 hr_utility.set_location('Entering:'||l_proc, 5);
20 --
21 If (p_constraint_name = 'AVCON_14619306_ENABL_000') Then
22 hr_utility.set_message(801, 'HR_6153_ALL_PROCEDURE_FAIL');
23 hr_utility.set_message_token('PROCEDURE', l_proc);
24 hr_utility.set_message_token('STEP','5');
25 hr_utility.raise_error;
26 ElsIf (p_constraint_name = 'PQH_ATTRIBUTES_FK2') Then
27 hr_utility.set_message(801, 'HR_6153_ALL_PROCEDURE_FAIL');
28 hr_utility.set_message_token('PROCEDURE', l_proc);
29 hr_utility.set_message_token('STEP','10');
30 hr_utility.raise_error;
31 ElsIf (p_constraint_name = 'PQH_ATTRIBUTES_PK') Then
32 hr_utility.set_message(801, 'HR_6153_ALL_PROCEDURE_FAIL');
33 hr_utility.set_message_token('PROCEDURE', l_proc);
34 hr_utility.set_message_token('STEP','15');
35 hr_utility.raise_error;
36 Else
37 hr_utility.set_message(801, 'HR_7877_API_INVALID_CONSTRAINT');
38 hr_utility.set_message_token('PROCEDURE', l_proc);
39 hr_utility.set_message_token('CONSTRAINT_NAME', p_constraint_name);
40 hr_utility.raise_error;
41 End If;
42 --
43 hr_utility.set_location(' Leaving:'||l_proc, 10);
44 End constraint_error;
45 --
46 -- ----------------------------------------------------------------------------
47 -- |-----------------------------< api_updating >-----------------------------|
48 -- ----------------------------------------------------------------------------
49 Function api_updating
50 (
51 p_attribute_id in number,
52 p_object_version_number in number
53 ) Return Boolean Is
54 --
55 --
56 -- Cursor selects the 'current' row from the HR Schema
57 --
58 Cursor C_Sel1 is
59 select
60 attribute_id,
61 attribute_name,
62 master_attribute_id,
63 master_table_route_id,
64 column_name,
65 column_type,
66 enable_flag,
67 width,
68 object_version_number,
69 region_itemname,
70 attribute_itemname,
71 decode_function_name
72 from pqh_attributes
73 where attribute_id = p_attribute_id;
74 --
75 l_proc varchar2(72) := g_package||'api_updating';
76 l_fct_ret boolean;
77 --
78 Begin
79 hr_utility.set_location('Entering:'||l_proc, 5);
80 --
81 If (
82 p_attribute_id is null and
83 p_object_version_number is null
84 ) Then
85 --
86 -- One of the primary key arguments is null therefore we must
87 -- set the returning function value to false
88 --
89 l_fct_ret := false;
90 Else
91 If (
92 p_attribute_id = g_old_rec.attribute_id and
93 p_object_version_number = g_old_rec.object_version_number
94 ) Then
95 hr_utility.set_location(l_proc, 10);
96 --
97 -- The g_old_rec is current therefore we must
98 -- set the returning function to true
99 --
100 l_fct_ret := true;
101 Else
102 --
103 -- Select the current row into g_old_rec
104 --
105 Open C_Sel1;
106 Fetch C_Sel1 Into g_old_rec;
107 If C_Sel1%notfound Then
108 Close C_Sel1;
109 --
110 -- The primary key is invalid therefore we must error
111 --
112 hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
113 hr_utility.raise_error;
114 End If;
115 Close C_Sel1;
116 If (p_object_version_number <> g_old_rec.object_version_number) Then
117 hr_utility.set_message(801, 'HR_7155_OBJECT_INVALID');
118 hr_utility.raise_error;
119 End If;
120 hr_utility.set_location(l_proc, 15);
121 l_fct_ret := true;
122 End If;
123 End If;
124 hr_utility.set_location(' Leaving:'||l_proc, 20);
125 Return (l_fct_ret);
126 --
127 End api_updating;
128 --
129 -- ----------------------------------------------------------------------------
130 -- |---------------------------------< lck >----------------------------------|
131 -- ----------------------------------------------------------------------------
132 Procedure lck
133 (
134 p_attribute_id in number,
135 p_object_version_number in number
136 ) is
137 --
138 -- Cursor selects the 'current' row from the HR Schema
139 --
140 Cursor C_Sel1 is
141 select attribute_id,
142 attribute_name,
143 master_attribute_id,
144 master_table_route_id,
145 column_name,
146 column_type,
147 enable_flag,
148 width,
149 object_version_number,
150 region_itemname,
151 attribute_itemname,
152 decode_function_name
153 from pqh_attributes
154 where attribute_id = p_attribute_id
155 for update nowait;
156 --
157 l_proc varchar2(72) := g_package||'lck';
158 --
159 Begin
160 hr_utility.set_location('Entering:'||l_proc, 5);
161 --
162 -- Add any mandatory argument checking here:
163 -- Example:
164 -- hr_api.mandatory_arg_error
165 -- (p_api_name => l_proc,
166 -- p_argument => 'object_version_number',
167 -- p_argument_value => p_object_version_number);
168 --
169 Open C_Sel1;
170 Fetch C_Sel1 Into g_old_rec;
171 If C_Sel1%notfound then
172 Close C_Sel1;
173 --
174 -- The primary key is invalid therefore we must error
175 --
176 hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
177 hr_utility.raise_error;
178 End If;
179 Close C_Sel1;
180 If (p_object_version_number <> g_old_rec.object_version_number) Then
181 hr_utility.set_message(801, 'HR_7155_OBJECT_INVALID');
182 hr_utility.raise_error;
183 End If;
184 --
185 hr_utility.set_location(' Leaving:'||l_proc, 10);
186 --
187 -- We need to trap the ORA LOCK exception
188 --
189 Exception
190 When HR_Api.Object_Locked then
191 --
192 -- The object is locked therefore we need to supply a meaningful
193 -- error message.
194 --
195 hr_utility.set_message(801, 'HR_7165_OBJECT_LOCKED');
196 hr_utility.set_message_token('TABLE_NAME', 'pqh_attributes');
197 hr_utility.raise_error;
198 End lck;
199 --
200 -- ----------------------------------------------------------------------------
201 -- |-----------------------------< convert_args >-----------------------------|
202 -- ----------------------------------------------------------------------------
203 Function convert_args
204 (
205 p_attribute_id in number,
206 p_attribute_name in varchar2,
207 p_master_attribute_id in number,
208 p_master_table_route_id in number,
209 p_column_name in varchar2,
210 p_column_type in varchar2,
211 p_enable_flag in varchar2,
212 p_width in number,
213 p_object_version_number in number,
214 p_region_itemname in varchar2,
215 p_attribute_itemname in varchar2,
216 p_decode_function_name in varchar2
217 )
218 Return g_rec_type is
219 --
220 l_rec g_rec_type;
221 l_proc varchar2(72) := g_package||'convert_args';
222 --
223 Begin
224 --
225 hr_utility.set_location('Entering:'||l_proc, 5);
226 --
227 -- Convert arguments into local l_rec structure.
228 --
229 l_rec.attribute_id := p_attribute_id;
230 l_rec.attribute_name := p_attribute_name;
231 l_rec.master_attribute_id := p_master_attribute_id;
232 l_rec.master_table_route_id := p_master_table_route_id;
233 l_rec.column_name := p_column_name;
234 l_rec.column_type := p_column_type;
235 l_rec.enable_flag := p_enable_flag;
236 l_rec.width := p_width;
237 l_rec.object_version_number := p_object_version_number;
238 l_rec.region_itemname := p_region_itemname;
239 l_rec.attribute_itemname := p_attribute_itemname;
240 l_rec.decode_function_name := p_decode_function_name;
241 --
242 -- Return the plsql record structure.
243 --
244 hr_utility.set_location(' Leaving:'||l_proc, 10);
245 Return(l_rec);
246 --
247 End convert_args;
248 --
249 -- ----------------------------------------------------------------------------
250 -- |-----------------------------< load_seed_row >---------------------------------|
251 -- ----------------------------------------------------------------------------
252 --
253 Procedure load_seed_row
254 ( p_upload_mode in varchar2
255 ,p_attribute_name in varchar2
256 ,p_master_attr_key_col_name in varchar2
257 ,p_master_attribute_col_name in varchar2
258 ,p_master_att_table_alias_name in varchar2
259 ,p_master_table_alias_name in varchar2
260 ,p_master_legislation_code in varchar2
261 ,p_key_column_name in varchar2
262 ,p_column_name in varchar2
263 ,p_column_type in varchar2
264 ,p_enable_flag in varchar2
265 ,p_width in number
266 ,p_refresh_col_name in varchar2
267 ,p_legislation_code in varchar2
268 ,p_region_itemname in varchar2
269 ,p_attribute_itemname in varchar2
270 ,p_decode_function_name in varchar2
271 ,p_last_update_date in varchar2
272 ,p_owner in varchar2
273 ) is
274 --
275 l_data_migrator_mode varchar2(1);
276 --
277 Begin
278 --
279 l_data_migrator_mode := hr_general.g_data_migrator_mode ;
280 hr_general.g_data_migrator_mode := 'Y';
281
282 if (p_upload_mode = 'NLS') then
283 pqh_atl_upd.translate_row
284 ( p_attribute_name => p_attribute_name
285 ,p_att_col_name => p_key_column_name
286 ,p_att_master_table_alias_name => p_master_table_alias_name
287 ,p_legislation_code => p_legislation_code
288 ,p_owner => p_owner );
289 else
290 pqh_att_shd.load_row
291 ( p_attribute_name => p_attribute_name
292 ,p_master_attr_key_col_name => p_master_attr_key_col_name
293 ,p_master_attribute_col_name => p_master_attribute_col_name
294 ,p_master_att_table_alias_name => p_master_att_table_alias_name
295 ,p_master_table_alias_name => p_master_table_alias_name
296 ,p_master_legislation_code => p_master_legislation_code
297 ,p_column_name => p_column_name
298 ,p_key_column_name => p_key_column_name
299 ,p_column_type => p_column_type
300 ,p_enable_flag => p_enable_flag
301 ,p_width => p_width
302 ,p_refresh_col_name => p_refresh_col_name
303 ,p_legislation_code => p_legislation_code
304 ,p_region_itemname => p_region_itemname
305 ,p_attribute_itemname => p_attribute_itemname
306 ,p_decode_function_name => p_decode_function_name
307 ,p_last_update_date => p_last_update_date
308 ,p_owner => p_owner );
309 end if;
310
311 hr_general.g_data_migrator_mode := l_data_migrator_mode;
312 End;
313 -- ----------------------------------------------------------------------------
314 -- |-----------------------------< load_row >---------------------------------|
315 -- ----------------------------------------------------------------------------
316 --
317 Procedure load_row
318 ( p_attribute_name in varchar2
319 ,p_master_attr_key_col_name in varchar2
320 ,p_master_attribute_col_name in varchar2
321 ,p_master_att_table_alias_name in varchar2
322 ,p_master_table_alias_name in varchar2
323 ,p_master_legislation_code in varchar2
324 ,p_key_column_name in varchar2
325 ,p_column_name in varchar2
326 ,p_column_type in varchar2
327 ,p_enable_flag in varchar2
328 ,p_width in number
329 ,p_refresh_col_name in varchar2
330 ,p_legislation_code in varchar2
331 ,p_region_itemname in varchar2
332 ,p_attribute_itemname in varchar2
333 ,p_decode_function_name in varchar2
334 ,p_last_update_date in varchar2
335 ,p_owner in varchar2
336 ) is
337 --
338 --
339 l_effective_date date := sysdate ;
340 l_object_version_number number := 1;
341 l_language varchar2(30) ;
342 l_delete_attr_ranges_flag varchar2(30) := 'N';
343 --
344 l_attribute_id pqh_attributes.attribute_id%TYPE := 0 ;
345 l_master_attribute_id pqh_attributes.master_attribute_id%TYPE;
346 l_master_table_route_id pqh_attributes.master_table_route_id%TYPE;
347 l_master_att_table_route_id pqh_attributes.master_table_route_id%TYPE;
348 --
349 l_created_by pqh_attributes.created_by%TYPE;
350 l_last_updated_by pqh_attributes.last_updated_by%TYPE;
351 l_creation_date pqh_attributes.creation_date%TYPE;
352 l_last_update_date pqh_attributes.last_update_date%TYPE;
353 l_last_update_login pqh_attributes.last_update_login%TYPE;
354 --
355 cursor c1 is select userenv('LANG') from dual ;
356 --
357 --
358 -- developer key is column_name and master_table_alias
359 --
360 cursor csr_attribute_id(p_key_column_name IN VARCHAR2, p_table_id IN NUMBER,
361 p_legislation_code varchar2) is
362 select attribute_id,last_update_date
363 from pqh_attributes
364 where key_column_name = p_key_column_name
365 and nvl(legislation_code,'$$$') = nvl(p_legislation_code,'$$$')
366 and nvl(master_table_route_id,-999) = nvl(p_table_id, -999);
367 --
368 cursor csr_table_id (p_table_alias IN VARCHAR2) is
369 select table_route_id
370 from pqh_table_route
371 where table_alias = p_table_alias;
372 --
373 l_last_upd_in_db pqh_attributes.last_update_date%TYPE;
374 l_dummy pqh_attributes.last_update_date%TYPE;
375 --
376 --
377 --
378 Begin
379 --
380 -- key to ids
381 --
382 open c1;
383 fetch c1 into l_language ;
384 close c1;
385 --
386 open csr_table_id(p_table_alias => p_master_table_alias_name );
387 fetch csr_table_id into l_master_table_route_id;
388 close csr_table_id;
389 --
390 open csr_table_id(p_table_alias => p_master_att_table_alias_name );
391 fetch csr_table_id into l_master_att_table_route_id;
395 p_table_id => l_master_table_route_id,
392 close csr_table_id;
393 --
394 open csr_attribute_id(p_key_column_name => p_key_column_name,
396 p_legislation_code => p_legislation_code);
397 fetch csr_attribute_id into l_attribute_id,l_last_upd_in_db;
398 close csr_attribute_id;
399 --
400 open csr_attribute_id(p_key_column_name => p_master_attr_key_col_name,
401 p_table_id => l_master_att_table_route_id,
402 p_legislation_code => p_master_legislation_code);
403 fetch csr_attribute_id into l_master_attribute_id,l_dummy;
404 close csr_attribute_id;
405 --
406 If p_master_table_alias_name is not null and l_master_table_route_id is null then
407 --
408 hr_utility.set_message(8302,'PQH_INVALID_MASTER_TABLE_ROUTE');
409 hr_utility.raise_error;
410 --
411 End if;
412 --
413 -- populate WHO columns
414 --
415 /**
416 l_created_by := 1;
417 l_last_updated_by := -1;
418
419 l_creation_date := sysdate;
420 l_last_update_date := sysdate;
421 **/
422 l_last_update_login := 0;
423
424 l_created_by := fnd_load_util.owner_id(p_owner);
425 l_last_updated_by := fnd_load_util.owner_id(p_owner);
426 l_creation_date := nvl(to_date(p_last_update_date,'YYYY/MM/DD'),trunc(sysdate));
427 l_last_update_date := nvl(to_date(p_last_update_date,'YYYY/MM/DD'),trunc(sysdate));
428 --
429 --
430 Begin
431 --
432 if l_attribute_id <> 0 then
433 -- row exits so update
434 If l_last_update_date > l_last_upd_in_db then
435
436 UPDATE pqh_attributes
437 SET attribute_name = p_attribute_name,
438 master_attribute_id = l_master_attribute_id,
439 master_table_route_id = l_master_table_route_id,
440 key_column_name = p_key_column_name,
441 column_name = nvl(p_column_name,p_key_column_name),
442 column_type = p_column_type,
443 enable_flag = p_enable_flag,
444 width = p_width,
445 refresh_col_name = p_refresh_col_name,
446 legislation_code = p_legislation_code,
447 region_itemname = p_region_itemname,
448 attribute_itemname = p_attribute_itemname,
449 decode_function_name = p_decode_function_name,
450 last_updated_by = l_last_updated_by,
451 last_update_date = l_last_update_date,
452 last_update_login = l_last_update_login
453 WHERE attribute_id = l_attribute_id ;
454 --AND NVL(last_updated_by,-1) in (-1,1);
455 -- update attributes
456
457 -- update the tl table
458 if (sql%found) then
459
460 UPDATE pqh_attributes_tl
461 SET attribute_name = p_attribute_name,
462 last_updated_by = l_last_updated_by,
463 last_update_date = l_last_update_date,
464 last_update_login = l_last_update_login,
465 source_lang = userenv('LANG')
466 WHERE attribute_id = l_attribute_id
467 AND userenv('LANG') in (LANGUAGE, SOURCE_LANG);
468
469
470 if (sql%notfound) then
471 -- no row in TL table so insert row
472
473 insert into pqh_attributes_tl
474 ( attribute_id,
475 attribute_name,
476 language,
477 source_lang,
478 creation_date,
479 created_by,
480 last_update_date,
481 last_update_login,
482 last_updated_by
483 )
484 Select
485 l_attribute_id,
486 p_attribute_name,
487 L.LANGUAGE_CODE,
488 userenv('LANG'),
489 l_creation_date,
490 l_created_by,
491 l_last_update_date,
492 l_last_update_login,
493 l_last_updated_by
494 from FND_LANGUAGES L
495 where L.INSTALLED_FLAG in ('I', 'B')
496 and not exists
497 (select NULL
498 from pqh_attributes_tl T
499 where T.attribute_id = l_attribute_id
500 and T.LANGUAGE = L.LANGUAGE_CODE);
501
502
503 end if;
504
505 end if; -- sql%found for main table
506
507 End if;
508 else
509
510 -- insert into pqh_attributes and pqh_attributes_tl
511
512 select pqh_attributes_s.nextval into l_attribute_id from dual;
513
514 INSERT INTO pqh_attributes
515 (attribute_id ,
516 attribute_name,
517 master_attribute_id,
518 master_table_route_id ,
519 key_column_name,
520 column_name,
521 column_type,
522 enable_flag,
523 width,
524 refresh_col_name,
525 legislation_code,
526 region_itemname,
527 attribute_itemname,
528 decode_function_name,
529 created_by,
533 last_update_login,
530 creation_date,
531 last_updated_by,
532 last_update_date ,
534 object_version_number)
535 VALUES
536 (l_attribute_id,
537 p_attribute_name,
538 l_master_attribute_id,
539 l_master_table_route_id,
540 p_key_column_name,
541 nvl(p_column_name,p_key_column_name),
542 p_column_type,
543 p_enable_flag,
544 p_width,
545 p_refresh_col_name,
546 p_legislation_code,
547 p_region_itemname,
548 p_attribute_itemname,
549 p_decode_function_name,
550 l_created_by,
551 l_creation_date,
552 l_last_updated_by,
553 l_last_update_date,
554 l_last_update_login,
555 1 );
556
557 -- insert into tl table
558
559 insert into pqh_attributes_tl
560 ( attribute_id,
561 attribute_name,
562 language,
563 source_lang,
564 creation_date,
565 created_by,
566 last_update_date,
567 last_update_login,
568 last_updated_by
569 )
570 Select
571 l_attribute_id,
572 p_attribute_name,
573 L.LANGUAGE_CODE,
574 userenv('LANG'),
575 l_creation_date,
576 l_created_by,
577 l_last_update_date,
578 l_last_update_login,
579 l_last_updated_by
580 from FND_LANGUAGES L
581 where L.INSTALLED_FLAG in ('I', 'B')
582 and not exists
583 (select NULL
584 from pqh_attributes_tl T
585 where T.attribute_id = l_attribute_id
586 and T.LANGUAGE = L.LANGUAGE_CODE);
587
588
589 end if;
590 end;
591 end load_row;
592 --
593 -- ----------------------------------------------------------------------------
594 -- |-----------------------------< add_language >------------------------------|
595 -- ----------------------------------------------------------------------------
596 Procedure ADD_LANGUAGE
597 is
598 begin
599 delete from PQH_ATTRIBUTES_TL T
600 where not exists
601 (select NULL
602 from PQH_ATTRIBUTES B
603 where B.ATTRIBUTE_ID = T.ATTRIBUTE_ID
604 );
605
606 update PQH_ATTRIBUTES_TL T set (
607 ATTRIBUTE_NAME
608 ) = (select
609 B.ATTRIBUTE_NAME
610 from PQH_ATTRIBUTES_TL B
611 where B.ATTRIBUTE_ID = T.ATTRIBUTE_ID
612 and B.LANGUAGE = T.SOURCE_LANG)
613 where (
614 T.ATTRIBUTE_ID,
615 T.LANGUAGE
616 ) in (select
617 SUBT.ATTRIBUTE_ID,
618 SUBT.LANGUAGE
619 from PQH_ATTRIBUTES_TL SUBB, PQH_ATTRIBUTES_TL SUBT
620 where SUBB.ATTRIBUTE_ID = SUBT.ATTRIBUTE_ID
621 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
622 and (SUBB.ATTRIBUTE_NAME <> SUBT.ATTRIBUTE_NAME
623 ));
624
625 insert into PQH_ATTRIBUTES_TL (
626 ATTRIBUTE_ID,
627 ATTRIBUTE_NAME,
628 LAST_UPDATE_DATE,
629 CREATION_DATE,
630 CREATED_BY,
631 LAST_UPDATE_LOGIN,
632 LAST_UPDATED_BY,
633 LANGUAGE,
634 SOURCE_LANG
635 ) select
636 B.ATTRIBUTE_ID,
637 B.ATTRIBUTE_NAME,
638 B.LAST_UPDATE_DATE,
639 B.CREATION_DATE,
640 B.CREATED_BY,
641 B.LAST_UPDATE_LOGIN,
642 B.LAST_UPDATED_BY,
643 L.LANGUAGE_CODE,
644 B.SOURCE_LANG
645 from PQH_ATTRIBUTES_TL B, FND_LANGUAGES L
646 where L.INSTALLED_FLAG in ('I', 'B')
647 and B.LANGUAGE = userenv('LANG')
648 and not exists
649 (select NULL
650 from PQH_ATTRIBUTES_TL T
651 where T.ATTRIBUTE_ID = B.ATTRIBUTE_ID
652 and T.LANGUAGE = L.LANGUAGE_CODE);
653 end ADD_LANGUAGE;
654 --
655 --
656 End pqh_att_shd;
657 --