Author
sumit-kasana
View
293
Download
2
Embed Size (px)
8/17/2019 HRMS Payroll in Oracle Apps
1/71
8/17/2019 HRMS Payroll in Oracle Apps
2/71
(lic- on +ssignment tab for the information li-e Position* 1ob* 'rade* Salary )nformation*
Supervisor
3ow we will view the Payroll part in racle +pps
8/17/2019 HRMS Payroll in Oracle Apps
3/71
Elements
The first thing to have payroll is to have Elements.
'o to the 3avigation
'lobal HRMS 4 Total (ompensation 4 Basic 4 Element ,escription
+s in the above )mage we see there are three things important
5. (lassification 4 This is important as this decides that it is going to be a Earning or
,eductions
Here on seeing the important is
Earnings* %oluntary ,eductions* )nvoluntary ,eductions
Earnings is -nown that what we earned* %oluntary ,eductions are that when we apply for a loan
from salary it gets deducted so this is voluntary and )nvoluntary is something li-e the P"+ or
service charges
6. Type
This is )mportant because we declare something to be Recurring is that it adds all the time on
every month. 7hereas 3onrecurring 8ust occurs one or for the defined period
9.)nput %alues
8/17/2019 HRMS Payroll in Oracle Apps
4/71
8/17/2019 HRMS Payroll in Oracle Apps
5/71
Here you can select the salary which is month wise or date wise or hour wise. 1ust imagine you
have a company and recruited a person with 6
8/17/2019 HRMS Payroll in Oracle Apps
6/71
+ company will give their salary by ban- account or by chec- or some by cash. 7hen we define
that we will pay their payment the a method it gets registered. 7e can also fill some details li-ethe ban- details and others.
3ow to %iew the Payroll 1ust clic- the ,escription to have a full description.
Here we can see that we have many payment methods on clic-ing %alid Payment Methods and
we can set default.
8/17/2019 HRMS Payroll in Oracle Apps
7/71
3ow 1ust go to the 3avigation is
'lobal HRMS Manager 4 People 4 Enter and Maintain
3ow you can (lic- on Enter and Maintain and then clic- +ssignment and here you can see that
this person can have different payroll and the salary basis. n clic-ing the Entries Tab you will be able to see the entries you have entered in the screen
8/17/2019 HRMS Payroll in Oracle Apps
8/71
3ow to process this "unctional people will have "ast formula to define how the payroll should
be integrated and they have the payment logic in this "ast formula. +fter running the fast formula
we will be able to see the "ormula results.
3avigation is
'lobal HRMS Manager 4 Total (ompensation 4 Basic 4 7rite "ormula and "ormula results
+fter ,efining the "ast formulas now we have to run the concurrent for processing payroll
The concurrent will be Payroll Run or >uic- Pay
Payroll Intergration API – Absence and Batch Element Entry
$er$iew
+P) is a way to insert the data from custom table to racle seeded table li-e interface
in oracle apps.
To program a +P) or )nterface we have to -now the front end and where the data gets
savedtables/. So it is always a good approach to -now the re?uirement* flow and the
bac-end.
This area which we are going to deal is payroll )ntegration. Here we get the ,ata from the
custom table and then we insert into racle seeded table by using the +P)+pplication
8/17/2019 HRMS Payroll in Oracle Apps
9/71
Programmable )nterface/. The custom table is that in T0racle Time and 0abour/ which is a
custom module designed for moiss.
Bascially a )nterface or +P) is used to load a bul- of data to the racle Seeded table. The
[email protected]@[email protected] +P) inserts absence data bul- to the table and
[email protected]@[email protected]@api +P) )nserts a bul- of elements based on assignment set.This groups as )nputs that has to be applied for elements.
Here ) have developed a pac-age which has both the functionalities of +bsence and Batch
Element Entry
+P)As are
[email protected]@[email protected]@api [email protected]@headers* [email protected]@lines*
[email protected]@[email protected]
[email protected]@[email protected]
Flow
[email protected]+T([email protected]@E3TR!@+P)
[email protected]@ele[email protected]@api +P) inserts data in a batch depending on group of
elements or assignment set.
The 3avigation is
Mass )nformation E#changeM)/ 4 Batch Element Entry
8/17/2019 HRMS Payroll in Oracle Apps
10/71
8/17/2019 HRMS Payroll in Oracle Apps
11/71
)n oracle apps for )ntegrating the custom data to oracle absence table we have the
HR_PERSON_ABSENCE_API API to delete or to update we can also use this +P).
Before programming this +P) and moving the data from custom table it is
This below screenshot is a e#ample of a sic- leave for a person
8/17/2019 HRMS Payroll in Oracle Apps
12/71
)ueries Related to HR%PERSO&%A!SE&'E%AP(
To 'et Employee *etails from PER_ALL_PEOPLE_F table
SELECT *
FROM PER_ALL_PEOPLE_F PAPF, PER_ALL_ASSIGNMENTS_F PAAF
WHERE PAPF.EMPLOYEE_NUMBER =‘2108’
AND PAPF.CURRENT_EMPLOYEE_FLAG =‘Y’
AND PAPF.EMPLOYEE_NUMBER ISNOTNULL
AND PAAF.PERSON_ID = PAPF.PERSON_ID
ANDSYSDATEBETWEEN PAAF.EFFECTIVE_START_DATE
AND PAAF.EFFECTIVE_END_DATE;
To Test the +P) whether it is wor-ing or not 8ust clic- on the +P) and press "; now a
window gets opened. 1ust (lic- on the top on the option Toggle Spec or Toggle Body
now ta-e the specification and body seperate compile and chec- whether it is wor-ing
or not
8/17/2019 HRMS Payroll in Oracle Apps
13/71
To 'et Employee+s Absence *etails from PER_ALL_PEOPLE_F table
SELECT PAPF.PERSON_ID,
PAPF.EFFECTIVE_START_DATE,
PAPF.EFFECTIVE_END_DATE,
PAPF.LAST_NAME,
PAV.CATEGORY_MEANING
FROM PER_ALL_PEOPLE_F PAPF,
PER_ALL_ASSIGNMENTS_F PAAF,
PER_ABSENCE_ATTENDANCES_V PAV
WHERE PAPF.EMPLOYEE_NUMBER =‘2108’
AND PAPF.CURRENT_EMPLOYEE_FLAG =‘Y’
AND PAPF.EMPLOYEE_NUMBER ISNOTNULL
AND PAAF.PERSON_ID = PAPF.PERSON_ID
8/17/2019 HRMS Payroll in Oracle Apps
14/71
ANDSYSDATEBETWEEN PAAF.EFFECTIVE_START_DATE
AND PAAF.EFFECTIVE_END_DATE
AND PAV.PERSON_ID = PAPF.PERSON_ID;
)ueries related to [email protected]@[email protected]@api
'etting the Element Type )d and its )nformation
select * from PAY_ELEMENT_TYPES_F where element_name=‘Overtime
OTM Special Inputs’
SELECT *
FROM PAY_ELEMENT_TYPES_F
WHERE element_name =‘Holiday Pay Special Inputs’;
SELECT *
FROM PAY_ELEMENT_TYPES_F
WHERE element_name =‘Production Bonus’;
'etting the info of Batches
SELECT PBH.BATCH_NAME FROM PAY_BATCH_HEADERS PBH, PAY_BATCH_LINES
PBL WHERE PBH.BATCH_ID=PBL.BATCH_ID;
SELECT PBL.* ,PBH.* FROM PAY_BATCH_HEADERS PBH, PAY_BATCH_LINES
PBL WHERE PBH.BATCH_ID=PBL.BATCH_ID AND BATCH_NAME LIKE‘MY%TEST
%’;
Getting the Employee details from custom table
SELECT PAPF.PERSON_ID,
8/17/2019 HRMS Payroll in Oracle Apps
15/71
PAPF.EFFECTIVE_START_DATE,
PAPF.EFFECTIVE_END_DATE,
PAPF.LAST_NAME,
PAAF.ASSIGNMENT_ID
FROM PER_ALL_PEOPLE_F PAPF,
PER_ALL_ASSIGNMENTS_F PAAF
WHERE PAPF.EMPLOYEE_NUMBER =‘2108’
AND PAPF.CURRENT_EMPLOYEE_FLAG =‘Y’
AND PAPF.EMPLOYEE_NUMBER ISNOTNULL
AND PAAF.PERSON_ID = PAPF.PERSON_ID
ANDSYSDATEBETWEEN PAAF.EFFECTIVE_START_DATE
AND PAAF.EFFECTIVE_END_DATE;
,o 'hec- .hether the data is (nserted or not
SELECT PBL.*, PBH.*
FROM PAY_BATCH_HEADERS PBH, PAY_BATCH_LINES PBL
WHERE PBH.BATCH_ID = PBL.BATCH_ID AND BATCH_NAME LIKE‘%WORKSHOP
%’;
SELECT PBL.*, PBH.*
FROM PAY_BATCH_HEADERS PBH, PAY_BATCH_LINES PBL
WHERE PBH.BATCH_ID = PBL.BATCH_ID AND BATCH_NAME LIKE‘%HOLI%’;
8/17/2019 HRMS Payroll in Oracle Apps
16/71
SELECT PBL.*, PBH.*
FROM PAY_BATCH_HEADERS PBH, PAY_BATCH_LINES PBL
WHERE PBH.BATCH_ID = PBL.BATCH_ID AND BATCH_NAME
LIKE‘%MOISS_OVERTIME%’;
)nsert Statements
INSERTINTO xxtest_emp_attendance (employee_id,
att_date,
holiday_overtime,
created_by,
creation_date,
day_type)
VALUES(113,
TO_DATE(’01/02/2012′,‘mm/dd/yyyy’),
5,
1310,
TO_DATE(’01/19/2014′,‘mm/dd/yyyy’),
‘WD’);
8/17/2019 HRMS Payroll in Oracle Apps
17/71
INSERTINTO xxtest_emp_attendance (employee_id,
att_date,
workday_overtime,
created_by,
creation_date,
day_type)
VALUES(113,
TO_DATE(’01/03/2012′,‘mm/dd/yyyy’),
5,
1310,
TO_DATE(’01/19/2014′,‘mm/dd/yyyy’),
‘WD’);
INSERTINTO xxtest_emp_attendance (employee_id,
att_date,
workshop_bonus,
created_by,
creation_date,
day_type)
8/17/2019 HRMS Payroll in Oracle Apps
18/71
VALUES(113,
TO_DATE(’01/04/2012′,‘mm/dd/yyyy’),
5,
1310,
TO_DATE(’01/19/2014′,‘mm/dd/yyyy’),
‘WD’);
INSERTINTO xxtest_emp_attendance (employee_id,
att_date,
rig_bonus,
created_by,
creation_date,
day_type)
VALUES(113,
TO_DATE(’01/05/2012′,‘mm/dd/yyyy’),
4,
1310,
TO_DATE(’01/19/2014′,‘mm/dd/yyyy’),
‘WD’);
8/17/2019 HRMS Payroll in Oracle Apps
19/71
Testing >ueries
select * from xxtest_emp_attendance
General /til )ueries from Oracle Apps
select textActual_Query from user_views where
view_name=‘PAY_ELEMENT_TYPES_DENORM_V’;
Program using +P)As
Spec of +P)
CREATEORREPLACEPACKAGEMOISS_PAYROLL_INT_API
IS
PROCEDURE MOISS_ABSENCE_PAYROLL (ERRBUF OUTVARCHAR2,
RETCODE OUTNUMBER,
EMP_NO NUMBER,
START_DATE_V VARCHAR2,
END_DATE_V VARCHAR2
);
PROCEDURE MOISS_BONUS_OVERTIME_ALL_E(ERRBUF OUTVARCHAR2,
8/17/2019 HRMS Payroll in Oracle Apps
20/71
RETCODE OUTNUMBER,
START_DATE_V VARCHAR2,
END_DATE_V VARCHAR2
);
PROCEDURE MOISS_WORKDAY_OVERTIME_PAYROLL (ERRBUF OUTVARCHAR2,
RETCODE OUTNUMBER,
START_DATE_V VARCHAR2,
END_DATE_V VARCHAR2
);
PROCEDURE MOISS_HOLIDAY_OVERTIME_PAYROLL (ERRBUF OUTVARCHAR2,
RETCODE OUTNUMBER,
START_DATE_V DATE,
END_DATE_V DATE
);
PROCEDURE MOISS_WORKSHOP_BONUS_PAYROLL (ERRBUF OUTVARCHAR2,
RETCODE OUTNUMBER,
START_DATE_V DATE,
END_DATE_V DATE
);
8/17/2019 HRMS Payroll in Oracle Apps
21/71
PROCEDURE MOISS_RIG_BONUS_PAYROLL (ERRBUF OUTVARCHAR2,
RETCODE OUTNUMBER,
START_DATE_V DATE,
END_DATE_V DATE
);
END;
Body of +P)
/* Formatted on 1/22/2014 11:22:14 AM (QP5 v5.114.809.3010) */
CREATEORREPLACEPACKAGEBODYMOISS_PAYROLL_INT_API
AS
PROCEDURE MOISS_ABSENCE_PAYROLL (ERRBUF OUTVARCHAR2,
RETCODE OUTNUMBER,
EMP_NO NUMBER,
START_DATE_V VARCHAR2,
8/17/2019 HRMS Payroll in Oracle Apps
22/71
END_DATE_V VARCHAR2
)
IS
CURSOR c
IS
SELECTDISTINCT EMPLOYEE_ID, ATT_DATE
FROMmoiss_emp_attendance
WHERE day_type =‘AB’
AND ATT_DATE BETWEENTRUNC(TO_DATE(START_DATE_V,
‘RRRR/MM/DD HH24:MI:SS’))
ANDTRUNC(TO_DATE( END_DATE_V,‘RRRR/MM/DD HH24:MI:SS’))
AND employee_id = EMP_NO;
–SELECT * FROM moiss_emp_attendance
x_absence_days number;
x_absence_hours number:=10;
— :=ABS_HOUR_V; If applicable we have to include
x_absence_attendance_type_id number;–ABSENCE ATTENDANCE TYPE ID
— := ATT_TYPE_ID_V; If applicable we have to include
x_absence_attendance_id number;
x_object_version_number number;
x_occurrence number;
8/17/2019 HRMS Payroll in Oracle Apps
23/71
x_dur_dys_less_warning boolean;
x_dur_hrs_less_warning boolean;
x_exceeds_pto_entit_warning boolean;
x_exceeds_run_total_warning boolean;
x_abs_overlap_warning boolean;
x_abs_day_after_warning boolean;
x_dur_overwritten_warning boolean;
x_con_count number;
BEGIN
retcode :=0;
errbuf :=‘Success’;
x_con_count :=0;
fnd_file.put_line (fnd_file.LOG,‘Start’);
DBMS_OUTPUT.PUT_LINE (
‘THE values ARE IS ‘ || START_DATE_V || END_DATE_V
);
— FND_FILE.PUT_LINE(fnd_file.LOG, )
–To keep check for the Concurrent —
x_con_count :=0;
8/17/2019 HRMS Payroll in Oracle Apps
24/71
–Counts the loop of number that is total number of loops that
has to be going
fnd_global.apps_initialize (user_id =>fnd_global.user_id,
resp_id =>fnd_global.resp_id,
resp_appl_id =>fnd_global.resp_appl_id);
SELECT absence_attendance_type_id
INTO x_absence_attendance_type_id
FROM per_absence_attendance_types
WHERE business_group_id =fnd_global.per_business_group_id
ANDnameLIKE‘%Personal%’
ANDROWNUM=1;
FOR I IN C
LOOP
hr_person_absence_api.create_person_absence (
p_validate =>FALSE,
p_effective_date => I.ATT_DATE,
p_person_id => I.EMPLOYEE_ID,
p_business_group_id =>fnd_global.per_business_group_id
8/17/2019 HRMS Payroll in Oracle Apps
25/71
,
–101,
p_absence_attendance_type_id => x_absence_attendance_type_id,
–71, —VACATION LEAVE
p_date_projected_start => I.ATT_DATE,
p_time_projected_start =>NULL,
–If applicable we have to include
p_date_projected_end => I.ATT_DATE,
p_time_projected_end =>NULL,
–If applicable we have to include
p_date_start => I.ATT_DATE,
p_time_start =>NULL,
–If applicable we have to include ’18:00 ,′
p_date_end => I.ATT_DATE,
p_time_end =>NULL,
–If applicable we have to include ’20:00 ,′
— p_date_start => sysdate,
— p_date_end => sysdate+1,
p_absence_days => x_absence_days,
p_absence_hours => x_absence_hours,
p_absence_attendance_id => x_absence_attendance_id,
p_object_version_number => x_object_version_number,
p_occurrence => x_occurrence,
8/17/2019 HRMS Payroll in Oracle Apps
26/71
p_dur_dys_less_warning => x_dur_dys_less_warning,
p_dur_hrs_less_warning => x_dur_hrs_less_warning,
p_exceeds_pto_entit_warning => x_exceeds_pto_entit_warning,
p_exceeds_run_total_warning => x_exceeds_run_total_warning,
p_abs_overlap_warning => x_abs_overlap_warning,
p_abs_day_after_warning => x_abs_day_after_warning,
p_dur_overwritten_warning => x_dur_overwritten_warning
);
x_con_count :=1+ x_con_count;
fnd_file.put_line (
fnd_file.LOG,
x_con_count
|| ‘-‘
|| ‘Employee ID – ‘
|| I.EMPLOYEE_ID
|| ‘ – – Att Date- – – ‘
|| I.ATT_DATE
);
ENDLOOP;
IF x_con_count =0
THEN
8/17/2019 HRMS Payroll in Oracle Apps
27/71
fnd_file.put_line (fnd_file.LOG,‘No Data Found’);
ENDIF;
COMMIT;
EXCEPTION
WHENNO_DATA_FOUND
THEN
DBMS_OUTPUT.PUT_LINE (‘No data found’);
retcode :=–1;
errbuf :=
‘NO DATA FOUND’
|| SUBSTR(SQLERRM,1,1000)
|| DBMS_UTILITY.format_error_backtrace;
— WAR_V := errbuf;
fnd_file.put_line (
fnd_file.LOG,
‘No Data Found’ || DBMS_UTILITY.format_error_backtrace
);
WHENOTHERS
THEN
DBMS_OUTPUT.PUT_LINE (‘No data found’);
retcode :=–1;
errbuf :=
8/17/2019 HRMS Payroll in Oracle Apps
28/71
‘Error in Payroll ABSENCE Integration’
|| SUBSTR(SQLERRM,1,1000)
|| DBMS_UTILITY.format_error_backtrace;
fnd_file.put_line (
fnd_file.LOG,
‘No Data Found’ || DBMS_UTILITY.format_error_backtrace
);
— WAR_V := errbuf;
END MOISS_ABSENCE_PAYROLL;
— ——————————————————————————————————————————————————————————————
——————————————————————
PROCEDURE MOISS_BONUS_OVERTIME_ALL_E(ERRBUF OUTVARCHAR2,
RETCODE OUTNUMBER,
START_DATE_V VARCHAR2,
END_DATE_V VARCHAR2
)
IS
–ERRBUF VARCHAR2(100),
— RETCODE OUT NUMBER,
BEGIN
8/17/2019 HRMS Payroll in Oracle Apps
29/71
fnd_file.put_line (fnd_file.LOG,‘Procedure1 Started’);
MOISS_PAYROLL_INT_API.MOISS_WORKDAY_OVERTIME_PAYROLL(ERRBUF,
RETCODE,START_DATE_V, END_DATE_V);
–fnd_file.put_line (fnd_file.LOG, ”);
MOISS_PAYROLL_INT_API.MOISS_HOLIDAY_OVERTIME_PAYROLL (ERRBUF,
RETCODE, START_DATE_V, END_DATE_V);
MOISS_PAYROLL_INT_API.MOISS_WORKSHOP_BONUS_PAYROLL(ERRBUF,
RETCODE, START_DATE_V, END_DATE_V );
MOISS_PAYROLL_INT_API.MOISS_RIG_BONUS_PAYROLL(ERRBUF, RETCODE,
START_DATE_V, END_DATE_V);
fnd_file.put_line (fnd_file.LOG,‘Procedure1 Ended’);
EXCEPTION
whenothersthen
fnd_file.put_line (fnd_file.LOG,‘Exe Env’ ||
DBMS_UTILITY.format_error_backtrace);
END MOISS_BONUS_OVERTIME_ALL_E;
PROCEDURE MOISS_WORKDAY_OVERTIME_PAYROLL (ERRBUF OUTVARCHAR2,
RETCODE OUTNUMBER,
START_DATE_V VARCHAR2,
END_DATE_V VARCHAR2
)
IS
8/17/2019 HRMS Payroll in Oracle Apps
30/71
v_batch_id varchar2(60);
x_batch_id number:=0;
x_ver_no number;
x_batch_line_id number;
g_ver_no number;
x_ver_no_1 number;
x_con_count number;
x_element_type_id number;
CURSOR c
IS
SELECTDISTINCT att_date,
WORKDAY_OVERTIME,
PAF.ASSIGNMENT_ID,
paf.assignment_number
FROMmoiss_emp_attendance mea, per_assignments_f paf
WHERE paf.person_id = mea.employee_id
AND WORKDAY_OVERTIME ISNOTNULL
AND ATT_DATE BETWEEN START_DATE_V AND END_DATE_V;
BEGIN
–retcode := 0;
–errbuf := ‘Success’;
x_con_count :=0;
8/17/2019 HRMS Payroll in Oracle Apps
31/71
fnd_file.put_line (fnd_file.LOG,‘Start’);
DBMS_OUTPUT.PUT_LINE (
‘THE values ARE IS ‘ || START_DATE_V || END_DATE_V
);
— FND_FILE.PUT_LINE(fnd_file.LOG, )
–To keep check for the Concurrent —
x_con_count :=0;
–Counts the loop of number that is total number of loops that
has to be going
fnd_global.apps_initialize (user_id =>fnd_global.user_id,
resp_id =>fnd_global.resp_id,
resp_appl_id =>fnd_global.resp_appl_id);
SELECTTO_CHAR(SYSDATE)INTO v_batch_id FROM DUAL;
SELECT ELEMENT_TYPE_ID
INTO x_element_type_id
8/17/2019 HRMS Payroll in Oracle Apps
32/71
FROM PAY_ELEMENT_TYPES_F
WHERE element_name LIKE‘%Overtime OTM Special Inputs%’
ANDROWNUM=1;
FOR i IN c
LOOP
pay_batch_element_entry_api.create_batch_header (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_name =>‘MOISS_OVERTIME’ || v_batch_id,
p_batch_status =>‘U’,— unprocessed
p_business_group_id =>fnd_global.per_business_group_id,
–202, 101 — business_group_id
p_action_if_exists =>‘I’,
— i = create new entry, u = update entry
p_batch_reference =>NULL,
–g_user_name||’ – ‘||to_char(sysdate,’ddmonyyyy’)
p_batch_source =>NULL,–name of the batch
p_comments =>NULL,
p_date_effective_changes =>NULL,
p_purge_after_transfer =>‘N’,
p_reject_if_future_changes =>‘Y’,
p_batch_id => x_batch_id,
8/17/2019 HRMS Payroll in Oracle Apps
33/71
p_object_version_number => g_ver_no,
p_reject_if_results_exists =>‘Y’,
p_purge_after_rollback =>‘N’,
p_batch_type =>NULL,
p_reject_entry_not_removed =>‘N’,
p_rollback_entry_updates =>‘N’
);
DBMS_OUTPUT.put_line(
‘v_batch_id’ || v_batch_id || x_batch_id || g_ver_no
);
pay_batch_element_entry_api.create_batch_line (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_id => x_batch_id,
p_assignment_id => i.ASSIGNMENT_ID,
p_assignment_number => i.assignment_number,
p_batch_sequence =>NULL,
p_effective_date =>SYSDATE,–l_effective_date
p_element_type_id => x_element_type_id,
–Overtime OTM Special Inputs
p_entry_type =>‘E’,
p_value_1 => i.WORKDAY_OVERTIME,
–holiday over time hrs–
8/17/2019 HRMS Payroll in Oracle Apps
34/71
p_value_2 =>’15’,–Assuming Value
–regular over time hrs– ,
p_batch_line_id => x_batch_line_id,
p_object_version_number => x_ver_no_1
);
x_con_count :=1+ x_con_count;
fnd_file.put_line (
fnd_file.LOG,
x_con_count || ‘-‘ || ‘Employee ID – ‘ || I.WORKDAY_OVERTIME ||
I.ASSIGNMENT_ID || I.assignment_number || ‘ – – Att Date- – – ‘
|| I.ATT_DATE
);
ENDLOOP;
IF x_con_count =0
THEN
fnd_file.put_line (fnd_file.LOG,‘No Data Found’);
ENDIF;
COMMIT;
EXCEPTION
WHENNO_DATA_FOUND
8/17/2019 HRMS Payroll in Oracle Apps
35/71
THEN
DBMS_OUTPUT.PUT_LINE (‘No data found’);
–retcode := -1;
–errbuf :=
— ‘NO DATA FOUND’
— || SUBSTR (SQLERRM, 1, 1000)
— || DBMS_UTILITY.format_error_backtrace;
— WAR_V := errbuf;
fnd_file.put_line (
fnd_file.LOG,
‘No Data Found’ || DBMS_UTILITY.format_error_backtrace
);
WHENOTHERS
THEN
DBMS_OUTPUT.PUT_LINE (‘No data found’);
— retcode := -1;
— errbuf :=
— ‘Error in Payroll ABSENCE Integration’
— || SUBSTR (SQLERRM, 1, 1000)
— || DBMS_UTILITY.format_error_backtrace;
fnd_file.put_line (
fnd_file.LOG,
‘No Data Found’ || DBMS_UTILITY.format_error_backtrace
8/17/2019 HRMS Payroll in Oracle Apps
36/71
);
— WAR_V := errbuf;
END;
————————————————————————————————————————————————————————————————
————————————————————
PROCEDURE MOISS_HOLIDAY_OVERTIME_PAYROLL (ERRBUF OUTVARCHAR2,
RETCODE OUTNUMBER,
START_DATE_V DATE,
END_DATE_V DATE
)
IS
v_batch_id VARCHAR2(60);
x_batch_id number;
x_ver_no number;
x_batch_line_id number;
g_ver_no number;
x_ver_no_1 number;
x_con_count number;
8/17/2019 HRMS Payroll in Oracle Apps
37/71
x_element_type_id number;
CURSOR c
IS
SELECTDISTINCT att_date,
HOLIDAY_OVERTIME,
PAF.ASSIGNMENT_ID,
paf.assignment_number
FROMmoiss_emp_attendance mea, per_assignments_f paf
WHERE paf.person_id = mea.employee_id
AND MEA.HOLIDAY_OVERTIME ISNOTNULL
AND ATT_DATE BETWEEN START_DATE_V AND END_DATE_V;
BEGIN
retcode :=0;
errbuf :=‘Success’;
x_con_count :=0;
fnd_file.put_line (fnd_file.LOG,‘Start’);
DBMS_OUTPUT.PUT_LINE (
‘THE values ARE IS ‘ || START_DATE_V || END_DATE_V
);
— FND_FILE.PUT_LINE(fnd_file.LOG, )
8/17/2019 HRMS Payroll in Oracle Apps
38/71
–To keep check for the Concurrent —
x_con_count :=0;
–Counts the loop of number that is total number of loops that
has to be going
fnd_global.apps_initialize (user_id =>fnd_global.user_id,
resp_id =>fnd_global.resp_id,
resp_appl_id =>fnd_global.resp_appl_id);
SELECTTO_CHAR(SYSDATE)INTO v_batch_id FROM DUAL;
SELECT ELEMENT_TYPE_ID
INTO x_element_type_id
FROM PAY_ELEMENT_TYPES_F
WHERE element_name LIKE‘%OTL Holiday Pay%’ANDROWNUM=1;
FOR i IN c
LOOP
8/17/2019 HRMS Payroll in Oracle Apps
39/71
pay_batch_element_entry_api.create_batch_header (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_name =>‘M_HOLI_OVERTIME’ || v_batch_id,
p_batch_status =>‘U’,— unprocessed
p_business_group_id =>fnd_global.per_business_group_id,
–202, 101 — business_group_id
p_action_if_exists =>‘I’,
— i = create new entry, u = update entry
p_batch_reference =>NULL,
–g_user_name||’ – ‘||to_char(sysdate,’ddmonyyyy’)
p_batch_source =>NULL,–name of the batch
p_comments =>NULL,
p_date_effective_changes =>NULL,
p_purge_after_transfer =>‘N’,
p_reject_if_future_changes =>‘Y’,
p_batch_id => x_batch_id,
p_object_version_number => g_ver_no,
p_reject_if_results_exists =>‘Y’,
p_purge_after_rollback =>‘N’,
p_batch_type =>NULL,
p_reject_entry_not_removed =>‘N’,
p_rollback_entry_updates =>‘N’
8/17/2019 HRMS Payroll in Oracle Apps
40/71
);
DBMS_OUTPUT.put_line(
‘v_batch_id’ || v_batch_id || x_batch_id || g_ver_no
);
pay_batch_element_entry_api.create_batch_line (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_id => x_batch_id,
p_assignment_id => i.ASSIGNMENT_ID,
p_assignment_number => i.assignment_number,
p_batch_sequence =>NULL,
p_effective_date =>SYSDATE,–l_effective_date
p_element_type_id => x_element_type_id,
–Earnings paid for Holiday-straight time)
p_entry_type =>‘E’,
p_value_1 => i.HOLIDAY_OVERTIME,
–holiday over time hrs–
p_value_2 =>15,
–Assuming Value (Values to be noted……)
–regular over time hrs– ,
p_batch_line_id => x_batch_line_id,
p_object_version_number => x_ver_no_1
);
8/17/2019 HRMS Payroll in Oracle Apps
41/71
x_con_count :=1+ x_con_count;
fnd_file.put_line (
fnd_file.LOG,
x_con_count || ‘-‘ || ‘Employee ID – ‘ || I.HOLIDAY_OVERTIME ||
I.ASSIGNMENT_ID || I.assignment_number || ‘ – – Att Date- – – ‘
|| I.ATT_DATE
);
ENDLOOP;
IF x_con_count =0
THEN
fnd_file.put_line (fnd_file.LOG,‘No Data Found’);
ENDIF;
COMMIT;
EXCEPTION
WHENNO_DATA_FOUND
THEN
DBMS_OUTPUT.PUT_LINE (‘No data found’);
retcode :=–1;
errbuf :=
‘NO DATA FOUND’
|| SUBSTR(SQLERRM,1,1000)
8/17/2019 HRMS Payroll in Oracle Apps
42/71
|| DBMS_UTILITY.format_error_backtrace;
— WAR_V := errbuf;
fnd_file.put_line (
fnd_file.LOG,
‘No Data Found’ || DBMS_UTILITY.format_error_backtrace
);
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE (‘No data found’);
retcode :=–1;
errbuf :=
‘Error in Payroll ABSENCE Integration’
|| SUBSTR(SQLERRM,1,1000)
|| DBMS_UTILITY.format_error_backtrace;
fnd_file.put_line (
fnd_file.LOG,
‘No Data Found’ || DBMS_UTILITY.format_error_backtrace
);
— WAR_V := errbuf;
END;
8/17/2019 HRMS Payroll in Oracle Apps
43/71
————————————————————————————————————————————————————————————————
————————————————————
PROCEDURE MOISS_WORKSHOP_BONUS_PAYROLL (ERRBUF OUTVARCHAR2,
RETCODE OUTNUMBER,
START_DATE_V DATE,
END_DATE_V DATE
)
IS
v_batch_id VARCHAR2(60);
x_batch_id number;
x_ver_no number;
x_batch_line_id number;
g_ver_no number;
x_ver_no_1 number;
x_con_count number;
x_element_type_id number;
CURSOR c
IS
SELECTDISTINCT att_date,
WORKSHOP_BONUS,
PAF.ASSIGNMENT_ID,
8/17/2019 HRMS Payroll in Oracle Apps
44/71
paf.assignment_number
FROMmoiss_emp_attendance mea, per_assignments_f paf
WHERE paf.person_id = mea.employee_id
AND MEA.WORKSHOP_BONUS ISNOTNULL
AND ATT_DATE BETWEEN START_DATE_V AND END_DATE_V;
BEGIN
retcode :=0;
errbuf :=‘Success’;
x_con_count :=0;
fnd_file.put_line (fnd_file.LOG,‘Start’);
DBMS_OUTPUT.PUT_LINE (
‘THE values ARE IS ‘ || START_DATE_V || END_DATE_V
);
— FND_FILE.PUT_LINE(fnd_file.LOG, )
–To keep check for the Concurrent —
x_con_count :=0;
–Counts the loop of number that is total number of loops that
has to be going
fnd_global.apps_initialize (user_id =>fnd_global.user_id,
8/17/2019 HRMS Payroll in Oracle Apps
45/71
resp_id =>fnd_global.resp_id,
resp_appl_id =>fnd_global.resp_appl_id);
SELECT TO_CHAR(SYSDATE)INTO v_batch_id FROM DUAL;
SELECT ELEMENT_TYPE_ID
INTO x_element_type_id
FROM PAY_ELEMENT_TYPES_F
WHERE element_name LIKE‘%Production Bonus%’ANDROWNUM=1;
FOR i IN c
LOOP
pay_batch_element_entry_api.create_batch_header (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_name =>‘WORKSHOP_BONUS’ || v_batch_id,
p_batch_status =>‘U’,— unprocessed
p_business_group_id =>fnd_global.per_business_group_id,
–202, 101 — business_group_id
p_action_if_exists =>‘I’,
— i = create new entry, u = update entry
p_batch_reference =>NULL,
–g_user_name||’ – ‘||to_char(sysdate,’ddmonyyyy’)
p_batch_source =>NULL,–name of the batch
p_comments =>NULL,
8/17/2019 HRMS Payroll in Oracle Apps
46/71
p_date_effective_changes =>NULL,
p_purge_after_transfer =>‘N’,
p_reject_if_future_changes =>‘Y’,
p_batch_id => x_batch_id,
p_object_version_number => g_ver_no,
p_reject_if_results_exists =>‘Y’,
p_purge_after_rollback =>‘N’,
p_batch_type =>NULL,
p_reject_entry_not_removed =>‘N’,
p_rollback_entry_updates =>‘N’
);
DBMS_OUTPUT.put_line(
‘v_batch_id’ || v_batch_id || x_batch_id || g_ver_no
);
pay_batch_element_entry_api.create_batch_line (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_id => x_batch_id,
p_assignment_id => i.ASSIGNMENT_ID,
p_assignment_number => i.assignment_number,
p_batch_sequence =>NULL,
p_effective_date =>SYSDATE,–l_effective_date
p_element_type_id => x_element_type_id,–Production Bonus
8/17/2019 HRMS Payroll in Oracle Apps
47/71
p_entry_type =>‘E’,
p_value_1 => i.WORKSHOP_BONUS,
–holiday over time hrs–
p_value_2 =>15,
–Assuming Value (Values to be noted……)
–regular over time hrs– ,
p_batch_line_id => x_batch_line_id,
p_object_version_number => x_ver_no_1
);
x_con_count :=1+ x_con_count;
fnd_file.put_line (
fnd_file.LOG,
x_con_count || ‘-‘ || ‘Employee ID – ‘ || I.WORKSHOP_BONUS ||
I.ASSIGNMENT_ID || I.assignment_number || ‘ – – Att Date- – – ‘
|| I.ATT_DATE
);
ENDLOOP;
IF x_con_count =0
THEN
fnd_file.put_line (fnd_file.LOG,‘No Data Found’);
ENDIF;
8/17/2019 HRMS Payroll in Oracle Apps
48/71
COMMIT;
EXCEPTION
WHENNO_DATA_FOUND
THEN
DBMS_OUTPUT.PUT_LINE (‘No data found’);
retcode :=–1;
errbuf :=
‘NO DATA FOUND’
|| SUBSTR(SQLERRM,1,1000)
|| DBMS_UTILITY.format_error_backtrace;
— WAR_V := errbuf;
fnd_file.put_line (
fnd_file.LOG,
‘No Data Found’ || DBMS_UTILITY.format_error_backtrace
);
WHENOTHERS
THEN
DBMS_OUTPUT.PUT_LINE (‘No data found’);
retcode :=–1;
errbuf :=
‘Error in Payroll ABSENCE Integration’
|| SUBSTR(SQLERRM,1,1000)
|| DBMS_UTILITY.format_error_backtrace;
8/17/2019 HRMS Payroll in Oracle Apps
49/71
fnd_file.put_line (
fnd_file.LOG,
‘No Data Found’ || DBMS_UTILITY.format_error_backtrace
);
— WAR_V := errbuf;
END;
PROCEDURE MOISS_RIG_BONUS_PAYROLL (ERRBUF OUTVARCHAR2,
RETCODE OUTNUMBER,
START_DATE_V DATE,
END_DATE_V DATE
)
IS
v_batch_id VARCHAR2(60);
x_batch_id number;
x_ver_no number;
x_batch_line_id number;
g_ver_no number;
x_ver_no_1 number;
x_con_count number;
x_element_type_id number;
8/17/2019 HRMS Payroll in Oracle Apps
50/71
CURSOR c
IS
SELECTDISTINCT att_date,
RIG_BONUS,
PAF.ASSIGNMENT_ID,
paf.assignment_number
FROMmoiss_emp_attendance mea, per_assignments_f paf
WHERE paf.person_id = mea.employee_id
AND MEA.WORKSHOP_BONUS ISNOTNULL
AND ATT_DATE BETWEEN START_DATE_V AND END_DATE_V;
BEGIN
retcode :=0;
errbuf :=‘Success’;
x_con_count :=0;
fnd_file.put_line (fnd_file.LOG,‘Start’);
DBMS_OUTPUT.PUT_LINE (
‘THE values ARE IS ‘ || START_DATE_V || END_DATE_V
);
— FND_FILE.PUT_LINE(fnd_file.LOG, )
–To keep check for the Concurrent —
8/17/2019 HRMS Payroll in Oracle Apps
51/71
x_con_count :=0;
–Counts the loop of number that is total number of loops that
has to be going
fnd_global.apps_initialize (user_id =>fnd_global.user_id,
resp_id =>fnd_global.resp_id,
resp_appl_id =>fnd_global.resp_appl_id);
SELECT TO_CHAR(SYSDATE)INTO v_batch_id FROM DUAL;
SELECT ELEMENT_TYPE_ID
INTO x_element_type_id
FROM PAY_ELEMENT_TYPES_F
WHERE element_name LIKE‘%Production Bonus%’AND ROWNUM=1;
FOR i IN c
LOOP
pay_batch_element_entry_api.create_batch_header (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_name =>‘RIG_BONUS’ || v_batch_id,
p_batch_status =>‘U’,— unprocessed
p_business_group_id =>fnd_global.per_business_group_id,
–202, 101 — business_group_id
p_action_if_exists =>‘I’,
— i = create new entry, u = update entry
8/17/2019 HRMS Payroll in Oracle Apps
52/71
p_batch_reference =>NULL,
–g_user_name||’ – ‘||to_char(sysdate,’ddmonyyyy’)
p_batch_source =>NULL,–name of the batch
p_comments =>NULL,
p_date_effective_changes =>NULL,
p_purge_after_transfer =>‘N’,
p_reject_if_future_changes =>‘Y’,
p_batch_id => x_batch_id,
p_object_version_number => g_ver_no,
p_reject_if_results_exists =>‘Y’,
p_purge_after_rollback =>‘N’,
p_batch_type =>NULL,
p_reject_entry_not_removed =>‘N’,
p_rollback_entry_updates =>‘N’
);
DBMS_OUTPUT.put_line(
‘v_batch_id’ || v_batch_id || x_batch_id || g_ver_no
);
pay_batch_element_entry_api.create_batch_line (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_id => x_batch_id,
p_assignment_id => i.ASSIGNMENT_ID,
8/17/2019 HRMS Payroll in Oracle Apps
53/71
p_assignment_number => i.assignment_number,
p_batch_sequence =>NULL,
p_effective_date =>SYSDATE,–l_effective_date
p_element_type_id => x_element_type_id,
–Production Bonus (Has to be changed for Rig Bonus)
p_entry_type =>‘E’,
p_value_1 => i.RIG_BONUS,
–holiday over time hrs–
p_value_2 =>15,
–Assuming Value (Values to be noted……)
–regular over time hrs– ,
p_batch_line_id => x_batch_line_id,
p_object_version_number => x_ver_no_1
);
x_con_count :=1+ x_con_count;
fnd_file.put_line (
fnd_file.LOG,
x_con_count || ‘-‘ || ‘Employee ID – ‘ || I.RIG_BONUS || I.
ASSIGNMENT_ID || I.assignment_number || ‘ – – Att Date- – – ‘ ||
I.
ATT_DATE );
END LOOP;
IF x_con_count =0
8/17/2019 HRMS Payroll in Oracle Apps
54/71
THEN
fnd_file.put_line (fnd_file.LOG,‘No Data Found’);
ENDIF;
COMMIT;
EXCEPTION
WHENNO_DATA_FOUND
THEN
DBMS_OUTPUT.PUT_LINE (‘No data found’);
retcode :=–1;
errbuf :=
‘NO DATA FOUND’
|| SUBSTR(SQLERRM,1,1000)
|| DBMS_UTILITY.format_error_backtrace;
— WAR_V := errbuf;
fnd_file.put_line (
fnd_file.LOG,
‘No Data Found’ || DBMS_UTILITY.format_error_backtrace
);
WHENOTHERS
THEN
DBMS_OUTPUT.PUT_LINE (‘No data found’);
retcode :=–1;
errbuf :=
8/17/2019 HRMS Payroll in Oracle Apps
55/71
‘Error in Payroll ABSENCE Integration’
|| SUBSTR(SQLERRM,1,1000)
|| DBMS_UTILITY.format_error_backtrace;
fnd_file.put_line (
fnd_file.LOG,
‘No Data Found’ || DBMS_UTILITY.format_error_backtrace
);
— WAR_V := errbuf;
END;
END MOISS_PAYROLL_INT_API;
Program !ody for ,esting or Sample data ,est
CREATEORREPLACEPACKAGEBODYMOISS_PAYROLL_INT_API
AS
PROCEDURE MOISS_ABSENCE_PAYROLL (BUISNESS_G_V NUMBER,
START_DATE_V VARCHAR2,
END_DATE_V VARCHAR2,
WAR_V OUTVARCHAR2)
IS
CURSOR c
IS
SELECTDISTINCT EMPLOYEE_ID, ATT_DATE
FROMmoiss_emp_attendance
8/17/2019 HRMS Payroll in Oracle Apps
56/71
WHERE day_type =‘WO’
AND ATT_DATE BETWEENTO_DATE(START_DATE_V,‘MM/DD/YYYY’)–TO_DATE
(’10/19/2013 , ‘MM/DD/YYYY’)′
ANDTO_DATE(END_DATE_V,‘MM/DD/YYYY’)
— TO_DATE (’10/20/2013 , ‘MM/DD/YYYY’)′
AND employee_id =30;
–SELECT * FROM moiss_emp_attendance
— x_START_DATE_V date=’10/18/2013 ;′
x_absence_days number;
x_absence_hours number:=10;
— :=ABS_HOUR_V; If applicable we have to include
X_absence_attendance_type_id number:=7;
— := ATT_TYPE_ID_V; If applicable we have to include
x_absence_attendance_id number;
x_object_version_number number;
x_occurrence number;
x_dur_dys_less_warning boolean;
x_dur_hrs_less_warning boolean;
x_exceeds_pto_entit_warning boolean;
x_exceeds_run_total_warning boolean;
x_abs_overlap_warning boolean;
x_abs_day_after_warning boolean;
8/17/2019 HRMS Payroll in Oracle Apps
57/71
x_dur_overwritten_warning boolean;
BEGIN
DBMS_OUTPUT.PUT_LINE (‘THE values ARE IS ‘||BUISNESS_G_V||
START_DATE_V||END_DATE_V);
FOR I IN C
LOOP
hr_person_absence_api.create_person_absence (
p_validate =>FALSE,
p_effective_date => I.ATT_DATE,
p_person_id => I.EMPLOYEE_ID,
p_business_group_id => BUISNESS_G_V,
–101,
p_absence_attendance_type_id => X_absence_attendance_type_id,
–71, —VACATION LEAVE
p_date_projected_start => I.ATT_DATE,
p_time_projected_start =>NULL,
–If applicable we have to include
p_date_projected_end => I.ATT_DATE,
p_time_projected_end =>NULL,
–If applicable we have to include
p_date_start => I.ATT_DATE,
8/17/2019 HRMS Payroll in Oracle Apps
58/71
p_time_start =>NULL,
–If applicable we have to include ’18:00 ,′
p_date_end => I.ATT_DATE,
p_time_end =>NULL,
–If applicable we have to include ’20:00 ,′
— p_date_start => sysdate,
— p_date_end => sysdate+1,
p_absence_days => x_absence_days,
p_absence_hours => x_absence_hours,
p_absence_attendance_id => x_absence_attendance_id,
p_object_version_number => x_object_version_number,
p_occurrence => x_occurrence,
p_dur_dys_less_warning => x_dur_dys_less_warning,
p_dur_hrs_less_warning => x_dur_hrs_less_warning,
p_exceeds_pto_entit_warning => x_exceeds_pto_entit_warning,
p_exceeds_run_total_warning => x_exceeds_run_total_warning,
p_abs_overlap_warning => x_abs_overlap_warning,
p_abs_day_after_warning => x_abs_day_after_warning,
p_dur_overwritten_warning => x_dur_overwritten_warning
);
ENDLOOP;
COMMIT;
8/17/2019 HRMS Payroll in Oracle Apps
59/71
EXCEPTION
WHENOTHERS
THEN
WAR_V :=‘ERROR OCCURED’||sqlERRM;
END MOISS_ABSENCE_PAYROLL;
————————————————————————————————————————————————————————————————
————————————————————
/* Formatted on 1/16/2014 6:13:49 PM (QP5 v5.114.809.3010) */
PROCEDURE MOISS_WORKDAY_OVERTIME_PAYROLL (BUISNESS_G_V NUMBER,
START_DATE_V VARCHAR2,
END_DATE_V VARCHAR2,
WAR_V OUTVARCHAR2)
IS
v_batch_id varchar2(60);
x_batch_id number:=0;
x_ver_no number;
x_batch_line_id number;
g_ver_no number;
x_ver_no_1 number;
CURSOR c
IS
8/17/2019 HRMS Payroll in Oracle Apps
60/71
SELECT DISTINCT
WORKDAY_OVERTIME, PAF.ASSIGNMENT_ID, paf.assignment_number
FROM xxtest_emp_attendance mea, per_assignments_f paf
WHERE paf.person_id = mea.employee_id
AND WORKDAY_OVERTIME ISNOTNULL;
BEGIN
SELECT TO_CHAR(SYSDATE)INTO v_batch_id FROM DUAL;
FOR i IN c
LOOP
pay_batch_element_entry_api.create_batch_header (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_name =>‘MOISS_OVERTIME’ || v_batch_id,
p_batch_status =>‘U’,— unprocessed
p_business_group_id =>202,
–202, 101 — business_group_id
p_action_if_exists =>‘I’,
— i = create new entry, u = update entry
p_batch_reference =>NULL,
–g_user_name||’ – ‘||to_char(sysdate,’ddmonyyyy’)
p_batch_source =>NULL,–name of the batch
p_comments =>NULL,
p_date_effective_changes =>NULL,
8/17/2019 HRMS Payroll in Oracle Apps
61/71
p_purge_after_transfer =>‘N’,
p_reject_if_future_changes =>‘Y’,
p_batch_id => x_batch_id,
p_object_version_number => g_ver_no,
p_reject_if_results_exists =>‘Y’,
p_purge_after_rollback =>‘N’,
p_batch_type =>NULL,
p_reject_entry_not_removed =>‘N’,
p_rollback_entry_updates =>‘N’
);
DBMS_OUTPUT.put_line(
‘v_batch_id’ || v_batch_id || x_batch_id || g_ver_no
);
pay_batch_element_entry_api.create_batch_line (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_id => x_batch_id,
p_assignment_id => i.ASSIGNMENT_ID,
p_assignment_number => i.assignment_number,
p_batch_sequence =>NULL,
p_effective_date =>SYSDATE,–l_effective_date
p_element_type_id =>50944,–Overtime OTM Special Inputs
p_entry_type =>‘E’,
8/17/2019 HRMS Payroll in Oracle Apps
62/71
p_value_1 => i.WORKDAY_OVERTIME,
–holiday over time hrs–
p_value_2 =>’15’,–Assuming Value
–regular over time hrs– ,
p_batch_line_id => x_batch_line_id,
p_object_version_number => x_ver_no_1
);
END LOOP;
COMMIT;
EXCEPTION
WHENOTHERS
THEN
WAR_V :=‘ERROR OCCURED’||sqlERRM;
dbms_output.put_line(dbms_utility.format_error_backtrace);
END;
————————————————————————————————————————————————————————————————
————————————————————
PROCEDURE MOISS_HOLIDAY_OVERTIME_PAYROLL (BUISNESS_G_V NUMBER,
START_DATE_V VARCHAR2,
END_DATE_V VARCHAR2,
WAR_V OUTVARCHAR2)
IS
v_batch_id VARCHAR2(60);
8/17/2019 HRMS Payroll in Oracle Apps
63/71
x_batch_id number;
x_ver_no number;
x_batch_line_id number;
g_ver_no number;
x_ver_no_1 number;
CURSOR c
IS
SELECT DISTINCT
HOLIDAY_OVERTIME, PAF.ASSIGNMENT_ID, paf.assignment_number
FROM xxtest_emp_attendance mea, per_assignments_f paf
WHERE paf.person_id = mea.employee_id
AND MEA.HOLIDAY_OVERTIME ISNOTNULL;
BEGIN
SELECT TO_CHAR(SYSDATE)INTO v_batch_id FROM DUAL;
FOR i IN c
LOOP
pay_batch_element_entry_api.create_batch_header (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_name =>‘M_HOLI_OVERTIME’|| v_batch_id,
p_batch_status =>‘U’,— unprocessed
p_business_group_id =>202,–fnd_global.per_business_group_id,
8/17/2019 HRMS Payroll in Oracle Apps
64/71
–202, 101 — business_group_id
p_action_if_exists =>‘I’,
— i = create new entry, u = update entry
p_batch_reference =>NULL,
–g_user_name||’ – ‘||to_char(sysdate,’ddmonyyyy’)
p_batch_source =>NULL,–name of the batch
p_comments =>NULL,
p_date_effective_changes =>NULL,
p_purge_after_transfer =>‘N’,
p_reject_if_future_changes =>‘Y’,
p_batch_id => x_batch_id,
p_object_version_number => g_ver_no,
p_reject_if_results_exists =>‘Y’,
p_purge_after_rollback =>‘N’,
p_batch_type =>NULL,
p_reject_entry_not_removed =>‘N’,
p_rollback_entry_updates =>‘N’
);
DBMS_OUTPUT.put_line(
‘v_batch_id’ || v_batch_id || x_batch_id || g_ver_no
);
pay_batch_element_entry_api.create_batch_line (
p_validate =>FALSE,
8/17/2019 HRMS Payroll in Oracle Apps
65/71
p_session_date =>SYSDATE,
p_batch_id => x_batch_id,
p_assignment_id => i.ASSIGNMENT_ID,
p_assignment_number => i.assignment_number,
p_batch_sequence =>NULL,
p_effective_date =>SYSDATE,–l_effective_date
p_element_type_id =>50749,–Earnings paid for Holiday-straight
time)
p_entry_type =>‘E’,
p_value_1 => i.HOLIDAY_OVERTIME,
–holiday over time hrs–
p_value_2 =>15,–Assuming Value (Values to be noted……)
–regular over time hrs– ,
p_batch_line_id => x_batch_line_id,
p_object_version_number => x_ver_no_1
);
ENDLOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
dbms_output.put_line(dbms_utility.format_error_backtrace);
8/17/2019 HRMS Payroll in Oracle Apps
66/71
WAR_V :=‘ERROR OCCURED’||sqlERRM;
END;
————————————————————————————————————————————————————————————————
————————————————————
PROCEDURE MOISS_WORKSHOP_BONUS_PAYROLL (BUISNESS_G_V NUMBER,
START_DATE_V VARCHAR2,
END_DATE_V VARCHAR2,
WAR_V OUTVARCHAR2)
IS
v_batch_id VARCHAR2(60);
x_batch_id number;
x_ver_no number;
x_batch_line_id number;
g_ver_no number;
x_ver_no_1 number;
CURSOR c
IS
SELECT DISTINCT
WORKSHOP_BONUS, PAF.ASSIGNMENT_ID, paf.assignment_number
FROM xxtest_emp_attendance mea, per_assignments_f paf
WHERE paf.person_id = mea.employee_id
8/17/2019 HRMS Payroll in Oracle Apps
67/71
AND MEA.WORKSHOP_BONUS ISNOTNULL;
BEGIN
SELECTTO_CHAR(SYSDATE)INTO v_batch_id FROM DUAL;
FOR i IN c
LOOP
pay_batch_element_entry_api.create_batch_header (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_name =>‘WORKSHOP_BONUS’ || v_batch_id,
p_batch_status =>‘U’,— unprocessed
p_business_group_id =>202,–fnd_global.per_business_group_id,
–202, 101 — business_group_id
p_action_if_exists =>‘I’,
— i = create new entry, u = update entry
p_batch_reference =>NULL,
–g_user_name||’ – ‘||to_char(sysdate,’ddmonyyyy’)
p_batch_source =>NULL,–name of the batch
p_comments =>NULL,
p_date_effective_changes =>NULL,
p_purge_after_transfer =>‘N’,
8/17/2019 HRMS Payroll in Oracle Apps
68/71
p_reject_if_future_changes =>‘Y’,
p_batch_id => x_batch_id,
p_object_version_number => g_ver_no,
p_reject_if_results_exists =>‘Y’,
p_purge_after_rollback =>‘N’,
p_batch_type =>NULL,
p_reject_entry_not_removed =>‘N’,
p_rollback_entry_updates =>‘N’
);
DBMS_OUTPUT.put_line(
‘v_batch_id’ || v_batch_id || x_batch_id || g_ver_no
);
pay_batch_element_entry_api.create_batch_line (
p_validate =>FALSE,
p_session_date =>SYSDATE,
p_batch_id => x_batch_id,
p_assignment_id => i.ASSIGNMENT_ID,
p_assignment_number => i.assignment_number,
p_batch_sequence =>NULL,
p_effective_date =>SYSDATE,–l_effective_date
p_element_type_id =>51661,–Production Bonus
p_entry_type =>‘E’,
p_value_1 => i.WORKSHOP_BONUS,
8/17/2019 HRMS Payroll in Oracle Apps
69/71
–holiday over time hrs–
p_value_2 =>15,–Assuming Value (Values to be noted……)
–regular over time hrs– ,
p_batch_line_id => x_batch_line_id,
p_object_version_number => x_ver_no_1
);
DBMS_OUTPUT.put_line(
‘v_batch_id’ || x_batch_line_id || x_ver_no_1 );
ENDLOOP;
COMMIT;
EXCEPTION
WHENOTHERS
THEN
dbms_output.put_line(dbms_utility.format_error_backtrace);
WAR_V :=‘ERROR OCCURED’||sqlERRM;
END;
END MOISS_PAYROLL_INT_API;
Program E0ecution
DECLARE
8/17/2019 HRMS Payroll in Oracle Apps
70/71
VAR_V VARCHAR2(500);
begin
–MOISS_PAYROLL_INT_API.MOISS_ABSENCE_PAYROLL(202, TO_DATE
(’01/02/2014 , ‘mm/dd/yyyy’), TO_DATE (’01/02/2014 ,′ ′‘mm/dd/yyyy’), VAR_V )
–MOISS_PAYROLL_INT_API.MOISS_WORKDAY_OVERTIME_PAYROLL(202,
TO_DATE (’01/02/2012 , ‘mm/dd/yyyy’), TO_DATE (’01/02/2012 ,′ ′
‘mm/dd/yyyy’), VAR_V );
MOISS_PAYROLL_INT_API.MOISS_BONUS_OVERTIME_ALL_E(’01-MAR-
2012′,’31-MAR-2012′);
MOISS_PAYROLL_INT_API.MOISS_ABSENCE_PAYROLL(29,’01-MAR-2012′,’31-
MAR-2012′);
–MOISS_PAYROLL_INT_API.MOISS_WORKSHOP_BONUS_PAYROLL(202, TO_DATE
(’01/02/2012 , ‘mm/dd/yyyy’), TO_DATE (’01/02/2012 ,′ ′
‘mm/dd/yyyy’), VAR_V );
dbms_output.put_line(‘We have this Error’||var_v);
end;
&ote1
To run as P0S>0 procedure it there is no need for ErrBuf and retcode elements. But they are
mandatory while using in the oracle apps.
3ow we have to deploy this procedure. 1ust get the last post which is deployment.
HRMS to GL Mapping Issue
) got a weird )ssue from finance department that they were unable to get the payroll information.7hen ) chec-ed the costing report in HRMS everything seemed fine. Then on seeing the
bac-end information ) was able to see that 0edger), and (hart of +ccounts ), was missing from
the '0@)3TER"+(E table.
) chec-ed the '0 Mapping there the mapping was not there.
8/17/2019 HRMS Payroll in Oracle Apps
71/71
3avigation
'lobal HRMS Manager :C Payroll :C '0 "le#field Map.
3ow after the mapping is done )ssue is resolved.
Getting ode ombination I! using "nd#$e%#e%t&get#ccid
Sometimes for Retrival of the (ode (ombinations the [email protected]@[email protected]/ will not be enough. 7e need a function to get the value so at that time we can use [email protected]#@e#[email protected]
to get the (ode (ombination.
select [email protected]#@e#[email protected]
DS>0'0A* :+pplication Short 3ame
D'0A* :[email protected]#@code