[{TableOfContents }]
\\
Generation of batches of pay transactions is done for:
* a specified payroll;
* a set of employees within the payroll that match the report parameters;
* a specified pay period or a date range within the specified pay period;
* or a specified pay category.

The Generate Pay Transactions ([UPTG]) form is used to create pay transactions for a selected number of employees based on their work rule definition.

The Enter Pay Transactions ([IPTR]) form is used to modify transactions already generated and to add new transactions with a minimum of data entry.

The Process Pay Transactions ([UPTR]) form is used to create batches, pay headers, and pay lines from transactions generated or entered though [IPTR]. 

All transaction generation is based on work rules previously set up.

All HR changes that will affect the current payroll MUST be made prior to [UPTG].

Generated pay transactions may be batched by department, department batch code, authorization area, location, or payroll (all in a single batch).

Generation is not done for “completed” or “cancelled” assignments.

Pay Type must be identified as “Salary” or “Hourly” - no generation is done for “Commission”.


Prior leaves will not be processed by [UPTG]. The [UPPAL] process must be run to pick up prior leaves. The prior leave date prompt has been removed from the [UPTG] program.

The 'Allow Duplicates' parameter has been removed from [UPTG]. The [UPTG] program has been updated to now process in the following manner:
* For Salary, if already exists, will NOT generate again (regardless of the date it was already generated for)
* For Time, if Same Day/Same Time Code/Same Assignment - will NOT generate
* For Time, if Same Day/No Time Code/Same Assignment - will NOT generate
* Will NEVER generate Holidays more than once
* Will NEVER generate LEAVE records more than once


In the [UPTG] run, the 'Bypassed leave line' message will appear only for employee who have leave on non-scheduled day.

Multiple runs of [UPTG] are allowed including runs for time only or salary only and for the purpose of picking up new hires.

New parameter added to [UPTG] 'Rate Method for Salary'. This is an option on [UPTG] for salary generation to allow clients to choose which way they want to compute the hourly rate that will be used for special situations. A special situation may be an employee starts or terminates part way through the pay period or has a pay increase part way through the pay period and
their salary needs to be calculated. The options available for the parameter 'Rate Method for Salary' are:
* Standard Hours (default value if not selected)
** Compute the hourly rate from Annualized Salary: (Hourly Rate = Annualized Salary / (Std hours/wk * 52)
** Using this method, employees would always have the same hourly rate no matter what pay period they are in. This method is not very precise.
* Scheduled Hours:
** Compute the hourly rate from the Pay Period:(Hourly Rate = Pay Period Salary * (Hours worked in PP/Scheduled Hours in PP)
** Using this method, the rate would vary depending on the month they are in and the scheduled hours. This method is extremely accurate.
----
!!Daily Time Generation
*If the [Time Generation Rule|TIME_GENERATION_RULE] is “By Day with Time” or “By Day w/o Time” the generation of time is done by day. This is referred to as the “qualifying time frame”. The days that will be generated will be:
**within the pay period
**within the from/to date range specified,
**within the assignment start and end dates,
**within the employment hire and termination dates.

*Under normal circumstances, transactions are not created if they already exist. Duplicates can be created with the Allow Duplicates option in the Duplication field.

*If there is no work rule on the assignment, no time generation is done.

*If specified on the Work Rule ([IDWR]) form, the work calendar and holiday calendar are used to determine the rules for each day.

*If there is no work calendar, the program assumes a normal work week - Mon.-Fri workdays, Sat and Sun off.

*Generate each day within the qualifying time frame as follows: 
**If a time transaction already exists for the day, nothing is generated and a message is given.
**If the day is a “day off”, nothing is generated. 
**Otherwise, if for the work rule, the Generate Holidays toggle is ON ([IDWR] - Status Rules tab), a holiday calendar has been specified ([IDWR] - Details tab) and the day is a identified as a holiday with the Generate Time toggle ON ([IDHC]), the system:
***Uses the Leave Time Code holiday calendar
***If [Hours Per Day|HOURS_PER_DAY] is specified ([IDHC] for that holiday), uses those hours. Otherwise, derives the hours per day from the [standard hours|STD_HOURS_PER_DAY] on [IDWR] or from the Work Calendar.
***If the employee’s FTE < 1, the hours per day will not exceed the employee’s hours per day.
**Otherwise, if there are leave lines/planned leaves ([IAAL]) for the day:
***Uses the leave line details Time Code
***Prorates the Overall Time ([IAAL]) by the work days between the leave start and end dates (respects the employee’s schedule and standard hours).
***If the employee’s FTE < 1, the hours per day will not exceed the employee’s hours per day.
**Otherwise, if the Employment Status type is “not active” (as defined by the Status Type on the Employment Status ([IDES])):
***Uses the Regular Time Code work rule (from the Status Rules tab), for the employment status that matches that of the employee.  The status rules may be defined by employment status, allowing different time codes to be generated for employees on different types of leave.
***Derives the hours per day from the Std Hours for MON to FRI
***If the employee’s FTE < 1, the hours per day will not exceed the employees hours per day
**Otherwise, if the Employment Status type is “active”:
***Uses the Work Calendar time code or the Work Rule Regular time code
***Derives the hours per day from the Work Calendar hours or the Std Hours
***If the employee’s FTE < 1, the hours per day will not exceed the employees hours per day
***If the [Time Generation Rule|TIME_GENERATION_RULE] is “without time”, the time code will be generated, but the hours will be NULL
----
!!Weekly/Period Time Generation
If the [Time Generation Rule|TIME_GENERATION_RULE] is “By Week with Time”, “By Week w/o Time”, “By Period with Time” or “By Period w/o Time”, summary pay transactions will be created by week or pay period with the following exceptions:
* If assignment details have been split during the period, will cause more than one transaction to be generated, so that the proper wage rate, position, distribution and status information can be stored on the pay transaction records.

* If a fiscal accounting cutoff date exists in the period, all dollar amounts arising from the time transactions will be posted to the appropriate accounting period.
----
!!Salary Generation
If a [Salary $ Time Code|DTC_ID_SALARY] is specified, salary earnings will be generated on the last day of the qualifying time frame with the following exceptions:
* If assignment details have been split during the period, will cause more than one transaction to be generated, so that the proper wage rate, position, distribution and status information can be stored on the pay transaction records.

* If a fiscal accounting cutoff date exists in the period, all dollar amounts arising from the time transactions will be posted to the appropriate accounting period.

* If [FLSA|FLSA] (Fair Labor Standard Act – USA only) rules have been defined for the group, a salary dollar amount will be generated to coincide with [FLSA|FLSA] periods, and will fall on the last day of the [FLSA|FLSA] period, or the last day of the week/pay period, whichever is the greater date.

* If the Group ([IDGR])[Pay Type|PAY_TYPE] is “Hourly”, no salary dollar amount will be generated since the wages will be derived entirely from the time generated (based on Pay Component Pay Details).

* If the Group ([IDGR]) [Contract Type|CONTRACT_TYPE] is “$ Paid as Earned”, no salary dollar amount will be generated since the wages will be derived entirely from the time generated (based on Pay Component Pay Details)

*If the [Pay Type|PAY_TYPE] is “Salary” and the [Contract Type|CONTRACT_TYPE] is “Null”, counts the # eligible days in the qualifying period, excluding “off” days, generated holidays, leave days. \\''Salary $ = Pay Period Wage x (# eligible days / # normal working days in the qualifying period)''

*If the [Contract Type|CONTRACT_TYPE] is “$ Prorated Over Term”, count the # eligible days in the qualifying period, excluding “off” days, generated holidays, leave days.

* If # Eligible Days >= # Contract Days Remaining, \\''Salary $ = Contract Limit - CT $ Paid'' \\Otherwise, \\''Salary $ = (Contract Limit - CT $ Paid) x (# Eligible Days / # Days Remaining)''

* If the [Contract Type|CONTRACT_TYPE] is “n Fixed Payments” and if “n” payments have not yet been made \\''Salary $ = Contract Limit - CT $ Paid) / # Periods Remaining''

* If the [Contract Type|CONTRACT_TYPE] is “n Payments With Bank” and if “n” payments have not yet been made, if the Assignment End Date has been passed or the “nth” payment is being made, \\''Salary $ = (Contract Bank) / # Periods Remaining'' \\Otherwise, \\''Salary $ = (Contract Limit - CT $ Paid) / # Periods Remaining''

When UPTG is requested to generate 'SALARY' in addition to 'HOURS' the FTE is not considered when computing the Period Earnings. UPTG looks at either the actual Work Calendar or Standard Hours depending on the method selected in the 'Rate Method for Salary' Report Parameter. 

Once UPTG has the 'Actual' hours worked, the salary is calculated by taking their Full Time Hourly wage and multiplying it be the hours worked. 

For Part Time employees, the scheduled or standard hours should be less than that worked by a Full time Employee. 


----
!!Rate and Shift Premium Generation
The rate on each pay transaction defaults to the rate defined on the assignment detail that is effective on the transaction date.
----
!!Leave Bank Balance Checking
After all transactions for the qualifying time frame have been generated, a second pass is done to handle leaves that are governed by [leave policies|LEAVE POLICIES].

The system checks if the employee is able to take time with the time code, by checking the Leave Schedule ([IALS]). If a schedule exists that matches the employee’s person code, group, unit, or entity, the system will ensure that employees have enough time available in their bank, taking into consideration all leaves taken to date.

Leave bank balance checking is done in accordance with the [leave policies|LEAVE POLICIES].

If there is not enough time left in the bank and if leave cascade records exist on [IALP], the cascade banks are checked and additional time codes are generated as appropriate to cover the time.

If there is still not enough time and the [Time Warn Rule|TIME_WARNING_RULE] field on [IALP] indicates “Error, don’t allow”, the leave time is generated using the “LWOP Time Code” specified on the [policy|LEAVE POLICIES].

Exception messages are generated for all leave bank excesses.
----
!!Transactions

The pay transaction 'Schedule Time' field (on [IPTR]) will only be populated if the work rule 'Regular Time Code' on the work rule ([IDWR]) has the 'Adjust Scheduled Time' toggle (on [IDTC]) turned on.

Nothing will be done to force balance time of the 'Schedule Time' field if it is empty, even if other time codes have the 'Adjust Scheduled Time' toggle on.

If the 'Schedule Time' and a time code have the 'Adjust Scheduled Time' toggle on, the 'Regular Time Code' hours will be reduced by the time exception.
----

!!Regenerating the Timesheet Details

This will be done when assignment details change as follows:  

Triggers: 
# position is changed 
# job is changed 
# department is changed 
# work rule is changed 
# work calendar is changed 
# hours per day is changed 
# employment status is changed 
# FTE is changed 
# effective date is changed 
# effective record is deleted 

Rules: In general, regeneration occurs on any open timesheet for that EE with following exceptions: 
# if there are more than 5 open timesheet the none of the timesheet will be regenerated 
# if the timesheet is generated by assignment than we skip any open timesheet for other assignments  
# we regenerate only the open timesheets for the changed assignment 

The above process to rebuild the details will take place only the new preference [EAS CHNG REBLD T(System Preference)] is set to YES - see detail description on [IMPF], [SYSTEM PREFERENCE]


----
![Notes|Edit:Internal.GENERATE+PAY+TRANSACTIONS] 	
[{InsertPage page='Internal.GENERATE+PAY+TRANSACTIONS' default='Click to create a new notes page'}]