DBA Data[Home] [Help]

PACKAGE BODY: APPS.HR_CN_API

Source


1 PACKAGE BODY hr_cn_api AS
2 /* $Header: hrcnapi.pkb 120.3 2006/10/31 06:44:34 abhjain noship $ */
3 
4 --------------------------------------------------------------------------
5 --                                                                      --
6 -- Name           : SET_LOCATION                                        --
7 -- Type           : PROCEDURE                                           --
8 -- Access         : Public                                              --
9 -- Description    : Procedure to set the location based on the trace    --
10 --                                                                      --
11 -- Parameters     :                                                     --
12 --             IN : p_message     VARCHAR2                              --
13 --                  p_step        number                                --
14 --                  p_trace       VARCHAR2                              --
15 --                                                                      --
16 -- Change History :                                                     --
17 --------------------------------------------------------------------------
18 -- Rev#  Date       Userid    Description                               --
19 --------------------------------------------------------------------------
20 -- 1.0   30/12/02   statkar  Created this function                      --
21 --------------------------------------------------------------------------
22 PROCEDURE set_location (p_trace     IN   BOOLEAN
23 		       ,p_message   IN   VARCHAR2
24                        ,p_step      IN   INTEGER
25                        )
26 IS
27 BEGIN
28 
29      IF p_trace THEN
30      	set_location(p_message, p_step);
31      END IF;
32 
33 END set_location;
34 
35 ----------------------------------------------------------------------------
36 --                                                                      --
37 -- Name           : SET_LOCATION                                        --
38 -- Type           : PROCEDURE                                           --
39 -- Access         : Public                                              --
40 -- Description    : Procedure to set the location irrespective of trace --
41 --                                                                      --
42 -- Parameters     :                                                     --
43 --             IN : p_message     VARCHAR2                              --
44 --                  p_step        number                                --
45 --                                                                      --
46 -- Change History :                                                     --
47 --------------------------------------------------------------------------
48 -- Rev#  Date       Userid    Description                               --
49 --------------------------------------------------------------------------
50 -- 1.0   30/12/02   statkar  Created this function                      --
51 ---------------------------------------------------------------------------
52 PROCEDURE set_location (p_message   IN   VARCHAR2
53                        ,p_step      IN   INTEGER
54                        )
55 IS
56 BEGIN
57 
58      hr_utility.set_location(p_message, p_step);
59 
60 END set_location;
61 
62 ----------------------------------------------------------------------------
63 --                                                                      --
64 -- Name           : CHECK_LOOKUP                                        --
65 -- Type           : Procedure                                           --
66 -- Access         : Public                                            --
67 -- Description    : Function to validate the lookupcode in lookuptype   --
68 --                  Function will return true in case the lookupcode is --
69 --                  found in the lookuptype.Used in the check_employee. --
70 -- Parameters     :                                                     --
71 --             IN : p_value     VARCHAR2                  --
72 --                  p_lookup_name             VARCHAR2                  --
73 --         RETURN : Boolean                                             --
74 --                                                                      --
75 -- Change History :                                                     --
76 --------------------------------------------------------------------------
77 -- Rev#  Date       Userid    Description                               --
78 --------------------------------------------------------------------------
79 -- 1.0   01/03/03   statkar  Created this function                     --
80 ---------------------------------------------------------------------------
81 PROCEDURE check_lookup (
82             p_lookup_type      IN VARCHAR2,
83             p_argument         IN VARCHAR2,
84             p_argument_value   IN VARCHAR2
85            )
86 IS
87 
88     l_lookup_code     hr_lookups.lookup_code%TYPE;
89     --
90     CURSOR csr_lookup(p_argument_value VARCHAR2,p_lookup_type VARCHAR2) IS
91       SELECT lookup_code
92       FROM   hr_lookups hrl
93       WHERE  hrl.lookup_type = p_lookup_type
94       AND    hrl.lookup_code = p_argument_value
95       AND    enabled_flag    = 'Y';
96 
97 BEGIN
98 
99 --
100 -- Validation of the lookup value based on the lookup type
101 --
102 
103     OPEN csr_lookup(p_argument_value, p_lookup_type);
104     FETCH csr_lookup INTO  l_lookup_code;
105 
106     IF csr_lookup%NOTFOUND THEN
107        CLOSE csr_lookup;
108        hr_utility.set_message(800,'HR_374602_INVALID_VALUE');
109        hr_utility.set_message_token('VALUE',p_argument_value);
110        hr_utility.set_message_token('FIELD',p_argument);
111        hr_utility.raise_error;
112     END IF;
113 
114     CLOSE csr_lookup;
115 
116 
117 EXCEPTION
118       WHEN OTHERS THEN
119         IF csr_lookup%ISOPEN  THEN
120            CLOSE csr_lookup;
121         END IF;
122         RAISE;
123 
124 END check_lookup;
125 
126 --
127 --------------------------------------------------------------------------
128 --                                                                      --
129 -- Name           : IS_NUMBER                                           --
130 -- Type           : Function                                            --
131 -- Access         : Public                                              --
132 -- Description    : Procedure to check IF a value is numeric            --
133 -- Parameters     :                                                     --
134 --             IN : p_value                   VARCHAR2                  --
135 --                                                                      --
136 -- Change History :                                                     --
137 --------------------------------------------------------------------------
138 -- Rev#  Date       Userid    Description                               --
139 --------------------------------------------------------------------------
140 -- 1.0   30/12/02   statkar  Created this procedure                     --
141 ---------------------------------------------------------------------------
142 
143 FUNCTION is_number
144             (p_value         in      VARCHAR2)
145 RETURN BOOLEAN
146 IS
147     l_number_value    number;
148 BEGIN
149   --
150 
151   IF(p_value is NULL) THEN
152     RETURN TRUE;
153   ELSE
154     Begin
155        l_number_value := to_number(p_value);
156 
157     Exception
158        WHEN VALUE_ERROR THEN
159           RETURN FALSE;
160     End;
161     RETURN TRUE;
162   END IF;
163   --
164 END is_number;
165 
166 --
167 --------------------------------------------------------------------------
168 --                                                                      --
169 -- Name           : IS_POSITIVE_INTEGER                                 --
170 -- Type           : Function                                            --
171 -- Access         : Public                                             --
172 -- Description    : Function to validate the char as positive integer   --
173 -- Parameters     :                                                     --
174 --             IN : p_value     VARCHAR2                  --
175 --         RETURN : Boolean                                             --
176 --                                                                      --
177 -- Change History :                                                     --
178 --------------------------------------------------------------------------
179 -- Rev#  Date       Userid    Description                               --
180 --------------------------------------------------------------------------
181 -- 1.0   29/11/02   saikrish  Created this function                     --
182 -- 1.1   21/1/03    bramajey  changed the condition to p_value < 0 to   --
183 --                            allow the code flow to check for decimal  --
184 --------------------------------------------------------------------------
185 FUNCTION is_positive_integer
186 	(p_value IN NUMBER
187         )
188 RETURN BOOLEAN IS
189 
190 BEGIN
191 
192 --
193 -- No validations IF the p_value is NULL
194 --
195     IF p_value IS NULL THEN
196        RETURN TRUE;
197     END IF;
198 
199 --
200 -- Check IF the number is positive
201 --
202 
203     IF p_value < 0 THEN
204        RETURN FALSE;
205     ELSE
206     --
207     -- Checking for decimal.
208     --
209 
210        IF INSTR(p_value,'.') = 0 THEN
211           RETURN TRUE;
212        ELSE
213           RETURN FALSE;
214        END IF;
215     --
216     END IF;
217     EXCEPTION
218       WHEN OTHERS THEN
219            RAISE;
220 
221 END is_positive_integer;
222 --
223 --------------------------------------------------------------------------
224 --                                                                      --
225 -- Name           : IS_VALID_PERCENTAGE                                 --
226 -- Type           : Function                                            --
227 -- Access         : Public                                             --
228 -- Description    : Function to validate the char as positive percentage--
229 -- Parameters     :                                                     --
230 --             IN : p_value     VARCHAR2                                --
231 --         RETURN : Boolean                                             --
232 --                                                                      --
233 -- Change History :                                                     --
234 --------------------------------------------------------------------------
235 -- Rev#  Date       Userid    Description                               --
236 --------------------------------------------------------------------------
237 -- 1.0   29/11/02   saikrish  Created this function                     --
238 -- 1.1   21/1/03    bramajey  Removed the check for decimal places      --
239 --                                                                      --
240 --------------------------------------------------------------------------
241 FUNCTION is_valid_percentage
242 	(p_value IN NUMBER
243   	)
244 RETURN BOOLEAN IS
245 
246 BEGIN
247 
248 --
249 -- No validations IF the p_value is NULL
250 --
251     IF p_value IS NULL THEN
252        RETURN TRUE;
253     END IF;
254 
255 --
256 -- Checking for valid range.
257 --
258 
259    IF ((p_value >= 0) and (p_value <=100)) THEN
260        RETURN TRUE;
261    ELSE
262        RETURN FALSE;
263    END IF;
264     --
265 EXCEPTION
266     WHEN OTHERS THEN
267       RAISE;
268 
269 END is_valid_percentage;
270 --
271 --
272 --------------------------------------------------------------------------
273 -- Name           : IS_VALID_POSTAL_CODE                                --
274 -- Type           : Function                                            --
275 -- Access         : Private                                             --
276 -- Description    : The function validates the postal code ,checks to   --
277 --                  see IF the postal code is a 6 digit value and that  --
278 --                  all digits are numbers,IF so returns true else false--
279 -- Parameters     :                                                     --
280 --             IN : p_value_to_be_checked     IN  VARCHAR2              --
281 --         RETURN : Boolean                                             --
282 --                                                                      --
283 -- Change History :                                                     --
284 --------------------------------------------------------------------------
285 -- Rev#  Date       Userid    Description                               --
286 --------------------------------------------------------------------------
287 -- 1.0   29/11/02   vinaraya  Created this function                     --
288 -- 1.1   30/10/03   bramajey  Changed value of l_low_range from 100000  --
289 --                            to 1.                                     --
290 --                            Changed type of IN parameter from NUMBER  --
291 --                            to VARCHAR2.  (Bug 3226285)               --
292 --------------------------------------------------------------------------
293 FUNCTION is_valid_postal_code
294 	(p_value IN VARCHAR2
295 	)
296 RETURN BOOLEAN IS
297     --
298 	-- Bug 3226285
299     l_low_range    NUMBER;
300     l_high_range   NUMBER;
301 
302 BEGIN
303 
304     l_low_range  := 1;
305     l_high_range := 999999;
306 
307 --
308 -- No validations IF the p_value is NULL
309 --
310     IF p_value IS NULL THEN
311        RETURN TRUE;
312     END IF;
313 
314 --
315 -- Check IF the range is valid
316 --
317 	-- Bug 3226285
318 	-- added is_number conidtion
319     IF is_number(p_value) AND (p_value BETWEEN l_low_range AND l_high_range) AND LENGTH(p_value) = 6  THEN
320        RETURN TRUE;
321     ELSE
322        RETURN FALSE;
323     END IF;
324 
325 EXCEPTION
326   WHEN OTHERS THEN
327      RAISE;
328 END is_valid_postal_code;
329 
330 --------------------------------------------------------------------------
331 --                                                                      --
332 -- Name           : CHK_PERSON_TYPE                                     --
333 -- Type           : Function                                            --
334 -- Access         : Public                                             --
335 -- Description    : Returns true/false IF p_code is a valid Person Type --
336 -- Parameters     :                                                     --
337 --             IN : p_code VARCHAR2                                     --
338 --            OUT : N/A                                                 --
339 --         RETURN : VARCHAR2                                            --
340 --                                                                      --
341 -- Change History :                                                     --
342 --------------------------------------------------------------------------
343 -- Rev#  Date       Userid    Description                               --
344 --------------------------------------------------------------------------
345 -- 1.0   14/04/03   statkar   Created this function                     --
346 -- 1.1   07/01/04   bramajey  Bug 3342105 Changes.                      --
347 --------------------------------------------------------------------------
348 FUNCTION chk_person_type (p_code in VARCHAR2)
349 RETURN BOOLEAN
350 IS
351    TYPE t_pt_tbl  IS TABLE OF HR_LOOKUPS.LOOKUP_CODE%TYPE index by binary_integer;
352    l_person_type         t_pt_tbl;
353    l_loop_count          NUMBER ;
354 
355 BEGIN
356 
357 -- Change here in case any new PTs to be included
358 
359 -- Bug 3342105
360 -- Removed PTs APL and EX_APL
361 
362    l_person_type(1)    := 'EMP';
363    l_person_type(2)    := 'EX_EMP';
364    l_person_type(3)    := 'APL_EX_EMP';
365    l_person_type(4)    := 'EMP_APL';
366    l_person_type(5)    := 'EX_EMP_APL';
367    l_person_type(6)    := 'CWK';
368 
369    l_loop_count  := 6;
370 
371 -- Changes above this only.
372 
373   FOR i IN 1..l_loop_count
374   LOOP
375     IF l_person_type(i) = p_code THEN
376       RETURN TRUE;
377     END IF;
378   END LOOP;
379 
380   RETURN FALSE;
381 
382 END chk_person_type;
383 
384 --------------------------------------------------------------------------
385 --                                                                      --
386 -- Name           : CHECK_ORGANIZATION                                  --
387 -- Type           : Procedure                                           --
388 -- Access         : Public                                              --
389 -- Description    : The function checks IF the organization id          --
390 --                  belongs to the business group specIFied for the     --
391 --                  legislation             --
392 -- Parameters     :                                                     --
393 --             IN : p_organization_id     IN  NUMBER                    --
394 --                : p_business_group_id   IN  NUMBER                    --
395 --                  p_legislation_code    IN  NUMBER                    --
396 --                  p_effective_date      IN  DATE                      --
397 --         RETURN : Boolean                                             --
398 --                                                                      --
399 --------------------------------------------------------------------------
400 -- 1.0   30/12/02   statkar  Created this function                      --
401 -- 1.1   16/01/03   statkar  bug 2748967 added check for effective date --
402 ---------------------------------------------------------------------------
403 
404 PROCEDURE check_organization
405 		(p_organization_id   IN NUMBER
406                 ,p_business_group_id IN NUMBER
407                 ,p_legislation_code  IN VARCHAR2
408 -- Bug 2748967 changes start
409 		,p_effective_date    IN DATE
410 -- Bug 2748967 changes END
411                 )
412 IS
413 
414    CURSOR csr_org_id (p_business_group_id number, p_organization_id in number, p_effective_date in date) IS
415            SELECT hou.organization_id
416            FROM   hr_organization_units hou
417            WHERE  hou.business_group_id = p_business_group_id
418            AND    hou.organization_id   = p_organization_id
419 	   AND    p_effective_date   between  date_from and nvl(date_to,to_date('31-12-4712','DD-MM-YYYY'));
420 
421    l_org_id    hr_organization_units.organization_id%type;
422 
423 BEGIN
424 
425    check_bus_grp (p_business_group_id, p_legislation_code);
426 
427    OPEN csr_org_id (p_business_group_id, p_organization_id, p_effective_date);
428    FETCH csr_org_id into l_org_id;
429    	IF csr_org_id%NOTFOUND THEN
430             CLOSE csr_org_id;
431      	    hr_utility.set_message(800,'HR_374604_INVALID_ORG_CLASS');
432      	    hr_utility.set_message_token('ORG',p_organization_id);
433      	    hr_utility.raise_error;
434         END IF;
435    CLOSE csr_org_id;
436 EXCEPTION
437       WHEN OTHERS THEN
438            IF csr_org_id%ISOPEN THEN
439            CLOSE csr_org_id;
440            END IF;
441       RAISE;
442 END check_organization;
443 --
444 --------------------------------------------------------------------------
445 --                                                                      --
446 -- Name           : CHECK_ORG_CLASS                                     --
447 -- Type           : Procedure                                           --
448 -- Access         : Public                                              --
449 -- Description    : The function checks IF org classIFication is as per --
450 --                  the classIFication passed as a parameter            --
451 -- Parameters     :                                                     --
452 --             IN : p_organization_id     IN  NUMBER                    --
453 --                : p_classIFication      IN  VARCHAR2                  --
454 --                                                                      --
455 -- Change History :                                                     --
456 --------------------------------------------------------------------------
457 -- Rev#  Date       Userid    Description                               --
458 --------------------------------------------------------------------------
459 -- 1.0   30/12/02   statkar   Created this function                     --
460 ---------------------------------------------------------------------------
461 PROCEDURE check_org_class
462 		(p_organization_id   IN NUMBER
463                 ,p_classIFication    IN VARCHAR2
464 		)
465 IS
466 
467    CURSOR csr_org_class (p_organization_id number, p_classfication VARCHAR2) IS
468           SELECT hrg.org_information_id
469           FROM   hr_organization_information hrg
470           WHERE  hrg.organization_id         = p_organization_id
471           AND    hrg.org_information_context = p_classIFication;
472 
473    l_org_info_id  hr_organization_information.org_information_id%type;
474 
475 BEGIN
476 
477     OPEN csr_org_class(p_organization_id, p_classIFication);
478     FETCH csr_org_class into l_org_info_id;
479 	 IF csr_org_class%NOTFOUND THEN
480              CLOSE csr_org_class;
481 	     hr_utility.set_message(800,'HR_374604_INVALID_ORG_CLASS');
482    	     hr_utility.set_message_token('ORG',p_organization_id);
483      	     hr_utility.raise_error;
484          END IF;
485     CLOSE csr_org_class;
486 EXCEPTION
487       WHEN OTHERS THEN
488            IF csr_org_class%ISOPEN THEN
489            CLOSE csr_org_class;
490            END IF;
491       RAISE;
492 
493 END check_org_class;
494 --
495 --------------------------------------------------------------------------
496 --                                                                      --
497 -- Name           : CHECK_ORG_TYPE                                      --
498 -- Type           : Procedure                                           --
499 -- Access         : Public                                              --
500 -- Description    : The function checks IF org type is as per           --
501 --                  the type passed as a parameter                      --
502 -- Parameters     :                                                     --
503 --             IN : p_organization_id     IN  NUMBER                    --
504 --                : p_type                IN  VARCHAR2                  --
505 --                                                                      --
506 -- Change History :                                                     --
507 --------------------------------------------------------------------------
508 -- Rev#  Date       Userid    Description                               --
509 --------------------------------------------------------------------------
510 -- 1.0   15/01/03   statkar   Created this function                     --
511 ---------------------------------------------------------------------------
512 PROCEDURE check_org_type
513 		(p_organization_id   IN NUMBER
514                 ,p_type              IN VARCHAR2
515 		)
516 IS
517 
518    CURSOR csr_org_type (p_organization_id number, p_type VARCHAR2) IS
519           SELECT hrg.org_information_id
520           FROM   hr_organization_information hrg
521           WHERE  hrg.organization_id         = p_organization_id
522           AND    hrg.org_information1        = p_type
523 	  AND    hrg.org_information2        = 'Y';
524 
525    l_org_info_id  hr_organization_information.org_information_id%type;
526 
527 BEGIN
528 
529     OPEN csr_org_type(p_organization_id, p_type);
530     FETCH csr_org_type into l_org_info_id;
531          IF csr_org_type%NOTFOUND THEN
532              CLOSE csr_org_type;
533 	     hr_utility.set_message(800,'HR_374604_INVALID_ORG_CLASS');
534    	     hr_utility.set_message_token('ORG',p_organization_id);
535      	     hr_utility.raise_error;
536          END IF;
537     CLOSE csr_org_type;
538 EXCEPTION
539       WHEN OTHERS THEN
540            IF csr_org_type%ISOPEN THEN
541            CLOSE csr_org_type;
542            END IF;
543       RAISE;
544 
545 END check_org_type;
546 
547 --
548 --------------------------------------------------------------------------
549 --                                                                      --
550 -- Name           : CHECK_CIN                                           --
551 -- Type           : Procedure                                           --
552 -- Access         : Public                                              --
553 -- Description    : Procedure to validate the citizen identIFication num--
554 --                : CIN should be mandatory in case of Chinese EMP/APL  --
555 -- Parameters     :                                                     --
556 --             IN : p_business_group_id    NUMBER                       --
557 --                  p_national_identIFier  VARCHAR2,                    --
558 --                  p_person_type_id       NUMBER,                      --
559 --                  p_expatriate_indicator VARCHAR2,                    --
560 --                  p_effective_date       DATE,                        --
561 --                  p_person_id            NUMBER                       --
562 --                                                                      --
563 ---------------------------------------------------------------------------
564 -- 1.0   09/01/03   statkar   Created this function                     --
565 -- 1.1   05/02/03   statkar   Additional PTU checks (Bug 2782045)       --
566 -- 1.2   14/03/03   statkar   Bug 2902744 changes for PTU               --
567 ---------------------------------------------------------------------------
568 PROCEDURE check_cin
569   		(  p_business_group_id      NUMBER,
570 		   p_national_identIFier    VARCHAR2,
571    		   p_person_type_id         NUMBER,
572    		   p_expatriate_indicator   VARCHAR2,
573    		   p_effective_date         DATE,
574    		   p_person_id              NUMBER
575                  )
576 IS
577 
578   l_proc            VARCHAR2(50);
579   l_system_person_type per_person_types.system_person_type%TYPE;
580 
581 BEGIN
582 
583   l_proc  := g_package||'check_cin';
584 
585        IF p_person_type_id IS NULL THEN
586 --
587 -- This can happen only IF the procedure is called through EMPLOYEE/APPLICANT API.
588 -- But in such a case p_person_type_id will always be EMP/APL which is allowable
589 -- So only check for expat indicator
590 --
591          IF p_expatriate_indicator ='N' AND p_national_identIFier IS NULL THEN
592                hr_api.mandatory_arg_error
593                      (p_api_name         => l_proc,
594                       p_argument         => 'P_CITIZEN_IDENTIFICATION_NUMBER',
595                       p_argument_value   => p_national_identIFier
596                       );
597          END IF;
598 --
599       ELSE
600 --
601 -- This happens only IF the procedure is called through PERSON API.
602 -- We have ensured in CHECK_PERSON that p_person_type_id would have a valid NOT NULL value
603 --
604            l_system_person_type := hr_person_type_usage_info.getsystempersontype (p_person_type_id);
605 --
606 -- ModIFied the 'LIKE' clause to read as 'IN' with explicit values.  10-Mar-2003 statkar.
607 --
608 
609            IF   hr_cn_api.chk_person_type(l_system_person_type)
610 	   THEN
611 --
612 		  IF p_expatriate_indicator ='N' AND p_national_identIFier IS NULL THEN
613                        hr_api.mandatory_arg_error
614                            (p_api_name         => l_proc,
615                             p_argument         => 'P_CITIZEN_IDENTIFICATION_NUMBER',
616                             p_argument_value   => p_national_identIFier
617                             );
618                   END IF;
619 --
620            END IF;
621        END IF;
622 
623 EXCEPTION
624       WHEN OTHERS THEN
625          RAISE;
626 END check_cin;
627 
628 
629 --
630 --------------------------------------------------------------------------
631 --                                                                      --
632 -- Name           : CHECK_TAX_DEPENDENCE                                --
633 -- Type           : Procedure                                           --
634 -- Access         : Public                                             --
635 -- Description    : Procedure to validate the tax depENDence on         --
636 --                  the exemption indicator.                            --
637 --                  Exemption Indicator    Tax Percentage               --
638 --                  N                      Should be NULL               --
639 --                  Y                      Should be valid %            --
640 -- Parameters     :                                                     --
641 --             IN : p_tax_exemption_indicator VARCHAR2                  --
642 --                : p_percentage              VARCHAR2                  --
643 --            OUT : p_return_number           number                    --
644 --                                                                      --
645 -- Change History :                                                     --
646 --------------------------------------------------------------------------
647 -- Rev#  Date       Userid    Description                               --
648 --------------------------------------------------------------------------
649 -- 1.0   29/11/02   saikrish  Created this procedure                    --
650 -- 1.1   20/01/03   saikrish  Removed the check for value of            --
651 --                            Tax Exemption indicator as Y (Bug 2747251)--
652 --------------------------------------------------------------------------
653 PROCEDURE check_tax_depENDence
654 		( p_tax_exemption_indicator IN VARCHAR2
655                  ,p_percentage              IN NUMBER
656                  ) IS
657 
658     l_proc            VARCHAR2(72);
659 
660 BEGIN
661 
662         l_proc := g_package||'check_tax_depENDence';
663 
664 --
665 -- Validations IF the p_tax_exemption_indicator is NULL or 'N'
666 --
667     IF (p_tax_exemption_indicator IS NULL) or (p_tax_exemption_indicator = 'N') THEN
668        IF p_percentage IS NULL THEN
669   	   RETURN;
670        ELSE
671            hr_utility.set_message(800,'HR_374605_INV_TAX_DEPENDENCE');
672            hr_utility.raise_error;
673        END IF;
674     END IF;
675 
676 
677 EXCEPTION
678     WHEN OTHERS THEN
679       RAISE;
680   END check_tax_depENDence;
681 --
682 ----------------------------------------------------------------------------
683 --                                                                      --
684 -- Name           : CHECK_BUS_GRP                                       --
685 -- Type           : PROCEDURE                                           --
686 -- Access         : Public                                              --
687 -- Description    : Procedure to validate the Business Group            --
688 --                                                                      --
689 -- Parameters     :                                                     --
690 --             IN : p_business_group_id NUMBER                          --
691 --                  p_legislation_code  VARCHAR2                        --
692 -- Change History :                                                     --
693 --------------------------------------------------------------------------
694 -- Rev#  Date       Userid    Description                               --
695 --------------------------------------------------------------------------
696 -- 1.0   01/03/03   statkar   Created this procedure                    --
697 --------------------------------------------------------------------------
698 
699 PROCEDURE check_bus_grp (p_business_group_id IN NUMBER
700                         ,p_legislation_code  IN VARCHAR2
701                         )
702 IS
703 
704     CURSOR csr_bg IS
705         SELECT legislation_code
706         FROM per_business_groups pbg
707         WHERE pbg.business_group_id = p_business_group_id;
708       --
709     l_legislation_code  per_business_groups.legislation_code%type;
710 BEGIN
711 
712    OPEN csr_bg;
713 --
714      FETCH csr_bg
715      INTO l_legislation_code;
716 --
717      IF csr_bg%NOTFOUND THEN
718         CLOSE csr_bg;
719         hr_utility.set_message(800, 'HR_7208_API_BUS_GRP_INVALID');
720         hr_utility.raise_error;
721       END IF;
722       CLOSE csr_bg;
723 --
724       IF l_legislation_code <> p_legislation_code THEN
725         hr_utility.set_message(800, 'HR_7961_PER_BUS_GRP_INVALID');
726         hr_utility.set_message_token('LEG_CODE','CN');
727         hr_utility.raise_error;
728       END IF;
729 EXCEPTION
730     WHEN OTHERS THEN
731        IF csr_bg%ISOPEN THEN
732           CLOSE csr_bg;
733        END IF;
734        RAISE;
735 
736 END check_bus_grp;
737 
738 
739 ----------------------------------------------------------------------------
740 --                                                                      --
741 -- Name           : CHECK_PERSON                                        --
742 -- Type           : PROCEDURE                                           --
743 -- Access         : Public                                              --
744 -- Description    : Procedure to validate the Business Group            --
745 --                                                                      --
746 -- Parameters     :                                                     --
747 --             IN : p_person_id         NUMBER                          --
748 --                  p_legislation_code  VARCHAR2                        --
749 -- Change History :                                                     --
750 --------------------------------------------------------------------------
751 -- Rev#  Date       Userid    Description                               --
752 --------------------------------------------------------------------------
753 -- 1.0   01/03/03   statkar   Created this procedure                    --
754 ---------------------------------------------------------------------------
755 PROCEDURE check_person (p_person_id         IN NUMBER
756                        ,p_legislation_code  IN VARCHAR2
757                        ,p_effective_date    IN DATE
758                         )
759 IS
760    l_legislation_code    per_business_groups.legislation_code%type;
761    --
762    CURSOR csr_emp_leg
763       (c_person_id         per_people_f.person_id%TYPE,
764        c_effective_date DATE
765       )
766    IS
767       select bgp.legislation_code
768       from per_people_f per,
769            per_business_groups bgp
770       where per.business_group_id = bgp.business_group_id
771       and    per.person_id       = c_person_id
772       and    c_effective_date  between per.effective_start_date and per.effective_END_date;
773 
774 BEGIN
775 
776    OPEN csr_emp_leg(p_person_id, trunc(p_effective_date));
777    FETCH csr_emp_leg into l_legislation_code;
778    IF csr_emp_leg%notfound THEN
779       CLOSE csr_emp_leg;
780       hr_utility.set_message(801,'HR_7220_INVALID_PRIMARY_KEY');
781       hr_utility.raise_error;
782    END IF;
783    CLOSE csr_emp_leg;
784 
785    --
786    -- Check that the legislation of the specIFied business group is 'CN'.
787    --
788    IF l_legislation_code <> p_legislation_code THEN
789       hr_utility.set_message(801, 'HR_7961_PER_BUS_GRP_INVALID');
790       hr_utility.set_message_token('LEG_CODE','CN');
791       hr_utility.raise_error;
792    END IF;
793 
794 EXCEPTION
795     WHEN OTHERS THEN
796        IF csr_emp_leg%ISOPEN THEN
797           CLOSE csr_emp_leg;
798        END IF;
799           RAISE;
800 
801 END check_person;
802 
803 ----------------------------------------------------------------------------
804 --                                                                      --
805 -- Name           : CHECK_ADDRESS                                       --
806 -- Type           : PROCEDURE                                           --
807 -- Access         : Public                                              --
808 -- Description    : Procedure to validate the Business Group            --
809 --                                                                      --
810 -- Parameters     :                                                     --
811 --             IN : p_address_id         NUMBER                          --
812 --                  p_address_style     VARCHAR2                        --
813 -- Change History :                                                     --
814 --------------------------------------------------------------------------
815 -- Rev#  Date       Userid    Description                               --
816 --------------------------------------------------------------------------
817 -- 1.0   01/03/03   statkar   Created this procedure                    --
818 ---------------------------------------------------------------------------
819 PROCEDURE check_address (p_address_id  IN NUMBER
820                         ,p_address_style IN VARCHAR2
821                         )
822 IS
823 
824   l_style               per_addresses.style%TYPE;
825   --
826   CURSOR csr_add_style IS
827     SELECT  style
828     FROM    per_addresses
829     WHERE   address_id = p_address_id;
830   --
831 BEGIN
832 
833   OPEN  csr_add_style;
834   FETCH csr_add_style
835   INTO  l_style;
836   IF csr_add_style%notfound THEN
837     CLOSE csr_add_style;
838     --
839     hr_utility.set_message(800, 'HR_7220_INVALID_PRIMARY_KEY');
840     hr_utility.raise_error;
841   END IF;
842     --
843   CLOSE csr_add_style;
844     --
845   IF l_style <> p_address_style THEN
846       hr_utility.set_message(801, 'HR_52505_INV_ADDRESS_STYLE');
847       hr_utility.raise_error;
848   END IF;
849 
850 EXCEPTION
851   WHEN OTHERS THEN
852        IF csr_add_style%ISOPEN THEN
853           CLOSE csr_add_style;
854        END IF;
855           RAISE;
856 END check_address;
857 
858 
859 ----------------------------------------------------------------------------
860 --                                                                      --
861 -- Name           : CHECK_ASSIGNMENT                                     --
862 -- Type           : PROCEDURE                                           --
863 -- Access         : Public                                              --
864 -- Description    : Procedure to validate the Assignment                --
865 --                                                                      --
866 -- Parameters     :                                                     --
867 --             IN : p_assignment_id         NUMBER                       --
868 --                  p_legislation_code    VARCHAR2                      --
869 --                  p_effective_date       DATE                         --
870 -- Change History :                                                     --
871 --------------------------------------------------------------------------
872 -- Rev#  Date       Userid    Description                               --
873 --------------------------------------------------------------------------
874 -- 1.0   01/03/03   statkar   Created this procedure                    --
875 ---------------------------------------------------------------------------
876 PROCEDURE check_assignment
877   (p_assignment_id          IN     NUMBER
878   ,p_legislation_code       IN     VARCHAR2
879   ,p_effective_date         IN     DATE
880   )
881 IS
882   --
883   CURSOR legsel (p_assignment_id IN NUMBER, p_effective_date IN DATE) IS
884     SELECT  pbg.legislation_code
885     FROM    per_business_groups pbg,
886             per_assignments_f   asg
887     WHERE   pbg.business_group_id   = asg.business_group_id
888     AND     asg.assignment_id       = p_assignment_id
889     AND     p_effective_date BETWEEN asg.effective_start_date AND asg.effective_END_date;
890   --
891   l_legislation_code per_business_groups.legislation_code%type;
892   --
893 BEGIN
894 
895   OPEN  legsel(p_assignment_id, trunc(p_effective_date));
896   FETCH legsel
897   INTO  l_legislation_code;
898   --
899   -- bug 2748967 modIFications start
900   IF legsel%FOUND AND l_legislation_code = p_legislation_code THEN
901      CLOSE legsel;
902      RETURN;
903   END IF;
904 -- bug 2748967 modIFications END
905 
906   IF legsel%notfound THEN
907     CLOSE legsel;
908     hr_utility.set_message(800, 'HR_7348_PPM_ASSIGNMENT_INVALID');
909     hr_utility.raise_error;
910   END IF;
911 
912   IF legsel%found AND l_legislation_code <> p_legislation_code THEN
913     CLOSE legsel;
914     hr_utility.set_message(801, 'HR_374601_BUS_GRP_INVALID');
915     hr_utility.raise_error;
916   END IF;
917 
918   --
919   CLOSE legsel;
920 EXCEPTION
921   WHEN OTHERS THEN
922     IF legsel%ISOPEN THEN
923        CLOSE legsel;
924     END IF;
925        RAISE;
926 
927 END check_assignment;
928 
929 ----------------------------------------------------------------------------
930 --                                                                      --
931 -- Name           : CHECK_PAYMENT_METHOD                                --
932 -- Type           : PROCEDURE                                           --
933 -- Access         : Public                                              --
934 -- Description    : Procedure to validate the Payment Method            --
935 --                                                                      --
936 -- Parameters     :                                                     --
937 --             IN : p_payment_method_id    NUMBER                       --
938 --                  p_legislation_code    VARCHAR2                      --
939 --                  p_effective_date       DATE                         --
940 -- Change History :                                                     --
941 --------------------------------------------------------------------------
942 -- Rev#  Date       Userid    Description                               --
943 --------------------------------------------------------------------------
944 -- 1.0   01/03/03   statkar   Created this procedure                    --
945 ---------------------------------------------------------------------------
946 PROCEDURE check_payment_method
947   ( p_personal_payment_method_id    IN  NUMBER
948     ,p_effective_date               IN  DATE
949    , p_legislation_code             IN VARCHAR2
950   )
951 IS
952 
953   --
954   CURSOR legsel IS
955     SELECT  pbg.legislation_code
956     FROM    per_business_groups pbg,
957             pay_personal_payment_methods_f ppm
958     WHERE   pbg.business_group_id           = ppm.business_group_id
959     AND     ppm.personal_payment_method_id  = p_personal_payment_method_id
960     AND     p_effective_date BETWEEN ppm.effective_start_date AND ppm.effective_END_date;
961 --
962   l_legislation_code per_business_groups.legislation_code%type;
963 
964 BEGIN
965 
966   OPEN  legsel;
967   FETCH legsel
968   INTO  l_legislation_code;
969   --
970   IF legsel%notfound THEN
971     CLOSE legsel;
972     hr_utility.set_message(801, 'HR_7220_INVALID_PRIMARY_KEY');
973     hr_utility.raise_error;
974   END IF;
975 
976   IF legsel%found AND l_legislation_code <> p_legislation_code THEN
977     CLOSE legsel;
978     hr_utility.set_message(801, 'HR_374601_BUS_GRP_INVALID');
979     hr_utility.raise_error;
980   END IF;
981   --
982   CLOSE legsel;
983   --
984 EXCEPTION
985   WHEN OTHERS THEN
986     IF legsel%ISOPEN THEN
987        CLOSE legsel;
988     END IF;
989        RAISE;
990 
991 END check_payment_method;
992 
993 --------------------------------------------------------------------------
994 --                                                                      --
995 -- Name           : GET_PAY_MESSAGE                                     --
996 -- Type           : FUNCTION                                            --
997 -- Access         : Public                                              --
998 -- Description    : Function to construct the message for FF            --
999 --                  This function is used to obtain a message.          --
1000 --                  The token parameters must be of the form            --
1001 --                  'TOKEN_NAME:TOKEN_VALUE' i.e.                       --
1002 --                   If you want to set the value of a token called     --
1003 --                   FUNCTION to CN_PHF_CALCULATION the token parameter --
1004 --                   would be 'FUNCTION:CN_PHF_CALCULATION'             --
1005 --                                                                      --
1006 -- Parameters     :                                                     --
1007 --             IN : p_message_name        VARCHAR2                      --
1008 --                  p_token1              VARCHAR2                      --
1009 --                  p_token2              VARCHAR2                      --
1010 --                  p_token3              VARCHAR2                      --
1011 --                  p_token4              VARCHAR2                      --
1012 --         RETURN : VARCHAR2                                            --
1013 --                                                                      --
1014 -- Change History :                                                     --
1015 --------------------------------------------------------------------------
1016 -- Rev#  Date       Userid    Description                               --
1017 --------------------------------------------------------------------------
1018 -- 1.0   20-May-03  statkar   Created this function                     --
1019 -- 1.1   09-JUL-03  sshankar  Added fifth parameter p_token4,           --
1020 --                            Bug 3038642                               --
1021 -- 1.2  14-Jul-03   statkar   Bug 3047273. Changed the application_id   --
1022 --                            from 801 to 800                           --
1023 -- 1.3   21-Oct-03  saikrish  Bug 3198695. Truncated token value length --
1024 --                            to 77 characters due to issues in psuedo  --
1025 --                            translated environment                    --
1026 ---------------------------------------------------------------------------
1027 FUNCTION get_pay_message
1028             (p_message_name      IN VARCHAR2
1029             ,p_token1            IN VARCHAR2 DEFAULT NULL
1030             ,p_token2            IN VARCHAR2 DEFAULT NULL
1031             ,p_token3            IN VARCHAR2 DEFAULT NULL
1032             ,p_token4            IN VARCHAR2 DEFAULT NULL  -- Bug 3038642
1033 	    )
1034 RETURN VARCHAR2
1035 
1036 IS
1037    l_message        VARCHAR2(2000);
1038    l_token_name     VARCHAR2(20);
1039    l_token_value    VARCHAR2(80);
1040    l_colon_position NUMBER;
1041    l_proc           VARCHAR2(50);
1042    --
1043 BEGIN
1044 
1045        l_proc := 'hr_cn_api.get_pay_message';
1046 
1047 --
1048     set_location('Entered '||l_proc,5);
1049     set_location('.  Message Name: '||p_message_name,40);
1050 --
1051 -- Bug 3047273 Changed to 800 from 801
1052 --
1053     hr_utility.set_message(800,p_message_name);
1054 --
1055 -- Truncated the token value to 77 characters, bug 3198695
1056 --
1057    IF p_token1 IS NOT NULL THEN
1058       /* Obtain token 1 name and value */
1059       l_colon_position := INSTR(p_token1,':');
1060       l_token_name  := SUBSTR(p_token1,1,l_colon_position-1);
1061       l_token_value := SUBSTR(SUBSTR(p_token1,l_colon_position+1,LENGTH(p_token1)) ,1,77);
1062       hr_utility.set_message_token(l_token_name,l_token_value);
1063       set_location('.  Token1: '||l_token_name||'. Value: '||l_token_value,50);
1064    END IF;
1065 
1066 --
1067 -- Truncated the token value to 77 characters, bug 3198695
1068 --
1069    IF p_token2 IS NOT NULL  THEN
1070       /* Obtain token 2 name and value */
1071       l_colon_position := INSTR(p_token2,':');
1072       l_token_name  := SUBSTR(p_token2,1,l_colon_position-1);
1073       l_token_value := SUBSTR(SUBSTR(p_token2,l_colon_position+1,LENGTH(p_token2)) ,1,77);
1074       hr_utility.set_message_token(l_token_name,l_token_value);
1075       set_location('.  Token2: '||l_token_name||'. Value: '||l_token_value,60);
1076    END IF;
1077 
1078 --
1079 -- Truncated the token value to 77 characters, bug 3198695
1080 --
1081    IF p_token3 IS NOT NULL THEN
1082       /* Obtain token 3 name and value */
1083       l_colon_position := INSTR(p_token3,':');
1084       l_token_name  := SUBSTR(p_token3,1,l_colon_position-1);
1085       l_token_value := SUBSTR(SUBSTR(p_token3,l_colon_position+1,LENGTH(p_token3)) ,1,77);
1086       hr_utility.set_message_token(l_token_name,l_token_value);
1087       set_location('.  Token3: '||l_token_name||'. Value: '||l_token_value,70);
1088    END IF;
1089 
1090 --
1091 -- Added code to accomdate fourth parameter.
1092 -- Modified by sshankar.
1093 -- Bug 3038642
1094 -- Start Bug 3038642
1095 --
1096 --
1097 -- Truncated the token value to 77 characters, bug 3198695
1098 --
1099    IF p_token4 IS NOT NULL THEN
1100       /* Obtain token 4 name and value */
1101       l_colon_position := INSTR(p_token4,':');
1102       l_token_name  := SUBSTR(p_token4,1,l_colon_position-1);
1103       l_token_value := SUBSTR(SUBSTR(p_token4,l_colon_position+1,LENGTH(p_token4)) ,1,77);
1104       hr_utility.set_message_token(l_token_name,l_token_value);
1105       set_location('.  Token4: '||l_token_name||'. Value: '||l_token_value,80);
1106    END IF;
1107 
1108 --
1109 -- End Bug 3038642
1110 --
1111 
1112    l_message := SUBSTRB(hr_utility.get_message,1,250);
1113 
1114    set_location('leaving '||l_proc,100);
1115    RETURN l_message;
1116 
1117 END get_pay_message;
1118 
1119 --------------------------------------------------------------------------
1120 --                                                                      --
1121 -- Name           : GET_USER_TABLE_VALUE                                --
1122 -- Type           : FUNCTION                                            --
1123 -- Access         : Public                                              --
1124 -- Description    : Function to fetch the user table value              --
1125 --                                                                      --
1126 -- Parameters     :                                                     --
1127 --             IN : p_business_group_id   NUMBER                        --
1128 --                  p_table_name          VARCHAR2                      --
1129 --                  p_column_name         VARCHAR2                      --
1130 --                  p_row_name            VARCHAR2                      --
1131 --                  p_row_value           VARCHAR2                      --
1132 --         RETURN : VARCHAR2                                            --
1133 --            OUT : p_message             VARCHAR2                      --
1134 --                                                                      --
1135 -- Change History :                                                     --
1136 --------------------------------------------------------------------------
1137 -- Rev#  Date       Userid    Description                               --
1138 --------------------------------------------------------------------------
1139 -- 1.0   20-May-03  statkar   Created this function                     --
1140 ---------------------------------------------------------------------------
1141 FUNCTION get_user_table_value
1142             (p_business_group_id      IN NUMBER
1143             ,p_table_name             IN VARCHAR2
1144             ,p_column_name            IN VARCHAR2
1145 	    ,p_row_name               IN VARCHAR2
1146             ,p_row_value              IN VARCHAR2
1147 	    ,p_effective_date         IN DATE
1148 	    ,p_message                OUT NOCOPY VARCHAR2
1149 	    )
1150 RETURN VARCHAR2
1151 IS
1152      l_value      pay_user_column_instances_f.value%TYPE;
1153 
1154 BEGIN
1155 
1156      l_value  :=  hruserdt.get_table_value
1157                   ( p_bus_group_id      => p_business_group_id
1158 		   ,p_table_name        => p_table_name
1159 		   ,p_col_name          => p_column_name
1160 		   ,p_row_value         => p_row_value
1161 		   ,p_effective_date    => p_effective_date
1162 		   );
1163 
1164      p_message := 'SUCCESS';
1165      RETURN l_value;
1166 
1167 EXCEPTION
1168    WHEN NO_DATA_FOUND THEN
1169         p_message := hr_cn_api.get_pay_message
1170 	            (
1171 	             p_message_name    =>  'HR_374614_TAX_DETAILS_MISSING'
1172 		    ,p_token1          =>  'TABLE:'||p_table_name
1173 		    ,p_token2          =>  'VARIABLE:'||p_row_name
1174 		    ,p_token3          =>  'VALUE:'||p_row_value
1175 		     );
1176         RETURN NULL;
1177 
1178 END get_user_table_value;
1179 
1180 --------------------------------------------------------------------------
1181 --                                                                      --
1182 -- Name           : GET_DFF_TL_VALUE                                    --
1183 -- Type           : FUNCTION                                            --
1184 -- Access         : Public                                              --
1185 -- Description    : Function to fetch the translated value              --
1186 --                                                                      --
1187 -- Parameters     :                                                     --
1188 --             IN : p_column_name         VARCHAR2                      --
1189 --                  p_dff                 VARCHAR2                      --
1190 --                  p_dff_context_code    VARCHAR2                      --
1191 --         RETURN : VARCHAR2                                            --
1192 --                                                                      --
1193 -- Change History :                                                     --
1194 --------------------------------------------------------------------------
1195 -- Rev#  Date       Userid    Description                               --
1196 --------------------------------------------------------------------------
1197 -- 1.0   03-Jul-03  saikrish  Created this function                     --
1198 -- 1.1   09-Mar-06  rpalli    Modified cursor cur_prompt to resolve     --
1199 --                            R12 perf issues. Bug 5043303              --
1200 --------------------------------------------------------------------------
1201 FUNCTION get_dff_tl_value(p_column_name      IN VARCHAR2
1202                          ,p_dff              IN VARCHAR2
1203 			 ,p_dff_context_code IN VARCHAR2
1204 			 )
1205 RETURN VARCHAR2 IS
1206 
1207 CURSOR cur_prompt IS
1208 select t.form_left_prompt
1209 from fnd_descr_flex_col_usage_tl t,
1210        fnd_descr_flex_column_usages b
1211 where t.application_id                in (800, 801)
1212   and b.application_id                = t.application_id
1213   and t.descriptive_flexfield_name    = b.descriptive_flexfield_name
1214   and b.descriptive_flexfield_name    = p_dff
1215   and b.descriptive_flex_context_code = t.descriptive_flex_context_code
1216   and b.descriptive_flex_context_code = p_dff_context_code
1217   and b.application_column_name       = t.application_column_name
1218   and b.end_user_column_name          = p_column_name
1219   and t.language                      = userenv('LANG');
1220 
1221 l_prompt     fnd_descr_flex_col_usage_vl.form_left_prompt%TYPE;
1222 
1223 BEGIN
1224 
1225   OPEN cur_prompt;
1226   FETCH cur_prompt INTO l_prompt;
1227   CLOSE cur_prompt;
1228 
1229   RETURN l_prompt;
1230 
1231 END get_dff_tl_value;
1232 
1233 --------------------------------------------------------------------------
1234 --                                                                      --
1235 -- Name           : RAISE_MESSAGE                                       --
1236 -- Type           : PROCEDURE                                           --
1237 -- Access         : Public                                              --
1238 -- Description    : Procedure to raise the error message                --
1239 --                                                                      --
1240 -- Parameters     :                                                     --
1241 --             IN : p_application_id      NUMBER                        --
1242 --                  p_message_name        VARCHAR2                      --
1243 --                  p_token_name          HR_CN_API.CHAR_TAB_TYPE       --
1244 --                  p_token_value         HR_CN_API.CHAR_TAB_TYPE       --
1245 --                                                                      --
1246 -- Change History :                                                     --
1247 --------------------------------------------------------------------------
1248 -- Rev#  Date       Userid    Description                               --
1249 --------------------------------------------------------------------------
1250 -- 1.0   15-Mar-05  snekkala  Created this procedure                    --
1251 --------------------------------------------------------------------------
1252 PROCEDURE raise_message(p_application_id IN NUMBER
1253 		      ,p_message_name IN VARCHAR2
1254 		      ,p_token_name   IN OUT NOCOPY hr_cn_api.char_tab_type
1255 	              ,p_token_value  IN OUT NOCOPY hr_cn_api.char_tab_type
1256 		      )IS
1257 	     cnt NUMBER;
1258 BEGIN
1259 
1260     IF p_message_name IS NOT NULL AND p_message_name <> 'SUCCESS' THEN
1261        cnt:= p_token_name.count;
1262        hr_utility.set_message(p_application_id, p_message_name);
1263        FOR i IN 1..cnt
1264        LOOP
1265            hr_utility.set_message_token(p_token_name(i),p_token_value(i));
1266        END LOOP;
1267        hr_utility.raise_error;
1268     END IF;
1269 
1270 END raise_message;
1271 
1272 --------------------------------------------------------------------------
1273 --                                                                      --
1274 -- Name           : get_class_tl_name                                   --
1275 -- Type           : FUNCTION                                            --
1276 -- Access         : Public                                              --
1277 -- Description    : Function  to raise the error message                --
1278 --                                                                      --
1279 -- Parameters     :                                                     --
1280 --             IN : p_classification_name      VARCHAR2                 --
1281 --        RETURN  : VARCHAR2                                            --
1282 --                                                                      --
1283 -- Change History :                                                     --
1284 --------------------------------------------------------------------------
1285 -- Rev#  Date       Userid    Description                               --
1286 --------------------------------------------------------------------------
1287 -- 1.0   12-May-06  lnagaraj  Created this procedure                    --
1288 --------------------------------------------------------------------------
1289 
1290 FUNCTION get_class_tl_name(p_classification_name IN VARCHAR2)
1291 RETURN VARCHAR2
1292 IS
1293 l_trans_name pay_element_classifications_tl.classification_name%TYPE;
1294 
1295 CURSOR csr_translated_value
1296 IS
1297 SELECT pectl.classification_name
1298 FROM pay_element_classifications_tl pectl,
1299      pay_element_classifications pec
1300 WHERE pec.classification_id = pectl.classification_id
1301   AND pectl.language =USERENV('LANG')
1302   AND pec.classification_name = DECODE(p_classification_name,'Voluntary Dedn','Voluntary Deductions',p_classification_name)
1303   AND pec.legislation_code='CN';
1304 
1305 BEGIN
1306 OPEN csr_translated_value;
1307 FETCH csr_translated_value INTO l_trans_name;
1308 CLOSE csr_translated_value;
1309 
1310 RETURN l_trans_name ;
1311 
1312 END get_class_tl_name;
1313 
1314 
1315 BEGIN
1316 
1317      g_package := 'hr_cn_api.';
1318 
1319 END hr_cn_api;