DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_TWN_BUS

Source


1 Package Body hr_twn_bus as
2 /* $Header: hrtwnrhi.pkb 115.4 2002/12/03 13:55:19 raranjan noship $ */
3 --
4 -- ----------------------------------------------------------------------------
5 -- |                     Private Global Definitions                           |
6 -- ----------------------------------------------------------------------------
7 --
8 g_package  varchar2(33)	:= '  hr_twn_bus.';  -- Global package name
9 --
10 -- The following two global variables are only to be
11 -- used by the return_legislation_code function.
12 --
13 g_legislation_code            varchar2(150)  default null;
14 g_template_window_id          number         default null;
15 --
16 --  ---------------------------------------------------------------------------
17 --  |----------------------< set_security_group_id >--------------------------|
18 --  ---------------------------------------------------------------------------
19 --
20 Procedure set_security_group_id
21   (p_template_window_id                   in number
22   ) is
23   --
24   l_proc              varchar2(72)  :=  g_package||'set_security_group_id';
25   --
26 begin
27   --
28   hr_utility.set_location('Entering:'|| l_proc, 10);
29   --
30   -- No business group context. Security group is not applicable.
31   --
32   null;
33   --
34   hr_utility.set_location(' Leaving:'|| l_proc, 20);
35   --
36 end set_security_group_id;
37 --
38 --  ---------------------------------------------------------------------------
39 --  |---------------------< return_legislation_code >-------------------------|
40 --  ---------------------------------------------------------------------------
41 --
42 Function return_legislation_code
43   (p_template_window_id                   in     number
44   )
45   Return Varchar2 Is
46   --
47   -- Declare cursor
48   --
49   cursor csr_leg_code is
50     select tmp.legislation_code
51       from hr_form_templates_b tmp
52           ,hr_template_windows_b twn
53      where tmp.form_template_id = twn.form_template_id
54        and twn.template_window_id = p_template_window_id;
55   --
56   -- Declare local variables
57   --
58   l_legislation_code  varchar2(150);
59   l_proc              varchar2(72)  :=  g_package||'return_legislation_code';
60   --
61 Begin
62   --
63   hr_utility.set_location('Entering:'|| l_proc, 10);
64   --
65   -- Ensure that all the mandatory parameter are not null
66   --
67   hr_api.mandatory_arg_error
68     (p_api_name           => l_proc
69     ,p_argument           => 'template_window_id'
70     ,p_argument_value     => p_template_window_id
71     );
72   --
73   if ( nvl(hr_twn_bus.g_template_window_id, hr_api.g_number)
74        = p_template_window_id) then
75     --
76     -- The legislation code has already been found with a previous
77     -- call to this function. Just return the value in the global
78     -- variable.
79     --
80     l_legislation_code := hr_twn_bus.g_legislation_code;
81     hr_utility.set_location(l_proc, 20);
82   else
83     --
84     -- The ID is different to the last call to this function
85     -- or this is the first call to this function.
86     --
87     open csr_leg_code;
88     fetch csr_leg_code into l_legislation_code;
89     --
90     if csr_leg_code%notfound then
91       --
92       -- The primary key is invalid therefore we must error
93       --
94       close csr_leg_code;
95       fnd_message.set_name('PAY','HR_7220_INVALID_PRIMARY_KEY');
96       fnd_message.raise_error;
97     end if;
98     hr_utility.set_location(l_proc,30);
99     --
100     -- Set the global variables so the values are
101     -- available for the next call to this function.
102     --
103     close csr_leg_code;
104     hr_twn_bus.g_template_window_id:= p_template_window_id;
105     hr_twn_bus.g_legislation_code  := l_legislation_code;
106   end if;
107   hr_utility.set_location(' Leaving:'|| l_proc, 40);
108   return l_legislation_code;
109 end return_legislation_code;
110 --
111 -- ----------------------------------------------------------------------------
112 -- |-----------------------< chk_non_updateable_args >------------------------|
113 -- ----------------------------------------------------------------------------
114 -- {Start Of Comments}
115 --
116 -- Description:
117 --   This procedure is used to ensure that non updateable attributes have
118 --   not been updated. If an attribute has been updated an error is generated.
119 --
120 -- Pre Conditions:
121 --   g_old_rec has been populated with details of the values currently in
122 --   the database.
123 --
124 -- In Arguments:
125 --   p_rec has been populated with the updated values the user would like the
126 --   record set to.
127 --
128 -- Post Success:
129 --   Processing continues if all the non updateable attributes have not
130 --   changed.
131 --
132 -- Post Failure:
133 --   An application error is raised if any of the non updatable attributes
134 --   have been altered.
135 --
136 -- {End Of Comments}
137 -- ----------------------------------------------------------------------------
138 Procedure chk_non_updateable_args
139   (p_rec in hr_twn_shd.g_rec_type
140   ) IS
141 --
142   l_proc     varchar2(72) := g_package || 'chk_non_updateable_args';
143   l_error    EXCEPTION;
144   l_argument varchar2(30);
145 --
146 Begin
147   --
148   -- Only proceed with the validation if a row exists for the current
149   -- record in the HR Schema.
150   --
151   IF NOT hr_twn_shd.api_updating
152       (p_template_window_id                   => p_rec.template_window_id
153       ,p_object_version_number                => p_rec.object_version_number
154       ) THEN
155      fnd_message.set_name('PER', 'HR_6153_ALL_PROCEDURE_FAIL');
156      fnd_message.set_token('PROCEDURE ', l_proc);
157      fnd_message.set_token('STEP ', '5');
158      fnd_message.raise_error;
159   END IF;
160   --
161   IF (nvl(p_rec.form_window_id,hr_api.g_number) <>
162       nvl(hr_twn_shd.g_old_rec.form_window_id,hr_api.g_number)
163      ) THEN
164      l_argument := 'form_window_id';
165      RAISE l_error;
166   END IF;
167   --
168   IF (nvl(p_rec.form_template_id,hr_api.g_number) <>
169       nvl(hr_twn_shd.g_old_rec.form_template_id,hr_api.g_number)
170      ) THEN
171      l_argument := 'form_template_id';
172      RAISE l_error;
173   END IF;
174   --
175   --
176   EXCEPTION
177     WHEN l_error THEN
178        hr_api.argument_changed_error
179          (p_api_name => l_proc
180          ,p_argument => l_argument);
181     WHEN OTHERS THEN
182        RAISE;
183 End chk_non_updateable_args;
184 --
185 -- ----------------------------------------------------------------------------
186 -- |--------------------------< chk_form_window_id >--------------------------|
187 -- ----------------------------------------------------------------------------
188 Procedure chk_form_window_id
189   (p_template_window_id           in     number
190   ,p_object_version_number        in     number
191   ,p_form_window_id               in     number
192   ) is
193   --
194   l_proc                         varchar2(72) := g_package || 'chk_form_window_id';
195   l_api_updating                 boolean;
196   --
197 Begin
198   hr_utility.set_location('Entering:'||l_proc, 10);
199   --
200   -- Check value has been passed
201   --
202   hr_api.mandatory_arg_error
203     (p_api_name                    => l_proc
204     ,p_argument                    => 'form_window_id'
205     ,p_argument_value              => p_form_window_id
206     );
207   --
208   hr_utility.set_location(' Leaving:'||l_proc, 100);
209 End chk_form_window_id;
210 --
211 -- ----------------------------------------------------------------------------
212 -- |-------------------------< chk_form_template_id >-------------------------|
213 -- ----------------------------------------------------------------------------
214 Procedure chk_form_template_id
215   (p_template_window_id           in     number
216   ,p_object_version_number        in     number
217   ,p_form_template_id             in     number
218   ) is
219   --
220   l_proc                         varchar2(72) := g_package || 'chk_form_template_id';
221   l_api_updating                 boolean;
222   --
223 Begin
224   hr_utility.set_location('Entering:'||l_proc, 10);
225   --
226   -- Check value has been passed
227   --
228   hr_api.mandatory_arg_error
229     (p_api_name                    => l_proc
230     ,p_argument                    => 'form_template_id'
231     ,p_argument_value              => p_form_template_id
232     );
233   --
234   hr_utility.set_location(' Leaving:'||l_proc, 100);
235 End chk_form_template_id;
236 --
237 -- ----------------------------------------------------------------------------
238 -- |------------------------< chk_window_and_template >-----------------------|
239 -- ----------------------------------------------------------------------------
240 Procedure chk_window_and_template
241   (p_template_window_id           in     number
242   ,p_object_version_number        in     number
243   ,p_form_window_id               in     number
244   ,p_form_template_id             in     number
245   ) is
246   --
247   cursor csr_form_window is
248     select fwn.application_id
249           ,fwn.form_id
250       from hr_form_windows_b fwn
251      where fwn.form_window_id = p_form_window_id;
252   --
253   cursor csr_form_template is
254     select tmp.application_id
255           ,tmp.form_id
256       from hr_form_templates_b tmp
257      where tmp.form_template_id = p_form_template_id;
258   --
259   l_proc                         varchar2(72) := g_package || 'chk_window_and_template';
260   l_api_updating                 boolean;
261   l_window_application_id        number;
262   l_window_form_id               number;
263   l_template_application_id      number;
264   l_template_form_id             number;
265   --
266 Begin
267   hr_utility.set_location('Entering:'||l_proc, 10);
268   --
269   l_api_updating := hr_twn_shd.api_updating
270     (p_template_window_id          => p_template_window_id
271     ,p_object_version_number       => p_object_version_number
272     );
273   hr_utility.set_location(l_proc, 20);
274   --
275   -- Only proceed with SQL validation if absolutely necessary
276   --
277   if (  (   l_api_updating
278         and (  nvl(hr_twn_shd.g_old_rec.form_window_id,hr_api.g_number) <>
279                nvl(p_form_window_id,hr_api.g_number)
280             or nvl(hr_twn_shd.g_old_rec.form_template_id,hr_api.g_number) <>
281                nvl(p_form_template_id,hr_api.g_number)))
282      or (NOT l_api_updating)) then
283     --
284     hr_utility.set_location(l_proc,30);
285     --
286     -- Check form window and template reference the same form
287     --
288     open csr_form_window;
289     fetch csr_form_window into l_window_application_id,l_window_form_id;
290     if csr_form_window%notfound then
291       close csr_form_window;
292       fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
293       fnd_message.set_token('PROCEDURE', l_proc);
294       fnd_message.set_token('STEP','10');
295       fnd_message.raise_error;
296     end if;
297     close csr_form_window;
298     --
299     open csr_form_template;
300     fetch csr_form_template into l_template_application_id,l_template_form_id;
301     if csr_form_template%notfound then
302       close csr_form_template;
303       fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
304       fnd_message.set_token('PROCEDURE', l_proc);
305       fnd_message.set_token('STEP','20');
306       fnd_message.raise_error;
307     end if;
308     close csr_form_template;
309     --
310     hr_utility.set_location(l_proc,40);
311     --
312     if   nvl(l_window_application_id,hr_api.g_number) <>
313          nvl(l_template_application_id,hr_api.g_number)
314       or nvl(l_window_form_id,hr_api.g_number) <>
315          nvl(l_template_form_id,hr_api.g_number) then
316       fnd_message.set_name('PAY', 'HR_6153_ALL_PROCEDURE_FAIL');
317       fnd_message.set_token('PROCEDURE', l_proc);
318       fnd_message.set_token('STEP','30');
319       fnd_message.raise_error;
320     end if;
321     --
322   end if;
323   --
324   hr_utility.set_location(' Leaving:'||l_proc, 100);
325 End chk_window_and_template;
326 --
327 -- ----------------------------------------------------------------------------
328 -- |------------------------------< chk_delete >------------------------------|
329 -- ----------------------------------------------------------------------------
330 Procedure chk_delete
331   (p_rec                          in hr_twn_shd.g_rec_type
332   ) is
333 --
334   l_proc  varchar2(72) := g_package||'chk_delete';
335 --
336 Begin
337   hr_utility.set_location('Entering:'||l_proc, 5);
338   --
339   -- No additional validation required
340   --
341   null;
342   --
343   hr_utility.set_location(' Leaving:'||l_proc, 10);
344 End chk_delete;
345 --
346 -- ----------------------------------------------------------------------------
347 -- |---------------------------< insert_validate >----------------------------|
348 -- ----------------------------------------------------------------------------
349 Procedure insert_validate
350   (p_rec                          in hr_twn_shd.g_rec_type
351   ) is
352 --
353   l_proc  varchar2(72) := g_package||'insert_validate';
354 --
355 Begin
356   hr_utility.set_location('Entering:'||l_proc, 5);
357   --
358   -- Call all supporting business operations
359   -- No business group context.  HR_STANDARD_LOOKUPS used for validation.
360   --
361   chk_form_window_id
362     (p_template_window_id           => p_rec.template_window_id
363     ,p_object_version_number        => p_rec.object_version_number
364     ,p_form_window_id               => p_rec.form_window_id
365     );
366   --
367   chk_form_template_id
368     (p_template_window_id           => p_rec.template_window_id
369     ,p_object_version_number        => p_rec.object_version_number
370     ,p_form_template_id             => p_rec.form_template_id
371     );
372   --
373   chk_window_and_template
374     (p_template_window_id           => p_rec.template_window_id
375     ,p_object_version_number        => p_rec.object_version_number
376     ,p_form_window_id               => p_rec.form_window_id
377     ,p_form_template_id             => p_rec.form_template_id
378     );
379   --
380   hr_utility.set_location(' Leaving:'||l_proc, 10);
381 End insert_validate;
382 --
383 -- ----------------------------------------------------------------------------
384 -- |---------------------------< update_validate >----------------------------|
385 -- ----------------------------------------------------------------------------
386 Procedure update_validate
387   (p_rec                          in hr_twn_shd.g_rec_type
388   ) is
389 --
390   l_proc  varchar2(72) := g_package||'update_validate';
391 --
392 Begin
393   hr_utility.set_location('Entering:'||l_proc, 5);
394   --
395   -- Call all supporting business operations
396   -- No business group context.  HR_STANDARD_LOOKUPS used for validation.
397   --
398   chk_non_updateable_args
399     (p_rec                          => p_rec
400     );
401   --
402   chk_form_window_id
403     (p_template_window_id           => p_rec.template_window_id
404     ,p_object_version_number        => p_rec.object_version_number
405     ,p_form_window_id               => p_rec.form_window_id
406     );
407   --
408   chk_form_template_id
409     (p_template_window_id           => p_rec.template_window_id
410     ,p_object_version_number        => p_rec.object_version_number
411     ,p_form_template_id             => p_rec.form_template_id
412     );
413   --
414   chk_window_and_template
415     (p_template_window_id           => p_rec.template_window_id
416     ,p_object_version_number        => p_rec.object_version_number
417     ,p_form_window_id               => p_rec.form_window_id
418     ,p_form_template_id             => p_rec.form_template_id
419     );
420   --
421   hr_utility.set_location(' Leaving:'||l_proc, 10);
422 End update_validate;
423 --
424 -- ----------------------------------------------------------------------------
425 -- |---------------------------< delete_validate >----------------------------|
426 -- ----------------------------------------------------------------------------
427 Procedure delete_validate
428   (p_rec                          in hr_twn_shd.g_rec_type
429   ) is
430 --
431   l_proc  varchar2(72) := g_package||'delete_validate';
432 --
433 Begin
434   hr_utility.set_location('Entering:'||l_proc, 5);
435   --
436   -- Call all supporting business operations
437   --
438   chk_delete
439     (p_rec                          => p_rec
440     );
441   --
442   hr_utility.set_location(' Leaving:'||l_proc, 10);
443 End delete_validate;
444 --
445 end hr_twn_bus;