diff --git a/fusion_plating/docs/superpowers/plans/2026-05-30-employee-portal-clock-payslips.md b/fusion_plating/docs/superpowers/plans/2026-05-30-employee-portal-clock-payslips.md new file mode 100644 index 00000000..f21dde4a --- /dev/null +++ b/fusion_plating/docs/superpowers/plans/2026-05-30-employee-portal-clock-payslips.md @@ -0,0 +1,759 @@ +# Employee Portal — Clock + Payslips Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Give internal staff a clean employee portal (Clock + Payslips, no customer sidebar) while customers keep the existing customer portal unchanged. + +**Architecture:** `fusion_plating_portal` gates its own sidebar shell and redirects internal users to the clock page. `fusion_clock` owns all employee-portal pages — it adds finalized-payslip list + inline paystub routes under `/my/clock/payslips`, reading `hr.payslip` through a soft (`'hr.payslip' in env`) check so it never hard-depends on `fusion_payroll`. + +**Tech Stack:** Odoo 19, `portal` controllers (`CustomerPortal`), QWeb templates, CSS (`portal_clock.css`), SCSS (`fp_portal_sidebar.scss`). + +**Spec:** [2026-05-30-employee-portal-design.md](../specs/2026-05-30-employee-portal-design.md) + +**Key facts established during planning (do not re-derive):** +- Odoo merges every `CustomerPortal` subclass into one MRO, so `FpCustomerPortal._prepare_portal_layout_values` runs on the clock pages too — the gating flag reaches them. +- On entech, `FpCustomerPortal.home()` is the active `/my/home` handler (that's why employees see the customer dashboard today). Editing it is the reliable fix. +- `.o_fp_portal_shell` is a CSS grid `240px 1fr`; hiding only the `