Skip to content
TAQNIX
Odoo ModulesWordPress PluginsWordPress ThemesShopify ThemesApp TemplatesScripts & UtilitiesBlogSell on TAQNIX

Timesheet Approval for Odoo 19 Community documentation

A guide to the timesheet approval: the sheet, submitting and approving, the locks, the generation, the printed sheet and the access rights.

Documents version 1.0.0Updated Oct 23, 2026

Start here

In plain words: Hours are logged all week, and on Friday evening nobody knows who has finished. Timesheet Approval adds the missing step to Odoo Community timesheets: the employee submits the hours of a week, the manager approves them or refuses them with a reason, and from then on the submitted and approved hours are locked: nobody edits, adds or deletes hours behind the manager's back. The hours are compared with the expected hours of the employee's working schedule, time off excluded.
A submitted sheet to approve, a refused one with its reason and the printed sheet.
A submitted sheet to approve, a refused one with its reason and the printed sheet.
Tip: It works on the timesheets you already have: the Timesheets app, the projects and the tasks are unchanged.

What you get

FeatureWhat it does
Timesheet sheetThe hours of one employee for a week (or any period up to two months), gathered from their timesheets.
Submit and approveThe employee submits, the manager approves, or refuses with a reason and the employee corrects and submits again.
Locked hoursSubmitted and approved hours cannot be edited, moved or deleted, and no hours can be added to a submitted period.
Expected hoursThe hours of the working schedule of the period, minus time off, and the missing hours.
ApproverThe employee's manager, or the manager of the department; you can change it on the sheet.
Generate sheetsDraft sheets for everybody who has hours in a period, in one click, or every week automatically with a reminder to each employee.
On the timesheetsAn Approval column and the filters Not submitted, Submitted and Approved.
OverviewThe hours by employee and by status.
PrintThe sheet as a PDF with the signatures.
ArabicEverything is translated and works right to left.

Requirements

ItemDetails
Odoo19.0 (Community or Enterprise)
Apps neededTimesheets (hr_timesheet)
LicenseOPL-1 (Odoo Proprietary License v1.0)

Install

  1. Unzip the package. Inside is taqnix_timesheet_approval.zip; unzip it to get the folder taqnix_timesheet_approval.
  2. Copy the folder into one of the addons_path folders of your Odoo server and restart Odoo.
  3. Log in as an administrator, activate Developer mode, open Apps and press Update Apps List.
  4. Remove the “Apps” filter, search Timesheet Approval and press Install.
# or from the command line
./odoo-bin -c odoo.conf -d YOUR_DATABASE -i taqnix_timesheet_approval --stop-after-init

The sheet of a week

In plain words: Timesheets → Timesheet sheets → New. The employee is you by default and the period is the current week: change them if you need to. The sheet gathers your timesheets of the period (the ones with a project). Click Refresh the hours to gather the ones you logged since. The warning shows when the hours are lower than the expected hours.
The sheets, by employee and status.
The sheets, by employee and status.
StatusMeaning
DraftBeing prepared: the hours are still free.
SubmittedWaiting for the manager: the hours are locked.
ApprovedApproved: the hours are locked.
RefusedSent back with a reason: the hours are free again.

Submit and approve

In plain words: The employee clicks Submit: the approver gets an activity. The manager opens the sheet, checks the hours and the expected hours, and clicks Approve.
A submitted sheet, waiting for the manager.
A submitted sheet, waiting for the manager.
In plain words: To refuse, write the reason in the field and click Refuse: the employee gets an activity with the reason, corrects the hours and submits the sheet again.
A refused sheet with its reason.
A refused sheet with its reason.
Tip: Nobody approves their own sheet, except a timesheet administrator.

Locked hours

In plain words: Once a sheet is submitted or approved, its hours are locked for everybody but the timesheet administrators: the hours, the date, the project and the task cannot be changed, the entries cannot be deleted, and no hours can be added to the period. The employee sees a clear message. To change something, the manager refuses the sheet or sets it back to draft.
The timesheets with their approval status.
The timesheets with their approval status.
In plain words: In the timesheets list, the Approval column shows the status of each entry, and the filters Not submitted, Submitted and Approved find them.

Sheets for everybody

In plain words: Timesheets → Timesheets → Generate sheets: choose the period (last week by default), and the employees if you want only some. A draft sheet is created for each employee who has hours in the period that are on no sheet yet; the ones who already have a sheet are skipped.
In plain words: To do it every week, enable the scheduled action Timesheet approval: draft sheets for last week (Settings → Technical → Scheduled actions): it creates the sheets of the last week and gives each employee an activity to submit theirs. It is off by default.

The overview

In plain words: Timesheet sheets → pivot view shows the hours by employee and by status.
The hours by employee and status.
The hours by employee and status.
In plain words: Print gives the sheet: the period, the status, the approver, every entry with its date, project, task and description, the total and the expected hours, and lines for the signatures.
The printed sheet.
The printed sheet.

Who can do what

WhoCan
Employees (Timesheets: own timesheets)Make, submit and set back to draft their own sheets, and see them.
ManagersSee the sheets they approve and their hours, and approve or refuse them.
Timesheet approvers (all timesheets)See, approve and refuse all the sheets, and generate sheets.
Timesheet administratorsAlso approve their own sheet, reopen an approved one and edit locked hours.
Other usersNo access.

Arabic and right to left

A sheet in an Arabic interface.
A sheet in an Arabic interface.

Limits

LimitDetail
Project timesheetsOnly the timesheets that have a project are on a sheet.
One sheet per periodTwo sheets of the same employee cannot overlap, except a refused one.
Expected hoursThey come from the employee's working schedule and the time off recorded as leaves of the schedule.

For developers

In plain words: Skip this chapter if you only use the module.
sheet = env['taqnix.timesheet.sheet'].create({'employee_id': employee.id, 'date_from': '2026-10-12', 'date_to': '2026-10-18'})
sheet.action_submit()
sheet.action_approve()   # or: sheet.refuse_reason = 'Friday is missing'; sheet.action_refuse()
sheet.total_hours, sheet.expected_hours, sheet.missing_hours
env['taqnix.timesheet.sheet']._generate_sheets(date(2026, 10, 12), date(2026, 10, 18))   # draft sheets for everybody

Troubleshooting

ProblemWhat to do
I cannot change my hoursThey are on a submitted or approved sheet: ask your manager to refuse the sheet or set it back to draft.
Nothing to submitThere are no timesheets with a project in the period: check the dates, then Refresh the hours.
I cannot approve my own sheetYour manager has to; only a timesheet administrator can approve their own.
The sheet has no approverThe employee has no manager and no department manager: choose the approver on the draft sheet.
An employee is missing in Generate sheetsThey have no timesheet in the period, or already have a sheet.

Updating and removing

Replace the folder with the new version, restart Odoo and run -u taqnix_timesheet_approval. Your sheets are kept.

Support

Installation help and bug fixes are included for 6 months, with lifetime updates. Contact us through the marketplace page where you bought the module or write to support@taqnix.com with your Odoo version and a screenshot.