DBA Data[Home] [Help]

PACKAGE BODY: APPS.PQH_RST_SHD

Source


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