# Attendance

<p class="doc-lead">Record bulk employee attendance for a date and optional project from the Field Sale App <b>More</b> tab. Select multiple employees at once, apply shared status and overtime, then edit individual exceptions before saving.</p>

<div class="doc-toc">
<p class="doc-toc-title">On this page</p>
<div class="doc-toc-section">
<span class="doc-toc-group-title">Overview</span>
<div class="doc-toc-links">
<a href="#/field-sale-app/hr-and-payroll/attendance?id=open">Open Attendance Entry</a>
<a href="#/field-sale-app/hr-and-payroll/attendance?id=entry-flow">Entry flow</a>
<a href="#/field-sale-app/hr-and-payroll/attendance?id=bulk-add">Bulk add employees</a>
<a href="#/field-sale-app/hr-and-payroll/attendance?id=edit-lines">Edit individual lines</a>
<a href="#/field-sale-app/hr-and-payroll/attendance?id=line-fields">Attendance line fields</a>
<a href="#/field-sale-app/hr-and-payroll/attendance?id=project-task">Project Task on line</a>
</div>
</div>
</div>

<hr class="doc-section-divider">

<h2 id="open">Open Attendance Entry</h2>

**More** tab → **Attendance Entry** (requires **Attendance Entry** access).

<hr class="doc-section-divider">

<h2 id="entry-flow">Entry flow</h2>

<h3>1. Set date</h3>

Select the **Date** for attendance. Future dates cannot be selected.

<h3>2. Select project (optional)</h3>

When **Project — List** access is granted, a **Project** selector appears. Selecting a project loads existing attendance lines for that project and date (or the previous date’s attendance if none exist for the selected date).

<h3>3. Add employees (bulk)</h3>

Tap **SELECT EMPLOYEES** to open the multi-select employee picker. Already-added employees are excluded from the list.

Use **Select All** / **Deselect All** to toggle all employees in the current search and department filter. Tap **ADD SELECTED (N)** to continue.

On the **Set Attendance** screen, enter shared values for all selected employees:

| Field | Description |
|-------|-------------|
| **Status** | Attendance status (required) — Full Day, First Half, Second Half, Leave, Absent, and other configured values |
| **Overtime (hours)** | Optional overtime in hours — applied to each employee based on their shift end time |
| **Notes** | Optional notes copied to every line |
| **Project Task (optional)** | Shared project task when a **Project** is selected on the attendance header |

Tap **Done** to add all lines to the attendance table at once. In/out times are calculated per employee from each employee's shift — the same status and overtime hours apply to everyone, but clock times may differ when shifts differ.

See <a href="#/field-sale-app/hr-and-payroll/attendance?id=bulk-add">Bulk add employees</a> for step-by-step detail and error handling.

<h3>4. Edit individual lines (optional)</h3>

Tap any attendance row to open **Edit Attendance** for that employee when one person needs a different status, time, overtime, notes, or project task. See <a href="#/field-sale-app/hr-and-payroll/attendance?id=edit-lines">Edit individual lines</a>.

<h3>5. Save</h3>

Tap **ADD ATTENDANCE** or **UPDATE ATTENDANCE** (when lines already exist for the date/project) to save all lines in bulk.

A success message confirms: *Attendance added successfully*.

<hr class="doc-section-divider">

<h2 id="bulk-add">Bulk add employees</h2>

Use this flow when most employees share the same attendance status and overtime — for example marking a full project team as **Full Day** with 1.5 hours overtime after a site visit.

<h3>Step 1 — Select employees</h3>

| Control | Purpose |
|---------|---------|
| **Search employees…** | Filter by name, phone, or employee code |
| **Select All** / **Deselect All** | Toggle all employees in the current filter |
| **Department** | Optional filter when **Department — List** access is granted |
| Per-row checkbox | Select employees to include in the batch |

Already-added employees do not appear in the picker. Tap **ADD SELECTED (N)** when at least one employee is selected.

<h3>Step 2 — Set shared attendance</h3>

The **Set attendance for N employees** screen applies one set of values to every selected employee:

| Field | Required | Notes |
|-------|----------|-------|
| **Status** | Yes | Drives in/out times from each employee's shift |
| **Overtime (hours)** | No | Extends out time from each employee's shift end |
| **Notes** | No | Copied to every line |
| **Project Task (optional)** | No | Shown when a **Project** is selected on the header |

Tap **Done (N)**. The app loads shift data for each employee, builds attendance lines, and returns to the main attendance table.

<h3>Per-employee time calculation</h3>

In/out times are **not** copied literally across employees. Each line uses that employee's **shift in** and **shift out** times:

- **Full Day** — full shift duration
- **First Half** / **Second Half** — half of shift from start or midpoint
- **Overtime** — added after shift end for each employee

If one employee has a different shift length, the same status still produces correct times for that employee.

<h3>Errors</h3>

If any selected employee cannot be loaded (for example missing shift configuration) or an API call fails, **no lines are added**. An error message is shown and you remain on the **Set Attendance** screen to retry or go back and adjust the selection.

<hr class="doc-section-divider">

<h2 id="edit-lines">Edit individual lines</h2>

After bulk add, tap a row in the **Employees** table to open **Edit Attendance** for one employee:

| Field | Description |
|-------|-------------|
| **In Time** | Check-in time |
| **Out Time** | Check-out time |
| **Status** | Attendance status (Full Day, First Half, Second Half, Leave, Absent, and other configured values) |
| **Overtime (hours)** | Optional overtime in hours |
| **Notes** | Optional notes |
| **Project Task (optional)** | Links the line to a project task when a **Project** is selected on the attendance header. See <a href="#/field-sale-app/hr-and-payroll/attendance?id=project-task">Project Task on line</a>. |

Use **Delete Line** on saved server records to remove a line. Tap **Done** to update that employee only.

You can run **SELECT EMPLOYEES** again to add more employees in another batch. Already-added employees stay excluded from the picker.

<hr class="doc-section-divider">

<h2 id="line-fields">Attendance line fields</h2>

Each saved line includes:

- **Project** (when selected)
- **Log date**
- **Employee**
- **In time** / **Out time**
- **Status**
- **Notes**
- **Project task** (when selected on the line and a project is set on the header)

Data syncs to the HRMS attendance module on the web ERP.

<hr class="doc-section-divider">

<h2 id="project-task">Project Task on line</h2>

When a **Project** is selected on the attendance entry screen, the bulk **Set Attendance** form and each **Edit Attendance** form show **Project Task (optional)**.

<h3>Bulk add</h3>

Select one project task on the **Set Attendance** screen — it is saved on every line in that batch.

<h3>Individual edit</h3>

1. Tap the project task field to open the task picker for the selected project.
2. Search and select a task from the list.
3. The selected task name and bill number appear in the field.

The task list includes only tasks belonging to the project selected on the attendance header.

<h3>Clearing a task</h3>

When a task is selected, tap the **X** icon on the right of the field to clear the selection before saving.

<h3>On save</h3>

The chosen task is saved with the attendance line and links that employee's attendance record to the project task on the web ERP.

<hr class="doc-section-divider">

<h2 id="access">Access</h2>

| Feature | Access |
|---------|--------|
| **Attendance Entry** on More tab | Attendance Entry |
| **Project** selector on attendance screen | Project — List |
| **Project Task (optional)** on bulk or edit line | Project — List (project must be selected on header) |
| **Department** filter on employee picker | Department — List |

<hr class="doc-section-divider">

<h2 id="faq">FAQ</h2>

<p><b>Can I add employees one at a time?</b><br>
Yes — select a single employee in the multi-select picker and complete the same <b>Set Attendance</b> flow.</p>

<p><b>Why did bulk add fail for my team?</b><br>
If any selected employee has no shift configured or data fails to load, the entire batch is rejected and no lines are added. Fix the employee shift on the web HRMS or remove that employee from the selection and try again.</p>

<p><b>Do all employees get the same in/out times?</b><br>
No. The same <b>status</b> and <b>overtime hours</b> apply to everyone, but in/out times are calculated from each employee's own shift.</p>

<p><b>Can I edit attendance after saving?</b><br>
Edit and delete depend on HRMS permissions on the web. The app focuses on quick capture of in/out times in the field.</p>

<p><b>Why is Project selector empty?</b><br>
Grant Project — List on the Field Sale App role. Only projects the user can access appear in the dropdown.</p>

<p><b>Does attendance sync to Daily Attendance on the web?</b><br>
Yes. Lines sync to the HRMS attendance module — see <a href="#/hr/daily-attendance">Daily Attendance</a> on the web for consolidated views.</p>

<p><b>Can I record attendance for another employee?</b><br>
Attendance Entry supports selecting multiple employees when the role grants <b>Attendance Entry</b> access and user settings allow recording on behalf of others.</p>

<p><b>What status values are available?</b><br>
Status options match the web HRMS attendance entry form for your company configuration.</p>

<p><b>Why don't I see Project Task on the form?</b><br>
Select a <b>Project</b> on the attendance header first. The task picker lists tasks for that project only.</p>

<p><b>Can I change the project task after saving?</b><br>
Re-open the attendance line, change or clear the project task, and save again with <b>Update Attendance</b>.</p>

<p><b>Why is Select All missing on the employee picker?</b><br>
<b>Select All</b> appears only in multi-select mode on the attendance employee picker. Grant <b>Department — List</b> if you need department filtering.</p>

<hr class="doc-section-divider">

<h2 id="related">Related topics</h2>

- [HR & Payroll](field-sale-app/hr-and-payroll.md)
- [Projects](field-sale-app/projects.md)
- [Daily Schedule](field-sale-app/daily-schedule.md)
- [Daily Attendance](../../hr/daily-attendance.md) (web HRMS)
- [More tab transactions](field-sale-app/transactions.md?id=more-tab)
