CREATE or replace package Apps.XX_HR_PERFORMANCE_PKG AS
/*
*************************************************************************
** XX Performance Review Load by Apps Associates
*************************************************************************
FILE_NAME : XX_HR_PERFORMANCE_PKG.pks
File Type : PACKAGE SPECIFICATION
PURPOSE : The Package for the Wrapper Functions/Procedures used to Create Performance Ratings.
Created by : Jithendra
Creation Date : 17-Sep-2014
Updated by :
Updation Date :
VERSION : 1.0
Comments :
***************************************************************************/
PROCEDURE XX_PERF_REVIEW_LOAD_PROC(
X_ERRBUF OUT VARCHAR2,
X_RETCODE OUT NUMBER,
V_PATH_LOCATION in varchar2,
v_file_name varchar2,
V_REVIEW_DATE in varchar2,
V_NEXT_PERF_REVIEW_DATE in varchar2
);
end XX_HR_PERFORMANCE_PKG;
/
CREATE or replace package body Apps.XX_HR_PERFORMANCE_PKG AS
/*
*************************************************************************
** XX Performance Review Load by Apps Associates
*************************************************************************
FILE_NAME : XX_HR_PERFORMANCE_PKG.pkb
File Type : PACKAGE body
PURPOSE : The Package for the Wrapper Functions/Procedures used to Create Performance Ratings.
Created by : Jithendra
Creation Date : 17-Sep-2014
Updated by :
Updation Date :
VERSION : 1.0
Comments :
***************************************************************************/
PROCEDURE XX_PERF_REVIEW_LOAD_PROC (
X_ERRBUF OUT VARCHAR2,
X_RETCODE OUT NUMBER,
V_PATH_LOCATION in varchar2,
v_file_name varchar2,
V_REVIEW_DATE in varchar2,
V_NEXT_PERF_REVIEW_DATE in varchar2
)
as
V_FILE_TYPE UTL_FILE.FILE_TYPE;
V_LINE varchar2 (1000);
V_EMPLOYEE_NUMBER number;
V_BUSINESS_GROUP varchar2(200);
V_LAST_NAME varchar2(200);
V_FIRST_NAME varchar2(200);
V_PERF_RATING_NAME varchar2(30);
V_PERF_RATING_CODE VARCHAR2(30);
V_REC_COUNT number := 0;
V_VALIDATE BOOLEAN;
V_PERSON_ID number ;
V_PERFORMANCE_REVIEW_ID NUMBER;
V_OBJECT_VERSION_NUMBER NUMBER;
V_NEXT_REVIEW_DATE_WARNING BOOLEAN;
L_NEXT_REVIEW_DATE date;
V_TOT_count Number :=0;
v_SUC_count Number :=0;
V_FAIL_Count Number :=0;
BEGIN
fnd_file.put_line(fnd_file.output,'File Name:' ||V_PATH_LOCATION||'/'||v_file_name);
fnd_file.put_line(fnd_file.output,'Review Date:' ||V_REVIEW_DATE);
fnd_file.put_line(fnd_file.output,'Next Review Date:' ||V_NEXT_PERF_REVIEW_DATE);
V_FILE_TYPE := UTL_FILE.FOPEN (v_path_location, v_file_name, 'R');
if V_NEXT_PERF_REVIEW_DATE = null
then
L_NEXT_REVIEW_DATE := null;
else
L_NEXT_REVIEW_DATE := TO_DATE(V_NEXT_PERF_REVIEW_DATE,'dd-mon-yyyy');
end if;
IF UTL_FILE.IS_OPEN(V_FILE_TYPE) THEN
LOOP
-- fnd_file.put_line(fnd_file.output,'start/repeat :- '||V_REC_COUNT);
BEGIN
begin
UTL_FILE.GET_LINE(V_FILE_TYPE, V_LINE);
V_TOT_count := V_TOT_count +1;
Exception when no_data_found THEN
fnd_file.put_line(fnd_file.log,'No More Reccords ' ||V_REC_COUNT);
UTL_FILE.FCLOSE(V_FILE_TYPE);
EXIT;
END;
if V_REC_COUNT = 0 then
fnd_file.put_line(fnd_file.log,'skipiping the first line to read values '||V_LINE);
V_REC_COUNT := V_REC_COUNT+1;
else
V_REC_COUNT := V_REC_COUNT+1;
-- fnd_file.put_line(fnd_file.output,'Rec :- '||V_LINE);
v_employee_number := REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 1);
--FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'v_employee_number : '|| V_EMPLOYEE_NUMBER);
v_business_group := REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 2);
--FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'v_business_group : '||V_BUSINESS_GROUP);
v_last_name := REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 3);
--fnd_file.put_line(fnd_file.output,'v_last_name : '||v_last_name);
v_first_name := REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 4);
--fnd_file.put_line(fnd_file.output,'v_first_name : '||v_first_name);
--V_PERF_RATING_NAME := nvl(trim(BOTH CHR(13) from REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 5)),trim(BOTH CHR(13) from REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 4)));
V_PERF_RATING_NAME := trim(BOTH CHR(13) from REGEXP_SUBSTR(V_LINE, '[^,]+', 1, 5));
--fnd_file.put_line(fnd_file.output,'V_PERF_RATING_NAME : '||V_PERF_RATING_NAME);
select papf.PERSON_ID , DECODE(V_PERF_RATING_NAME ,'1 - Lowest' , 'XX_1',
'2' , 'XX_2',
'3', 'XX_3',
'4' , 'XX_4'
,'5 - Highest' ,'XX_5')
into V_PERSON_ID, V_PERF_RATING_CODE
from PER_ALL_PEOPLE_F papf, per_business_groups pbg
where EMPLOYEE_NUMBER = V_EMPLOYEE_NUMBER
and sysdate between EFFECTIVE_START_DATE and EFFECTIVE_END_DATE
AND papf.business_group_id=pbg.business_group_id
and pbg.name=v_business_group;
--FND_FILE.PUT_LINE(FND_FILE.OUTPUT,'v_person_id :'||V_PERSON_ID||', V_PERF_RATING_CODE :'||V_PERF_RATING_CODE);
HR_PERF_REVIEW_API.CREATE_PERF_REVIEW( P_VALIDATE => V_VALIDATE
,P_PERFORMANCE_REVIEW_ID => V_PERFORMANCE_REVIEW_ID
,P_PERSON_ID => V_PERSON_ID
,P_EVENT_ID => null
,P_REVIEW_DATE => TO_DATE(V_REVIEW_DATE,'dd-mon-yyyy')
,P_PERFORMANCE_RATING => V_PERF_RATING_CODE
,P_NEXT_PERF_REVIEW_DATE => L_NEXT_REVIEW_DATE
,P_OBJECT_VERSION_NUMBER => V_OBJECT_VERSION_NUMBER
,P_NEXT_REVIEW_DATE_WARNING => V_NEXT_REVIEW_DATE_WARNING
);
-- FND_FILE.PUT_LINE(FND_FILE.log,V_LINE);
--rollback;
v_SUC_count := v_SUC_count +1;
--COMMIT;
end if;
EXCEPTION when OTHERS then
--fnd_file.put_line(fnd_file.log,'V_PERF_RATING_NAME'||V_PERF_RATING_NAME);
--fnd_file.put_line(fnd_file.log,V_LINE);
fnd_file.put_line(fnd_file.log,'Failed - '||V_EMPLOYEE_NUMBER||' with Error :'||sqlerrm);
--EXIT;
--continue;
V_FAIL_Count := V_FAIL_Count +1;
end ;
END LOOP;
end if;
--rollback;
commit;
V_TOT_count:=V_TOT_count-1;
fnd_file.put_line(fnd_file.output,'Total No of records in file : '||V_TOT_count);
fnd_file.put_line(fnd_file.output,'Failed records count: '||V_FAIL_Count);
fnd_file.put_line(fnd_file.output,'Successful records count: '||V_Suc_Count);
EXCEPTION when OTHERS then
FND_FILE.PUT_LINE(FND_FILE.log,'Other errors :'||SQLERRM);
UTL_FILE.FCLOSE(V_FILE_TYPE);
END XX_PERF_REVIEW_LOAD_PROC;
end XX_HR_PERFORMANCE_PKG;