# Clock In Clock Out

The Clock In Clock Out module provides comprehensive employee time tracking with a modern React-based interface. It integrates with manufacturing Job Cards and Tasks, enabling accurate tracking of productive time, breaks, downtime activities, and rework.

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC9jNGFiYzQ1MC1lZTYwLTRjMmItOTQ1My01NTE2MWFlN2M1MTIvaW1hZ2UucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTI2MjA5MDAsImV4cCI6MTc5MjcwNzMwMH0.8oFZktWhFiGTecUKW0y5yD94dtDift28GB1xazW3FZ4 " =1441x1098")

## Key Features

### Modern React Interface

The module features a responsive, touch-friendly web application designed for workshop environments:

* Large, easy-to-tap buttons for quick actions
* Real-time status updates
* Employee greeting with current activity display
* Colour-coded activity buttons (green for productive, red for downtime)
* Grid or list layout for the job and task picker, with the choice remembered between sessions

### Employee Identification

* Enter employee number to identify yourself
* Automatic employee lookup and greeting
* Current activity status display
* Break status indicator

### Core Actions

| Action | Description |
|--------|-------------|
| **Clock In** | Record your arrival time and start your workday |
| **Clock Out** | Record your departure time and end all active tracking |
| **Start Job** | Select a manufacturing Job Card to begin work |
| **Rework** | Log time against a job as rework with an optional reason (see [Recording Rework](#recording-rework)) |
| **Break** | Take a short break (smoko) |
| **Lunch** | Take a lunch break |
| **End Break** | Return from break and automatically resume previous activity |

### Activity Types

Activities are categorised and colour-coded for easy identification:

* **Productive Activities** (Green) - Non-downtime activities that count as productive time
* **Downtime Activities** (Red) - Activities that count as downtime (e.g., machine maintenance, waiting for materials)

Activities can also be configured to **prompt the worker for a short description** before the timer starts, making it easy to capture context (job number, batch reference, reason) inline with the time log.

Configure these in **Clock In Clock Out Settings**.

## Prerequisites and Initial Setup

Before using the Clock In Clock Out module, ensure the following are configured in your NexWave system.

### Required Activity Types

The module requires specific Activity Types to exist in NexWave. These are used to categorise time log entries in Timesheets.

Navigate to **HR > Settings > Activity Type** and ensure the following Activity Types exist:

| Activity Type | Purpose |
|---------------|---------|
| **Job**       | Time spent working on manufacturing Job Cards |
| **Task**      | Time spent working on Tasks |
| **Break**     | Short break time (smoko) |
| **Lunch**     | Lunch break time |
| **Unaccounted** | Gap time between activities (auto-generated) |

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC83ODkzMTE1Zi1jY2Q4LTQ2MjUtOWNmMi0yODdhMjYxNmY5ZWQvaW1hZ2UucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTI2MjA5MDAsImV4cCI6MTc5MjcwNzMwMH0.oMgvA7WqYjdtkF2dt4AVnnfiZbasy_bwlfF4HuBD9To " =1289x629")

To create an Activity Type:


1. Go to **HR > Settings > Activity Type**
2. Click **Add Activity Type**
3. Enter the Activity Type name (e.g., "Job")
4. Save

### Module Installation

The Clock In Clock Out module must be installed on your site. Contact your system administrator if the module is not available.

## Clock In Clock Out Settings

The Clock In Clock Out Settings page allows you to configure activity types, break allowances, productivity budgets, and rework behaviour.

### Accessing the Settings

Search for **Clock In Clock Out Settings** in the NexWave search bar, or navigate to **Setup > Clock In Clock Out Settings**.

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC8yNWNkMWEyZi1lYWE4LTRjZTctODVkZi04Y2U5MTgxN2M5MjkvMDEtc2V0dGluZ3MtZnVsbC5wbmciLCJ0eXBlIjoiYXR0YWNobWVudCIsImlhdCI6MTc5MjYyMDkwMCwiZXhwIjoxNzkyNzA3MzAwfQ.yGrM5cECi5pEJ-HN0jvgEcxdxv91ZoH--5knKHJuVlk " =1440x1802")

### Downtime Activities Section

Configure activities that count as downtime (non-productive time). These activities appear as **red buttons** in the time tracker interface.

Examples of downtime activities:

* Machine Maintenance
* Waiting for Materials
* Cleaning
* Equipment Breakdown
* Training

To add a downtime activity:


1. In the **Downtime Activities** table, click **Add Row**
2. Enter the activity name in the **Name** field
3. Optionally tick **Prompt for Description** if workers should enter a short note before the activity starts (see [Activity Description Prompts](#activity-description-prompts))
4. Save the settings

### Non-Downtime Activities Section

Configure productive activities that are not job-specific. These activities appear as **green buttons** in the time tracker interface.

Examples of non-downtime activities:

* General Workshop Tasks
* Quality Inspection
* Stock Management
* Documentation

**Include Non-Downtime Activities in Manufacturing**: When this checkbox is enabled, hours logged against non-downtime activity types are counted as manufacturing hours in productivity reports. This is useful when general productive work should contribute to manufacturing productivity metrics.

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC8wMWQ0NTA2Zi1mZjRlLTQ5OTYtYTQ3Mi1hYmQzMDllMmUwMzMvMDMtc2V0dGluZ3Mtbm9uLWRvd250aW1lLXdpdGgtcHJvbXB0cy5wbmciLCJ0eXBlIjoiYXR0YWNobWVudCIsImlhdCI6MTc5MjYyMDkwMCwiZXhwIjoxNzkyNzA3MzAwfQ.b-XTXM51GgYRfcH-m32g0F1PyU6IMWyu-suhoWptAUo " =1440x900")

### Activity Description Prompts

Both downtime and non-downtime activities can be configured to prompt the worker for a short description before the timer starts. This is useful when an activity needs context that varies per occurrence (a batch number for Quality Inspection, a part code for Rework, a reason for a downtime stop).

| Field | Description |
|-------|-------------|
| **Prompt for Description** | When ticked, a popup is shown to the worker on the tablet UI when they tap this activity. They must enter at least 3 characters before the timer starts. |
| **Description Prompt Text** | Optional. Text shown in the popup header (e.g. "Enter the inspection batch number"). Defaults to "Enter details for this activity" when blank. |

The description entered by the worker is saved as the **Description** of the corresponding Timesheet Detail row, making it visible in reports and on the Timesheet itself.

### Smoko Settings

These break allowance fields are available in the settings:

| Setting | Description | Example |
|---------|-------------|---------|
| **Breaks Per Day** | Expected number of breaks for a full workday | 2       |
| **Min Working Hours Per Day** | Minimum hours to qualify as a full day | 8       |
| **Breaks Per Short Day** | Expected breaks for shorter shifts | 1       |

**Productivity Summary** and **Productivity Summary by Employee** do not use these fields to calculate expected or paid breaks. Use the related hours and break reports to review recorded breaks.

### Budget Settings

| Setting | Description | Default |
|---------|-------------|---------|
| **Downtime Budget Percentage** | Percentage of the full job budgets used as the downtime allowance in **Productivity Summary** | 12%     |

In **Productivity Summary**, the **Downtime** row shows this allowance under **Comparison Budget (h)**. For example, total **Full Job Budget (h)** of 10 hours and a setting of 12% gives a downtime allowance of 1.2 hours. This setting does not change actual hours. **Productivity Summary by Employee** does not show a separate downtime budget.

### Rework Settings

The Rework Settings section controls whether workers can log time against a job as rework directly from the tablet UI.

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC9jZDY5ZTI0My0xMTI4LTQ0MTYtOTEyNy1kZWUwMGMzMTZmMWEvMDItc2V0dGluZ3MtcmV3b3JrLXNlY3Rpb24ucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTI2MjA5MDAsImV4cCI6MTc5MjcwNzMwMH0.zS-OR6XVQBLF0SWHhpJvzEHPzUi3k0-TiD0x1YdlOzs " =1440x900")

| Setting | Description |
|---------|-------------|
| **Allow Rework** | When ticked, workers see a **Rework** button on each job card in the tablet UI. Selecting it logs the time entry as rework on the underlying Job Card Time Log row. |
| **Require Rework Reason** | When ticked, workers must enter a reason (3 to 500 characters) before the rework time log starts. When unticked, tapping **Rework** starts the time log immediately with no reason. Only available when **Allow Rework** is on. |

Rework time is recorded against the same Job Card as regular time, but flagged separately on the **Job Card Time Log** row (see [Recording Rework](#recording-rework)). This lets reports compare productive build time against rework time at the job, operation, and employee level.

## Using the Clock In Clock Out Interface

### For Employees

#### Clocking In


1. Navigate to the Clock In Clock Out page
2. Enter your employee number
3. The system greets you by name
4. Click **Clock In** to record your arrival

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC8wMmYzMWE4MC0zNGRjLTRjMTctOTFkMC03MWE5YTc1Y2VlOGYvMDYtdGltZXRyYWNrZXItY2xvY2tlZC1pbi5wbmciLCJ0eXBlIjoiYXR0YWNobWVudCIsImlhdCI6MTc5MjYyMDkwMCwiZXhwIjoxNzkyNzA3MzAwfQ.PjUwbiFRTBvIbdrmJeA8uKcICPwGLjfxIXQGNIj4CB0 " =1441x900")

#### Starting a Job


1. After clocking in, click **Start Job**
2. Use the layout toggle in the top right to switch between **grid view** (cards) and **list view** (rows). Your choice is remembered for next time.
3. Use the search bar to find jobs by **operation, item code, item name, customer, sales order, or job card ID**
4. View job details including:
   * Sales Order number
   * Job Card ID
   * Item code
   * Item name
   * Customer name
   * Quantity
   * Time allocated vs time used (with progress bar)
   * Status (e.g. Open, Work In Progress)
5. Click on a job card to start tracking time

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC8wZWQ4ZGMwMS02NTQzLTQwNGQtYTI2YS1mOWVmYjg4YmNkMzkvMDgtam9iLXNlbGVjdG9yLWdyaWQucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTI2MjA5MDAsImV4cCI6MTc5MjcwNzMwMH0.jH6KAYg0DuJC-7UeECkz3B122YSN4_zOMG7RcIgS6IU " =1441x900")

The same data is available in the more compact list layout, which is handy on smaller tablets or when the queue of available jobs is long:

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC9lYzkxMTViOS1jOGE1LTRiZjAtODU1Ny1iNDRjMTdmZGVjMjYvMDktam9iLXNlbGVjdG9yLWxpc3QucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTI2MjA5MDAsImV4cCI6MTc5MjcwNzMwMH0.uN09jFlW96bj2s8jU0ACtezRgd7j7lyaRqHE6E9h2Os " =1441x900")

#### Working on Tasks


1. Click **Start Job** then toggle to **Tasks** view
2. Search for tasks by subject or Sales Order
3. Select a task to begin tracking time

### Task Requirements

For Tasks to appear in the Clock In Clock Out interface, they must meet the following criteria:

* **Status**: Must be **Open** or **Working**
* **Sales Order Link**: Tasks can optionally be linked to a Sales Order through the **Sales Order** field

Tasks are searchable by:

* Task subject
* Sales Order number
* Customer name
* Priority
* Status

When you select a Task, the system records time against it in your Timesheet with the Activity Type set to "Task".

#### Recording Rework

When **Allow Rework** is enabled in the settings, every job card in the job picker shows a **Rework** button alongside the normal selection target.

To start a rework time log:


1. Click **Start Job** to open the job picker
2. Locate the job that needs reworking and click its **Rework** button (visible in both grid and list views)
3. If **Require Rework Reason** is on, a popup asks you for a reason. Enter at least 3 characters describing what needs reworking and why, then click **Start Rework**. Press Escape or **Cancel** to back out
4. The system starts a new time log on the job. The Job Card Time Log row is flagged as rework and stores your reason

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC81OGFjNjZhNC02M2NhLTQzNWItOTI1ZS1iM2E1NjRlNzUxZmMvMTAtcmV3b3JrLXJlYXNvbi1tb2RhbC5wbmciLCJ0eXBlIjoiYXR0YWNobWVudCIsImlhdCI6MTc5MjYyMDkwMCwiZXhwIjoxNzkyNzA3MzAwfQ.wj9H0kcLsOSG4c2hT8-s2v6DsSz3E9tPfhD9KPf8OQw " =1441x900")

**Switching between regular work and rework on the same job**

If you are already logged onto a job and tap the regular job tile, the system continues your current time log. If you instead tap **Rework** on the same job (or vice versa), the system closes the current time log and immediately opens a new one with the rework flag flipped. This keeps your build time and rework time on the job cleanly separated, even when the same worker swaps modes mid-session.

**Where rework data lives**

* On the **Timesheet**, a rework time log looks the same as a regular Job time log. The rework flag and reason are not duplicated to the Timesheet Detail row
* On the **Job Card**, the **Time Logs** child table shows two new columns: **Is Rework** (a checkbox) and **Rework Reason** (a free-text note). Reports and dashboards can use these to separate productive build time from rework time

#### Activity Description Prompts

When an activity has **Prompt for Description** enabled in the settings, tapping the activity opens a popup that asks for a short description before the timer starts. This is the standard way to capture per-occurrence context inline with the time entry.

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC8zZTA0NjAxMi0yNjY2LTRiNGItODg0Yi1kMGNlNjQ1M2ZlZWQvMDctZGVzY3JpcHRpb24tcHJvbXB0LW1vZGFsLnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzkyNjIwOTAwLCJleHAiOjE3OTI3MDczMDB9.JLIKqwh_TimJVWIjCNweTc2Y2mF7Gj_7A2O9I80VN5M " =1441x900")

The description must be between 3 and 140 characters and is saved as the **Description** of the resulting Timesheet Detail row. The popup header text is configurable on the activity row in the settings.

#### Taking Breaks


1. Click **Break** or **Lunch** button
2. Your current job/task is automatically saved
3. The interface shows you are on break
4. Click **End Break** to resume your previous activity automatically

#### Marking a Job Complete

When working on a job, you can mark it as complete:


1. Active jobs show a **Mark Complete** button
2. Click to record that you've finished your part of the job
3. Your name is added to the job's completion record

#### Viewing Your Hours

* Click **My Hours** to see your worked hours breakdown
* Click **My Smoko Times** to see your break time details

## How Time Logs Are Recorded

The Clock In Clock Out module records time simultaneously to both **Timesheets** and **Job Cards** (for manufacturing work). Understanding how this works helps with troubleshooting and reporting.

### Timesheet Time Logs

Each day, the system creates or updates a Timesheet for the employee. Time logs are recorded in the **Timesheet Detail** child table with the following information:

| Field | Description |
|-------|-------------|
| **Activity Type** | The type of activity (Job, Task, Break, Lunch, Unaccounted) |
| **Description** | Job Card ID, Task subject, or activity name. For activities with description prompts, this is the worker-entered text |
| **From Time** | When the activity started |
| **To Time** | When the activity ended |
| **Task** | Link to the Task document (for Task activities) |
| **Entry Type** | Marks special entries as "Clock In" or "Clock Out" |

The **Entry Type** field helps identify the first and last entries of the day for attendance tracking.

### Job Card Time Logs

When working on manufacturing Job Cards, time is also recorded in the **Job Card Time Log** child table:

| Field | Description |
|-------|-------------|
| **Employee** | The employee working on the job |
| **From Time** | When work started |
| **To Time** | When work ended |
| **Completed Qty** | Quantity completed during this time log |
| **Is Rework** | Ticked when the row was started via the **Rework** button |
| **Rework Reason** | Worker-entered reason captured when **Require Rework Reason** is on |

When an employee starts a Job Card:

* The Job Card status changes from **Open** to **Work In Progress**
* A new time log entry is created with the employee and start time

When an employee stops working on a Job Card (by switching to another activity or clocking out):

* The time log entry is closed with an end time
* The completed quantity is calculated

### Simultaneous Recording

When you start a Job in the Clock In Clock Out interface:


1. **Timesheet**: A new time log entry is created with Activity Type "Job" and the Job Card ID as the description
2. **Job Card**: A new time log entry is created with your employee ID and start time. If you started via the **Rework** button, the row is flagged accordingly

When you switch to a different activity:


1. **Timesheet**: The current time log is closed, and a new one starts for the new activity
2. **Job Card**: If you were working on a job, that time log is closed

### Unaccounted Time

The system automatically tracks **Unaccounted** time to ensure there are no gaps in the daily timesheet:

* When you complete an activity but don't immediately start a new one, an "Unaccounted" entry begins
* When you mark a job as complete, Unaccounted time starts automatically
* These entries help identify periods where employees weren't actively tracking work

### Break Resumption

When you take a break, the system remembers what you were working on:


1. Your current activity (Job or Task) is saved in the Timesheet's **Last Activity** and **Last Job** fields
2. When you click **End Break**, the system automatically resumes your previous activity
3. For Jobs, a new time log entry is also created in the Job Card

### Completed By Employees

The Job Card includes a **Completed By Employees** field that tracks which employees have marked the job as complete. This allows multiple employees to work on the same Job Card and each indicate when they've finished their part.

## Work Tracker Dashboard

The Work Tracker provides real-time monitoring of all employee activities across the workshop.

Access via: Navigate to **/worktracker** from the main interface

 ![](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC85NmVmM2Y5Yy05MTI5LTRiMTItYTM1Yi0yODVjNWQ2MjY3OGIvaW1hZ2UucG5nIiwidHlwZSI6ImF0dGFjaG1lbnQiLCJpYXQiOjE3OTI2MjA5MDAsImV4cCI6MTc5MjcwNzMwMH0.e_lwKsj3tDDic57WZrUhBP_Xrus5NdQmZSfenj3cxUg " =1441x1098")

### Dashboard Features

#### Active Manufacturing Jobs

Real-time view of employees working on Job Cards:

* Employee name
* Sales Order
* Job Card ID
* Operation
* Item name
* Allocated time
* Time status (remaining or exceeded)
* Last start time

#### Active Task Activities

Employees currently working on Tasks:

* Employee name
* Task subject
* Time consumed
* Last start time

#### Active Productive Activities

Non-downtime activities in progress:

* Employee name
* Activity type
* Time consumed
* Last start time

#### Active Downtime Activities

Downtime tracking in progress:

* Employee name
* Downtime activity type
* Time consumed
* Last start time

### Auto-Refresh

* Dashboard refreshes automatically every 60 seconds
* Manual refresh button available
* Last updated timestamp displayed

## Configuration

### Employee Allowed Operations

Filter which jobs employees see based on their skills:


1. Open the Employee record
2. Add operations to "Allowed Operations" field
3. Employee will only see jobs matching their allowed operations (plus any jobs they're currently working on)

This is useful in workshops where employees specialise in certain operations. When configured:

* Employees only see Job Cards that match their allowed operations
* They can still see jobs they're currently working on (even if not in their allowed list)
* They can see the last job they worked on for easy continuation

## Review Productivity Reports

Use **Productivity Summary** to review recorded work for a period. Use **Productivity Summary by Employee** to compare the same results for each employee. Both reports separate hours recorded in the selected period from the complete job comparison. This helps you review recent activity without comparing part of a job with its full budget.

 ![Productivity Summary report with example data](https://docs.nexwaveapp.com/api/files.get?sig=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJrZXkiOiJ1cGxvYWRzL2YxMTg5ZTEzLTdlMTQtNDA1ZC04MDI1LWMxZmI0Y2Y2MTg0ZC84ZDEyMGFmZS1jYzU3LTRkNWMtOTEzOS1jNTE3MWQ3MjNjNjQvMTItcHJvZHVjdGl2aXR5LXN1bW1hcnktcmVwb3J0LnBuZyIsInR5cGUiOiJhdHRhY2htZW50IiwiaWF0IjoxNzkyNjIwOTAwLCJleHAiOjE3OTI3MDczMDB9.8TZmU2rMLGcJ41dAkLceW6boCSWvFL5covWmOaOnHYQ " =1824x1000")

*The report above uses example data for illustration only.*

### Before You Start

Check these items before you review the reports:

* You have access to the report and the Timesheets for the employees you need to review. You also need access to their Job Cards to see job budgets, job details, and rework information.
* Employees have closed time entries with both a start time and an end time. Closed entries on both draft and submitted Timesheets are included.
* Downtime activities are set in **Clock In Clock Out Settings**.
* The **Include Non-Downtime Activities in Manufacturing** setting has the correct value for your process.
* Job Cards have **Expected Time Required (In Mins)** set if you want to compare a budget with actual hours. The report converts this saved value to hours.
* Rework entries use **Is Rework** on the Job Card time log.

### Run Productivity Summary


1. Search for and open **Productivity Summary**.
2. Select the **Company**.
3. Optional: select an **Employee** to limit the result.
4. Optional: select an **Activity Type** to see one activity.
5. Set the **From Date** and **To Date**.
6. Review the chart, the period totals, and any job comparison values.
7. Expand **Manufacturing**, **Downtime**, **Unaccounted**, or **Excluded Activities** to see the source rows.

The chart shows **Manufacturing**, **Downtime**, and **Unaccounted** hours. The table also shows excluded activities and the total included hours.

Open **How this report works** above the chart for the calculation notes. Rows below a total explain that total. Do not add the detail rows to it again.

### Run Productivity Summary by Employee


1. Search for and open **Productivity Summary by Employee**.
2. Select the **Company**.
3. Optional: select an **Employee**.
4. Optional: select an **Activity Type** to see one activity.
5. Set the **From Date** and **To Date**.
6. Expand an employee to see the category totals.
7. Expand a category to see the jobs, activities, and time-entry details.

Use this report when you need an employee-level review. Do not add the employee job comparisons together. A shared job can show the same whole-job comparison for each employee who worked on it.

Use the same **Company**, **Employee**, **Activity Type**, **From Date**, and **To Date** in both reports when comparing results. Their default date ranges differ.

Leave **Activity Type** blank to review all activities. When you select one, the rows and totals show only that activity. The chart shows its included hours. A single-activity view does not show the downtime allowance. Whole-job comparison columns remain available when **Activity Type** is *Job*; they are blank for other selected activities.

When **Activity Type** is blank or set to *Job*, the date filters select jobs that had recorded work during the period. **Whole Job Actual (h)** then includes all recorded job hours for those selected jobs, including hours before or after the selected dates and hours from other employees. This comparison is still limited by the selected **Company** and by the Timesheets that you can read.

### Understand the Results

| Result | Meaning |
|--------|---------|
| **Full Job Budget (h)** | The full saved **Expected Time Required (In Mins)** for the selected Job Cards, converted to hours. It is an operation budget, not an employee target. |
| **Comparison Budget (h)** | For a completed job, the full job budget. For an unfinished job, the whole-job hours used so far, capped at the full job budget. This comparison does not change the saved Job Card budget. |
| **Whole Job Actual (h)** | All recorded *Job* hours for the selected Job Cards, across dates and employees, subject to your Timesheet access. This value can exceed the full job budget when several employees work at the same time or the job overruns. |
| **Comparison Budget (h)** on the **Downtime** row | The full job budgets multiplied by **Downtime Budget Percentage**, shown only in **Productivity Summary**. |
| **Actual in Period (h)** or **Manufacturing in Period (h)** | The hours for the row within the selected dates. |
| **Manufacturing (h)** | Timesheet hours recorded with **Activity Type** set to *Job*, plus configured non-downtime activities when the related setting is on. |
| **Downtime (h)** | Time from activities configured as downtime. |
| **Unaccounted (h)** | Gaps that the time tracker recorded as unaccounted time. |
| **Included Hours (h)** | Manufacturing, downtime, and unaccounted hours combined. |
| **Excluded Activities (h)** | Time that is outside the three included groups. This time is not shown in the chart. |
| **Current Job Status** | The current status of the Job Card. It is not the status that applied when the time was recorded. |
| **Rework in Period (already counted) (h)** | Rework time within the selected dates that is already part of manufacturing hours. Do not add it to manufacturing again. |
| **Budget Note** | Explains how the report selected the comparison budget and whether a whole-job comparison is repeated for a shared job. |
| **Reason / Notes** | The recorded description or rework reason, when available. |
| **Entry From** and **Entry To** | The original start and end of a non-job activity entry or a rework time log. These columns are blank on normal job summary rows. |
| **Timesheet** | A link to the source Timesheet for a non-job activity entry. Normal job summary rows and rework rows do not contain this link. |

The report does not calculate a performance percentage. Compare the budget and actual hours with the job context before you make a performance decision.

Normal job rows combine the matching Timesheet entries from the selected period into one period total. Open **Job Card** to review job details. **Product Name** and **Sales Order** give additional context where NexWave can read those details. Expand a job where a rework breakdown is available. Non-job activity rows show individual Timesheet entries, including their employee, note, and entry times. Blank detail cells on summary rows are expected.

Tasks, breaks, and lunch appear under **Excluded Activities** unless the activity settings place them in an included category. **Included Hours (h)** is therefore not a paid-hours or attendance total.

### Review Shared Jobs and Rework

The overall total counts each job comparison once. An employee row can show the full comparison for every job that the employee worked on. For this reason, employee comparison rows can overlap.

For a completed job, **Comparison Budget (h)** equals **Full Job Budget (h)**. For an unfinished job, it equals **Whole Job Actual (h)** capped at **Full Job Budget (h)**. This prevents a small amount of work in the selected period from appearing to use a complete job budget. A job can be marked as shared because another employee worked on it outside the selected dates.

Rework is a subset of manufacturing time. Expand **Manufacturing**, then a job, to see **Job Rework (already counted in manufacturing)** rows. The rework amount comes from the overlap between the employee's included Timesheet entries and the Job Card time logs marked **Is Rework**. Review the employee, reason, and entry times on the rework row, with the operation and item on the parent job row. Do not add **Rework in Period (already counted) (h)** to the manufacturing total.

### Check the Date Range and Times

The reports include the part of an entry that falls inside the selected date range. If an entry crosses a date boundary, the report allocates only the hours inside the range.

The date filters use the site time zone. **Entry From** and **Entry To** use the current user's time zone. This can cause an entry time to appear on a different calendar date from the report boundary.

### Print or Export the Result

Expand the rows that you need before you print or export. Use **Expand All** if you need every breakdown. Collapsed detail rows are left out of the output.

For a printed report or PDF:


1. Open the three-dot menu and select **Print** or **PDF**.
2. Review **Print Settings**, then select **Submit**.

For an Excel file:


1. Open the three-dot menu and select **Export**.
2. Select **Excel** as the **File Format**.
3. Optional: select **Include indentation** to keep the report hierarchy, and select **Include filters** to record the report filters.
4. Select **Download**.

Print and PDF use a compact layout. Use Excel when you need all report detail columns. The chart represents the included report totals, even when some table rows are collapsed.

### Confirmation Checks

Before you use the result, confirm that:

* **Included Hours (h)** contains manufacturing, downtime, and unaccounted time.
* **Excluded Activities (h)** is separate from included hours and the chart.
* **Full Job Budget (h)** matches the saved expected time on the Job Card.
* **Comparison Budget (h)** uses the full budget for completed jobs and the capped whole-job actual for unfinished jobs.
* **Whole Job Actual (h)** can include hours outside the selected dates and from other employees.
* The overall total counts each job comparison once.
* Employee comparison rows are not added together for shared jobs.
* **Rework in Period (already counted) (h)** is not added again.
* Detail rows are not added to their parent totals again.
* The selected dates and time zones match the period that you want to review.

### Troubleshooting

**An expected entry is missing**

Check **Company**, **Employee**, **From Date**, and **To Date**, and confirm that you can read the source Timesheet. The entry must have both **From Time** and **To Time**. Open entries and entries in cancelled Timesheets are excluded. A Job Card time log alone does not add actual hours without a matching Timesheet entry.

**Actual hours appear, but the job budget or details are missing**

Check that you can read the Job Card and that it still exists. If the report cannot load it, **Current Job Status** shows *Job details unavailable*. Recorded Timesheet hours can still count. A cancelled Job Card also keeps the recorded Timesheet hours in the report, but contributes no budget or rework detail.

**Manufacturing hours are higher or lower than expected**

Check **Include Non-Downtime Activities in Manufacturing** in **Clock In Clock Out Settings**. Expand **Manufacturing** to identify the source rows.

**The job comparison looks duplicated in the employee report**

This is expected for a shared job. The same whole-job comparison can appear for each employee, but **Total (jobs counted once)** counts the job once.

**The comparison budget is lower than the full job budget**

Check **Current Job Status**. An unfinished job uses **Whole Job Actual (h)** capped at **Full Job Budget (h)**. A completed job uses the full job budget.

**Whole Job Actual (h) is higher than the hours in the selected period**

This is expected when the selected job also has hours outside the date range or from other employees. Use **Actual in Period (h)** or **Manufacturing in Period (h)** for the selected-period value.

**The current job status does not match the selected period**

The report shows the current Job Card status. It does not keep the historical status for each time entry.

### Related Reports

These reports give more detail about hours and breaks:

| Report | Description |
|--------|-------------|
| **Employee Worked Hours Details** | Detailed breakdown of hours worked by employee |
| **Hours Worked Details with Strict Smokos** | Hours report with strict break time calculations |
| **Smoko Times Sorted by Employee** | Break time analysis by employee |

The **Is Rework** flag on Job Card time logs can also be used in custom reports and Insights dashboards to review productive build time and rework time by job, operation, item, or employee.

## Technical Notes

### URL Access

* Main interface: `/timetracker`
* Work Tracker dashboard: `/timetracker/worktracker`

### Browser Support

The React application works best in modern browsers (Chrome, Firefox, Safari, Edge).

### Workshop Setup

For workshop kiosk setups:

* Use a dedicated tablet or touchscreen
* Bookmark the timetracker URL for quick access
* The interface is optimised for touch input with large buttons

### Custom Fields Added by This Module

The module adds custom fields to standard NexWave doctypes:

**Employee:**

* **Allowed Operations** - Table MultiSelect for filtering visible Job Cards

**Timesheet:**

* **Last Activity** - Stores activity type when going on break
* **Last Job** - Stores Job Card ID or Task ID when going on break

**Timesheet Detail:**

* **Entry Type** - Select field marking "Clock In" or "Clock Out" entries

**Job Card:**

* **Completed By Employees** - Text field tracking employees who marked the job complete

**Job Card Time Log:**

* **Is Rework** - Check field set when the row was started via the **Rework** button (visible in the list view)
* **Rework Reason** - Small Text field storing the worker-entered reason when **Require Rework Reason** is on

**Clock In Clock Out Activities (settings child table):**

* **Prompt for Description** - Check field that turns on the description popup for the activity
* **Description Prompt Text** - Header text shown in the popup