DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_ORG_MAN_COUNT_NAME_PKG

Source


1 PACKAGE BODY per_org_man_count_name_pkg AS
2 /* $Header: pewspor1.pkb 120.1.12010000.1 2008/07/28 06:08:05 appldev ship $ */
3 --
4 /*
5 +======================================================================+
6 |                Copyright (c) 1993 Oracle Corporation                 |
7 |                   Redwood Shores, California, USA                    |
8 |                        All rights reserved.                          |
9 +======================================================================+
10 
11    Name
12 	Richard Metcalf
13    Purpose
14         Count the number of managers in the organization and
15 	if there is one put the managers name
16 	count the number of organizations the employee is in
17         and if there is only puts the organization name
18    History
19     28-OCT-93 R Metcalf created
20     04-OCT-94 R Fine	Renamed package to conform to naming standards.
21     31-JUL-96 J Alloun  Added error handling.
22     20-JUN-97 70.7  LMA 1) Fixed bug 507611
23     		            NLSP16.1 FRM-40735 WHEN-VALIDATE-ITEM
24     		            TRIGGER RAISED UNHANDLED EXCEPTION VALUE_E
25     		            by change MANAGER_NAME from varchar2(60) to
26     		            PER_ALL_PEOPLE_F.E.FULL_NAME%type and
27     		            ORGANIZATION_NAME from varchar2(60) to
28     		            HR_ALL_ORGANIZATION_UNITS.NAME%type
29     		            2) Fixed hard coded messages
30     24-Jun-97 70.8 teyres   Changed as to is on create or replace line
31     25-Jun-97 110.1/70.9 teyres 110.1 and 70.9 are the same
32     03-DEC-97 110.2      mbocutt Add missing token substitution in message
33                                  HR_NUM_ORGANIZATIONS.
34     04-DEC-98 115.1      tfilippi Changed ORGANIZATION_COUNT_NAME to support MLS
35 18-JUN-1999 714621 115.2 asahay  added p_manager_flag to
36 				 organization_count_name procedure
37     30-DEC-99 115.3 ccarter Bug 1123545, changed length of manager_desc_flex
38                             to 80 and manager_flag to 30.
39     14-SEP-00 115.4 jpbard  Added support for global org hierarchies
40     17-JUL-07 115.6 sathkris Changed the length of the variable NO_OF_MANAGERS
41                              FROM 3 TO 4 for bug 6219536
42 */
43 --
44 PROCEDURE MANAGER_COUNT_NAME(P_ORGANIZATION_ID IN NUMBER,
45 	       P_BUSINESS_GROUP_ID IN NUMBER,
46 			     P_SESSION_DATE IN DATE,
47 			     P_MANAGER IN OUT NOCOPY VARCHAR2 ) IS
48         MANAGER_NAME PER_ALL_PEOPLE_F.FULL_NAME%type;
49    	    NO_OF_MANAGERS NUMBER(4); --FIX FOR BUG 6219536
50 BEGIN
51         SELECT COUNT(DISTINCT E.PERSON_ID),
52            MAX(E.FULL_NAME)
53         INTO
54 	       NO_OF_MANAGERS,
55 	       MANAGER_NAME
56 	    FROM
57 	       PER_ALL_PEOPLE_F E,
58 	       PER_ALL_ASSIGNMENTS_F A
59       WHERE (E.CURRENT_EMPLOYEE_FLAG = 'Y' OR
60              E.CURRENT_NPW_FLAG = 'Y')
61       AND A.PERSON_ID             = E.PERSON_ID
62 	     AND A.ORGANIZATION_ID       = P_ORGANIZATION_ID
63 	     AND ((A.ASSIGNMENT_TYPE       = 'E' AND
64             A.MANAGER_FLAG          = 'Y') OR
65            (A.ASSIGNMENT_TYPE       = 'C' AND
66             A.MANAGER_FLAG          = 'Y'))
67 	     AND P_SESSION_DATE BETWEEN
68 	     E.EFFECTIVE_START_DATE AND E.EFFECTIVE_END_DATE
69 	     AND P_SESSION_DATE BETWEEN
70 	     A.EFFECTIVE_START_DATE AND A.EFFECTIVE_END_DATE;
71 
72          --
73          --If there is only one manager put the mnager's name
74          --
75 
76 	     IF NO_OF_MANAGERS = 0 THEN
77 	        fnd_message.set_name('PER', 'HR_NO_CURRENT_MANAGERS');
78 	        P_MANAGER := fnd_message.get; --'** No Current Managers **';
79 	     ELSIF NO_OF_MANAGERS = 1 THEN
80 	        P_MANAGER := MANAGER_NAME;
81 	     ELSE
82 		    fnd_message.set_name('PER', 'HR_NUM_CURRENT_MANAGERS');
83 		    fnd_message.set_token('number', to_char(NO_OF_MANAGERS)); --'** num Current Managers **';
84 	        P_MANAGER := fnd_message.get;
85          END IF;
86 END;
87 --
88 --Count the number of organizations that the employee is in
89 --
90 PROCEDURE ORGANIZATION_COUNT_NAME
91      (P_ORGANIZATION               IN OUT NOCOPY VARCHAR2,
92 				  P_MANAGER_FLAG_DESC          IN OUT NOCOPY VARCHAR2,
93 				  P_MANAGER_FLAG               IN OUT NOCOPY VARCHAR2,
94 			   P_PERSON_ID                  IN            NUMBER,
95 			   P_SESSION_DATE               IN            DATE,
96       P_ORGANIZATION_ID            IN            NUMBER,
97 			   P_ORGANIZATION_STRUCTURE_ID  IN            NUMBER,
98 			   P_BUSINESS_GROUP_ID          IN            NUMBER,
99 			   P_VERSION_ID                 IN            NUMBER,
100       P_USER_PERSON_TYPE              OUT NOCOPY VARCHAR2) IS
101   --
102   NO_OF_ORGS NUMBER(3);
103   ORGANIZATION_NAME HR_ALL_ORGANIZATION_UNITS.NAME%type;
104   MANAGER_FLAG_DESC VARCHAR2(80);
105   MANAGER_FLAG      VARCHAR2(30);
106   --
107 BEGIN
108     SELECT
109 COUNT(DISTINCT(TO_CHAR(A.ORGANIZATION_ID)||NVL(MANAGER_FLAG,'N'))),
110 	       MAX(OTL.NAME),
111 	       MAX(L.MEANING),
112 	       MAX(NVL(A.MANAGER_FLAG,'N'))
113     INTO   NO_OF_ORGS,
114 	       ORGANIZATION_NAME,
115            MANAGER_FLAG_DESC,
116            MANAGER_FLAG
117     FROM   PER_ALL_ASSIGNMENTS_F A,
118            HR_ALL_ORGANIZATION_UNITS O,
119            HR_ALL_ORGANIZATION_UNITS_TL OTL,
120 	   FND_LOOKUPS L
121     WHERE  A.PERSON_ID = P_PERSON_ID
122     AND    (A.ASSIGNMENT_TYPE = 'E' OR A.ASSIGNMENT_TYPE = 'C')
123     AND    P_SESSION_DATE BETWEEN
124                 A.EFFECTIVE_START_DATE AND A.EFFECTIVE_END_DATE
125     AND    O.ORGANIZATION_ID = A.ORGANIZATION_ID
126     AND    O.ORGANIZATION_ID = OTL.ORGANIZATION_ID
127     AND    OTL.LANGUAGE = USERENV('LANG')
128     AND    ((O.ORGANIZATION_ID = P_ORGANIZATION_ID AND
129            P_ORGANIZATION_STRUCTURE_ID IS NULL)
130     OR     (P_ORGANIZATION_STRUCTURE_ID IS NOT NULL AND
131     EXISTS
132 	           (SELECT 1
133                    FROM   PER_ORG_STRUCTURE_ELEMENTS E
134         	   WHERE  O.ORGANIZATION_ID
135 		       IN (E.ORGANIZATION_ID_CHILD,E.ORGANIZATION_ID_PARENT)
136                    AND    E.ORG_STRUCTURE_VERSION_ID = P_VERSION_ID)))
137     AND     L.LOOKUP_CODE = NVL(A.MANAGER_FLAG,'N')
138     AND     L.LOOKUP_TYPE = 'YES_NO';
139 
140     --
141 	--If there is only one organization then put the organization name
142 	--
143 
144      IF NO_OF_ORGS = 0 THEN
145         fnd_message.set_name('PER', 'HR_NO_ORGANIZATIONS');
146         P_ORGANIZATION := fnd_message.get; --'** No Organizations **'
147         P_MANAGER_FLAG_DESC := NULL;
148         P_MANAGER_FLAG := NULL;
149      ELSIF NO_OF_ORGS = 1 THEN
150        --
151       	P_ORGANIZATION := ORGANIZATION_NAME;
152       	P_MANAGER_FLAG_DESC := MANAGER_FLAG_DESC;
153       	P_MANAGER_FLAG := MANAGER_FLAG;
154        --
155        p_user_person_type := hr_person_type_usage_info.get_user_person_type
156                                (p_effective_date => p_session_date
157                                ,p_person_id      => p_person_id);
158        --
159      ELSE
160         fnd_message.set_name('PER', 'HR_NUM_ORGANIZATIONS');
161 	fnd_message.set_token('number', to_char(NO_OF_ORGS));
162         P_ORGANIZATION := fnd_message.get; --'** num Organizations **'
163         P_MANAGER_FLAG_DESC := NULL;
164         P_MANAGER_FLAG := NULL;
165      END IF;
166 END;
167 end per_org_man_count_name_pkg;