DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_PFT_SHD

Source


1 Package Body hr_pft_shd as
2 /* $Header: hrpftrhi.pkb 120.0 2005/05/31 02:07:40 appldev noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33) := '  hr_pft_shd.';  -- Global package name
9 --
10 -- ----------------------------------------------------------------------------
11 -- |---------------------------< constraint_error >---------------------------|
12 -- ----------------------------------------------------------------------------
13 Procedure constraint_error
14   (p_constraint_name in all_constraints.constraint_name%TYPE
15   ) Is
16 --
17   l_proc        varchar2(72) := g_package||'constraint_error';
18 --
19 Begin
20   --
21   If (p_constraint_name = 'HR_ALL_POSITIONS_F_TL_PK') Then
22     fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
23     fnd_message.set_token('PROCEDURE', l_proc);
24     fnd_message.set_token('STEP','5');
25     fnd_message.raise_error;
26   Else
27     fnd_message.set_name('PAY', 'HR_7877_API_INVALID_CONSTRAINT');
28     fnd_message.set_token('PROCEDURE', l_proc);
29     fnd_message.set_token('CONSTRAINT_NAME', p_constraint_name);
30     fnd_message.raise_error;
31   End If;
32   --
33 End constraint_error;
34 --
35 -- ----------------------------------------------------------------------------
36 -- |-----------------------------< api_updating >-----------------------------|
37 -- ----------------------------------------------------------------------------
38 Function api_updating
39   (p_position_id                          in     number
40   ,p_language                             in     varchar2
41   )      Return Boolean Is
42 --
43   --
44   -- Cursor selects the 'current' row from the HR Schema
45   --
46   Cursor C_Sel1 is
47     select
48        position_id
49       ,language
50       ,source_lang
51       ,name
52     from  hr_all_positions_f_tl
53     where position_id = p_position_id
54     and   language = p_language;
55 --
56   l_fct_ret     boolean;
57 --
58 Begin
59   --
60   If (p_position_id is null or
61       p_language is null
62      ) Then
63     --
64     -- One of the primary key arguments is null therefore we must
65     -- set the returning function value to false
66     --
67     l_fct_ret := false;
68   Else
69     If (p_position_id
70         = hr_pft_shd.g_old_rec.position_id and
71         p_language
72         = hr_pft_shd.g_old_rec.language
73        ) Then
74       --
75       -- The g_old_rec is current therefore we must
76       -- set the returning function to true
77       --
78       l_fct_ret := true;
79     Else
80       --
81       -- Select the current row into g_old_rec
82       --
83       Open C_Sel1;
84       Fetch C_Sel1 Into hr_pft_shd.g_old_rec;
85       If C_Sel1%notfound Then
86         Close C_Sel1;
87         --
88         -- The primary key is invalid therefore we must error
89         --
90         fnd_message.set_name('PAY', 'HR_7220_INVALID_PRIMARY_KEY');
91         fnd_message.raise_error;
92       End If;
93       Close C_Sel1;
94       --
95       l_fct_ret := true;
96     End If;
97   End If;
98   Return (l_fct_ret);
99 --
100 End api_updating;
101 --
102 -- ----------------------------------------------------------------------------
103 -- |---------------------------------< lck >----------------------------------|
104 -- ----------------------------------------------------------------------------
105 Procedure lck
106   (p_position_id                          in     number
107   ,p_language                             in     varchar2
108   ) is
109 --
110 -- Cursor selects the 'current' row from the HR Schema
111 --
112   Cursor C_Sel1 is
113     select
114        position_id
115       ,language
116       ,source_lang
117       ,name
118     from        hr_all_positions_f_tl
119     where       position_id = p_position_id
120     and   language = p_language
121     for update nowait;
122 --
123   l_proc        varchar2(72) := g_package||'lck';
124 --
125 Begin
126   hr_utility.set_location('Entering:'||l_proc, 5);
127   --
128   hr_api.mandatory_arg_error
129     (p_api_name           => l_proc
130     ,p_argument           => 'POSITION_ID'
131     ,p_argument_value     => p_position_id
132     );
133   hr_utility.set_location(l_proc,6);
134   hr_api.mandatory_arg_error
135     (p_api_name           => l_proc
136     ,p_argument           => 'LANGUAGE'
137     ,p_argument_value     => p_language
138     );
139   --
140   Open  C_Sel1;
141   Fetch C_Sel1 Into hr_pft_shd.g_old_rec;
142   If C_Sel1%notfound then
143     Close C_Sel1;
144     --
145     -- The primary key is invalid therefore we must error
146     --
147     fnd_message.set_name('PAY', 'HR_7220_INVALID_PRIMARY_KEY');
148     fnd_message.raise_error;
149   End If;
150   Close C_Sel1;
151   --
152   --
153   hr_utility.set_location(' Leaving:'||l_proc, 10);
154   --
155   -- We need to trap the ORA LOCK exception
156   --
157 Exception
158   When HR_Api.Object_Locked then
159     --
160     -- The object is locked therefore we need to supply a meaningful
161     -- error message.
162     --
163     fnd_message.set_name('PAY', 'HR_7165_OBJECT_LOCKED');
164     fnd_message.set_token('TABLE_NAME', 'hr_all_positions_f_tl');
165     fnd_message.raise_error;
166 End lck;
167 --
168 -- ----------------------------------------------------------------------------
169 -- |----------------------------< add_language >------------------------------|
170 -- ----------------------------------------------------------------------------
171 
172 PROCEDURE add_language IS
173   --
174   -- Return new tl position records for new languages
175   --
176   cursor c_new_positions_tl is
177   select psf.position_id
178        , psd.id_flex_num
179        , psd.position_definition_id
180        , pft.created_by
181        , pft.creation_date
182        , pft.last_updated_by
183        , pft.last_update_date
184        , pft.last_update_login
185        , l.language_code
186        , pft.source_lang
187        , l.nls_language
188        , pft.name
189     from per_position_definitions psd
190        , hr_all_positions_f_tl    pft
191        , hr_all_positions_f       psf
192        , fnd_languages            l
193    where psf.effective_end_date     =  hr_api.g_eot
194      and psd.position_definition_id =  psf.position_definition_id
195      and psf.position_id            =  pft.position_id
196      and pft.language               =  userenv('LANG')
197      and l.installed_flag           in ('I', 'B')
198      and not exists (select null
199                        from hr_all_positions_f_tl pft2
200                       where pft2.position_id = pft.position_id
201                         and pft2.language = l.language_code)
202    order by l.language_code;
203    --
204    l_userenv_language_code   VARCHAR2(4) := userenv('LANG'); --Bug #2958520
205    --
206    l_current_nls_language    VARCHAR2(30);
207    --
208    l_proc        varchar2(72) := g_package||'add_language';
209    --
210 Begin
211   --
212   hr_utility.set_location('Entering:'||l_proc, 5);
213   --
214   delete from HR_ALL_POSITIONS_F_TL T
215   where not exists
216     (select NULL
217     from HR_ALL_POSITIONS_F B
218     where B.POSITION_ID = T.POSITION_ID
219     );
220   --
221   --
222   For l_position_tl IN c_new_positions_tl loop
223     --
224     -- Only set session nls language if changed.
225     --
226     If l_current_nls_language = l_position_tl.nls_language then
227 
228       null; -- Have not changed so do nothing.
229 
230     Else
231 
232       hr_kflex_utility.set_session_nls_language( l_position_tl.nls_language );
233       l_current_nls_language := l_position_tl.nls_language;
234 
235     End if;
236     --
237     insert into hr_all_positions_f_tl (
238             position_id
239           , name
240           , created_by
241           , creation_date
242           , last_updated_by
243           , last_update_date
244           , last_update_login
245           , language
246           , source_lang)
247     values (l_position_tl.position_id
248           , nvl(fnd_flex_ext.get_segs( g_app_code
249                                      , g_flex_code
250                                      , l_position_tl.id_flex_num
251                                      , l_position_tl.position_definition_id
252                                      )
253                , l_position_tl.name
254                )
255           , l_position_tl.created_by
256           , l_position_tl.creation_date
257           , l_position_tl.last_updated_by
258           , l_position_tl.last_update_date
259           , l_position_tl.last_update_login
260           , l_position_tl.language_code
261           , l_position_tl.source_lang);
262     --
263   End loop;
264   --
265   hr_kflex_utility.set_session_language_code( l_userenv_language_code );
266   --
267   hr_utility.set_location(' Leaving:'||l_proc, 10);
268   --
269 Exception
270   --
271   When Others Then
272     --
273     hr_kflex_utility.set_session_language_code( l_userenv_language_code );
274     --
275     raise;
276 End;
277 --
278 -- ----------------------------------------------------------------------------
279 -- |-----------------------------< convert_args >-----------------------------|
280 -- ----------------------------------------------------------------------------
281 Function convert_args
282   (p_position_id                    in number
283   ,p_language                       in varchar2
284   ,p_source_lang                    in varchar2
285   ,p_name                           in varchar2
286   )
287   Return g_rec_type is
288 --
289   l_rec   g_rec_type;
290 --
291 Begin
292   --
293   -- Convert arguments into local l_rec structure.
294   --
295   l_rec.position_id                      := p_position_id;
296   l_rec.language                         := p_language;
297   l_rec.source_lang                      := p_source_lang;
298   l_rec.name                             := p_name;
299   --
300   -- Return the plsql record structure.
301   --
302   Return(l_rec);
303 --
304 End convert_args;
305 --
306 end hr_pft_shd;