DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_MLS_MIGRATION

Source


1 PACKAGE BODY per_mls_migration AS
2 /* $Header: pemlsmig.pkb 115.10 2004/04/29 04:34:34 adudekul noship $ */
3 --
4 -- Fix for bug 3481355 starts here. Commented out the JOB procedure.
5 --
6 -- ----------------------------------------------------------------------------
7 -- |--------------------------< migrateJobData >----------------------------|
8 -- ----------------------------------------------------------------------------
9 --
10 -- Fix for the bug 3481355 ends here.
11 --
12 -- ----------------------------------------------------------------------------
13 -- |------------------------< migratePositionData >-------------------------|
14 -- ----------------------------------------------------------------------------
15 procedure migratePositionData(
16    p_process_ctrl   IN            varchar2,
17    p_start_pkid     IN            number,
18    p_end_pkid       IN            number,
19    p_rows_processed    OUT nocopy number)
20 is
21 
22   cursor csr_installed_languages is
23     select language_code,
24            nls_Language
25       from fnd_languages
26      where installed_flag in ('I', 'B');
27 
28   l_userenv_language_code   VARCHAR2(4) := userenv('LANG');
29   l_current_nls_language    VARCHAR2(30);
30   l_current_language        VARCHAR2(4);
31   l_rows_processed number := 0;
32   l_end_of_time date := hr_general.end_of_time;
33 
34 begin
35 
36   /*
37   ** Clear out any existing data for this range of records
38   **
39   ** Don't delete just yet.
40   **
41   delete from hr_all_positions_f_tl
42   where position_id between p_start_pkid
43                         and p_end_pkid;
44   */
45 
46   /*
47   **
48   ** Note the issue found by Jon and Phil whereby a validation/generation
49   ** failure in the derivation of the string due to unresolvable references to
50   ** profile options is not an error but a signaled by a null string. If this
51   ** happens use the name from the base table.
52   **
53   ** For each installed language insert a new record into the TL table for
54   ** each record in the range provided that is present in the base table.
55   */
56   for c_language in csr_installed_languages loop
57 
58     /*
59     ** Set language for iteration....
60     */
61     hr_kflex_utility.set_session_nls_language(c_language.nls_language);
62     l_current_language := c_language.language_code;
63 
64     /*
65     ** Insert the TL rows.
66     */
67     insert into hr_all_positions_f_tl (
68         position_id,
69 	language,
70 	source_lang,
71 	name,
72 	created_by,
73 	creation_date,
74 	last_updated_by,
75 	last_update_date,
76 	last_update_login )
77     select j.position_id,
78            l_current_language,
79 	   l_userenv_language_code,
80 	   nvl(fnd_flex_ext.get_segs('PER', 'POS',
81 	                             jd.id_flex_num,
82 				     jd.position_definition_id),
83                j.name),
84            j.created_by,
85 	   j.creation_date,
86 	   j.last_updated_by,
87 	   j.last_update_date,
88 	   j.last_update_login
89       from hr_all_positions_f j,
90            per_position_definitions jd
91      where j.position_definition_id = jd.position_definition_id
92        and j.position_id between p_start_pkid
93                         and p_end_pkid
94      -- Fix for bug 3359423 starts here. check for the max EED and not the EOT.
95      --  and j.effective_end_date = l_end_of_time
96        and j.effective_end_date = (select max(effective_end_date)
97                                    from   hr_all_positions_f pos
98                                    where  pos.position_id = j.position_id)
99      -- Fix for bug 3359423 ends here.
100        and not exists (select '1'
101                          from hr_all_positions_f_tl jtl
102 			where jtl.position_id = j.position_id
103 			  and jtl.language = l_current_language);
104 
105     l_rows_processed := l_rows_processed + SQL%ROWCOUNT;
106 
107   end loop;
108 
109   p_rows_processed := l_rows_processed;
110 
111   hr_kflex_utility.set_session_language_code( l_userenv_language_code );
112 
113 Exception
114   --
115   When Others Then
116     --
117     hr_kflex_utility.set_session_language_code( l_userenv_language_code );
118     --
119     raise;
120 
121 end;
122 
123 -- ----------------------------------------------------------------------------
124 -- |---------------------------< migrateGradeData >---------------------------|
125 -- ----------------------------------------------------------------------------
126 procedure migrateGradeData(
127    p_process_ctrl   IN            varchar2,
128    p_start_pkid     IN            number,
129    p_end_pkid       IN            number,
130    p_rows_processed    OUT nocopy number)
131 is
132 
133   cursor csr_installed_languages is
134     select language_code,
135            nls_Language
136       from fnd_languages
137      where installed_flag in ('I', 'B');
138 
139   l_userenv_language_code   VARCHAR2(4) := userenv('LANG');
140   l_current_nls_language    VARCHAR2(30);
141   l_current_language        VARCHAR2(4);
142   l_rows_processed number := 0;
143   l_end_of_time date := hr_general.end_of_time;
144 
145 begin
146 
147   /*
148   ** Clear out any existing data for this range of records
149   **
150   ** Don't delete just yet.
151   **
152   delete from per_grades_tl
153   where grade_id between p_start_pkid
154                         and p_end_pkid;
155   */
156 
157   /*
158   **
159   ** Note the issue found by Jon and Phil whereby a validation/generation
160   ** failure in the derivation of the string due to unresolvable references to
161   ** profile options is not an error but a signaled by a null string. If this
162   ** happens use the name from the base table.
163   **
164   ** For each installed language insert a new record into the TL table for
165   ** each record in the range provided that is present in the base table.
166   */
167   for c_language in csr_installed_languages loop
168 
169     /*
170     ** Set language for iteration....
171     */
172     hr_kflex_utility.set_session_nls_language(c_language.nls_language);
173     l_current_language := c_language.language_code;
174 
175     /*
176     ** Insert the TL rows.
177     */
178     insert into per_grades_tl(
179         grade_id,
180 	language,
181 	source_lang,
182 	name,
183 	created_by,
184 	creation_date,
185 	last_updated_by,
186 	last_update_date,
187 	last_update_login)
188     select g.grade_id,
189            l_current_language,
190 	   l_userenv_language_code,
191 	   nvl(fnd_flex_ext.get_segs('PER', 'GRD',
192 	                             gd.id_flex_num,
193 				     gd.grade_definition_id),
194                g.name),
195 	   g.created_by,
196 	   g.creation_date,
197 	   g.last_updated_by,
198 	   g.last_update_date,
199 	   g.last_update_login
200       from per_grades g,
201            per_grade_definitions gd
202      where g.grade_definition_id = gd.grade_definition_id
203        and g.grade_id between p_start_pkid
204                         and p_end_pkid
205        and not exists (select '1'
206                          from per_grades_tl gtl
207 			where gtl.grade_id = g.grade_id
208 			  and gtl.language = l_current_language);
209 
210     l_rows_processed := l_rows_processed + SQL%ROWCOUNT;
211 
212   end loop;
213 
214   p_rows_processed := l_rows_processed;
215 
216   hr_kflex_utility.set_session_language_code( l_userenv_language_code );
217 
218 Exception
219   --
220   When Others Then
221     --
222     hr_kflex_utility.set_session_language_code( l_userenv_language_code );
223     --
224     raise;
225 
226 end;
227 
228 -- ----------------------------------------------------------------------------
229 -- |---------------------------< migrateRatingScaleData >---------------------------|
230 -- ----------------------------------------------------------------------------
231 procedure migrateRatingScaleData(
232    p_process_ctrl   IN            varchar2,
233    p_start_pkid     IN            number,
234    p_end_pkid       IN            number,
235    p_rows_processed    OUT nocopy number)
236 is
237 
238   cursor csr_installed_languages is
239     select language_code,
240            nls_Language
241       from fnd_languages
242      where installed_flag in ('I', 'B');
243 
244   l_userenv_language_code   VARCHAR2(4) := userenv('LANG');
245   l_current_nls_language    VARCHAR2(30);
246   l_current_language        VARCHAR2(4);
247   l_rows_processed number := 0;
248   l_end_of_time date := hr_general.end_of_time;
249 
250 begin
251 
252   /*
253   ** Clear out any existing data for this range of records
254   **
255   ** Don't delete just yet.
256   **
257   delete from per_rating_scales_tl
258   where rating_scale_id between p_start_pkid
259                         and p_end_pkid;
260   */
261 
262   /*
263   **
264   ** For each installed language insert a new record into the TL table for
265   ** each record in the range provided that is present in the base table.
266   */
267   for c_language in csr_installed_languages loop
268 
269     /*
270     ** Set language for iteration....
271     */
272     hr_kflex_utility.set_session_nls_language(c_language.nls_language);
273     l_current_language := c_language.language_code;
274 
275     /*
276     ** Insert the TL rows.
277     */
278     insert into per_rating_scales_tl(
279         rating_scale_id,
280 	language,
281 	source_lang,
282 	name,
283 	description,
284 	created_by,
285 	creation_date,
286 	last_updated_by,
287 	last_update_date,
288 	last_update_login)
289     select r.rating_scale_id,
290            l_current_language,
291 	   l_userenv_language_code,
292            r.name,
293 	   r.description,
294 	   r.created_by,
295 	   r.creation_date,
296 	   r.last_updated_by,
297 	   r.last_update_date,
298 	   r.last_update_login
299       from per_rating_scales r
300      where r.rating_scale_id between p_start_pkid
301                                  and p_end_pkid
302        and not exists (select '1'
303                          from per_rating_scales_tl rtl
304 			where rtl.rating_scale_id = r.rating_scale_id
305 			  and rtl.language = l_current_language);
306 
307     l_rows_processed := l_rows_processed + SQL%ROWCOUNT;
308 
309   end loop;
310 
311   p_rows_processed := l_rows_processed;
312 
313   hr_kflex_utility.set_session_language_code( l_userenv_language_code );
314 
315 Exception
316   --
317   When Others Then
318     --
319     hr_kflex_utility.set_session_language_code( l_userenv_language_code );
320     --
321     raise;
322 
323 end;
324 
325 -- ----------------------------------------------------------------------------
326 -- |---------------------------< migrateRatingLevelData >---------------------|
327 -- ----------------------------------------------------------------------------
328 procedure migrateRatingLevelData(
329    p_process_ctrl   IN            varchar2,
330    p_start_pkid     IN            number,
331    p_end_pkid       IN            number,
332    p_rows_processed    OUT nocopy number)
333 is
334 
335   cursor csr_installed_languages is
336     select language_code,
337            nls_Language
338       from fnd_languages
339      where installed_flag in ('I', 'B');
340 
341   l_userenv_language_code   VARCHAR2(4) := userenv('LANG');
342   l_current_nls_language    VARCHAR2(30);
343   l_current_language        VARCHAR2(4);
344   l_rows_processed number := 0;
345   l_end_of_time date := hr_general.end_of_time;
346 
347 begin
348 
349   /*
350   ** Clear out any existing data for this range of records
351   **
352   ** Don't delete just yet.
353   **
354   delete from per_rating_levels_tl
355   where rating_level_id between p_start_pkid
356                         and p_end_pkid;
357   */
358 
359   /*
360   **
361   ** For each installed language insert a new record into the TL table for
362   ** each record in the range provided that is present in the base table.
363   */
364   for c_language in csr_installed_languages loop
365 
366     /*
367     ** Set language for iteration....
368     */
369     hr_kflex_utility.set_session_nls_language(c_language.nls_language);
370     l_current_language := c_language.language_code;
371 
372     /*
373     ** Insert the TL rows.
374     */
375     insert into per_rating_levels_tl(
376         rating_level_id,
377 	language,
378 	source_lang,
379 	name,
380 	behavioural_indicator,
381 	created_by,
382 	creation_date,
383 	last_updated_by,
384 	last_update_date,
385 	last_update_login)
386     select r.rating_level_id,
387            l_current_language,
388 	   l_userenv_language_code,
389 	   r.name,
390 	   r.behavioural_indicator,
391 	   r.created_by,
392 	   r.creation_date,
393 	   r.last_updated_by,
394 	   r.last_update_date,
395 	   r.last_update_login
396       from per_rating_levels r
397      where r.rating_level_id between p_start_pkid
398                                  and p_end_pkid
399        and not exists (select '1'
400                          from per_rating_levels_tl rtl
401 			where rtl.rating_level_id = r.rating_level_id
402 			  and rtl.language = l_current_language);
403 
404     l_rows_processed := l_rows_processed + SQL%ROWCOUNT;
405 
406   end loop;
407 
408   p_rows_processed := l_rows_processed;
409 
410   hr_kflex_utility.set_session_language_code( l_userenv_language_code );
411 
412 Exception
413   --
414   When Others Then
415     --
416     hr_kflex_utility.set_session_language_code( l_userenv_language_code );
417     --
418     raise;
419 
420 end;
421 
422 -- ----------------------------------------------------------------------------
423 -- |-------------------------< migrateCompetenceData >------------------------|
424 -- ----------------------------------------------------------------------------
425 procedure migrateCompetenceData(
426    p_process_ctrl   IN            varchar2,
427    p_start_pkid     IN            number,
428    p_end_pkid       IN            number,
429    p_rows_processed    OUT nocopy number)
430 is
431 
432   cursor csr_installed_languages is
433     select language_code,
434            nls_Language
435       from fnd_languages
436      where installed_flag in ('I', 'B');
437 
438   l_userenv_language_code   VARCHAR2(4) := userenv('LANG');
439   l_current_nls_language    VARCHAR2(30);
440   l_current_language        VARCHAR2(4);
441   l_rows_processed number := 0;
442   l_end_of_time date := hr_general.end_of_time;
443 
444 begin
445 
446   /*
447   ** Clear out any existing data for this range of records
448   **
449   ** Don't delete just yet.
450   **
451   delete from per_competences_tl
452   where competence_id between p_start_pkid
453                         and p_end_pkid;
454   */
455 
456   /*
457   **
458   ** Note the issue found by Jon and Phil whereby a validation/generation
459   ** failure in the derivation of the string due to unresolvable references to
460   ** profile options is not an error but a signaled by a null string. If this
461   ** happens use the name from the base table.
462   **
463   ** For each installed language insert a new record into the TL table for
464   ** each record in the range provided that is present in the base table.
465   */
466   for c_language in csr_installed_languages loop
467 
468     /*
469     ** Set language for iteration....
470     */
471     hr_kflex_utility.set_session_nls_language(c_language.nls_language);
472     l_current_language := c_language.language_code;
473 
474     /*
475     ** Insert the TL rows.
476     */
477     insert into per_competences_tl(
478         competence_id,
479 	language,
480 	source_lang,
481 	name,
482 	competence_alias,
483 	behavioural_indicator,
484 	description,
485 	created_by,
486 	creation_date,
487 	last_updated_by,
488 	last_update_date,
489 	last_update_login)
490     select c.competence_id,
491            l_current_language,
492 	   l_userenv_language_code,
493 	   nvl(fnd_flex_ext.get_segs('PER', 'CMP',
494 	                             cd.id_flex_num,
495 				     cd.competence_definition_id),
496                c.name),
497 	   c.competence_alias,
498 	   c.behavioural_indicator,
499 	   c.description,
500 	   c.created_by,
501 	   c.creation_date,
502 	   c.last_updated_by,
503 	   c.last_update_date,
504 	   c.last_update_login
505       from per_competences c,
506            per_competence_definitions cd
507      where c.competence_definition_id = cd.competence_definition_id
508        and c.competence_id between p_start_pkid
509                                and p_end_pkid
510        and not exists (select '1'
511                          from per_competences_tl ctl
512 			where ctl.competence_id = c.competence_id
513 			  and ctl.language = l_current_language);
514 
515     l_rows_processed := l_rows_processed + SQL%ROWCOUNT;
516 
517   end loop;
518 
519   p_rows_processed := l_rows_processed;
520 
521   hr_kflex_utility.set_session_language_code( l_userenv_language_code );
522 
523 Exception
524   --
525   When Others Then
526     --
527     hr_kflex_utility.set_session_language_code( l_userenv_language_code );
528     --
529     raise;
530 
531 end;
532 
533 -- ----------------------------------------------------------------------------
534 -- |-----------------------< migrateQualificationData >-----------------------|
535 -- ----------------------------------------------------------------------------
536 procedure migrateQualificationData(
537    p_process_ctrl   IN            varchar2,
538    p_start_pkid     IN            number,
539    p_end_pkid       IN            number,
540    p_rows_processed    OUT nocopy number)
541 is
542 
543   cursor csr_installed_languages is
544     select language_code,
545            nls_Language
546       from fnd_languages
547      where installed_flag in ('I', 'B');
548 
549   l_userenv_language_code   VARCHAR2(4) := userenv('LANG');
550   l_current_nls_language    VARCHAR2(30);
551   l_current_language        VARCHAR2(4);
552   l_rows_processed number := 0;
553   l_end_of_time date := hr_general.end_of_time;
554 
555 begin
556 
557   /*
558   ** Clear out any existing data for this range of records
559   **
560   ** Don't delete just yet.
561   **
562   delete from per_qualifications_tl
563   where qualification_id between p_start_pkid
564                              and p_end_pkid;
565   */
566 
567   /*
568   **
569   ** For each installed language insert a new record into the TL table for
570   ** each record in the range provided that is present in the base table.
571   */
572   for c_language in csr_installed_languages loop
573 
574     /*
575     ** Set language for iteration....
576     */
577     hr_kflex_utility.set_session_nls_language(c_language.nls_language);
578     l_current_language := c_language.language_code;
579 
580     /*
581     ** Insert the TL rows.
582     */
583     insert into per_qualifications_tl(
584         qualification_id,
585 	language,
586 	source_lang,
587 	title,
588 	group_ranking,
589 	license_restrictions,
590 	awarding_body,
591 	grade_attained,
592 	reimbursement_arrangements,
593 	training_completed_units,
594 	membership_category,
595 	created_by,
596 	creation_date,
597 	last_updated_by,
598 	last_update_date,
599 	last_update_login)
600     select q.qualification_id,
601            l_current_language,
602 	   l_userenv_language_code,
603 	   q.title,
604 	   q.group_ranking,
605 	   q.license_restrictions,
606 	   q.awarding_body,
607 	   q.grade_attained,
608 	   q.reimbursement_arrangements,
609 	   q.training_completed_units,
610 	   q.membership_category,
611 	   q.created_by,
612 	   q.creation_date,
613 	   q.last_updated_by,
614 	   q.last_update_date,
615 	   q.last_update_login
616       from per_qualifications q
617      where q.qualification_id between p_start_pkid
618                                   and p_end_pkid
619        and not exists (select '1'
620                          from per_qualifications_tl qtl
621 			where qtl.qualification_id = q.qualification_id
622 			  and qtl.language = l_current_language);
623 
624     l_rows_processed := l_rows_processed + SQL%ROWCOUNT;
625 
626   end loop;
627 
628   p_rows_processed := l_rows_processed;
629 
630   hr_kflex_utility.set_session_language_code( l_userenv_language_code );
631 
632 Exception
633   --
634   When Others Then
635     --
636     hr_kflex_utility.set_session_language_code( l_userenv_language_code );
637     --
638     raise;
639 
640 end;
641 
642 -- ----------------------------------------------------------------------------
643 -- |----------------------< migrateSubjectsTakenData >------------------------|
644 -- ----------------------------------------------------------------------------
645 procedure migrateSubjectsTakenData(
646    p_process_ctrl   IN            varchar2,
647    p_start_pkid     IN            number,
648    p_end_pkid       IN            number,
649    p_rows_processed    OUT nocopy number)
650 is
651 
652   cursor csr_installed_languages is
653     select language_code,
654            nls_Language
655       from fnd_languages
656      where installed_flag in ('I', 'B');
657 
658   l_userenv_language_code   VARCHAR2(4) := userenv('LANG');
659   l_current_nls_language    VARCHAR2(30);
660   l_current_language        VARCHAR2(4);
661   l_rows_processed number := 0;
662   l_end_of_time date := hr_general.end_of_time;
663 
664 begin
665 
666   /*
667   ** Clear out any existing data for this range of records
668   **
669   ** Don't delete just yet.
670   **
671   delete from per_subjects_taken_tl
672   where subjects_taken_id between p_start_pkid
673                               and p_end_pkid;
674   */
675 
676   /*
677   **
678   ** For each installed language insert a new record into the TL table for
679   ** each record in the range provided that is present in the base table.
680   */
681   for c_language in csr_installed_languages loop
682 
683     /*
684     ** Set language for iteration....
685     */
686     hr_kflex_utility.set_session_nls_language(c_language.nls_language);
687     l_current_language := c_language.language_code;
688 
689     /*
690     ** Insert the TL rows.
691     */
692     insert into per_subjects_taken_tl(
693         subjects_taken_id,
694 	language,
695 	source_lang,
696 	grade_attained,
697 	created_by,
698 	creation_date,
699 	last_updated_by,
700 	last_update_date,
701 	last_update_login)
702     select s.subjects_taken_id,
703            l_current_language,
704 	   l_userenv_language_code,
705            s.grade_attained,
706 	   s.created_by,
707 	   s.creation_date,
708 	   s.last_updated_by,
709 	   s.last_update_date,
710 	   s.last_update_login
711       from per_subjects_taken s
712      where s.subjects_taken_id between p_start_pkid
713                                    and p_end_pkid
714        and not exists (select '1'
715                          from per_subjects_taken_tl stl
716 			where stl.subjects_taken_id = s.subjects_taken_id
717 			  and stl.language = l_current_language);
718 
719     l_rows_processed := l_rows_processed + SQL%ROWCOUNT;
720 
721   end loop;
722 
723   p_rows_processed := l_rows_processed;
724 
725   hr_kflex_utility.set_session_language_code( l_userenv_language_code );
726 
727 Exception
728   --
729   When Others Then
730     --
731     hr_kflex_utility.set_session_language_code( l_userenv_language_code );
732     --
733     raise;
734 
735 end;
736 
740 procedure migrateQualificationTypeData(
737 -- ----------------------------------------------------------------------------
738 -- |---------------------< migrateQualificationTypeData >---------------------|
739 -- ----------------------------------------------------------------------------
741    p_process_ctrl   IN            varchar2,
742    p_start_pkid     IN            number,
743    p_end_pkid       IN            number,
744    p_rows_processed    OUT nocopy number)
745 is
746 
747   cursor csr_installed_languages is
748     select language_code,
749            nls_Language
750       from fnd_languages
751      where installed_flag in ('I', 'B');
752 
753   l_userenv_language_code   VARCHAR2(4) := userenv('LANG');
754   l_current_nls_language    VARCHAR2(30);
755   l_current_language        VARCHAR2(4);
756   l_rows_processed number := 0;
757   l_end_of_time date := hr_general.end_of_time;
758 
759 begin
760 
761   /*
762   ** Clear out any existing data for this range of records
763   **
764   ** Don't delete just yet.
765   **
766   delete from per_qualification_types_tl
767   where qualification_type_id between p_start_pkid
768                         and p_end_pkid;
769   */
770 
771   /*
772   **
773   ** For each installed language insert a new record into the TL table for
774   ** each record in the range provided that is present in the base table.
775   */
776   for c_language in csr_installed_languages loop
777 
778     /*
779     ** Set language for iteration....
780     */
781     hr_kflex_utility.set_session_nls_language(c_language.nls_language);
782     l_current_language := c_language.language_code;
783 
784     /*
785     ** Insert the TL rows.
786     */
787     insert into per_qualification_types_tl(
788         qualification_type_id,
789 	language,
790 	source_lang,
791 	name,
792 	created_by,
793 	creation_date,
794 	last_updated_by,
795 	last_update_date,
796 	last_update_login)
797     select q.qualification_type_id,
798            l_current_language,
799 	   l_userenv_language_code,
800 	   q.name,
801 	   q.created_by,
802 	   q.creation_date,
803 	   q.last_updated_by,
804 	   q.last_update_date,
805 	   q.last_update_login
806       from per_qualification_types q
807      where q.qualification_type_id between p_start_pkid
808                                        and p_end_pkid
809        and not exists (select '1'
810                          from per_qualification_types_tl qtl
811 			where qtl.qualification_type_id = q.qualification_type_id
812 			  and qtl.language = l_current_language);
813 
814     l_rows_processed := l_rows_processed + SQL%ROWCOUNT;
815 
816   end loop;
817 
818   p_rows_processed := l_rows_processed;
819 
820   hr_kflex_utility.set_session_language_code( l_userenv_language_code );
821 
822 Exception
823   --
824   When Others Then
825     --
826     hr_kflex_utility.set_session_language_code( l_userenv_language_code );
827     --
828     raise;
829 
830 end;
831 
832 end per_mls_migration;