DBA Data[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 --