diff --git a/CLAUDE.md b/CLAUDE.md index 8d6d3a3..7d255af 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -279,6 +279,13 @@ re-shows everyone (no auto-re-tick). Pure JS in `toggleProjectField()` filter back to "All" is still allowed (deliberate override, not the silent footgun). +**Pay Salary quick action:** the home dashboard's admin Quick Actions +row has a "Pay Salary" tile linking `/payroll/?action=pay-salary`; +`payroll_dashboard.html` JS auto-clicks the existing `paySalaryBtn` +on load when that param is present, then strips it via +`history.replaceState` (no re-pop on refresh). `?action=` is inert +server-side — no view/URL change. + ## Payroll Constants Defined at top of views.py — used in dashboard calculations and payment processing: - **ADDITIVE_TYPES** = `['Bonus', 'Overtime', 'New Loan', 'Advance Payment', 'Salary']` — increase worker's net pay diff --git a/docs/plans/parked-work.md b/docs/plans/parked-work.md index 2d2b5c0..7b34925 100644 --- a/docs/plans/parked-work.md +++ b/docs/plans/parked-work.md @@ -90,6 +90,13 @@ can never silently target a daily worker). Design `docs/plans/2026-05-16-salary-autoscope-picker-plan.md`. Same HARD STOP — bundled into the one push on Konrad's say-so. +Also now: a home-dashboard admin Quick Actions tile **"Pay Salary"** +deep-links `/payroll/?action=pay-salary` and auto-opens the existing +Pay Salary modal (param stripped after; no re-pop on refresh). Design +`docs/plans/2026-05-16-pay-salary-quick-action-design.md`, plan +`docs/plans/2026-05-16-pay-salary-quick-action-plan.md`. Same HARD +STOP — bundled into the one push on Konrad's say-so. + #### Follow-ups from code review (parked, out of scope for this feature) 1. **Atomicity hardening (cross-cutting, pre-existing).**