HRMS Payroll in Oracle Apps

download HRMS Payroll in Oracle Apps

of 71

Transcript of HRMS Payroll in Oracle Apps

  • 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

    hr@person@absence@api +P) inserts absence data bul- to the table and

     pay@batch@element@entry@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

     pay@batch@element@entry@api 4pay@batch@headers* pay@batch@lines*

     pay@batch@control@totals

    hr@person@absence@api

    Flow

    P+!@B+T(H@E0EME3T@E3TR!@+P)

     pay@batch@element@entry@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 pay@batch@element@entry@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 viewgl@code@combinations@-fv/ will not be enough. 7e need a function to get the value so at that time we can use fnd@fle#@e#t.get@ccid

    to get the (ode (ombination.

    select fnd@fle#@e#t.get@ccid

    DS>0'0A* :+pplication Short 3ame

    D'0A* :-ey@fle#@code