Professional Documents
Culture Documents
Time & Labor
Time & Labor
Created By
Date
Version
Ritu Shukla
22-Feb-2007
1.0
Introduction
This document explains the full set up of Oracle Time and Labor that is required
to create a Time card and process it all the way through GL. It also explains the Time
store Deposit APIs. Time store deposit API is a technical way of creating the timecard.
Since these employees get paid on the basis of number of hours they worked, we define
the salary basis for these employees as Hourly Basis
3. Create Link
Create Link for the element created above so that this element becomes available
for the payroll processing.
Responsibility: US Super HRMS
Navigation: Total compensation -> Basic -> link
4. Create Employee
Create the employee with the salary basis as Hourly Basis
Define supervisor for this employee
- Define Payroll
- Define GRE under Statuory Tab
Element2: Overtime
Responsibility: US super HRMS
Navigation: Total Compensation-> Basic -> Earnings
Element3: Premium Hours (Something that employee gets above overtime work)
Responsibility: US super HRMS
Navigation: Total Compensation-> Basic -> Earnings
Premium: Multiple- 2
8. Assigning OTL Responsibility
Assigning OTL Responsibility to the User to do further setup for OTL:
Define a security profile
For any timecard to work and function properly there are 9 mandatory preference
attributes that should be defined.
15.1 Creating Alternate Names
Right click on the new preference created and select new.
Enter the name as Alternate names.
Select the seeded preference as Self Service Timecard Alternate Name set Defined for a
user
15.6 Layout
Preference: Self service Timecard, review and confirmation Layout Page
Value: Timecard Layout: Payroll Timecard Layout
Review Layout : Payroll Review Layout
Confirmation layout: payroll confirmation Layout
Notification Layout: patrol notification Layout
15.10
No of empty rows
Approved
24. After transferring the batch entries get created in payroll and HRMS both:
Entries in HRMS:
Absence Details: Employee-> Others->Absence
25. Generating SOE(Statement of Earning) for the period time card is created
Run quick pay to generate SOE(Statement of Earning) for the period u created your time
card.
Navigation: Employee -> Assignment-> Others-> Quickpay
29. Prepayment
Once the payroll entries are created, payment has to be done. There are various
modes of payment like check, cash etc. So, before doing the payment we group the
employees on the basis of the payment method attached to them. This is done by running
the process Prepayments.
View the detail for each employee from payroll run result
The output of this process will generate the check for each employee whose payment
method was selected as check.
31. 3rd party Check Payment.
If the payment is done by some third party, then run the check writer process with
the payment method as 3rd party payment method instead of check.
An output file is generated as a result of this process. This output file is used to
directly credit the amounts in the account numbers specified in the report.
Above process generates Summary or detailed report based on the Totals Only
Parameter specified above. If parameter is set to yes it generates summary report and if
it is set to No then it generates Detail Report.
Summary Report Output
38. Costing
Costing Information for the payroll entries are defined while creating the link of
element. We define credit and debit account.
40. Transfer to GL
Now the entries can be transferred from payroll to GL by running the transfer to
GL process.
Log of Transfer to GL
----------------------------------------------------------
----------------------------------------------------------
-- declare the PL/SQL Table that will hold the complete timecard (all the BBs)
l_tbl_timecard_info hxc_self_service_time_deposit.timecard_info;
-- declare the PL/SQL Table that will hold all the attributes
l_tbl_attributes_info hxc_self_service_time_deposit.app_attributes_info;
-- declare the PL/SQL Table that will hold the messages returned by the API
l_tbl_messages hxc_self_service_time_deposit.message_table;
-- person ID that this TC belongs to, Replace with your own
l_person_id per_all_people_f.person_id%TYPE := 9389;
-- Replace with your own IDs
l_task_id VARCHAR2 (3) := '221';
-- (l_project_id is NOT the same as task id, they just happen to have the
-- same ID on our database)
l_project_id VARCHAR2 (3) := '221';
-- Replace with your own values
l_expenditure_type VARCHAR2 (15) := 'Professional';
l_ot_expenditure_type VARCHAR2 (15) := 'Overtime';
l_system_linkage_id VARCHAR2 (15) := 'ST';
l_ot_system_linkage_id VARCHAR2 (15) := 'OT';
-- Will hold TC_ID, returned by the deposit process
l_new_timecard_id NUMBER;
-- Will hold TC ovn, returned by the deposit process
l_new_timecard_ovn NUMBER;
l_message fnd_new_messages.message_text%TYPE;
l_start_time DATE
First initialize your session, this needs to be done for internal reasons so
the TimeStore knows who is trying to deposit the information. When you log
into SS, the same is done for you by the framework, here however we have to do
it manually.
---------------------------------------------------------hxc_timestore_deposit.create_timecard_bb (
p_start_time=> l_start_time,
p_stop_time=> l_stop_time,
p_resource_id=> l_person_id,
p_comment_text=> 'Created using API: Weekly Project TC',
p_app_blocks=> l_tbl_timecard_info,
p_time_building_block_id=> l_tc_bb_id
);
-- Now we create the DAY BB, 7 in total, and since they are all the same we
-- will loop 7 times
FOR i_day IN 0 .. 6
LOOP
hxc_timestore_deposit.create_day_bb (
p_day => TRUNC (l_start_time)
+ i_day,
p_parent_building_block_id=> l_tc_bb_id, -- returned by create_timecard_bb
p_comment_text=> 'Created using API',
p_app_blocks=> l_tbl_timecard_info,
p_time_building_block_id=> l_day_bb_id
);
-- The next call would also work but we choose to use the first one
-- since we know the TIMECARD's Id. If you do not know the ID you should
The next call would also work but we choose to use the first one
since we know the DAY's Id. If you do not know the ID you should
use this next call commented out here. In fact we use it ourselves
later to add the overtime.
/* hxc_timestore_deposit.create_time_entry (
p_measure=> 8,
p_day => TRUNC (l_start_time)
+ i_day,
p_resource_id=> l_person_id,
p_comment_text=> 'Created using API: NT',
p_app_blocks=> l_tbl_timecard_info,
p_app_attributes=> l_tbl_attributes_info,
p_time_building_block_id=> l_detail_bb_id
); */
-- We can also attach the attributes to every BB that represent
-- 'normal' work hours
-- Attribute1
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr1,
p_attribute_value=> l_task_id,
p_app_attributes=> l_tbl_attributes_info
);
-- Attribute2
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr2,
p_attribute_value=> l_project_id,
p_app_attributes=> l_tbl_attributes_info
);
-- Attribute3
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr3,
p_attribute_value=> l_expenditure_type,
p_app_attributes=> l_tbl_attributes_info
);
-- Attribute4
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr4,
p_attribute_value=> 'Expenditure Comment created by API',
p_app_attributes=> l_tbl_attributes_info
);
-- Attribute5
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr5,
p_attribute_value=> l_system_linkage_id,
p_app_attributes=> l_tbl_attributes_info
);
END IF; -- Only for weekdays
END LOOP; -- End creating normal working days + time
-----
hxc_timestore_deposit.create_time_entry (
p_measure=> 1,
p_day => TRUNC (l_start_time)
+ 1,
p_resource_id=> l_person_id,
p_comment_text=> 'Created using API: OT',
p_app_blocks=> l_tbl_timecard_info,
p_app_attributes=> l_tbl_attributes_info,
p_time_building_block_id=> l_detail_bb_id
);
-- Attribute1
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr1,
p_attribute_value=> l_task_id,
p_app_attributes=> l_tbl_attributes_info
);
-- Attribute2
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr2,
p_attribute_value=> l_project_id,
p_app_attributes=> l_tbl_attributes_info
);
-- Attribute3
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr3,
p_attribute_value=> l_ot_expenditure_type,
p_app_attributes=> l_tbl_attributes_info
);
-- Attribute4
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr4,
p_attribute_value=> 'Expenditure Comment created by API',
p_app_attributes=> l_tbl_attributes_info
);
-- Attribute5
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr5,
p_attribute_value=> l_ot_system_linkage_id,
p_app_attributes=> l_tbl_attributes_info
);
-- Wednesday
hxc_timestore_deposit.create_time_entry (
p_measure=> 2,
p_day => TRUNC (l_start_time)
+ 2,
p_resource_id=> l_person_id,
p_comment_text=> 'Created using API: OT',
p_app_blocks=> l_tbl_timecard_info,
p_app_attributes=> l_tbl_attributes_info,
p_time_building_block_id=> l_detail_bb_id
);
-- Attribute1
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr1,
p_attribute_value=> l_task_id,
p_app_attributes=> l_tbl_attributes_info
);
-- Attribute2
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr2,
p_attribute_value=> l_project_id,
p_app_attributes=> l_tbl_attributes_info
);
-- Attribute3
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr3,
p_attribute_value=> l_ot_expenditure_type,
p_app_attributes=> l_tbl_attributes_info
);
-- Attribute4
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr4,
p_attribute_value=> 'Expenditure Comment created by API',
p_app_attributes=> l_tbl_attributes_info
);
-- Attribute5
hxc_timestore_deposit.create_attribute (
p_building_block_id=> l_detail_bb_id,
p_attribute_name=> c_proj_attr5,
p_attribute_value=> l_ot_system_linkage_id,
p_app_attributes=> l_tbl_attributes_info
);
----------------------------------------------------------- Now we call the deposit process, passing in the PL/SQL tables we just
-- created and populated
hxc_timestore_deposit.execute_deposit_process (
p_validate=> FALSE,
p_app_blocks=> l_tbl_timecard_info,
p_app_attributes=> l_tbl_attributes_info,
p_messages=> l_tbl_messages,
p_mode=> 'SUBMIT',
p_deposit_process=> 'OTL Deposit Process',
p_timecard_id=> l_new_timecard_id,
p_timecard_ovn=> l_new_timecard_ovn
);
---------------------------------------------------------END;