Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DAY 1
About the Author
2
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 API’s. Time store deposit API is a
technical way of creating the timecard.
4
© 2009, Cognizant Technology Solutions. Confidential
SETUP for OTL: Processing payroll through OTL entries
Payroll processing of the workers that are getting daily wages, is done
through Time card entries from Time and Labor Responsibility.
5
© 2009, Cognizant Technology Solutions. Confidential
1. Define Recurring Element
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’
6
© 2009, Cognizant Technology Solutions. Confidential
2. Defining Salary Basis
7
© 2009, Cognizant Technology Solutions. Confidential
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
8
© 2009, Cognizant Technology Solutions. Confidential
4.Create Employee
9
© 2009, Cognizant Technology Solutions. Confidential
Define salary for this employee:
Remember to define the salary on hourly basis, annual salary will be calculated automatically.
In this case: 50 *2080 (Pay annualization factor defined while defining element) is the annual
salary
10
© 2009, Cognizant Technology Solutions. Confidential
5.Defining four non recurring elements
Time of the wage earners will be charged against these non recurring elements.
11
© 2009, Cognizant Technology Solutions. Confidential
Element1: Regular Hours
Responsibility: US Super HRMS
Navigation: Total Compensation-> Basic -> Earnings
12
© 2009, Cognizant Technology Solutions. Confidential
Element2: Overtime
Responsibility: US super HRMS
Navigation: Total Compensation-> Basic -> Earnings
13
© 2009, Cognizant Technology Solutions. Confidential
Element3: Premium Hours (Something that employee gets above overtime work)
Responsibility: US super HRMS
Navigation: Total Compensation-> Basic -> Earnings
14
© 2009, Cognizant Technology Solutions. Confidential
Element4: Hours not Worked
Responsibility: US super HRMS
Navigation: Total Compensation-> Basic -> Earnings
15
© 2009, Cognizant Technology Solutions. Confidential
6.Defining Absence Type:
Depending on the type of element, entries are passed to payroll or HRMS or Payroll and HRMS
both.
First three non recurring elements defined above are passed just to payroll.
‘Hours not worked’ is passed to both payroll and HRMS.
To see this in HRMS, we need to define absence type and attach this element to this absence
type.
16
© 2009, Cognizant Technology Solutions. Confidential
7. Create Link for non recurring element
Overtime: Multiple-1.5
Premium: Multiple- 2
17
© 2009, Cognizant Technology Solutions. Confidential
8. Assigning OTL Responsibility
18
© 2009, Cognizant Technology Solutions. Confidential
9.Defining Alternate Names
19
© 2009, Cognizant Technology Solutions. Confidential
20
© 2009, Cognizant Technology Solutions. Confidential
10.Recurring Periods
Number of days or columns appearing in the timecard screen are controlled by something
called as Recurring Period
21
© 2009, Cognizant Technology Solutions. Confidential
22
© 2009, Cognizant Technology Solutions. Confidential
11. Define approval periods:
23
© 2009, Cognizant Technology Solutions. Confidential
24
© 2009, Cognizant Technology Solutions. Confidential
12. Defining Time Entry Rules
By Mapping we control the mandatory fields. If time card is for payroll purpose we enter
mapping as ‘BEE Retrieval Process’. This is the standard process. We can also apply some
custom rules.
25
© 2009, Cognizant Technology Solutions. Confidential
Creating Custom Controlling Rules using Fast Formulas
Maximum Hours: Cannot work more than that (example cannot work more than 50 hours in
this case)
Reference Period: In a week type of recurring period there can be maximum two weeks in
which the duration can span.
26
© 2009, Cognizant Technology Solutions. Confidential
27
© 2009, Cognizant Technology Solutions. Confidential
13. Defining Time Entry Rule Groups
Time entry rule groups are defined to associate all the rules together and define the outcomes
of each rule if it is violated.
28
© 2009, Cognizant Technology Solutions. Confidential
14. Approval Style:
This defines in each application what would be the approval hierarchy. Who is going to
approve the time card of the employee.
In the Example below, in both the responsibilities HR and payroll, immediate supervisor will
approve the timecard.
Responsibility: US OTL Application Developer
Navigation: Approval -> Define Approval Style
29
© 2009, Cognizant Technology Solutions. Confidential
15. Creating Preference
After all the above things are defined, its now time to decide how the timecard will look like,
what all validations will be applied on the time card.
To do this we create Preferences and attach this preference to certain business group or
organization or may be the employee depending on the requirements.
Create Preference
30
© 2009, Cognizant Technology Solutions. Confidential
31
© 2009, Cognizant Technology Solutions. Confidential
For any timecard to work and function properly there are 9 mandatory preference attributes that should be defined.
32
© 2009, Cognizant Technology Solutions. Confidential
Now enter the preference values as alternate name defined above.
33
© 2009, Cognizant Technology Solutions. Confidential
15.2 Approval Periods
34
© 2009, Cognizant Technology Solutions. Confidential
15.3 Recurring Period
35
© 2009, Cognizant Technology Solutions. Confidential
15.4 Application set
36
© 2009, Cognizant Technology Solutions. Confidential
15.5 Time entry rule group
37
© 2009, Cognizant Technology Solutions. Confidential
15.6 Layout
38
© 2009, Cognizant Technology Solutions. Confidential
15.7 Approval Style
39
© 2009, Cognizant Technology Solutions. Confidential
15.8 Retrieval Group
Preference: Time Store Retrieval Rule Groups
Value: Human Resources and Payroll retrieval rule group
40
© 2009, Cognizant Technology Solutions. Confidential
15.9 Allow status edit
41
© 2009, Cognizant Technology Solutions. Confidential
15.10 No of empty rows
42
© 2009, Cognizant Technology Solutions. Confidential
16. Defining where all this preference will be used
43
© 2009, Cognizant Technology Solutions. Confidential
17. Look of the time card
44
© 2009, Cognizant Technology Solutions. Confidential
18. Write formula
To calculate regular hours, premium hours, overtime, work not worked amount on the basis of
annual salary
45
© 2009, Cognizant Technology Solutions. Confidential
DEFALULT FOR ASG_HOURLY_SALARY IS 0
DEFAULT FOR Hours is 0
default FOR Multiple IS 0
IF Multiple = 0 then
(
PAY=ASG_HOURLY_SALARY* Hours
)
ELSE
(
PAY=ASG_HOURLY_SALARY* Hours*Multiple
)
RETURN PAY
46
© 2009, Cognizant Technology Solutions. Confidential
19. Formula result rule
47
© 2009, Cognizant Technology Solutions. Confidential
19. Creating Time Card
48
© 2009, Cognizant Technology Solutions. Confidential
49
© 2009, Cognizant Technology Solutions. Confidential
50
© 2009, Cognizant Technology Solutions. Confidential
20. Approval notification
Since approval rule is set as HR Supervisor , Notification will go to the immediate supervisor
for the timecard approval.
51
© 2009, Cognizant Technology Solutions. Confidential
Approved
52
© 2009, Cognizant Technology Solutions. Confidential
21. Sending Approved timecard to Payroll
This is done by running the process: Process: Transfer time from OTL to BEE
Responsibility: US OTL Application Developer
53
© 2009, Cognizant Technology Solutions. Confidential
22. Batch Created
As a result of the above process a batch gets created with the name supplied for transaction
code in the above process.
54
© 2009, Cognizant Technology Solutions. Confidential
23. Transfer the Timecard
Still the timecard entry has not reached to payroll, but they are sitting in the interface(batch)
table.
To push these entries to HRMS, in the batch Element Entry screen, click process to process the
records.
Process-> Transfer
55
© 2009, Cognizant Technology Solutions. Confidential
24. After transferring the batch entries get created in payroll and
HRMS both:
Entries in HRMS:
Absence Details: Employee-> Others->Absence
56
© 2009, Cognizant Technology Solutions. Confidential
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
57
© 2009, Cognizant Technology Solutions. Confidential
26. Viewing SOE
58
© 2009, Cognizant Technology Solutions. Confidential
27. Payroll Processing: Multiple Employees
Above we processed just one employee by running the quick pay run. In practical scenario we
have to process payroll for n number of employees. For this instead of processing each
employee separately we run the payroll process that processes multiple employees in one go.
59
© 2009, Cognizant Technology Solutions. Confidential
Payroll process spawns further sub processes
60
© 2009, Cognizant Technology Solutions. Confidential
28. View the Log of payroll process
61
© 2009, Cognizant Technology Solutions. Confidential
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.
62
© 2009, Cognizant Technology Solutions. Confidential
View the detail for each employee from payroll run result
63
© 2009, Cognizant Technology Solutions. Confidential
64
© 2009, Cognizant Technology Solutions. Confidential
30. Check Writer Process
There are various modes of payment. We have different processes defined for doing different
types of payments.
To do the payment by check we need to run the process called Check Writer.
65
© 2009, Cognizant Technology Solutions. Confidential
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.
66
© 2009, Cognizant Technology Solutions. Confidential
Checks will be generated in the output file of this process.
67
© 2009, Cognizant Technology Solutions. Confidential
32. NACHA: Payment method
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.
68
© 2009, Cognizant Technology Solutions. Confidential
33. NACHA: Flat File Output
69
© 2009, Cognizant Technology Solutions. Confidential
34. Process to generate the covering letter.
70
© 2009, Cognizant Technology Solutions. Confidential
Summary Report Output
71
© 2009, Cognizant Technology Solutions. Confidential
Detail Report Output
72
© 2009, Cognizant Technology Solutions. Confidential
35. Run Deposit Process to generate SOE
Unlike check writer process NACHA report does not generate SOE. In order to generate that
we run another process called as Deposit Advice.
73
© 2009, Cognizant Technology Solutions. Confidential
Report Output: SOE
74
© 2009, Cognizant Technology Solutions. Confidential
36. Associating custom set of book to GL Responsibility
By this point all the processing has been done at the payroll side. Now it is required to transfer
the payroll entries to General Ledger.
For this we create a Set of book. Create a custom responsibility which is derived from the
General Ledger. To attach SOB to GL responsibility, we assign custom SOB created to the profile
option ‘GL set of books’ at responsibility level.
75
© 2009, Cognizant Technology Solutions. Confidential
37. Open the GL period.
In order to transfer the payroll entries to GL, We need to open the GL periods in which payroll
transactions are present.
76
© 2009, Cognizant Technology Solutions. Confidential
38. Costing
Costing Information for the payroll entries are defined while creating the link of element. We
define credit and debit account.
77
© 2009, Cognizant Technology Solutions. Confidential
Report generated after costing
78
© 2009, Cognizant Technology Solutions. Confidential
29. Costing Reports
Costing details can be viewed by running the costing Summary and detail reports.
79
© 2009, Cognizant Technology Solutions. Confidential
Costing Summary Report Output
80
© 2009, Cognizant Technology Solutions. Confidential
81
© 2009, Cognizant Technology Solutions. Confidential
Costing Detail Report
82
© 2009, Cognizant Technology Solutions. Confidential
Costing Detail Report Output
83
© 2009, Cognizant Technology Solutions. Confidential
84
© 2009, Cognizant Technology Solutions. Confidential
40. Transfer to GL
Now the entries can be transferred from payroll to GL by running the transfer to GL process.
85
© 2009, Cognizant Technology Solutions. Confidential
Log of Transfer to GL
86
© 2009, Cognizant Technology Solutions. Confidential
41. Journal Import from GL
87
© 2009, Cognizant Technology Solutions. Confidential
Output of Journal Import
88
© 2009, Cognizant Technology Solutions. Confidential
42. Archival Process
Run Archival Process to view the pay slip in the self service screen.
Process name; External Process archival
89
© 2009, Cognizant Technology Solutions. Confidential
43. Viewing Pay slip in Self service screen:
90
© 2009, Cognizant Technology Solutions. Confidential
91
© 2009, Cognizant Technology Solutions. Confidential
Time Store Deposit API
DECLARE
----------------------------------------------------------
-- Constant declarations
----------------------------------------------------------
-- This is the appl_id for OTL, do not change
c_otl_appl_id CONSTANT NUMBER (3) := 809;
c_proj_attr1 CONSTANT VARCHAR2 (7) := 'Task_Id';
c_proj_attr2 CONSTANT VARCHAR2 (10) := 'Project_Id';
c_proj_attr3 CONSTANT VARCHAR2 (16) := 'Expenditure_Type';
c_proj_attr4 CONSTANT VARCHAR2 (19) := 'Expenditure_Comment';
c_proj_attr5 CONSTANT VARCHAR2 (23) := 'SYSTEM_LINKAGE_FUNCTION';
----------------------------------------------------------
-- Variable declarations
----------------------------------------------------------
-- 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;
92
© 2009, Cognizant Technology Solutions. Confidential
-- 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';
l_message fnd_new_messages.message_text%TYPE;
l_start_time DATE
:= fnd_date.canonical_to_date ('2002/11/11 00:00:00');
93
© 2009, Cognizant Technology Solutions. Confidential
l_stop_time DATE
:= fnd_date.canonical_to_date ('2002/11/17 23:59:59');
l_tc_bb_id hxc_time_building_blocks.time_building_block_id%TYPE;
l_day_bb_id hxc_time_building_blocks.time_building_block_id%TYPE;
l_detail_bb_id hxc_time_building_blocks.time_building_block_id%TYPE;
l_time_attribute_id hxc_time_attributes.time_attribute_id%TYPE;
BEGIN
-- 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.
94
© 2009, Cognizant Technology Solutions. Confidential
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
-- use this next call commented out here.
95
© 2009, Cognizant Technology Solutions. Confidential
/* hxc_timestore_deposit.create_day_bb (
p_day => TRUNC (l_start_time)
+ i_day,
p_resource_id=> l_person_id,
p_comment_text=> 'Created using API',
p_app_blocks=> l_tbl_timecard_info,
p_time_building_block_id=> l_day_bb_id
); */
-- We can attach the DETAIL BB for every DAY BB that represents 'normal'
-- work hours as well here as they are all the same
-- We only need to do this for weekdays though
IF i_day < 5
THEN
hxc_timestore_deposit.create_detail_bb (
p_type=> 'MEASURE',
p_measure=> 8,
p_parent_building_block_id=> l_day_bb_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
);
-- 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.
96
© 2009, Cognizant Technology Solutions. Confidential
/* 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
); */
-- 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
);
97
© 2009, Cognizant Technology Solutions. Confidential
-- 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
);
98
© 2009, Cognizant Technology Solutions. Confidential
-- And now we add the Overtime to Tuesday and Wednesday
-- We have to use create_time_entry here because we do not have the ID
-- for the Wednesday TBB anymore, using create_time_entry we do not need it
-- Tuesday
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
);
99
© 2009, Cognizant Technology Solutions. Confidential
-- 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
);
100
© 2009, Cognizant Technology Solutions. Confidential
-- 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
);
101
© 2009, Cognizant Technology Solutions. Confidential
-- 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
);
----------------------------------------------------------
-- END OF PART 1: POPULATE TABLES --
----------------------------------------------------------
102
© 2009, Cognizant Technology Solutions. Confidential
----------------------------------------------------------
-- PART 2: DEPOSIT TIMECARD --
----------------------------------------------------------
-- 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 OF PART 2: DEPOSIT TIMECARD --
----------------------------------------------------------
END;
103
© 2009, Cognizant Technology Solutions. Confidential
Thank You
• Feedbacks
• Suggestions