1. [Payroll Function] – Web – Calculation Issue with the Payroll Function SegmentedBaseSalary()
Latest Calculation Logic:
If an employee’s salary changes during the payroll month, the BasicSalary will be calculated using the function SegmentedBaseSalary(). In this case, the effective date will be counted under the number of days before the change. The latest logic now uses rounding (round half up) for the calculated value.
Example:
Employee A joined on December 11, 2024. After completing 90 days on February 11, 2025, their salary is adjusted from 30,000 to 35,000.
Therefore, for February payroll:
Basic Salary = 30,000 / 28 * 11 + 35,000 / 28 * 17 = 33,035.71
2. [Attendance Rules] – Web – New Toggle Option: “Disable clocking in/out outside of effective time period”
A new toggle option “Disable clocking in/out outside of effective time period” has been added to the attendance rule settings under location.
By default, this option is turned off. When enabled, employees will not be able to clock in outside of their scheduled clock-in time range. Additionally, if an employee has no assigned shift for the day, clock-in will also be disabled.
Example: If Employee A has no shift assigned for the day, and the corresponding location's “Disable clocking in/out outside of effective time period” settings is enabled, when the employee attempts to clock in, the system will display the message: “No Shifts information found, unable to clock in/ out”
Example: Employee B is scheduled to work from 01:00 to 05:00, with a 30-minute clock-out buffer. If the “Disable clocking in/out outside of effective time period” setting is enabled, and the employee attempts to clock in at 12:00, the system will display the message: “Please clock in/ out during the Effective Clock In Start Time and the Effective Clock Out End Time”
3. [Payroll Report] – Web – Payroll > Reports > Payroll Statement: New Column “Name (Display Name)” Added
4. [Autopay] – Web – [BOC] DAT (New) Autopay File Download Update
This update addresses issues where customers encountered errors when uploading BOC (Bank of China) Autopay files.
The fix ensures that the salary payment account field is padded with 7 spaces at the end, making the total file length 193 characters.
5. [Account Lock] - Web - When an account is locked (after more than 5 incorrect password attempts), a 401 response is returned, causing the app to keep loading indefinitely.
6. [Payroll Report] - Web - Payroll - In the Employee Payment History report export, add a new column for 'Name (Display Name)'.
7. [Clock In] – App – [Workstem One] GPS/Bluetooth Clock In Validation
GPS Clock In: Workstem One App check whether the user's device location permission is enabled. If location permission is not granted, the user will be prompted to enable it.
When the user attempts to clock in using GPS, if the app successfully retrieves an accurate location, the user can proceed with GPS clock in.
If the app is unable to retrieve an accurate location within 5 seconds, the user will receive a prompt indicating that the current location could not be determined and need to retry.
Bluetooth Clock In: Workstem One App check whether the user's device has Bluetooth and location permissions enabled. If not, the user will be prompted to enable both permissions.
If a Bluetooth device is detected and the device is not restricted to specific clock-in locations under the current tenant, and accurate location data is retrieved, the user can proceed with Bluetooth clock in.
If a Bluetooth device is detected and not restricted, but the app fails to retrieve accurate location data within 5 seconds, the user will be prompted that location retrieval failed and needs to retry.
Additional Case – 'Not prioritized using the Fused Location of Google Play Services' disabled in clock-in settings:
If this setting is turned off and the app times out while retrieving the GPS location, it will further check for Bluetooth data:
If Bluetooth is connected, the app will proceed with Bluetooth clock in.
If neither Bluetooth nor GPS data is available, the clock-in operation cannot proceed.
8. [Development Request] – Web – Development request to optimize and expand the Project/Job Management module; enhance the attendance function GetProjectProInfo(); and add a new attendance function GetProjectProDetails().
Optimize and expand the Shift Project Management module by adding an 'Advanced Pay Rate List' list within the Shift Project settings.
Function Enhancement: GetProjectProInfo()
This function has been optimized and expanded to retrieve detailed information from Project/Job Management based on the assigned project (Project/Job) name in an employee’s shift record.
code: Returns the project code of the assigned project from the Project/Job Management module.
name: Returns the name of the assigned project.
category: Returns the category/type of the assigned project.
hourlyRate: Returns the hourly rate defined for the assigned project.
minRate: Returns the minimum hourly rate of the assigned project.
maxRate: Returns the maximum hourly rate of the assigned project.
Note: When using this function, the second parameter index must be provided.
GetProjectProDetails(projectName/projectCode, fieldName, index)
This function is used to retrieve details from the Advanced Pay Rate List of a specific project by referencing either the project name or code and specifying the row index.
advanceStartTime: Returns the start time of the advanced pay rate period from the list.
advanceEndTime: Returns the end time of the advanced pay rate period from the list.
percentHourlyRate: Returns the hourly rate percentage defined in the advanced pay rate list.
advanceAmount: Returns the amount specified in the advanced pay rate list.
Note: When using this function, the third parameter index must be specified.
9. [Open Shift] – Web – Abnormal behavior occurs when filtering employees by “Tags” during scheduling with [Open Shift].