01Overview
The Re-Lax Timesheet Editor is a desktop web application that allows managers to load, review, correct, and save technician timesheets stored on SharePoint. It is intended as a companion tool to the Re-Lax Time Tracker used by field technicians.
Key capabilities:
- Load any technician's timesheet for any month directly from SharePoint
- Edit existing entries — correct dates, times, client, description, or service type
- Add new entries that were missed or need to be added manually
- Delete entries that were logged in error
- Automatic after-hours detection (weekends, US holidays, before 6 AM / after 7 PM)
- Hours Exact, Hours Billed, and Hours Paid recalculate automatically as you edit
- Save the corrected timesheet back to SharePoint in the same format techs produce
Who should use this tool? Managers and billing administrators who need to correct or supplement technician-submitted timesheets before invoicing.
02Requirements
Before You Begin
| Field | Description |
|---|---|
| O365 Account | A Re-Lax Microsoft 365 account (used to sign in and access SharePoint) |
| Operating System | Windows 10/11 or macOS — desktop only, mobile not supported |
| Browser | Microsoft Edge or Google Chrome recommended; Firefox supported |
| SharePoint Access | Read/write access to the Public → Billing → Contractors SharePoint folder |
Files Needed
The following files should be kept together in the same folder:
- TimesheetEditor.html — the main application
- Launch TimesheetEditor.bat — Windows launcher (double-click to start)
- Launch TimesheetEditor Mac.command — macOS launcher (double-click to start)
- server.ps1 — local web server script (used automatically by the Windows launcher)
Do not move TimesheetEditor.html to a different folder from the launcher files. They must stay together.
03Launching the Application
Windows
- Double-click Launch TimesheetEditor.bat
A black server window will appear with the message "Timesheet Editor Server." This window must stay open while you use the app.
- Your browser opens automatically
The app opens at http://localhost:8080/TimesheetEditor.html. If it does not open automatically, type that address into your browser manually.
- When finished, close the server window
Closing the "Timesheet Editor Server" window shuts down the local web server. You can then close the browser tab.
If the browser shows "This site can't be reached," the server window may not have started. Right-click the .bat file and choose Run as Administrator, then try again.
macOS
- First-time only: make the launcher executable
Open Terminal and run:
chmod +x "/path/to/Launch TimesheetEditor Mac.command"
- Double-click Launch TimesheetEditor Mac.command
Terminal opens and the server starts. The browser opens automatically to the app.
- Keep Terminal open while using the app
Close Terminal when you are done to stop the server.
04Signing In
The app opens with a lock screen. Click the Sign In with Microsoft button and authenticate using your Re-Lax O365 account.
Single sign-on: If you are already signed in to Microsoft on this browser, sign-in may complete automatically without a popup.
After sign-in, the lock screen disappears and two things load automatically:
- Tech list — all technician names pulled from the Contractors folder on SharePoint
- Client list — loaded from TemplateClientList.xlsx on SharePoint (cached for 4 hours)
Allow popups for localhost:8080 if your browser blocks them. The Microsoft sign-in uses a popup window.
05Loading a Timesheet
Select a Tech and Period
Use the toolbar at the top of the screen:
| Field | Description |
|---|---|
| Tech dropdown | Select the technician whose timesheet you want to edit |
| Period picker | Select the month and year (defaults to the current month) |
| Load Timesheet | Click to fetch the timesheet from SharePoint |
What Happens After Loading
- If a timesheet exists: all entries appear in the editable table below
- If no timesheet exists yet: the table is empty and you can add new entries from scratch
The timesheet file on SharePoint is named in the format: TechName_MonthYear_Timesheet.xlsx (e.g., Chris_March2026_Timesheet.xlsx)
06Editing Entries
The Entry Table
Each row in the table represents one time entry. All fields are editable — simply click a cell to make changes.
| Field | Description |
|---|---|
| Date | The date the work was performed (YYYY-MM-DD format or use the date picker) |
| Start / End | Start and end times. Enter as 9:00 AM or 14:30 — either format is accepted |
| Client | Select from the dropdown — populated from the shared Client List |
| Description | Free-text description of work performed |
| Service | On-Site, Remote, or In-House — select with radio buttons |
| Travel (hrs) | Enter travel time in hours (e.g., 1.5). Leave blank if no travel |
| After Hrs | Check if this entry qualifies for 1.5x billing. Auto-detected but can be overridden |
| Hrs Exact | Calculated automatically from Start and End time — read only |
| Hrs Billed | Calculated: Hours Exact rounded up to nearest 15 minutes, plus half travel time |
| Hrs Paid | Calculated: what the tech is paid — 1.5x applied if After Hours is checked |
After-Hours Auto-Detection
When you enter or change a date or start time, the app automatically checks whether the entry qualifies as after-hours and checks the box if any of the following apply:
- The date falls on a Saturday or Sunday
- The date is a US federal holiday
- The start time is before 6:00 AM
- The start time is at or after 7:00 PM
You can always manually check or uncheck the After Hours box regardless of what the auto-detection suggests.
Row Highlighting
| Field | Description |
|---|---|
| Amber/gold row | After-hours entry — billed and paid at 1.5x rate |
| Green row | Newly added entry (not yet saved to SharePoint) |
07Adding and Deleting Entries
Adding a New Entry
Click the + Add Entry button in the toolbar. A new green-highlighted row appears at the bottom of the table, defaulting to the first day of the selected period. Fill in all required fields (marked with *): Date, Start, End, and Client.
Deleting an Entry
Click the ✕ button on the right side of any row. A confirmation prompt appears before the row is removed.
Removing Unsaved New Rows
If you added rows by mistake, the Clear New Rows button appears in the table header. Click it to remove all newly-added (unsaved) rows at once, restoring the table to its loaded state.
08Summary Bar
The summary bar at the bottom of the page shows totals across all entries currently in the table:
| Field | Description |
|---|---|
| Entries | Total number of time entries |
| Hrs Exact | Sum of all exact hours (raw time from start to end) |
| Hrs Billed | Sum of all billable hours (rounded up to 15-min, including travel) |
| Hrs Paid | Sum of hours the tech is paid (with 1.5x for after-hours) |
| Travel Hrs | Total travel hours entered across all entries |
| After-Hrs Entries | Count of entries flagged as after-hours |
The summary updates in real time as you edit. Use it to sanity-check totals before saving.
09Saving to SharePoint
When you are satisfied with your edits, click the Save to SharePoint button (green, top-right of toolbar).
What Happens on Save
- The app validates that all entries have a Date, Start, End, and Client. Any rows missing required fields will trigger an error message.
- The timesheet is rebuilt as an XLSX file in the same column format produced by the Time Tracker.
- The file is uploaded to SharePoint at the path:
Public/Billing/Contractors/{TechName}/{TechName}_{Month}{Year}_Timesheet.xlsx
- If a file already exists at that path it is overwritten. No version history is created automatically.
- New rows turn from green to normal after a successful save.
Important: The saved file is identical in format to what the Time Tracker produces. The Timesheet Importer and Billing Processor will process it the same way.
10Troubleshooting
| Field | Description |
|---|---|
| "Site can't be reached" | The local server is not running. Double-click the launcher .bat or .command file first. |
| Sign-in popup blocked | Allow popups for localhost:8080 in your browser settings, then try signing in again. |
| "redirect_uri" error | Contact your IT administrator — the redirect URI http://localhost:8080 may need to be added to the Azure AD app registration. |
| Tech list is empty | SharePoint access may be unavailable. Check your network connection and try reloading. |
| Client list not loading | The TemplateClientList.xlsx file on SharePoint may have moved. Confirm the file exists at Public/Billing/Contractors/TemplateClientList.xlsx. |
| "Upload failed" on save | Check your SharePoint permissions. You need write access to the Contractors folder for the selected tech. |
| Hours show as 0.00 | Ensure Start and End times are entered in a recognizable format such as 9:00 AM or 14:30. |
| App opens blank/white page | Try refreshing the browser. If the server window shows errors, close it and relaunch using the .bat file. |
11SharePoint File Reference
All timesheet files follow this naming and path convention on SharePoint:
Public/Billing/Contractors/{TechName}/{TechName}_{Month}{Year}_Timesheet.xlsx
Example:
Public/Billing/Contractors/Chris/Chris_March2026_Timesheet.xlsx
The Client List used to populate the client dropdown:
Public/Billing/Contractors/TemplateClientList.xlsx
12Billing Calculation Notes
Hours Billed
Hours Billed = Hours Exact rounded up to the nearest 15-minute increment, plus half of any travel hours entered.
Hours Billed = ceiling(raw hours × 4) / 4 + (travel hours × 0.5)
Hours Paid (Tech)
Hours Paid is what the technician earns. After-hours entries are paid at 1.5× the standard rate.
Hours Paid = (Hours Billed × 1.5 if after-hours, else × 1) + (travel hours × 0.5)
Overnight Shifts
If the end time is earlier than the start time, the app automatically adds 24 hours to calculate the correct elapsed time (e.g., 11:00 PM to 3:00 AM = 4 hours).
13Support
For technical issues with the Timesheet Editor, contact your Re-Lax IT administrator.
Re-Lax US LLC | walter@pnw.com