DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_PERUSEO1_XMLP_PKG

Source


1 PACKAGE BODY PER_PERUSEO1_XMLP_PKG AS
2 /* $Header: PERUSEO1B.pls 120.7.12020000.2 2012/07/04 21:51:18 amnaraya ship $ */
3   --G_FILE_TYPE TEXT_IO.FILE_TYPE;
4 
5   G_IL_FEIN VARCHAR2(10);
6 
7   G_FILE_NAME VARCHAR2(30);
8 
9   /*Changes for Bug#12604545. Created the function MAINTAIN_EST_EMP_COUNTS
10     to resolve the issue of information not getting saved to "EEO1 Individual
11     Establishment Archive Data" Location Extra Information when "EEO Individual
12     Establishment Report (XML)" was run in Final Mode */
13 
14   /* The Employee Counts for each of the Establishment will be accumulated in
15      the PL/SQL Table G_EST_COUNT_TABLE and in the After Report the counts
16      will be saved to Location Extra Information
17 
18      The function can be called in three modes. BEFOREREPORT, UPDATE and AFTERREPORT
19 
20      BEFOREREPORT - Takes care of Initialization part. Called from
21      PER_PERUSEO1_XMLP_PKG.BEFOREREPORT
22 
23      UPDATE - Updates the data in PL/SQL table with the Establishment Employee Counts
24      Called from Q_1 Query of XML Data Template PERUSEO1 (Delivered in PERRPEO1_XML.xml)
25 
26      AFTERREPORT - Saves the data in PL/SQL table to Location Extra Information*/
27 
28   FUNCTION MAINTAIN_EST_EMP_COUNTS  (C_MODE IN VARCHAR2,
29                                      C_EST_NODE_ID IN NUMBER,
30                                      C_TOT_CAT IN NUMBER,
31                                      C_TOT_WMALE IN NUMBER,
32                                      C_TOT_BMALE IN NUMBER,
33                                      C_TOT_HMALE IN NUMBER,
34                                      C_TOT_AMALE IN NUMBER,
35                                      C_TOT_IMALE IN NUMBER,
36                                      C_TOT_WFEMALE IN NUMBER,
37                                      C_TOT_BFEMALE IN NUMBER,
38                                      C_TOT_HFEMALE IN NUMBER,
39                                      C_TOT_AFEMALE IN NUMBER,
40                                      C_TOT_IFEMALE IN NUMBER,
41                                      C_TOT_HLMALE IN NUMBER,
42                                      C_TOT_HLFEMALE IN NUMBER,
43                                      C_TOT_TMRACESMALE IN NUMBER,
44                                      C_TOT_TMRACESFEMALE IN NUMBER)
45 
46   RETURN NUMBER
47 
48   IS
49 
50   L_EST_NODE_ID NUMBER;
51   L_CF_CREATEUPD_ARCHEITFORMULA NUMBER;
52 
53   BEGIN
54 
55    IF C_MODE = 'BEFOREREPORT' THEN
56 
57       G_EST_COUNT_TABLE.DELETE;
58       P_CONC_REQUEST_ID := fnd_profile.value ('CONC_REQUEST_ID');
59 
60    END IF;
61 
62    IF C_MODE = 'UPDATE' THEN
63 
64        IF G_EST_COUNT_TABLE.EXISTS(C_EST_NODE_ID) THEN
65 
66             /*Add the latest counts to existing counts in PL/SQL table for the Establishment*/
67 
68             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_CAT           := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_CAT          +  C_TOT_CAT;
69             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_WMALE         := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_WMALE        +  C_TOT_WMALE;
70             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_BMALE         := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_BMALE        +  C_TOT_BMALE;
71             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_HMALE         := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_HMALE        +  C_TOT_HMALE;
72             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_AMALE         := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_AMALE        +  C_TOT_AMALE;
73             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_IMALE         := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_IMALE        +  C_TOT_IMALE;
74             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_WFEMALE       := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_WFEMALE      +  C_TOT_WFEMALE;
75             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_BFEMALE       := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_BFEMALE      +  C_TOT_BFEMALE;
76             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_HFEMALE       := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_HFEMALE      +  C_TOT_HFEMALE;
77             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_AFEMALE       := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_AFEMALE      +  C_TOT_AFEMALE;
78             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_IFEMALE       := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_IFEMALE      +  C_TOT_IFEMALE;
79             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_HLMALE        := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_HLMALE       +  C_TOT_HLMALE;
80             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_HLFEMALE      := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_HLFEMALE     +  C_TOT_HLFEMALE;
81             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_TMRACESMALE   := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_TMRACESMALE  +  C_TOT_TMRACESMALE;
82             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_TMRACESFEMALE := G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_TMRACESFEMALE+  C_TOT_TMRACESFEMALE;
83 
84        ELSE
85 
86             /*Counts not present for this Establishment in PL/SQL table. Create them*/
87 
88             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_CAT           := C_TOT_CAT;
89             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_WMALE         := C_TOT_WMALE;
90             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_BMALE         := C_TOT_BMALE;
91             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_HMALE         := C_TOT_HMALE;
92             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_AMALE         := C_TOT_AMALE;
93             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_IMALE         := C_TOT_IMALE;
94             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_WFEMALE       := C_TOT_WFEMALE;
95             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_BFEMALE       := C_TOT_BFEMALE;
96             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_HFEMALE       := C_TOT_HFEMALE;
97             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_AFEMALE       := C_TOT_AFEMALE;
98             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_IFEMALE       := C_TOT_IFEMALE;
99             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_HLMALE        := C_TOT_HLMALE;
100             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_HLFEMALE      := C_TOT_HLFEMALE;
101             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_TMRACESMALE   := C_TOT_TMRACESMALE;
102             G_EST_COUNT_TABLE(C_EST_NODE_ID).TOT_TMRACESFEMALE := C_TOT_TMRACESFEMALE;
103 
104        END IF;
105 
106    END IF;
107 
108    IF C_MODE = 'AFTERREPORT' THEN
109 
110       IF G_EST_COUNT_TABLE.COUNT > 0 THEN
111 
112           L_EST_NODE_ID := G_EST_COUNT_TABLE.FIRST;
113 
114           WHILE L_EST_NODE_ID IS NOT NULL
115           LOOP
116               L_CF_CREATEUPD_ARCHEITFORMULA :=
117                 CF_CREATEUPD_ARCHEITFORMULA( L_EST_NODE_ID,
118                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_CAT,
119                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_WMALE,
120                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_BMALE,
121                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_HMALE,
122                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_AMALE,
123                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_IMALE,
124                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_WFEMALE,
125                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_BFEMALE,
126                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_HFEMALE,
127                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_AFEMALE,
128                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_IFEMALE,
129                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_HLMALE,
130                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_HLFEMALE,
131                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_TMRACESMALE,
132                                              G_EST_COUNT_TABLE(L_EST_NODE_ID).TOT_TMRACESFEMALE);
133                 L_EST_NODE_ID := G_EST_COUNT_TABLE.NEXT(L_EST_NODE_ID);
134           END LOOP;
135 
136           G_EST_COUNT_TABLE.DELETE;
137 
138       END IF;
139 
140    END IF;
141 
142    RETURN (1);
143 
144   END;
145 
146   FUNCTION BEFOREREPORT RETURN BOOLEAN IS
147     L_DUMMY VARCHAR2(1);
148     TEST_YEAR DATE;
149     TEST_YEAR1 DATE;
150     L_LOCATION_CODE VARCHAR2(60);
151     L_LOCATION_ID NUMBER(15);
152     L_BUFFER VARCHAR2(1000);
153     G_DELIMITER VARCHAR2(1) := ',';
154     G_EOL VARCHAR2(1) := FND_GLOBAL.LOCAL_CHR(10);
155     L_MAINTAIN_EST_EMP_COUNTS NUMBER(2);
156         temp boolean;
157   BEGIN
158     --HR_STANDARD.EVENT('BEFORE REPORT');
159     L_MAINTAIN_EST_EMP_COUNTS := MAINTAIN_EST_EMP_COUNTS('BEFOREREPORT');
160     C_ALL_TOTAL := 0;
161     P_PAYROLL_PERIOD_DATE_START_T := FND_DATE.CANONICAL_TO_DATE(P_PAYROLL_PERIOD_DATE_START);
162     P_PAYROLL_PERIOD_DATE_END_T := FND_DATE.CANONICAL_TO_DATE(P_PAYROLL_PERIOD_DATE_END);
163 
164     -- Moved these 2 lines from top to here - bug#12534614
165     temp := P_REPORT_YEARVALIDTRIGGER;
166     CP_PREV_YEAR_FILED := TO_CHAR(TO_NUMBER(P_REPORT_YEAR - 1));
167 
168     C_PAYROLL_PERIOD_DATE_START := P_PAYROLL_PERIOD_DATE_START_T;
169     C_PAYROLL_PERIOD_DATE_END := P_PAYROLL_PERIOD_DATE_END_T;
170     C_REPORT_MODE := P_REPORT_MODE;
171     C_REPORT_YEAR := P_REPORT_YEAR;
172     C_BUSINESS_GROUP_NAME := GET_BUSINESS_GROUP(P_BUSINESS_GROUP_ID);
173     /*SRW.MESSAGE('35'
174                ,'previous year ' || CP_PREV_YEAR_FILED)*/NULL;
175     SELECT
176       PGH.NAME,
177       PGV.VERSION_NUMBER,
178       PGN.ENTITY_ID,
179       PGN.HIERARCHY_NODE_ID
180     INTO C_HIERARCHY_NAME,C_HIERARCHY_VERSION_NUM,C_PARENT_ORG_ID,C_PARENT_NODE_ID
181     FROM
182       PER_GEN_HIERARCHY PGH,
183       PER_GEN_HIERARCHY_VERSIONS PGV,
184       PER_GEN_HIERARCHY_NODES PGN
185     WHERE PGH.HIERARCHY_ID = P_HIERARCHY_ID
186       AND PGH.HIERARCHY_ID = PGV.HIERARCHY_ID
187       AND PGV.HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
188       AND PGN.HIERARCHY_VERSION_ID = PGV.HIERARCHY_VERSION_ID
189       AND PGN.NODE_TYPE = 'PAR';
190     SELECT
191       COUNT('h_node')
192     INTO C_NO_OF_ESTABLISHMENTS
193     FROM
194       PER_GEN_HIERARCHY_NODES PGHN
195     WHERE PGHN.HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
196       AND PGHN.NODE_TYPE = 'EST';
197     /*SRW.MESSAGE('10'
198                ,'number of establishments: ' || C_NO_OF_ESTABLISHMENTS)*/NULL;
199     BEGIN
200       SELECT
201         null
202       INTO L_DUMMY
203       FROM
204         HR_ALL_ORGANIZATION_UNITS
205       WHERE ORGANIZATION_ID = C_PARENT_ORG_ID
206         AND LOCATION_ID is not null;
207     EXCEPTION
208       WHEN NO_DATA_FOUND THEN
209         FND_MESSAGE.SET_NAME('PER'
210                             ,'PER_75228_ORG_LOC_MISSING');
211         /*SRW.MESSAGE('10'
212                    ,FND_MESSAGE.GET)*/NULL;
213         RAISE;
214     END;
215     BEGIN
216       SELECT
217         null
218       INTO L_DUMMY
219       FROM
220         HR_ORGANIZATION_INFORMATION
221       WHERE ORGANIZATION_ID = C_PARENT_ORG_ID
222         AND ORG_INFORMATION_CONTEXT = 'EEO_Spec';
223     EXCEPTION
224       WHEN NO_DATA_FOUND THEN
225         FND_MESSAGE.SET_NAME('PER'
226                             ,'PER_75229_EEO_CLASS_MISSING');
227         /*SRW.MESSAGE('10'
228                    ,FND_MESSAGE.GET)*/NULL;
229         RAISE;
230     END;
231     BEGIN
232       SELECT
233         null
234       INTO L_DUMMY
235       FROM
236         HR_LOCATION_EXTRA_INFO HLEI1,
237         HR_LOCATION_EXTRA_INFO HLEI2,
238         PER_GEN_HIERARCHY_NODES PGN,
239         HR_LOCATIONS_ALL ELOC
240       WHERE PGN.HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
241         AND PGN.NODE_TYPE = 'EST'
242         AND ELOC.LOCATION_ID = PGN.ENTITY_ID
243         AND HLEI1.LOCATION_ID = ELOC.LOCATION_ID
244         AND HLEI1.INFORMATION_TYPE = 'EEO-1 Specific Information'
245         AND HLEI1.LEI_INFORMATION_CATEGORY = 'EEO-1 Specific Information'
246         AND HLEI2.LOCATION_ID = ELOC.LOCATION_ID
247         AND HLEI2.INFORMATION_TYPE = 'Establishment Information'
248         AND HLEI2.LEI_INFORMATION_CATEGORY = 'Establishment Information';
249     EXCEPTION
250       WHEN NO_DATA_FOUND THEN
251         FND_MESSAGE.SET_NAME('PER'
252                             ,'PER_75230_EST_CLASS_MISSING');
253         /*SRW.MESSAGE('10'
254                    ,FND_MESSAGE.GET)*/NULL;
255         RAISE;
256       WHEN OTHERS THEN
257         NULL;
258     END;
259     BEGIN
260       SELECT
261         ELOC.LOCATION_ID,
262         ELOC.LOCATION_CODE
263       INTO L_LOCATION_ID,L_LOCATION_CODE
264       FROM
265         HR_LOCATION_EXTRA_INFO HLEI1,
266         PER_GEN_HIERARCHY_NODES PGN,
267         HR_LOCATIONS_ALL ELOC
268       WHERE PGN.HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
269         AND PGN.NODE_TYPE = 'EST'
270         AND ELOC.LOCATION_ID = PGN.ENTITY_ID
271         AND HLEI1.LOCATION_ID = ELOC.LOCATION_ID
272         AND HLEI1.INFORMATION_TYPE = 'EEO-1 Archive Information'
273         AND HLEI1.LEI_INFORMATION_CATEGORY = 'EEO-1 Archive Information';
274     EXCEPTION
275       WHEN NO_DATA_FOUND THEN
276         /*SRW.MESSAGE('20'
277                    ,'Either (1) there are no establishments within your hierarchy with the extra')*/NULL;
278         /*SRW.MESSAGE('20'
279                    ,'information type EEO-1 Archive Information attatched - in which case ')*/NULL;
280         /*SRW.MESSAGE('20'
281                    ,'please attatch to appropriate responsibility in the information security screen.')*/NULL;
282         /*SRW.MESSAGE('20'
283                    ,'                                                                                ')*/NULL;
284         /*SRW.MESSAGE('20'
285                    ,'or (2) the extra information type EEO-1 Archive Information exists for location ')*/NULL;
286         /*SRW.MESSAGE('20'
287                    ,L_LOCATION_CODE || 'but does not yet contain data.  If this is your first time to file  ')*/NULL;
288         /*SRW.MESSAGE('20'
289                    ,'(ie if this is a report type 9) then do not worry about this.  ')*/NULL;
290         /*SRW.MESSAGE('20'
291                    ,'However if you filed last year then the EIT will have to be filled with last years')*/NULL;
292         /*SRW.MESSAGE('20'
293                    ,'totals, either manually or by running the report for last year in final mode.')*/NULL;
294       WHEN OTHERS THEN
295         NULL;
296     END;
297     BEGIN
298       BEGIN
299         SELECT
300           '1',
301           ELOC.LOCATION_ID,
302           ELOC.LOCATION_CODE
303         INTO L_DUMMY,L_LOCATION_ID,L_LOCATION_CODE
304         FROM
305           HR_LOCATION_EXTRA_INFO HLEI1,
306           PER_GEN_HIERARCHY_NODES PGN,
307           HR_LOCATIONS_ALL ELOC
308         WHERE PGN.HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
309           AND PGN.NODE_TYPE = 'EST'
310           AND ELOC.LOCATION_ID = PGN.ENTITY_ID
311           AND HLEI1.LOCATION_ID = ELOC.LOCATION_ID
312           AND HLEI1.INFORMATION_TYPE = 'EEO-1 Specific Information'
313           AND HLEI1.LEI_INFORMATION_CATEGORY = 'EEO-1 Specific Information'
314           AND HLEI1.LEI_INFORMATION9 = 'Y';
315       EXCEPTION
316         WHEN NO_DATA_FOUND THEN
317           NULL;
318         WHEN OTHERS THEN
319           NULL;
320       END;
321       /*SRW.MESSAGE('444'
322                  ,'l_dummy, l_location_id, l_location_code ' || L_DUMMY || ' ' || L_LOCATION_ID || ' ' || L_LOCATION_CODE)*/NULL;
323       IF L_DUMMY = '1' THEN
324         BEGIN
325           SELECT
326             2
327           INTO L_DUMMY
328           FROM
329             HR_LOCATION_EXTRA_INFO
330           WHERE LEI_INFORMATION1 = CP_PREV_YEAR_FILED
331             AND LEI_INFORMATION_CATEGORY = 'EEO-1 Archive Information';
332         EXCEPTION
333           WHEN NO_DATA_FOUND THEN
334             /*SRW.MESSAGE('555'
335                        ,'l_dummy, l_location_id, l_location_code ' || L_DUMMY || ' ' || L_LOCATION_ID || ' ' || L_LOCATION_CODE)*/NULL;
336             /*SRW.MESSAGE('30'
337                        ,'                                         ')*/NULL;
338             /*SRW.MESSAGE('30'
339                        ,'The extra information type EEO-1 Archive Information exists for ' || L_LOCATION_CODE)*/NULL;
340             /*SRW.MESSAGE('30'
341                        ,'but does not contain data for last years totals.    ')*/NULL;
342             /*SRW.MESSAGE('30'
343                        ,'                                          ')*/NULL;
344             /*SRW.MESSAGE('30'
345                        ,'As you filed last year then this EIT will have to be filled with last years')*/NULL;
346             /*SRW.MESSAGE('30'
347                        ,'totals, either manually or by running the report for last year in final mode.')*/NULL;
348             /*SRW.MESSAGE('30'
349                        ,'                                          ')*/NULL;
350             /*SRW.MESSAGE('30'
351                        ,'To do this without encountering this error again, set the reported previously field')*/NULL;
352             /*SRW.MESSAGE('30'
353                        ,'under location/extra info/EEO-1 Specific Data to No and then run the report in  ')*/NULL;
354             /*SRW.MESSAGE('30'
355                        ,'Final mode for last years dates.')*/NULL;
356             /*SRW.MESSAGE('30'
357                        ,'                                          ')*/NULL;
358             /*SRW.MESSAGE('30'
359                        ,'Then set the Reported Previously field back to Yes and run the report for ')*/NULL;
360             /*SRW.MESSAGE('30'
361                        ,'this year as normal')*/NULL;
362             /*SRW.MESSAGE('30'
363                        ,'                                          ')*/NULL;
364           WHEN OTHERS THEN
365             NULL;
366         END;
367       END IF;
368     END;
369     IF P_AUDIT_REPORT = 'Y' THEN
370       --OPEN;
371       L_BUFFER := 'Person Id' || G_DELIMITER || 'Last Name' ||
372       G_DELIMITER || 'First Name' || G_DELIMITER || 'Employee Number' ||
373       G_DELIMITER || 'Gender' || G_DELIMITER || 'Ethnic Origin' || G_DELIMITER ||
374       'Assignment Id' || G_DELIMITER || 'Job Id' || G_DELIMITER || 'Job Name' || G_DELIMITER ||
375       'Location Id' || G_DELIMITER || 'Location Code' || G_DELIMITER || G_EOL;
376       --PUT(L_BUFFER);
377       FND_FILE.PUT_LINE(FND_FILE.LOG,L_BUFFER);
378     END IF;
379     RETURN TRUE;
380   END BEFOREREPORT;
381 
382 /* Modified the P_REPORT_YEARVALIDTRIGGER for bug#12534614. Removed the usage
383    of FND_DATE.CANONICAL_TO_DATE with P_PAYROLL_PERIOD_DATE_END_T, since it is
384    already converted to DATE.
385 */
386   FUNCTION P_REPORT_YEARVALIDTRIGGER RETURN BOOLEAN IS
387   C_DATE_FORMAT varchar2(25):='DD-MON-YY';
388   BEGIN
389     IF P_PAYROLL_PERIOD_DATE_END_T IS NOT NULL THEN
390       P_REPORT_YEAR := TO_CHAR(to_date(P_PAYROLL_PERIOD_DATE_END_T,C_DATE_FORMAT),'RRRR');
391     ELSE
392       P_REPORT_YEAR := TO_CHAR(SYSDATE
393                               ,'RRRR');
394     END IF;
395     RETURN (TRUE);
396   END P_REPORT_YEARVALIDTRIGGER;
397 
398 /*
399   FUNCTION P_REPORT_YEARVALIDTRIGGER RETURN BOOLEAN IS
400   BEGIN
401     IF P_PAYROLL_PERIOD_DATE_END_T IS NOT NULL THEN
402       P_REPORT_YEAR := TO_CHAR(FND_DATE.CANONICAL_TO_DATE(P_PAYROLL_PERIOD_DATE_END_T)
403                               ,'YYYY');
404     ELSE
405       P_REPORT_YEAR := TO_CHAR(SYSDATE
406                               ,'YYYY');
407     END IF;
408     RETURN (TRUE);
409   END P_REPORT_YEARVALIDTRIGGER;
410 */
411 
412   FUNCTION AFTERREPORT RETURN BOOLEAN IS
413 
414     L_MAINTAIN_EST_EMP_COUNTS NUMBER(2);
415 
416   BEGIN
417     --HR_STANDARD.EVENT('AFTER REPORT');
418     L_MAINTAIN_EST_EMP_COUNTS := MAINTAIN_EST_EMP_COUNTS('AFTERREPORT');
419     FND_FILE.PUT_LINE(1
420                      ,'Total employees of the establishments: ' || C_ALL_TOTAL);
421     FND_FILE.PUT_LINE(1
422                      ,' ');
423     IF P_AUDIT_REPORT = 'Y' THEN
424       --CLOSE;
425       null;
426     END IF;
427     RETURN (TRUE);
428   END AFTERREPORT;
429 
430   FUNCTION CF_SET_DEFAULTSFORMULA RETURN NUMBER IS
431     CURSOR C_DEFAULTS IS
432       SELECT
433         ORG_INFORMATION1,
434         ORG_INFORMATION2,
435         ORG_INFORMATION3,
436         ORG_INFORMATION4,
437         ORG_INFORMATION5,
438         ORG_INFORMATION6,
439         ORG_INFORMATION8,
440         ORG_INFORMATION9,
441         ORG_INFORMATION11,
442         ORG_INFORMATION12
443       FROM
444         HR_ORGANIZATION_INFORMATION
445       WHERE ORGANIZATION_ID = C_PARENT_ORG_ID
446         AND ORG_INFORMATION_CONTEXT = 'VETS_EEO_Dup';
447     L_DEFAULT C_DEFAULTS%ROWTYPE;
448   BEGIN
449     OPEN C_DEFAULTS;
450     FETCH C_DEFAULTS
451      INTO L_DEFAULT;
452     IF C_DEFAULTS%NOTFOUND THEN
453       NULL;
454     ELSE
455       C_DEF_SIC := L_DEFAULT.ORG_INFORMATION1;
456       C_DEF_NAICS := NVL(L_DEFAULT.ORG_INFORMATION2
457                         ,L_DEFAULT.ORG_INFORMATION1);
458       C_DEF_GRE := L_DEFAULT.ORG_INFORMATION3;
459       C_DEF_DUNS := L_DEFAULT.ORG_INFORMATION4;
460       C_DEF_GOV_CON := L_DEFAULT.ORG_INFORMATION5;
461       C_DEF_APPRENT := L_DEFAULT.ORG_INFORMATION6;
462       C_DEF_ACTIV_1 := UPPER(LTRIM(RTRIM(L_DEFAULT.ORG_INFORMATION8)));
463       C_DEF_ACTIV_2 := UPPER(LTRIM(RTRIM(L_DEFAULT.ORG_INFORMATION9)));
464       C_DEF_ACTIV_3 := UPPER(LTRIM(RTRIM(L_DEFAULT.ORG_INFORMATION11)));
465       C_DEF_ACTIV_4 := UPPER(LTRIM(RTRIM(L_DEFAULT.ORG_INFORMATION12)));
466     END IF;
467     CLOSE C_DEFAULTS;
468     RETURN NULL;
469   END CF_SET_DEFAULTSFORMULA;
470 
471   FUNCTION C_TOT_EMPSFORMULA(EST_NODE_ID IN NUMBER
472                             ,AFFILIATED IN VARCHAR2
473                             ,EST_REP_NAME IN VARCHAR2
474                             ,HEADQUARTERS IN VARCHAR2
475                             ,EST_UNIT IN VARCHAR2) RETURN NUMBER IS
476     L_COUNT_EMPS NUMBER := 0;
477   BEGIN
478     SELECT COUNT(PEO.PERSON_ID)
479     INTO   L_COUNT_EMPS
480     FROM   PER_ALL_PEOPLE_F PEO,
481            PER_ALL_ASSIGNMENTS_F ASS,
482          --PER_JOBS_VL JOB - Replaced PER_JOBS_VL with PER_JOBS - bug#11736960
483            PER_JOBS JOB
484     WHERE PEO.PERSON_ID = ASS.PERSON_ID
485  --
486    /* Commented for bug#11736960 starts
487       AND PEO.PER_INFORMATION1 is not NULL
488       Commented for bug#11736960 ends */
489  --
490     AND JOB.JOB_INFORMATION_CATEGORY = 'US'
491     AND P_PAYROLL_PERIOD_DATE_START_T <= NVL(JOB.DATE_TO, P_PAYROLL_PERIOD_DATE_END_T)
492     AND P_PAYROLL_PERIOD_DATE_END_T >= JOB.DATE_FROM
493     AND JOB.JOB_INFORMATION1 is not NULL
494     AND ASS.JOB_ID = JOB.JOB_ID
495     AND PEO.EFFECTIVE_START_DATE = (
496       SELECT
497         MAX(PEO1.EFFECTIVE_START_DATE)
498       FROM
499       --PER_PEOPLE_F PEO1 - Replaced PER_PEOPLE_F with PER_ALL_PEOPLE_F -bug#11736960
500         PER_ALL_PEOPLE_F PEO1
501       WHERE P_PAYROLL_PERIOD_DATE_START_T <= PEO1.EFFECTIVE_END_DATE
502         AND P_PAYROLL_PERIOD_DATE_END_T >= PEO1.EFFECTIVE_START_DATE
503         AND PEO.PERSON_ID = PEO1.PERSON_ID
504         AND PEO1.CURRENT_EMPLOYEE_FLAG = 'Y' )
505       AND ASS.EFFECTIVE_START_DATE = (
506       SELECT
507         MAX(ASS1.EFFECTIVE_START_DATE)
508       FROM
509         PER_ALL_ASSIGNMENTS_F ASS1,
510         PER_ASSIGNMENT_STATUS_TYPES AST  --Added for bug#12594720
511       WHERE P_PAYROLL_PERIOD_DATE_START_T <= ASS1.EFFECTIVE_END_DATE
512         AND P_PAYROLL_PERIOD_DATE_END_T >= ASS1.EFFECTIVE_START_DATE
513         AND ASS.PERSON_ID = ASS1.PERSON_ID
514         AND ASS1.ASSIGNMENT_TYPE = 'E'
515         AND ASS1.PRIMARY_FLAG = 'Y'
516         AND ASS1.ASSIGNMENT_STATUS_TYPE_ID = AST.ASSIGNMENT_STATUS_TYPE_ID
517         AND AST.PER_SYSTEM_STATUS <> 'TERM_ASSIGN')
518     AND ASS.ASSIGNMENT_TYPE = 'E'
519     AND ASS.PRIMARY_FLAG = 'Y'
520     AND ASS.BUSINESS_GROUP_ID = P_BUSINESS_GROUP_ID
521     AND PEO.BUSINESS_GROUP_ID = P_BUSINESS_GROUP_ID
522     AND JOB.BUSINESS_GROUP_ID = P_BUSINESS_GROUP_ID
523     AND EXISTS (
524               SELECT
525                 'X'
526               FROM
527                 HR_ORGANIZATION_INFORMATION HOI1
528               WHERE TO_CHAR(ASS.ASSIGNMENT_STATUS_TYPE_ID) = HOI1.ORG_INFORMATION1
529                 AND HOI1.ORG_INFORMATION_CONTEXT = 'Reporting Statuses'
530                 AND HOI1.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
531                 )
532     AND EXISTS (
533               SELECT
534                 'X'
535               FROM HR_ORGANIZATION_INFORMATION HOI2
536                 where ASS.EMPLOYMENT_CATEGORY = HOI2.ORG_INFORMATION1
537                 AND HOI2.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
538                 AND HOI2.ORG_INFORMATION_CONTEXT = 'Reporting Categories'
539           )
540     /* Replaced this exists clasue with two seperate exists condition inorder to
541        avoid Merge Join Cartesian.
542     AND EXISTS (
543       SELECT
544         'X'
545       FROM
546         HR_ORGANIZATION_INFORMATION HOI1,
547         HR_ORGANIZATION_INFORMATION HOI2
548       WHERE TO_CHAR(ASS.ASSIGNMENT_STATUS_TYPE_ID) = HOI1.ORG_INFORMATION1
549         AND HOI1.ORG_INFORMATION_CONTEXT = 'Reporting Statuses'
550         AND HOI1.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
551         AND ASS.EMPLOYMENT_CATEGORY = HOI2.ORG_INFORMATION1
552         AND HOI2.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
553         AND HOI2.ORG_INFORMATION_CONTEXT = 'Reporting Categories' )
554       */
555     AND P_PAYROLL_PERIOD_DATE_START_T <= ASS.EFFECTIVE_END_DATE
556     AND P_PAYROLL_PERIOD_DATE_END_T >= ASS.EFFECTIVE_START_DATE
557     AND EXISTS (
558       SELECT 1
559       FROM
560         PER_GEN_HIERARCHY_NODES PGN
561       WHERE PGN.HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
562         AND ( PGN.HIERARCHY_NODE_ID = C_TOT_EMPSFORMULA.EST_NODE_ID
563              OR PGN.PARENT_HIERARCHY_NODE_ID = C_TOT_EMPSFORMULA.EST_NODE_ID )
564         AND PGN.NODE_TYPE in ( 'EST' , 'LOC' )
565         AND ASS.LOCATION_ID=PGN.ENTITY_ID
566         )
567     /* Replaced this in clause with the above exists clause.
568       AND ASS.LOCATION_ID in (
569       SELECT
570         DISTINCT
571         PGN.ENTITY_ID
572       FROM
573         PER_GEN_HIERARCHY_NODES PGN
574       WHERE PGN.HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
575         AND ( PGN.HIERARCHY_NODE_ID = C_TOT_EMPSFORMULA.EST_NODE_ID
576       OR PGN.PARENT_HIERARCHY_NODE_ID = C_TOT_EMPSFORMULA.EST_NODE_ID )
577         AND PGN.NODE_TYPE in ( 'EST' , 'LOC' ) )
578     */
579    -- Added for bug#11736960
580       AND EXISTS (SELECT 'X'
581                   FROM   PER_PEOPLE_EXTRA_INFO PEI
582                   WHERE  PEI.PERSON_ID = PEO.PERSON_ID
583                   AND    PEI.INFORMATION_TYPE = 'US_ETHNIC_ORIGIN'
584                   AND   (PEI.PEI_INFORMATION1 = 'Y'
585                          OR PEI.PEI_INFORMATION2 = 'Y'
586                          OR PEI.PEI_INFORMATION3 = 'Y'
587                          OR PEI.PEI_INFORMATION4 = 'Y'
588                          OR PEI.PEI_INFORMATION5 = 'Y'
589                          OR PEI.PEI_INFORMATION6 = 'Y'
590                          OR PEI.PEI_INFORMATION7 = 'Y'
591                         )
592                  );
593 
594     /*SRW.MESSAGE(99
595                ,'est_node_id         : ' || EST_NODE_ID)*/NULL;
596     /*SRW.MESSAGE(99
597                ,'l_couunt_emps       : ' || L_COUNT_EMPS)*/NULL;
598     IF L_COUNT_EMPS > 99 THEN
599       C_100_EMPS := 'Y';
600     ELSE
601       C_100_EMPS := 'N';
602     END IF;
603     CP_TOT_EMPS := L_COUNT_EMPS;
604     CP_REPORT_YEAR := P_REPORT_YEAR;
605     C_AFFILIATED := AFFILIATED;
606 
607 -- Added for bug#12575094
608   IF C_NO_OF_ESTABLISHMENTS = 1 THEN
609         CP_REPORT_TYPE := 'Single Establishment Employer Report - Type 1';
610   ELSIF C_NO_OF_ESTABLISHMENTS > 1
611     AND HEADQUARTERS = 'Y' THEN
612         CP_REPORT_TYPE := 'Headquarters Report - Type 3';
613   ELSIF CP_TOT_EMPS < 50 THEN
614         CP_REPORT_TYPE := 'Establishment Report - Type 8';
615   ELSIF EST_UNIT IS NULL AND CP_TOT_EMPS >= 50   THEN
616         CP_REPORT_TYPE := 'Establishment Report - Type 9';
617   ELSE
618         CP_REPORT_TYPE := 'Establishment Report - Type 4';
619   END IF;
620 
621 --    IF CP_REPORT_TYPE = 'Headquarters Report - Type 3' OR CP_TOT_EMPS > P_MINIMUM_NO_OF_EMPLOYEES OR CP_REPORT_TYPE = 'Single Establishment Employer Report - Type 1' THEN
622       C_ALL_TOTAL := C_ALL_TOTAL + L_COUNT_EMPS;
623       FND_FILE.PUT_LINE(1
624                        ,CP_REPORT_TYPE);
625       FND_FILE.PUT_LINE(1
626                        ,'Establishment reporting name: ' || EST_REP_NAME);
627       FND_FILE.PUT_LINE(1
628                        ,'Total employees             : ' || L_COUNT_EMPS);
629       FND_FILE.PUT_LINE(1
630                        ,' ');
631 --    END IF;
632     RETURN (L_COUNT_EMPS);
633   END C_TOT_EMPSFORMULA;
634 
635   FUNCTION CF_SET_EST_ACTIVFORMULA(EST_NODE_ID IN NUMBER) RETURN NUMBER IS
636     CURSOR C_EST_ACT IS
637       SELECT
638         NVL(HLEI.LEI_INFORMATION5
639            ,C_DEF_ACTIV_1),
640         NVL(HLEI.LEI_INFORMATION6
641            ,C_DEF_ACTIV_2),
642         NVL(HLEI.LEI_INFORMATION7
643            ,C_DEF_ACTIV_3),
644         NVL(HLEI.LEI_INFORMATION8
645            ,C_DEF_ACTIV_4)
646       FROM
647         HR_LOCATION_EXTRA_INFO HLEI,
648         PER_GEN_HIERARCHY_NODES PGHN
649       WHERE HLEI.INFORMATION_TYPE = 'EEO-1 Specific Information'
650         AND HLEI.LEI_INFORMATION_CATEGORY = 'EEO-1 Specific Information'
651         AND HLEI.LOCATION_ID = PGHN.ENTITY_ID
652         AND PGHN.PARENT_HIERARCHY_NODE_ID = C_PARENT_NODE_ID
653         AND PGHN.HIERARCHY_NODE_ID = EST_NODE_ID
654         AND PGHN.NODE_TYPE = 'EST';
655     L_EST_ACT_1 VARCHAR2(60) := NULL;
656     L_EST_ACT_2 VARCHAR2(60) := NULL;
657     L_EST_ACT_3 VARCHAR2(60) := NULL;
658     L_EST_ACT_4 VARCHAR2(60) := NULL;
659   BEGIN
660     OPEN C_EST_ACT;
661     FETCH C_EST_ACT
662      INTO L_EST_ACT_1,L_EST_ACT_2,L_EST_ACT_3,L_EST_ACT_4;
663     C_EST_ACTIV_1 := UPPER(LTRIM(RTRIM(L_EST_ACT_1)));
664     C_EST_ACTIV_2 := UPPER(LTRIM(RTRIM(L_EST_ACT_2)));
665     C_EST_ACTIV_3 := UPPER(LTRIM(RTRIM(L_EST_ACT_3)));
666     C_EST_ACTIV_4 := UPPER(LTRIM(RTRIM(L_EST_ACT_4)));
667     RETURN NULL;
668   END CF_SET_EST_ACTIVFORMULA;
669 
670   FUNCTION C_TOT_CATFORMULA(C_TOT_HLMALE IN NUMBER
671                            ,C_TOT_HLFEMALE IN NUMBER
672                            ,C_TOT_TMRACESMALE IN NUMBER
673                            ,C_TOT_TMRACESFEMALE IN NUMBER
674                            ,C_TOT_WMALE IN NUMBER
675                            ,C_TOT_BMALE IN NUMBER
676                            ,C_TOT_HMALE IN NUMBER
677                            ,C_TOT_AMALE IN NUMBER
678                            ,C_TOT_IMALE IN NUMBER
679                            ,C_TOT_WFEMALE IN NUMBER
680                            ,C_TOT_BFEMALE IN NUMBER
681                            ,C_TOT_HFEMALE IN NUMBER
682                            ,C_TOT_AFEMALE IN NUMBER
683                            ,C_TOT_IFEMALE IN NUMBER) RETURN NUMBER IS
684     L_TOT_CAT NUMBER(10);
685   BEGIN
686     L_TOT_CAT := C_TOT_HLMALE + C_TOT_HLFEMALE + C_TOT_TMRACESMALE + C_TOT_TMRACESFEMALE + C_TOT_WMALE + C_TOT_BMALE + C_TOT_HMALE + C_TOT_AMALE + C_TOT_IMALE + C_TOT_WFEMALE + C_TOT_BFEMALE + C_TOT_HFEMALE + C_TOT_AFEMALE + C_TOT_IFEMALE;
687     RETURN (L_TOT_CAT);
688   END C_TOT_CATFORMULA;
689 
690   FUNCTION CF_SET_REPFORMULA(HEADQUARTERS IN VARCHAR2
691                             ,EST_UNIT IN VARCHAR2) RETURN NUMBER IS
692   BEGIN
693 
694   -- Added for bug#12575094
695     IF C_NO_OF_ESTABLISHMENTS = 1 THEN
696        CP_REPORT_TYPE := 'Single Establishment Employer Report - Type 1';
697     ELSIF C_NO_OF_ESTABLISHMENTS > 1
698     AND HEADQUARTERS = 'Y' THEN
699         CP_REPORT_TYPE := 'Headquarters Report - Type 3';
700     ELSIF CP_TOT_EMPS < 50 THEN
701           CP_REPORT_TYPE := 'Establishment Report - Type 8';
702     ELSIF EST_UNIT IS NULL AND CP_TOT_EMPS >= 50   THEN
703           CP_REPORT_TYPE := 'Establishment Report - Type 9';
704     ELSE
705           CP_REPORT_TYPE := 'Establishment Report - Type 4';
706     END IF;
707 
708    /* IF C_NO_OF_ESTABLISHMENTS = 1 THEN
709       CP_REPORT_TYPE := 'Single Establishment Employer Report - Type 1';
710     ELSIF C_NO_OF_ESTABLISHMENTS > 1 AND HEADQUARTERS = 'Y' THEN
711       CP_REPORT_TYPE := 'Headquarters Report - Type 3';
712     ELSIF EST_UNIT IS NULL THEN
713       CP_REPORT_TYPE := 'Establishment Report - Type 9';
714     ELSE
715       CP_REPORT_TYPE := 'Establishment Report - Type 4';
716     END IF; */
717 
718     CP_PAYROLL_PERIOD_DATE_START := C_PAYROLL_PERIOD_DATE_START;
719     CP_PAYROLL_PERIOD_DATE_END := C_PAYROLL_PERIOD_DATE_END;
720     RETURN NULL;
721   END CF_SET_REPFORMULA;
722 
723   FUNCTION CF_SET_CURR_HWFORMULA(ESTAB_STATE IN VARCHAR2
724                                 ,CONS_JOB_CATEGORY_CODE IN VARCHAR2
725                                 ,EST_NODE_ID IN NUMBER) RETURN NUMBER IS
726   BEGIN
727     IF ESTAB_STATE = 'HI' THEN
728       SELECT
729         COUNT('person'),
730         COUNT(DECODE(PEO.SEX
731                     ,'M'
732                     ,1
733                     ,NULL)),
734         COUNT(DECODE(PEO.SEX
735                     ,'F'
736                     ,1
737                     ,NULL))
738       INTO CP_HW_CAT,CP_HW_MALE,CP_HW_FEMALE
739       FROM
740         PER_ALL_PEOPLE_F PEO,
741         PER_ALL_ASSIGNMENTS_F ASS,
742       --PER_JOBS_VL JOB - Replaced PER_JOBS_VL with PER_JOBS - bug#11736960
743         PER_JOBS JOB
744       WHERE PEO.PERSON_ID = ASS.PERSON_ID
745      --
746      /* Commented for bug#11736960 starts
747         AND PEO.PER_INFORMATION1 is not NULL
748         Commented for bug#11736960 ends */
749      --
750         AND JOB.JOB_INFORMATION_CATEGORY = 'US'
751         AND P_PAYROLL_PERIOD_DATE_START_T <= NVL(JOB.DATE_TO
752          ,P_PAYROLL_PERIOD_DATE_END_T)
753         AND P_PAYROLL_PERIOD_DATE_END_T >= JOB.DATE_FROM
754         AND JOB.JOB_INFORMATION1 = CONS_JOB_CATEGORY_CODE
755         AND ASS.JOB_ID = JOB.JOB_ID
756         AND ASS.BUSINESS_GROUP_ID = P_BUSINESS_GROUP_ID
757         AND PEO.BUSINESS_GROUP_ID = P_BUSINESS_GROUP_ID
758         AND JOB.BUSINESS_GROUP_ID = P_BUSINESS_GROUP_ID
759         AND PEO.EFFECTIVE_START_DATE = (
760         SELECT
761           MAX(PEO1.EFFECTIVE_START_DATE)
762         FROM
763           PER_ALL_PEOPLE_F PEO1
764         WHERE P_PAYROLL_PERIOD_DATE_START_T <= PEO1.EFFECTIVE_END_DATE
765           AND P_PAYROLL_PERIOD_DATE_END_T >= PEO1.EFFECTIVE_START_DATE
766           AND PEO.PERSON_ID = PEO1.PERSON_ID
767           AND PEO1.CURRENT_EMPLOYEE_FLAG = 'Y' )
768         AND ASS.EFFECTIVE_START_DATE = (
769         SELECT
770           MAX(ASS1.EFFECTIVE_START_DATE)
771         FROM
772           PER_ALL_ASSIGNMENTS_F ASS1,
773           PER_ASSIGNMENT_STATUS_TYPES AST  --Added for bug#12594720
774         WHERE P_PAYROLL_PERIOD_DATE_START_T <= ASS1.EFFECTIVE_END_DATE
775           AND P_PAYROLL_PERIOD_DATE_END_T >= ASS1.EFFECTIVE_START_DATE
776           AND ASS.PERSON_ID = ASS1.PERSON_ID
777           AND ASS1.ASSIGNMENT_TYPE = 'E'
778           AND ASS1.PRIMARY_FLAG = 'Y'
779           AND ASS1.ASSIGNMENT_STATUS_TYPE_ID = AST.ASSIGNMENT_STATUS_TYPE_ID
780           AND AST.PER_SYSTEM_STATUS <> 'TERM_ASSIGN')
781         AND ASS.ASSIGNMENT_TYPE = 'E'
782         AND ASS.PRIMARY_FLAG = 'Y'
783         AND EXISTS (
784                   SELECT
785                     'X'
786                   FROM
787                     HR_ORGANIZATION_INFORMATION HOI1
788                   WHERE TO_CHAR(ASS.ASSIGNMENT_STATUS_TYPE_ID) = HOI1.ORG_INFORMATION1
789                     AND HOI1.ORG_INFORMATION_CONTEXT = 'Reporting Statuses'
790                     AND HOI1.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
791                     )
792         AND EXISTS (
793                   SELECT
794                     'X'
795                   FROM HR_ORGANIZATION_INFORMATION HOI2
796                     where ASS.EMPLOYMENT_CATEGORY = HOI2.ORG_INFORMATION1
797                     AND HOI2.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
798                     AND HOI2.ORG_INFORMATION_CONTEXT = 'Reporting Categories'
799               )
800     /* Replaced this exists clasue with two seperate exists condition inorder to
801        avoid Merge Join Cartesian.
802         AND EXISTS (
803         SELECT
804           'X'
805         FROM
806           HR_ORGANIZATION_INFORMATION HOI1,
807           HR_ORGANIZATION_INFORMATION HOI2
808         WHERE TO_CHAR(ASS.ASSIGNMENT_STATUS_TYPE_ID) = HOI1.ORG_INFORMATION1
809           AND HOI1.ORG_INFORMATION_CONTEXT = 'Reporting Statuses'
810           AND HOI1.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
811           AND ASS.EMPLOYMENT_CATEGORY = HOI2.ORG_INFORMATION1
812           AND HOI2.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
813           AND HOI2.ORG_INFORMATION_CONTEXT = 'Reporting Categories' )
814     */
815     AND EXISTS (
816       SELECT 1
817       FROM
818         PER_GEN_HIERARCHY_NODES PGN
819       WHERE PGN.HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
820         AND ( PGN.HIERARCHY_NODE_ID = EST_NODE_ID
821              OR PGN.PARENT_HIERARCHY_NODE_ID = EST_NODE_ID )
822         AND PGN.NODE_TYPE in ( 'EST' , 'LOC' )
823         AND ASS.LOCATION_ID = PGN.ENTITY_ID
824         )
825     /* Replaced this in clause with the above exists clause.
826         AND ASS.LOCATION_ID in (
827         SELECT
828           DISTINCT
829           PGN.ENTITY_ID
830         FROM
831           PER_GEN_HIERARCHY_NODES PGN
832         WHERE ( PGN.HIERARCHY_NODE_ID = EST_NODE_ID
833         OR PGN.PARENT_HIERARCHY_NODE_ID = EST_NODE_ID )
834           AND PGN.HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
835           AND PGN.NODE_TYPE in ( 'EST' , 'LOC' ) )
836     */
837      -- Added for bug#11736960
838         AND EXISTS (SELECT 'X'
839                     FROM   PER_PEOPLE_EXTRA_INFO PEI
840                     WHERE  PEI.PERSON_ID = PEO.PERSON_ID
841                     AND    PEI.INFORMATION_TYPE = 'US_ETHNIC_ORIGIN'
842                     AND   (PEI.PEI_INFORMATION1 = 'Y'
843                            OR PEI.PEI_INFORMATION2 = 'Y'
844                            OR PEI.PEI_INFORMATION3 = 'Y'
845                            OR PEI.PEI_INFORMATION4 = 'Y'
846                            OR PEI.PEI_INFORMATION5 = 'Y'
847                            OR PEI.PEI_INFORMATION6 = 'Y'
848                            OR PEI.PEI_INFORMATION7 = 'Y'
849                           )
850                    );
851     ELSE
852       NULL;
853     END IF;
854     RETURN (NULL);
855   END CF_SET_CURR_HWFORMULA;
856 
857   FUNCTION CF_SET_AUD_HWFORMULA(ESTAB_STATE IN VARCHAR2
858                                ,EST_NODE_ID IN NUMBER) RETURN NUMBER IS
859     HW_AUD_TOT VARCHAR2(10);
860     HW_AUD_MALE VARCHAR2(10);
861     HW_AUD_FEMALE VARCHAR2(10);
862   BEGIN
863     IF ESTAB_STATE = 'HI' THEN
864       BEGIN
865         SELECT
866           LEI_INFORMATION3 P_TOTAL,
867           TO_NUMBER((LEI_INFORMATION4 + LEI_INFORMATION5 + LEI_INFORMATION6 + LEI_INFORMATION7 + LEI_INFORMATION8 + LEI_INFORMATION14 + LEI_INFORMATION16)) TOTALMALE,
868           TO_NUMBER((LEI_INFORMATION9 + LEI_INFORMATION10 + LEI_INFORMATION11 + LEI_INFORMATION12 + LEI_INFORMATION13 + LEI_INFORMATION15 + LEI_INFORMATION17)) TOTALFEM
869         INTO HW_AUD_TOT,HW_AUD_MALE,HW_AUD_FEMALE
870         FROM
871           HR_LOCATION_EXTRA_INFO LEI
872         WHERE LEI_INFORMATION1 = CP_PREV_YEAR_FILED
873           AND TO_CHAR(LEI.LOCATION_ID) in (
874           SELECT
875             DISTINCT
876             PGN.ENTITY_ID
877           FROM
878             PER_GEN_HIERARCHY_NODES PGN
879           WHERE PGN.HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
880             AND ( PGN.HIERARCHY_NODE_ID = EST_NODE_ID
881           OR PGN.PARENT_HIERARCHY_NODE_ID = EST_NODE_ID )
882             AND PGN.NODE_TYPE in ( 'EST' , 'LOC' ) );
883 
884      -- Added for bug#12575094
885         CP_HW_AUD_TOT := TO_NUMBER(HW_AUD_TOT);
886         CP_HW_AUD_MALE := TO_NUMBER(HW_AUD_MALE);
887         CP_HW_AUD_FEMALE := TO_NUMBER(HW_AUD_FEMALE);
888 
889         --CP_HW_AUD_TOT := NULL;
890         --CP_HW_AUD_MALE := NULL;
891         --CP_HW_AUD_FEMALE := NULL;
892 
893       EXCEPTION
894         WHEN NO_DATA_FOUND THEN
895           FND_MESSAGE.SET_NAME('PER'
896                               ,'PER_75230_EST_CLASS_MISSING');
897           /*SRW.MESSAGE('10'
898                      ,FND_MESSAGE.GET)*/NULL;
899           /*SRW.MESSAGE('20'
900                      ,'message will talk about how there needs to be eit set up and assigned to resp')*/NULL;
901           /*SRW.MESSAGE('30'
902                      ,'also will suggest running report for previous year to fill in the figures.')*/NULL;
903         WHEN OTHERS THEN
904           NULL;
905       END;
906     END IF;
907     RETURN NULL;
908   END CF_SET_AUD_HWFORMULA;
909 
910   FUNCTION CF_100_EMPSFORMULA RETURN CHAR IS
911     L_COUNT_EMPS NUMBER := 0;
912   BEGIN
913     SELECT
914       COUNT('X')
915     INTO L_COUNT_EMPS
916     FROM
917       PER_ALL_ASSIGNMENTS_F ASS,
918       PER_ALL_PEOPLE_F PEO,
919     --PER_JOBS_VL JOB - Replaced PER_JOBS_VL wth PER_JOBS - bug#11736960
920       PER_JOBS JOB
921     WHERE PEO.PERSON_ID = ASS.PERSON_ID
922  --
923    /* Commented for bug#11736960 starts
924       AND PEO.PER_INFORMATION1 is not NULL
925       Commented for bug#11736960 ends */
926  --
927       AND JOB.JOB_INFORMATION_CATEGORY = 'US'
928       AND P_PAYROLL_PERIOD_DATE_START_T <= NVL(JOB.DATE_TO
929        ,P_PAYROLL_PERIOD_DATE_END_T)
930       AND P_PAYROLL_PERIOD_DATE_END_T >= JOB.DATE_FROM
931       AND JOB.JOB_INFORMATION1 is not null
932       AND ASS.JOB_ID = JOB.JOB_ID
933       AND ASS.BUSINESS_GROUP_ID = P_BUSINESS_GROUP_ID
934 --
935 -- Added the check for businees_group_id and person effective start date
936 -- to eliminate count of duplicate record - bug#11736960
937 AND    PEO.BUSINESS_GROUP_ID =  P_BUSINESS_GROUP_ID
938 AND    JOB.BUSINESS_GROUP_ID =  P_BUSINESS_GROUP_ID
939 AND    PEO.EFFECTIVE_START_DATE =
940       (SELECT MAX(PEO1.EFFECTIVE_START_DATE)
941        FROM   PER_ALL_PEOPLE_F PEO1
942        WHERE  P_PAYROLL_PERIOD_DATE_START_T
943                 <= PEO1.EFFECTIVE_END_DATE
944        AND    P_PAYROLL_PERIOD_DATE_END_T
945                 >= PEO1.EFFECTIVE_START_DATE
946        AND    PEO.PERSON_ID = PEO1.PERSON_ID
947        AND    PEO1.CURRENT_EMPLOYEE_FLAG = 'Y'
948        )
949 --
950       AND ASS.ASSIGNMENT_TYPE = 'E'
951       AND ASS.PRIMARY_FLAG = 'Y'
952       AND ASS.EFFECTIVE_START_DATE = (
953       SELECT
954         MAX(ASS1.EFFECTIVE_START_DATE)
955       FROM
956         PER_ALL_ASSIGNMENTS_F ASS1,
957         PER_ASSIGNMENT_STATUS_TYPES AST  --Added for bug#12594720
958       WHERE P_PAYROLL_PERIOD_DATE_START_T <= ASS1.EFFECTIVE_END_DATE
959         AND P_PAYROLL_PERIOD_DATE_END_T >= ASS1.EFFECTIVE_START_DATE
960         AND ASS.PERSON_ID = ASS1.PERSON_ID
961         AND ASS1.ASSIGNMENT_TYPE = 'E'
962         AND ASS1.PRIMARY_FLAG = 'Y'
963         AND ASS1.ASSIGNMENT_STATUS_TYPE_ID = AST.ASSIGNMENT_STATUS_TYPE_ID
964         AND AST.PER_SYSTEM_STATUS <> 'TERM_ASSIGN')
965         AND EXISTS (
966                   SELECT
967                     'X'
968                   FROM
969                     HR_ORGANIZATION_INFORMATION HOI1
970                   WHERE TO_CHAR(ASS.ASSIGNMENT_STATUS_TYPE_ID) = HOI1.ORG_INFORMATION1
971                     AND HOI1.ORG_INFORMATION_CONTEXT = 'Reporting Statuses'
972                     AND HOI1.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
973                     )
974         AND EXISTS (
975                   SELECT
976                     'X'
977                   FROM HR_ORGANIZATION_INFORMATION HOI2
978                     where ASS.EMPLOYMENT_CATEGORY = HOI2.ORG_INFORMATION1
979                     AND HOI2.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
980                     AND HOI2.ORG_INFORMATION_CONTEXT = 'Reporting Categories'
981               )
982     /* Replaced this exists clasue with two seperate exists condition inorder to
983        avoid Merge Join Cartesian.
984       AND EXISTS (
985       SELECT
986         'X'
987       FROM
988         HR_ORGANIZATION_INFORMATION HOI1,
989         HR_ORGANIZATION_INFORMATION HOI2
990       WHERE TO_CHAR(ASS.ASSIGNMENT_STATUS_TYPE_ID) = HOI1.ORG_INFORMATION1
991         AND HOI1.ORG_INFORMATION_CONTEXT = 'Reporting Statuses'
992         AND HOI1.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
993         AND ASS.EMPLOYMENT_CATEGORY = HOI2.ORG_INFORMATION1
994         AND HOI2.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
995         AND HOI2.ORG_INFORMATION_CONTEXT = 'Reporting Categories' )
996     */
997     /* Commented as not requires - bug#11736960
998       AND P_PAYROLL_PERIOD_DATE_START_T <= ASS.EFFECTIVE_END_DATE
999       AND P_PAYROLL_PERIOD_DATE_END_T >= ASS.EFFECTIVE_START_DATE
1000     */
1001       AND EXISTS (
1002       SELECT 1
1003       FROM
1004         PER_GEN_HIERARCHY_NODES
1005       WHERE HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
1006       AND   ASS.LOCATION_ID = ENTITY_ID)
1007     /* Replaced in clause with exists clause - bug#11736960
1008       AND ASS.LOCATION_ID in (
1009       SELECT
1010         DISTINCT
1011         ENTITY_ID
1012       FROM
1013         PER_GEN_HIERARCHY_NODES
1014       WHERE HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID )
1015     */
1016    -- Added for bug#11736960
1017       AND EXISTS (SELECT 'X'
1018                   FROM   PER_PEOPLE_EXTRA_INFO PEI
1019                   WHERE  PEI.PERSON_ID = PEO.PERSON_ID
1020                   AND    PEI.INFORMATION_TYPE = 'US_ETHNIC_ORIGIN'
1021                   AND   (PEI.PEI_INFORMATION1 = 'Y'
1022                          OR PEI.PEI_INFORMATION2 = 'Y'
1023                          OR PEI.PEI_INFORMATION3 = 'Y'
1024                          OR PEI.PEI_INFORMATION4 = 'Y'
1025                          OR PEI.PEI_INFORMATION5 = 'Y'
1026                          OR PEI.PEI_INFORMATION6 = 'Y'
1027                          OR PEI.PEI_INFORMATION7 = 'Y'
1028                         )
1029                  );
1030     IF L_COUNT_EMPS >= 100 THEN
1031       RETURN ('Y');
1032     ELSE
1033       RETURN ('N');
1034     END IF;
1035   END CF_100_EMPSFORMULA;
1036 
1037   FUNCTION CF_CREATEUPD_ARCHEITFORMULA(EST_NODE_ID IN NUMBER
1038                                       ,C_TOT_CAT IN NUMBER
1039                                       ,C_TOT_WMALE IN NUMBER
1040                                       ,C_TOT_BMALE IN NUMBER
1041                                       ,C_TOT_HMALE IN NUMBER
1042                                       ,C_TOT_AMALE IN NUMBER
1043                                       ,C_TOT_IMALE IN NUMBER
1044                                       ,C_TOT_WFEMALE IN NUMBER
1045                                       ,C_TOT_BFEMALE IN NUMBER
1046                                       ,C_TOT_HFEMALE IN NUMBER
1047                                       ,C_TOT_AFEMALE IN NUMBER
1048                                       ,C_TOT_IFEMALE IN NUMBER
1049                                       ,C_TOT_HLMALE IN NUMBER
1050                                       ,C_TOT_HLFEMALE IN NUMBER
1051                                       ,C_TOT_TMRACESMALE IN NUMBER
1052                                       ,C_TOT_TMRACESFEMALE IN NUMBER) RETURN NUMBER IS
1053     PRAGMA AUTONOMOUS_TRANSACTION; /*Added for Bug#12599302 */
1054     P_UPDATE VARCHAR2(1) := 'C';
1055     L_LOCATION_ID VARCHAR2(60);
1056 --    L_LOCATION_CODE VARCHAR2(50); Commented for fix of #13785825
1057     L_LOCATION_CODE HR_LOCATIONS_ALL.LOCATION_CODE%TYPE; -- changed declaration for #13785825
1058     L_LOCATION_EXTRA_INFO_ID NUMBER := NULL;
1059     L_OBJECT_VERSION_NUMBER NUMBER := NULL;
1060     L_EIT_COUNT NUMBER := 0;
1061     L_MIN_YEAR VARCHAR2(4) := NULL;
1062   BEGIN
1063     -- Commented IF cluase for bug#12575094
1064     --IF CP_REPORT_TYPE = 'Establishment Report - Type 4' AND CP_TOT_EMPS <= P_MINIMUM_NO_OF_EMPLOYEES THEN
1065     --  NULL;
1066     --ELSE
1067       IF P_REPORT_MODE = 'F' THEN
1068         BEGIN
1069           SELECT
1070             ELOC.LOCATION_ID,
1071             ELOC.LOCATION_CODE
1072           INTO L_LOCATION_ID,L_LOCATION_CODE
1073           FROM
1074             PER_GEN_HIERARCHY_NODES PGN,
1075             HR_LOCATIONS_ALL ELOC
1076           WHERE ( HIERARCHY_NODE_ID = EST_NODE_ID
1077           OR PARENT_HIERARCHY_NODE_ID = EST_NODE_ID )
1078             AND HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
1079             AND PGN.NODE_TYPE = 'EST'
1080             AND ELOC.LOCATION_ID = PGN.ENTITY_ID;
1081         END;
1082         BEGIN
1083           SELECT
1084             'U',
1085             LOCATION_EXTRA_INFO_ID
1086           INTO P_UPDATE,L_LOCATION_EXTRA_INFO_ID
1087           FROM
1088             HR_LOCATION_EXTRA_INFO
1089           WHERE LEI_INFORMATION1 = P_REPORT_YEAR
1090             AND LEI_INFORMATION_CATEGORY = 'EEO-1 Archive Information'
1091             AND LOCATION_ID = L_LOCATION_ID;
1092         EXCEPTION
1093           WHEN NO_DATA_FOUND THEN
1094             P_UPDATE := 'C';
1095             /*SRW.MESSAGE('20'
1096                        ,'                      ')*/NULL;
1097             /*SRW.MESSAGE('20'
1098                        ,'need to create new eit for location ' || L_LOCATION_ID || ' ' || L_LOCATION_CODE)*/NULL;
1099           WHEN OTHERS THEN
1100             NULL;
1101         END;
1102         IF P_UPDATE = 'U' THEN
1103           /*SRW.MESSAGE('10'
1104                      ,'p_update ' || P_UPDATE || ' location_id to update is ' || L_LOCATION_ID || ' ' || L_LOCATION_CODE)*/NULL;
1105           /*SRW.MESSAGE('20'
1106                      ,' p_location_extra_info_id to delete for update is ' || L_LOCATION_EXTRA_INFO_ID)*/NULL;
1107           BEGIN
1108             SELECT
1109               OBJECT_VERSION_NUMBER
1110             INTO L_OBJECT_VERSION_NUMBER
1111             FROM
1112               HR_LOCATION_EXTRA_INFO
1113             WHERE LOCATION_EXTRA_INFO_ID = L_LOCATION_EXTRA_INFO_ID;
1114           END;
1115           /*SRW.MESSAGE('25'
1116                      ,'object version number to delete for update is ' || L_OBJECT_VERSION_NUMBER)*/NULL;
1117           BEGIN
1118             HR_LOCATION_EXTRA_INFO_API.DELETE_LOCATION_EXTRA_INFO(P_VALIDATE => FALSE
1119                                                                  ,P_LOCATION_EXTRA_INFO_ID => L_LOCATION_EXTRA_INFO_ID
1120                                                                  ,P_OBJECT_VERSION_NUMBER => L_OBJECT_VERSION_NUMBER);
1121           END;
1122           COMMIT;
1123           P_UPDATE := 'C';
1124         END IF;
1125         IF P_UPDATE = 'C' THEN
1126           /*SRW.MESSAGE('21'
1127                      ,'p_update ' || P_UPDATE || ' location_id ' || L_LOCATION_ID)*/NULL;
1128           /*SRW.MESSAGE('22'
1129                      ,'need to create new eit')*/NULL;
1130           BEGIN
1131             HR_LOCATION_EXTRA_INFO_API.CREATE_LOCATION_EXTRA_INFO(P_VALIDATE => FALSE
1132                                                                  ,P_LOCATION_ID => L_LOCATION_ID
1133                                                                  ,P_INFORMATION_TYPE => 'EEO-1 Archive Information'
1134                                                                  ,P_LEI_INFORMATION_CATEGORY => 'EEO-1 Archive Information'
1135                                                                  ,P_LEI_INFORMATION1 => P_REPORT_YEAR
1136                                                                  ,P_LEI_INFORMATION2 => P_CONC_REQUEST_ID
1137                                                                  ,P_LEI_INFORMATION3 => C_TOT_CAT
1138                                                                  ,P_LEI_INFORMATION4 => C_TOT_WMALE
1139                                                                  ,P_LEI_INFORMATION5 => C_TOT_BMALE
1140                                                                  ,P_LEI_INFORMATION6 => C_TOT_HMALE
1141                                                                  ,P_LEI_INFORMATION7 => C_TOT_AMALE
1142                                                                  ,P_LEI_INFORMATION8 => C_TOT_IMALE
1143                                                                  ,P_LEI_INFORMATION9 => C_TOT_WFEMALE
1144                                                                  ,P_LEI_INFORMATION10 => C_TOT_BFEMALE
1145                                                                  ,P_LEI_INFORMATION11 => C_TOT_HFEMALE
1146                                                                  ,P_LEI_INFORMATION12 => C_TOT_AFEMALE
1147                                                                  ,P_LEI_INFORMATION13 => C_TOT_IFEMALE
1148                                                                  ,P_LEI_INFORMATION14 => C_TOT_HLMALE
1149                                                                  ,P_LEI_INFORMATION15 => C_TOT_HLFEMALE
1150                                                                  ,P_LEI_INFORMATION16 => C_TOT_TMRACESMALE
1151                                                                  ,P_LEI_INFORMATION17 => C_TOT_TMRACESFEMALE
1152                                                                  ,P_LOCATION_EXTRA_INFO_ID => L_LOCATION_EXTRA_INFO_ID
1153                                                                  ,P_OBJECT_VERSION_NUMBER => L_OBJECT_VERSION_NUMBER);
1154           END;
1155           COMMIT;
1156           /*SRW.MESSAGE('23'
1157                      ,'                                                                          ')*/NULL;
1158           /*SRW.MESSAGE('23'
1159                      ,'eit created for location_id ' || L_LOCATION_ID || ' year ' || P_REPORT_YEAR)*/NULL;
1160           /*SRW.MESSAGE('24'
1161                      ,'out params: location_extra_info_id  is ' || L_LOCATION_EXTRA_INFO_ID)*/NULL;
1162           /*SRW.MESSAGE('25'
1163                      ,'object version number is ' || L_OBJECT_VERSION_NUMBER)*/NULL;
1164           /*SRW.MESSAGE('25'
1165                      ,'grand total is ' || C_TOT_CAT)*/NULL;
1166           /*SRW.MESSAGE('23'
1167                      ,'                                                                          ')*/NULL;
1168         END IF;
1169         BEGIN
1170           BEGIN
1171             SELECT
1172               count(*)
1173             INTO L_EIT_COUNT
1174             FROM
1175               HR_LOCATION_EXTRA_INFO LEI
1176             WHERE LOCATION_ID = L_LOCATION_ID
1177               AND INFORMATION_TYPE = 'EEO-1 Archive Information';
1178           EXCEPTION
1179             WHEN NO_DATA_FOUND THEN
1180               NULL;
1181             WHEN OTHERS THEN
1182               NULL;
1183           END;
1184           IF L_EIT_COUNT > 4 THEN
1185             BEGIN
1186               SELECT
1187                 MIN(LEI_INFORMATION1)
1188               INTO L_MIN_YEAR
1189               FROM
1190                 HR_LOCATION_EXTRA_INFO LEI
1191               WHERE LOCATION_ID = L_LOCATION_ID
1192                 AND INFORMATION_TYPE = 'EEO-1 Archive Information';
1193             END;
1194             BEGIN
1195               SELECT
1196                 LOCATION_EXTRA_INFO_ID,
1197                 OBJECT_VERSION_NUMBER
1198               INTO L_LOCATION_EXTRA_INFO_ID,L_OBJECT_VERSION_NUMBER
1199               FROM
1200                 HR_LOCATION_EXTRA_INFO LEI
1201               WHERE LEI_INFORMATION1 = L_MIN_YEAR
1202                 AND INFORMATION_TYPE = 'EEO-1 Archive Information'
1203                 AND LOCATION_ID = L_LOCATION_ID;
1204             END;
1205             BEGIN
1206               HR_LOCATION_EXTRA_INFO_API.DELETE_LOCATION_EXTRA_INFO(P_VALIDATE => FALSE
1207                                                                    ,P_LOCATION_EXTRA_INFO_ID => L_LOCATION_EXTRA_INFO_ID
1208                                                                    ,P_OBJECT_VERSION_NUMBER => L_OBJECT_VERSION_NUMBER);
1209             END;
1210             /*SRW.MESSAGE('999999'
1211                        ,' there are over 4 Archive EITs for location id ' || L_LOCATION_ID || ' so deleting for year ' || L_MIN_YEAR)*/NULL;
1212           END IF;
1213         END;
1214       END IF;
1215     --END IF; --CP_REPORT_TYPE
1216     RETURN (NULL);
1217   --#13785825 Added the exception block so that proper error message is raised
1218   EXCEPTION
1219     WHEN OTHERS THEN
1220       ROLLBACK;
1221       RAISE;
1222   END CF_CREATEUPD_ARCHEITFORMULA;
1223 
1224   FUNCTION CF_AUDIT_REPORT(CONS_JOB_CATEGORY_CODE IN VARCHAR2
1225                           ,EST_NODE_ID IN NUMBER) RETURN NUMBER IS
1226     CURSOR C_PERSONS IS
1227       SELECT
1228         PEO.PERSON_ID,
1229         PEO.FIRST_NAME,
1230         PEO.LAST_NAME,
1231         PEO.SEX,
1232      -- PEO.PER_INFORMATION1 ETHNIC, /* Commented for bug#11736960 */
1233         PEO.EMPLOYEE_NUMBER,
1234         ASS.ASSIGNMENT_ID,
1235         ASS.LOCATION_ID,
1236         HL.LOCATION_CODE,
1237         JOB.NAME JOB_NAME,
1238         ASS.JOB_ID
1239       FROM
1240         PER_ALL_PEOPLE_F PEO,
1241         PER_ALL_ASSIGNMENTS_F ASS,
1242       --PER_JOBS_VL JOB, - Replaced PER_JOBS_VL with PER_JOBS -bug#11736960
1243         PER_JOBS JOB,
1244         HR_LOCATIONS_ALL HL
1245       WHERE PEO.PERSON_ID = ASS.PERSON_ID
1246    --
1247      /* Commented for bug#11736960 starts
1248         AND PEO.PER_INFORMATION1 is not null
1249         Commented for bug#11736960 ends */
1250    --
1251         AND PEO.PER_INFORMATION_CATEGORY = 'US'
1252         AND JOB.JOB_INFORMATION_CATEGORY = 'US'
1253         AND P_PAYROLL_PERIOD_DATE_START_T <= NVL(JOB.DATE_TO
1254          ,P_PAYROLL_PERIOD_DATE_END_T)
1255         AND P_PAYROLL_PERIOD_DATE_END_T >= JOB.DATE_FROM
1256         AND JOB.JOB_INFORMATION1 = CONS_JOB_CATEGORY_CODE
1257         AND ASS.JOB_ID = JOB.JOB_ID
1258         AND PEO.EFFECTIVE_START_DATE = (
1259         SELECT
1260           MAX(PEO1.EFFECTIVE_START_DATE)
1261         FROM
1262         --PER_PEOPLE_F PEO1 - Replaced PER_PEOPLE_F with PER_ALL_PEOPLE_F
1263           PER_ALL_PEOPLE_F PEO1
1264         WHERE P_PAYROLL_PERIOD_DATE_START_T <= PEO1.EFFECTIVE_END_DATE
1265           AND P_PAYROLL_PERIOD_DATE_END_T >= PEO1.EFFECTIVE_START_DATE
1266           AND PEO.PERSON_ID = PEO1.PERSON_ID
1267           AND PEO1.CURRENT_EMPLOYEE_FLAG = 'Y' )
1268         AND ASS.EFFECTIVE_START_DATE = (
1269         SELECT
1270           MAX(ASS1.EFFECTIVE_START_DATE)
1271         FROM
1272         --PER_ASSIGNMENTS_F ASS1 - Replaced PER_ASSIGNMENTS_F with PER_ALL_ASSIGNMENTS_F
1273           PER_ALL_ASSIGNMENTS_F ASS1,
1274           PER_ASSIGNMENT_STATUS_TYPES AST  --Added for bug#12594720
1275         WHERE P_PAYROLL_PERIOD_DATE_START_T <= ASS1.EFFECTIVE_END_DATE
1276           AND P_PAYROLL_PERIOD_DATE_END_T >= ASS1.EFFECTIVE_START_DATE
1277           AND ASS.PERSON_ID = ASS1.PERSON_ID
1278           AND ASS1.ASSIGNMENT_TYPE = 'E'
1279           AND ASS1.PRIMARY_FLAG = 'Y'
1280           AND ASS1.ASSIGNMENT_STATUS_TYPE_ID = AST.ASSIGNMENT_STATUS_TYPE_ID
1281           AND AST.PER_SYSTEM_STATUS <> 'TERM_ASSIGN')
1282         AND ASS.ASSIGNMENT_TYPE = 'E'
1283         AND ASS.PRIMARY_FLAG = 'Y'
1284         AND ASS.BUSINESS_GROUP_ID = P_BUSINESS_GROUP_ID
1285         AND PEO.BUSINESS_GROUP_ID = P_BUSINESS_GROUP_ID
1286         AND JOB.BUSINESS_GROUP_ID = P_BUSINESS_GROUP_ID
1287         AND EXISTS (
1288                   SELECT
1289                     'X'
1290                   FROM
1291                     HR_ORGANIZATION_INFORMATION HOI1
1292                   WHERE TO_CHAR(ASS.ASSIGNMENT_STATUS_TYPE_ID) = HOI1.ORG_INFORMATION1
1293                     AND HOI1.ORG_INFORMATION_CONTEXT = 'Reporting Statuses'
1294                     AND HOI1.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
1295                     )
1296         AND EXISTS (
1297                   SELECT
1298                     'X'
1299                   FROM HR_ORGANIZATION_INFORMATION HOI2
1300                     where ASS.EMPLOYMENT_CATEGORY = HOI2.ORG_INFORMATION1
1301                     AND HOI2.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
1302                     AND HOI2.ORG_INFORMATION_CONTEXT = 'Reporting Categories'
1303               )
1304     /* Replaced this exists clasue with two seperate exists condition inorder to
1305        avoid Merge Join Cartesian.
1306         AND EXISTS (
1307         SELECT
1308           'X'
1309         FROM
1310           HR_ORGANIZATION_INFORMATION HOI1,
1311           HR_ORGANIZATION_INFORMATION HOI2
1312         WHERE TO_CHAR(ASS.ASSIGNMENT_STATUS_TYPE_ID) = HOI1.ORG_INFORMATION1
1313           AND HOI1.ORG_INFORMATION_CONTEXT = 'Reporting Statuses'
1314           AND HOI1.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
1315           AND ASS.EMPLOYMENT_CATEGORY = HOI2.ORG_INFORMATION1
1316           AND HOI2.ORGANIZATION_ID = P_BUSINESS_GROUP_ID
1317           AND HOI2.ORG_INFORMATION_CONTEXT = 'Reporting Categories' )
1318     */
1319         AND HL.LOCATION_ID = ASS.LOCATION_ID
1320     AND EXISTS (
1321       SELECT 1
1322       FROM
1323         PER_GEN_HIERARCHY_NODES PGN
1324       WHERE PGN.HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
1325         AND ( PGN.HIERARCHY_NODE_ID = EST_NODE_ID
1326              OR PGN.PARENT_HIERARCHY_NODE_ID = EST_NODE_ID )
1327         AND PGN.NODE_TYPE in ( 'EST' , 'LOC' )
1328         AND ASS.LOCATION_ID = PGN.ENTITY_ID
1329         )
1330     /* Replaced this in clause with the above exists clause.
1331         AND ASS.LOCATION_ID in (
1332         SELECT
1333           DISTINCT
1334           PGN.ENTITY_ID
1335         FROM
1336           PER_GEN_HIERARCHY_NODES PGN
1337         WHERE PGN.HIERARCHY_VERSION_ID = P_HIERARCHY_VERSION_ID
1338           AND ( PGN.HIERARCHY_NODE_ID = EST_NODE_ID
1339         OR PGN.PARENT_HIERARCHY_NODE_ID = EST_NODE_ID )
1340           AND PGN.NODE_TYPE in ( 'EST' , 'LOC' ) )
1341     */
1342      -- Added for bug#11736960
1343         AND EXISTS (SELECT 'X'
1344                     FROM   PER_PEOPLE_EXTRA_INFO PEI
1345                     WHERE  PEI.PERSON_ID = PEO.PERSON_ID
1346                     AND    PEI.INFORMATION_TYPE = 'US_ETHNIC_ORIGIN'
1347                     AND   (PEI.PEI_INFORMATION1 = 'Y'
1348                            OR PEI.PEI_INFORMATION2 = 'Y'
1349                            OR PEI.PEI_INFORMATION3 = 'Y'
1350                            OR PEI.PEI_INFORMATION4 = 'Y'
1351                            OR PEI.PEI_INFORMATION5 = 'Y'
1352                            OR PEI.PEI_INFORMATION6 = 'Y'
1353                            OR PEI.PEI_INFORMATION7 = 'Y'
1354                           )
1355                    )
1356       ORDER BY
1357         LAST_NAME;
1358     L_BUFFER VARCHAR2(2000);
1359     G_DELIMITER VARCHAR2(1) := ',';
1360     G_EOL VARCHAR2(1) := FND_GLOBAL.LOCAL_CHR(10);
1361   BEGIN
1362     IF P_AUDIT_REPORT = 'Y' THEN
1363       -- Commented IF clause for bug#12575094
1364       --IF (CP_REPORT_TYPE = 'Establishment Report - Type 4' OR CP_REPORT_TYPE = 'Establishment Report - Type 9') AND CP_TOT_EMPS <= P_MINIMUM_NO_OF_EMPLOYEES THEN
1365       --  RETURN NULL;
1366       --ELSE
1367         FOR per IN C_PERSONS LOOP
1368         /* Replaced NVL(PER.ETHNIC, ' ') with a function call to PER_US_HR_UTILITY_PKG for bug#11736960 */
1369           L_BUFFER := PER.PERSON_ID || G_DELIMITER || PER.LAST_NAME || G_DELIMITER || NVL(PER.FIRST_NAME
1370                          ,' ') || G_DELIMITER || NVL(PER.EMPLOYEE_NUMBER
1371                          ,' ') || G_DELIMITER || NVL(PER.SEX
1372                          ,' ') || G_DELIMITER || PER_US_HR_UTILITY_PKG.DERIVE_ALIEN_ETHNIC_ORIGIN(PER.PERSON_ID)
1373                                || G_DELIMITER || PER.ASSIGNMENT_ID || G_DELIMITER || NVL(TO_CHAR(PER.JOB_ID)
1374                          ,' ') || G_DELIMITER || NVL(PER.JOB_NAME
1375                          ,' ') || G_DELIMITER || NVL(TO_CHAR(PER.LOCATION_ID)
1376                          ,' ') || G_DELIMITER || NVL(PER.LOCATION_CODE
1377                          ,' ') || G_DELIMITER || G_EOL;
1378           --PUT(L_BUFFER);
1379           FND_FILE.PUT_LINE(FND_FILE.LOG,L_BUFFER);
1380         END LOOP;
1381     --  END IF; --CP_REPORT_TYPE
1382     END IF;
1383     RETURN NULL;
1384   END CF_AUDIT_REPORT;
1385 
1386   FUNCTION C_DEF_SIC_P RETURN VARCHAR2 IS
1387   BEGIN
1388     RETURN C_DEF_SIC;
1389   END C_DEF_SIC_P;
1390 
1391   FUNCTION C_DEF_NAICS_P RETURN VARCHAR2 IS
1392   BEGIN
1393     RETURN C_DEF_NAICS;
1394   END C_DEF_NAICS_P;
1395 
1396   FUNCTION C_DEF_GRE_P RETURN VARCHAR2 IS
1397   BEGIN
1398     RETURN C_DEF_GRE;
1399   END C_DEF_GRE_P;
1400 
1401   FUNCTION C_DEF_DUNS_P RETURN VARCHAR2 IS
1402   BEGIN
1403     RETURN C_DEF_DUNS;
1404   END C_DEF_DUNS_P;
1405 
1406   FUNCTION C_DEF_GOV_CON_P RETURN VARCHAR2 IS
1407   BEGIN
1408     RETURN C_DEF_GOV_CON;
1409   END C_DEF_GOV_CON_P;
1410 
1411   FUNCTION C_DEF_APPRENT_P RETURN VARCHAR2 IS
1412   BEGIN
1413     RETURN C_DEF_APPRENT;
1414   END C_DEF_APPRENT_P;
1415 
1416   FUNCTION C_DEF_ACTIV_1_P RETURN VARCHAR2 IS
1417   BEGIN
1418     RETURN C_DEF_ACTIV_1;
1419   END C_DEF_ACTIV_1_P;
1420 
1421   FUNCTION C_DEF_ACTIV_2_P RETURN VARCHAR2 IS
1422   BEGIN
1423     RETURN C_DEF_ACTIV_2;
1424   END C_DEF_ACTIV_2_P;
1425 
1426   FUNCTION C_DEF_ACTIV_3_P RETURN VARCHAR2 IS
1427   BEGIN
1428     RETURN C_DEF_ACTIV_3;
1429   END C_DEF_ACTIV_3_P;
1430 
1431   FUNCTION C_DEF_ACTIV_4_P RETURN VARCHAR2 IS
1432   BEGIN
1433     RETURN C_DEF_ACTIV_4;
1434   END C_DEF_ACTIV_4_P;
1435 
1436   FUNCTION CP_REPORT_YEAR_P RETURN VARCHAR2 IS
1437   BEGIN
1438     RETURN CP_REPORT_YEAR;
1439   END CP_REPORT_YEAR_P;
1440 
1441   FUNCTION CP_TOT_EMPS_P RETURN NUMBER IS
1442   BEGIN
1443     RETURN CP_TOT_EMPS;
1444   END CP_TOT_EMPS_P;
1445 
1446   FUNCTION C_100_EMPS_P RETURN VARCHAR2 IS
1447   BEGIN
1448     RETURN C_100_EMPS;
1449   END C_100_EMPS_P;
1450 
1451   FUNCTION C_EST_ACTIV_1_P RETURN VARCHAR2 IS
1452   BEGIN
1453     RETURN C_EST_ACTIV_1;
1454   END C_EST_ACTIV_1_P;
1455 
1456   FUNCTION C_EST_ACTIV_2_P RETURN VARCHAR2 IS
1457   BEGIN
1458     RETURN C_EST_ACTIV_2;
1459   END C_EST_ACTIV_2_P;
1460 
1461   FUNCTION C_EST_ACTIV_3_P RETURN VARCHAR2 IS
1462   BEGIN
1463     RETURN C_EST_ACTIV_3;
1464   END C_EST_ACTIV_3_P;
1465 
1466   FUNCTION C_EST_ACTIV_4_P RETURN VARCHAR2 IS
1467   BEGIN
1468     RETURN C_EST_ACTIV_4;
1469   END C_EST_ACTIV_4_P;
1470 
1471   FUNCTION C_AFFILIATED_P RETURN VARCHAR2 IS
1472   BEGIN
1473     RETURN C_AFFILIATED;
1474   END C_AFFILIATED_P;
1475 
1476   FUNCTION CP_PAYROLL_PERIOD_DATE_START_P RETURN DATE IS
1477   BEGIN
1478     RETURN CP_PAYROLL_PERIOD_DATE_START;
1479   END CP_PAYROLL_PERIOD_DATE_START_P;
1480 
1481   FUNCTION CP_PAYROLL_PERIOD_DATE_END_P RETURN DATE IS
1482   BEGIN
1483     RETURN CP_PAYROLL_PERIOD_DATE_END;
1484   END CP_PAYROLL_PERIOD_DATE_END_P;
1485 
1486   FUNCTION CP_REPORT_TYPE_P RETURN VARCHAR2 IS
1487   BEGIN
1488     RETURN CP_REPORT_TYPE;
1489   END CP_REPORT_TYPE_P;
1490 
1491   FUNCTION CP_HW_AUD_MALE_P RETURN NUMBER IS
1492   BEGIN
1493     RETURN CP_HW_AUD_MALE;
1494   END CP_HW_AUD_MALE_P;
1495 
1496   FUNCTION CP_HW_AUD_FEMALE_P RETURN NUMBER IS
1497   BEGIN
1498     RETURN CP_HW_AUD_FEMALE;
1499   END CP_HW_AUD_FEMALE_P;
1500 
1501   FUNCTION CP_HW_AUD_TOT_P RETURN NUMBER IS
1502   BEGIN
1503     RETURN CP_HW_AUD_TOT;
1504   END CP_HW_AUD_TOT_P;
1505 
1506   FUNCTION CP_HW_CAT_P RETURN NUMBER IS
1507   BEGIN
1508     RETURN CP_HW_CAT;
1509   END CP_HW_CAT_P;
1510 
1511   FUNCTION CP_HW_FEMALE_P RETURN NUMBER IS
1512   BEGIN
1513     RETURN CP_HW_FEMALE;
1514   END CP_HW_FEMALE_P;
1515 
1516   FUNCTION CP_HW_MALE_P RETURN NUMBER IS
1517   BEGIN
1518     RETURN CP_HW_MALE;
1519   END CP_HW_MALE_P;
1520 
1521   FUNCTION C_BUSINESS_GROUP_NAME_P RETURN VARCHAR2 IS
1522   BEGIN
1523     RETURN C_BUSINESS_GROUP_NAME;
1524   END C_BUSINESS_GROUP_NAME_P;
1525 
1526   FUNCTION C_HIERARCHY_NAME_P RETURN VARCHAR2 IS
1527   BEGIN
1528     RETURN C_HIERARCHY_NAME;
1529   END C_HIERARCHY_NAME_P;
1530 
1531   FUNCTION C_HIERARCHY_VERSION_NUM_P RETURN NUMBER IS
1532   BEGIN
1533     RETURN C_HIERARCHY_VERSION_NUM;
1534   END C_HIERARCHY_VERSION_NUM_P;
1535 
1536   FUNCTION C_PARENT_ORG_ID_P RETURN NUMBER IS
1537   BEGIN
1538     RETURN C_PARENT_ORG_ID;
1539   END C_PARENT_ORG_ID_P;
1540 
1541   FUNCTION C_PARENT_NODE_ID_P RETURN NUMBER IS
1542   BEGIN
1543     RETURN C_PARENT_NODE_ID;
1544   END C_PARENT_NODE_ID_P;
1545 
1546   FUNCTION CP_PREV_YEAR_FILED_P RETURN VARCHAR2 IS
1547   BEGIN
1548     RETURN CP_PREV_YEAR_FILED;
1549   END CP_PREV_YEAR_FILED_P;
1550 
1551   FUNCTION C_PRIOD_END_DATE_P RETURN DATE IS
1552   BEGIN
1553     RETURN C_PRIOD_END_DATE;
1554   END C_PRIOD_END_DATE_P;
1555 
1556   FUNCTION C_ALL_TOTAL_P RETURN NUMBER IS
1557   BEGIN
1558     RETURN C_ALL_TOTAL;
1559   END C_ALL_TOTAL_P;
1560 
1561   FUNCTION C_NO_OF_ESTABLISHMENTS_P RETURN NUMBER IS
1562   BEGIN
1563     RETURN C_NO_OF_ESTABLISHMENTS;
1564   END C_NO_OF_ESTABLISHMENTS_P;
1565 
1566   FUNCTION C_PAYROLL_PERIOD_DATE_START_P RETURN DATE IS
1567   BEGIN
1568     RETURN C_PAYROLL_PERIOD_DATE_START;
1569   END C_PAYROLL_PERIOD_DATE_START_P;
1570 
1571   FUNCTION C_PAYROLL_PERIOD_DATE_END_P RETURN DATE IS
1572   BEGIN
1573     RETURN C_PAYROLL_PERIOD_DATE_END;
1574   END C_PAYROLL_PERIOD_DATE_END_P;
1575 
1576   FUNCTION C_REPORT_MODE_P RETURN VARCHAR2 IS
1577   BEGIN
1578     RETURN C_REPORT_MODE;
1579   END C_REPORT_MODE_P;
1580 
1581   FUNCTION C_REPORT_YEAR_P RETURN NUMBER IS
1582   BEGIN
1583     RETURN C_REPORT_YEAR;
1584   END C_REPORT_YEAR_P;
1585 
1586      FUNCTION GET_BUSINESS_GROUP(P_BUSINESS_GROUP_ID IN NUMBER) RETURN VARCHAR2 IS
1587        X0 VARCHAR2(2000);
1588      BEGIN
1589        begin
1590         X0 := HR_REPORTS.GET_BUSINESS_GROUP(P_BUSINESS_GROUP_ID);
1591        end;
1592        RETURN X0;
1593      END GET_BUSINESS_GROUP;
1594 
1595 
1596 END PER_PERUSEO1_XMLP_PKG;