| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Project (project) • Discuss (mail) |
| Lines of code | 944 |
| Technical Name |
cons_portal_access |
| License | LGPL-3 |
| Website | https://odoomacedonia.mk |
| Versions | 18.0 19.0 |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Employees (hr)
• Project (project) • Discuss (mail) |
| Lines of code | 944 |
| Technical Name |
cons_portal_access |
| License | LGPL-3 |
| Website | https://odoomacedonia.mk |
| Versions | 18.0 19.0 |
Portal Timesheets
Give freelancers, subcontractors and field staff a portal login and let them log their own hours on their own assigned tasks — self-service, secure, and scoped to only their work.
😕 The Problem
You work with people who aren't full back-office staff — freelancers, contractors, on-site technicians. They need to record the hours they spend on their tasks, but Odoo gives them no clean way to do it from the portal.
|
⏱️ Portal users can look, but can't log A portal login can view a timesheet page but has no safe, self-service form to actually record hours against a task. |
💸 Internal seats are expensive Promoting every freelancer to an internal user just so they can log time inflates your user count — and your bill. |
|
🔓 Risk of leaking other people's data Hand-rolled portal tweaks often expose other employees' timesheets or tasks if the record rules aren't exactly right. |
🧰 Custom code every time The usual fix is a bespoke controller, group and record rule per project. Fragile, and expensive to maintain. |
✨ What This Module Does
|
📝
Self-Service Hour LoggingPortal users linked to an employee get a Log New button on |
🎯
Only Their Own TasksThe task picker shows only tasks assigned to that person, on projects that allow timesheets. They can't log time against work that isn't theirs — the list simply never offers it. |
|
🛡️
Scoped by Record RuleA record rule limits timesheets to the user's own employee record. They can only ever read and create their own lines — never a colleague's. This is enforced in the data layer, not just hidden in the UI. |
⚙️
Zero Permission JugglingLink a portal login to an employee and the right timesheet group is granted automatically; unlink it and the group is removed. You never touch security groups by hand. |
|
⌨️
Flexible Hours InputEnter time the way that feels natural — a decimal like |
💼
No Internal Seat RequiredYour contractors stay portal users — they don't take up an internal user seat just to record their hours. Keep your team lean and your licensing simple. |
⚙️ How It Works
Link a portal login to an employee
On the employee record, set the Related User to their portal account. The module recognises this person as a portal-based employee.
Assign them tasks
Add them as an assignee on tasks in any project that allows timesheets. These — and only these — become the tasks they can book time against.
They log time from the portal
They sign in, open /my/timesheets, hit Log New, pick a task, enter hours, and submit. It lands as a normal timesheet line in Odoo.
Everything stays scoped to them
A record rule guarantees they only ever see and create their own lines. Your project managers see all the hours roll up as usual.
🚀 Setup
No external dependencies, no system libraries, no API keys. The module depends only on standard Odoo apps (hr, portal, hr_timesheet, project), which install automatically.
1 · Install
2 · Link the portal login to an employee
Select their portal user. The module relaxes the usual "internal users only" filter on this field so portal users are selectable. As soon as they're linked, they're automatically added to the "Portal User: own timesheets only" group — no manual permissions.
3 · Assign them tasks on a timesheet-enabled project
Make sure the project has Timesheets enabled, then add the person as an assignee on their tasks. Those tasks are exactly what they'll be able to book time against — nothing else shows up in their picker.
4 · They log time
The portal user signs in and goes to /my/timesheets, where a Log New button now appears. They pick a task, type the date and hours (1.75 or 1:45), add a short description, and submit. Done — it's a normal timesheet line, scoped to them.
❓ Frequently Asked Questions
Do my contractors need an internal user license?
No. They stay portal users. They log their hours from the portal without consuming an internal user seat.
Can a portal user see or edit someone else's timesheets?
No. A record rule limits them to their own employee's lines. It's enforced at the data layer — they can't read, edit, or create anyone else's timesheets, even via direct URLs.
Which tasks can they log against?
Only tasks where they are an assignee, on a project that has timesheets enabled. The task picker on the form shows nothing else.
What format are the hours entered in?
Either a decimal (1.75) or an HH:MM value (1:45). The form validates the input and stores it correctly.
Does this affect my internal back-office users?
No. Everything here applies only to portal users. Your internal staff continue to use timesheets exactly as before.
Let Your Portal Staff Log Their Own Hours
Link a portal login to an employee, assign their tasks, and they're logging time from the portal in minutes — securely scoped to only their own work.
Portal Timesheets
Developed by Riste Kabranov
odoomacedonia.mk | ristecona@gmail.com
© 2026 Riste Kabranov. All Rights Reserved. · LGPL-3
Please log in to comment on this module