v16.16.0

Schniz/fnmv16.16.0Aug 7, 2026by frappe-pr-bot

AI Summary

Frappe HRMS v16.16.0 adds features to job applications and the Unpaid Expense Claim report, along with various bug fixes.

Key Highlights

  • Shows Job Title instead of ID on job forms
  • Adds Prevent Duplicate Applicant option
  • Adds filters and columns to Unpaid Expense Claim report
  • Fixes statistical Salary Component formulas

New Features

  • Job Title display on job forms
  • Prevent Duplicate Applicant option
  • Unpaid Expense Claim report enhancements

Full Release Notes

## Features
* Shows the job opening’s _Job Title_ instead of its ID on the job application web form.  
Adds a _Prevent Duplicate Applicant_ option to **Job Opening** that blocks repeat applications from the same email address for the same position. (https://github.com/frappe/hrms/pull/5030)
* Adds Company, Department, and Branch filters to the "Unpaid Expense Claim" report, with the _Department_ and _Employee_ filters limited to the selected _Company_.  
Adds _Posting Date_, _Company_, _Department_, and _Branch_ columns, plus grouping by Employee, Department, or Branch with subtotals and a grand total. (https://github.com/frappe/hrms/pull/5054)

## Bug Fixes
* Updates how HRMS retrieves data and removes unused code. (https://github.com/frappe/hrms/pull/4990)
* Fixes the **Mark Attendance** dialog so its _Start_ and _End_ dates use a valid date format and can load unmarked attendance days without an invalid date error. (https://github.com/frappe/hrms/pull/5052)
* Fixes statistical **Salary Component** formulas that use `ctc` so they read the employee’s actual CTC instead of a blank value from the **Salary Slip**, allowing dependent component amounts to use the correct value. (https://github.com/frappe/hrms/pull/5055)
* The "Monthly Attendance Sheet" report now distinguishes full dates when checking attendance, so holidays are counted correctly when date ranges span multiple months. (https://github.com/frappe/hrms/pull/5060)
* Requires users to select a _Leave Approver_ before saving a **Leave Application** when _Leave Approver Mandatory In Leave Application_ is enabled, and keeps _Leave Approver Name_ synchronized with that selection. Fills missing _Leave Approver Name_ values in existing **Leave Application** records. (https://github.com/frappe/hrms/pull/5066)
* Shows only submitted **Payroll Entry** records when selecting payroll entries for a **Journal Entry**, excluding draft and cancelled records. (https://github.com/frappe/hrms/pull/5045)

**Authors**: @akhtarmohsin, @pratheep-bit, @nareshkannasln, @asmitahase, @deepeshgarg007, @iamkhanraheel
**Reviewers**: @deepeshgarg007, @asmitahase, @iamkhanraheel

<details>
<summary>AI content</summary>

 For these release notes, we used an LLM (OpenAI gpt-5.6-luna) to review and summarise the code changes, along with the associated issue and PR descriptions. It may contain typical errors and inaccuracies. You can read the prompt [here](https://github.com/barredterra/pretty_release_notes). 

Changes with the following labels were excluded:
- skip-release-notes

Changes with the following types were excluded:
- ci
 - build
 - refactor
 - chore
 - docs
 - test
 - style

</details>