# Expense Reimbursement — Web Workflow

## Implemented

- Technical team members can submit an expense claim for an assigned active project or site visit. Categories currently enabled are travel, food, and accommodation; each claim includes expense date, positive amount, description, and 1–5 private image/PDF receipts.
- Claimants can see their own claims and status.
- Technical Managers can see and comment on claims made by direct-report technical team members (`reports_to_id`), and can record a review comment/recommendation. This moves the claim to `under_review`; it does not approve or reject the claim.
- Technical Heads can see a status overview and claims from technical staff within their configured region. They make the final approve/reject decision, move approved claims to `processing`, and mark processed claims `reimbursed`. A rejection reason is required; a payment reference is optional.
- Super Admin can view all claims but cannot make the Technical Head's approval decision. Receipts are served only after backend authorization.
- Web routes are session-authenticated. No mobile/API routes were added.
- Claim status transitions are `submitted` / `under_review` → `approved` or `rejected` → `processing` → `reimbursed`. Approval, rejection, processing, and reimbursement actions are recorded in the claim review history.
- The staff API supports claim submission, manager review, and the Technical Head's approve/reject, processing and reimbursement actions (see STAFF_MOBILE_API.md, E1–E7).
- No two-day submission deadline, seven-day processing deadline, amount limit, or travel eligibility rule is enforced because no company policy/configuration defining these was found.

## Existing workflow/policy inspection

- No prior expense claim model, migration/table, route, controller, view, expense permission, category configuration, Finance role, or reimbursement workflow was found in the application, migrations, tests, or available project documentation.
- The proposal approval hierarchy is explicitly sales-only and was not reused for expense claims.
- Technical team assignment already uses `users.reports_to_id` and project/site-visit assignments; regional scope already uses `users.region_id`.

## Policy items still requiring confirmation

1. A Technical Manager recommendation is optional; no mandatory escalation rule is configured.
2. What expense categories beyond travel, food, and accommodation are permitted? `other` remains disabled until defined.
3. Is the two-day submission period measured from the expense date, task completion, or another event?
4. Does the seven-day reimbursement target start at claim submission, final approval, or Finance processing, and are these calendar or working days?
5. What designation-based limits and travel/location eligibility rules should be configured?
6. There is no Finance role in the current role/permission setup. The Technical Head currently records the processing and reimbursement completion in Web.
