| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 3235 |
| Technical Name |
wt_hrms_payroll_portal |
| License | OPL-1 |
| Website | https://way4tech.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Employees (hr) |
| Community Apps Dependencies | Show |
| Lines of code | 3235 |
| Technical Name |
wt_hrms_payroll_portal |
| License | OPL-1 |
| Website | https://way4tech.com |
WT HRMS Payroll — Employee Self-Service Portal
Give every employee a portal login to see their own payslips, loans, advances and YTD totals. Row-level security guarantees nobody sees anyone else's data. No HR back-and-forth, no PDF email chains.
employee portal · self service · my payslips · my loans · my advances · YTD · year to date · payslip download · portal mixin · row level security · HRMS Odoo 19 · Odoo 19 · Odoo 18 · community edition · enterprise alternative · open hrms · HR software · HR automation · way4tech
Live Preview
A real screenshot from a working WT HRMS install on Odoo 19.
The Problem This Solves
Without a portal, "Can you send me my payslip?" emails consume hours of HR's week.
HR drowns in payslip requests
"Send me last March's payslip" — a single mail thread can eat 30 minutes when multiplied across 100 employees.
No YTD visibility for staff
Employees can't tell what they've earned year-to-date or how much tax has been deducted — tax-filing season becomes painful.
Loans & advances are opaque
Employees with active loans / advances have no way to check status without messaging HR.
The Solution — Three Routes, Row-Level Security
Self-service pages for payslips, loans, advances. Backend admins see everything; portal users see only their own data. Period.
- ✓
/my/payslips— paginated list (20 per page) of every payslip belonging to the logged-in employee - ✓
/my/payslips/<id>— payslip detail with lines grouped by category (basic / allowance / deduction / net) - ✓ YTD totals on the listing — year-to-date Gross + Net summary cards above the list
- ✓
/my/loans— my loan list (only when wt_hrms_loans is installed) - ✓
/my/advances— my salary-advance requests with status (only when wt_hrms_advances is installed) - ✓ Cards on /my home — My Payslips / My Loans / My Salary Advances injected into the standard portal home page with live counters
- ✓ Row-level security —
ir.ruleonwt.hrms.payslip,wt.hrms.loan,wt.hrms.advancefor portal group:employee_id.user_id == user.id - ✓ Defensive controllers — if a portal user types another employee's payslip ID, they are redirected back; backend HR roles still see everything
- ✓ Portal mixin on payslip —
access_urlset to/my/payslips/<id>for share links + breadcrumbs - ✓ Optional integration — loans + advances tabs only render if those modules are installed (no missing-record errors)
- ✓ Read-only enforcement — portal rules grant only
perm_read; portal users can never edit, create or delete - ✓ Pagination — 20 payslips per page using Odoo's standard
portal_pager
Step-by-Step User Guide
Install (depends on Portal + WT HRMS Payroll)
Apps → "WT HRMS Payroll — Employee Portal". Both portal and wt_hrms_payroll are auto-installed.
Link each employee to a portal user
Open Employees → pick the employee → HR Settings → Related User. Create / pick a user. On that user's record, set Access Type = Portal. Send the portal invite from the user form.
Employee logs in & opens /my
After accepting the invite the employee lands on /my. Three new cards appear: My Payslips, My Loans, My Salary Advances. Each shows a live count.
Browse payslips with YTD totals
Click My Payslips. The page shows YTD Gross + YTD Net cards on top, then a paginated list (20 per page). Click a row to open the detail view with lines grouped by category.
Loans & advances (optional)
If WT HRMS Loans / Advances are installed, the corresponding pages render at /my/loans and /my/advances. If not installed, the controller short-circuits with a redirect — no error, no broken link.
Verify the security boundary
As a smoke test, log in as a different portal user and try to open another employee's payslip URL. The defensive controller bounces them to /my/payslips. Read access at the ORM level is also blocked by the ir.rule.
Every Feature That Matters
My Payslips Listing
Paginated 20-per-page list ordered by date, filtered to the logged-in employee.
Payslip Detail
Lines grouped by category — basic, allowance, deduction, net — clean read-only view.
YTD Cards
Year-to-date Gross and Net totals shown on the listing page — ideal for tax filing.
Loans Page
Renders only when WT HRMS Loans is installed; otherwise the route silently redirects to /my.
Advances Page
Same conditional pattern for WT HRMS Advances — install adds the page automatically.
Row-Level Security
Three ir.rule records gate read on payslip / loan / advance for the portal group.
Portal Home Cards
Three portal_docs_entry tiles injected into /my with live counters.
Portal Mixin
Payslip inherits portal.mixin → access_url auto-set, breadcrumbs work out of the box.
Read-Only by Design
Portal rules grant perm_read only — create / write / unlink are blocked at the ORM layer.
Compatibility & Requirements
| Odoo Edition | Community & Enterprise |
| Odoo Version | 19.0 |
| Dependencies | wt_hrms_payroll, portal |
| Optional integrations | wt_hrms_loans, wt_hrms_advances |
| Python Packages | None |
| External Services | None |
| License | LGPL-3 |
About Waqas Riasat & Way4Tech
WT HRMS is a community-first HR + payroll suite for Odoo 19. The Employee Portal is the front-of-house: stack it with WT HRMS Payroll, Pakistan localization, Accounting Integration and Bank Disbursement Files for end-to-end self-service payroll.
way4tech.com · info@way4tech.com · WhatsApp +92 315 411 4748
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module