Proposal summary
This proposal covers the scope of updating employee Labor Cost per month.
Requirement
Neutrinos need to update the employee cost which is used for labor costing calculations in the project module, according to the change in their payroll amounts in Adrenalin.
Our Solution
The Unit Cost field in the project task record is used for the labor cost calculations in the project module. The cost for an employee is calculated as,
Cost = Unit Cost (per hour) X Hours Worked (picked from timesheets)
The value for the Unit Cost field in the project task record will be picked from the Labor cost field in the employee record.
It is possible to update the employee Labor cost field according to the change in the payroll amount in Adrenalin. As there is already an integration planned between Adrenalin and NetSuite, we can include this update in that integration as a separate scope.
Note: Mandatorily post the approved timesheets to account for the labor cost against projects.
The process involves the following steps
Create a custom field in the Employee Record
Prerequisites
The monthly payroll amount(a single value) should be shared from Adrenalin to NetSuite through integration.
Description
Will maintain a custom field in employee record to store the employee salary amount which is received from Adrenalin through integration. Only this field will be updated on every integration process.
Update employee cost on schedule basis.
Prerequisites
Neutrinos need to set up an appropriate work calendar for every active resource in Netsuite.
Description
The Labor Cost field in the employee record will be updated on the first day of every month through a scheduled script.
The script runs for the employee records if there is any change in their payroll amount for the previous month (Custom field). This can be achieved by analyzing the history of the custom field in the employee record (which stores the monthly payroll amount).
We need a per hour rate to calculate the employee cost. The monthly payroll amount should be converted to an hourly rate before updating the Labor cost field in employee records.
- For each employee, the total working hours assigned for a particular month can be calculated from the employee Work Calendar.
- The number of working days of a week and the working hours per day needs to be fetched using a work calendar saved search. Find out the number of such days in the previous month. Then total working hours assigned per month can be calculated.
- Exclude the days that have been mentioned as Non Working days (in their respective work calendar) for that month from the total hours.
- This value can be used to calculate the hourly rate of an employee from their monthly salary amount which is kept in the custom employee record field.
Formula for Hourly Rate= Payroll Value On custom field / (Total working hours of last Month)
Update the Unit cost in project task
The updated labor cost value will not be automatically reflected in the already existing project tasks. Whenever the Labor cost field in the employee record gets updated, then it needs to be updated in the project task records where that particular employee is assigned using a script.
- The unit Cost field in the project tasks with In Progress and Not Started Status can be updated.
- For the intercompany resources there should be an appropriate Exchange rate to convert their labor cost from employee currency to project currency. For that we will use the exchange rate of the last day of the previous month.
Error Handling
A custom record will be maintained to log the errors in case there are any issues in updating employee Labor cost or project task unit cost. By referring to this record, you can update the fields manually before moving to the timesheet import (only in the case of any process failure).
Assumptions
- There will be only a single value received for the monthly payroll amount.
- The Monthly payroll amount will be updated only once at the end of each month in Adrenalin.
Risks
- If the project cost budget is already set up with old employee cost then the updated employee cost will not reflect in the project budget labor cost.
- For the already existing employees in NetSuite, the Primary currency should be the same as in Adrenalin records.
- The cost will not be updated in the project tasks with “Completed” status. If the status of any project tasks changes from “Completed” to “In Progress”, then it will be out of the scope of this proposal.
- The timesheets should be imported to NetSuite only after completing the employee cost update process. As we are planning to schedule it on the first day of every month, the timesheet import can be started on day 3.
- The Estimated total cost for an employee will be “Unit cost * Planned work” (in hours). If a part of the planned time is already tracked against the project task, then when we change the unit cost, the Total Cost field will consider the already tracked time.
For example, for a project task, the employee unit cost was 60 and the planned time was 10. Tracked 9hrs by this value. And then changed the unit cost to 70. Then the Cost will be 610 (9*60 + 1*70).
And If 10 was the planned time and tracked 10 hrs in the current unit cost. And then updated the unit cost field. Then there will not be any change in the unit cost field.
This is the standard NetSuite flow. We can not change the same.
- The total number of working days will be calculated based only on the work calendar assigned to the employee on the NetSuite employee record. We will not consider any leaves or additional working for an employee’s working days.
- At every stage of cost calculation, the amount will be rounded off to 2 precision decimal points. So the final value may have slight deviations due to the rounding.