An enskild firma that hires staff should get the payroll module, but its owner
or board can never be on payroll (owner compensation is egna uttag / BAS 2013,
not lön).
- Migration 20260628120000 adds the enforce_ef_no_owner_employee trigger
(BEFORE INSERT OR UPDATE OF employment_type) as the all-paths backstop.
- lib/salary/employment-rules.ts is the app-layer mirror (forbidden set kept
byte-identical to the trigger); getCompanyEntityType() resolves the same
company_settings -> companies precedence.
- The two UI salary routes and the v1 POST guard before insert/update for a
clean 400 with guidance.
- Payroll nav + Lön settings now show for any employer (aktiebolag OR
company_settings.pays_salaries), wired through the dashboard layout.
Fixes#782.
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>