@extends('layouts.app') @section('title', 'Admin Timesheet Report') @section('breadcrumb') Reports / Employee Timesheet Report @endsection @section('content')
Full time log, task details, rate & earnings — filterable by date, job, and employee
| Employee | Role | Hourly Rate | Entries | Hours | Earnings |
|---|---|---|---|---|---|
|
{{ strtoupper(substr($summary['name'],0,2)) }}
{{ $summary['name'] }}
|
{{ $summary['role'] }} | ${{ number_format($summary['rate'], 2) }}/hr | {{ $summary['entries'] }} | {{ number_format($summary['hours'], 2) }}h | ${{ number_format($summary['earnings'], 2) }} |
| Total | {{ number_format($totalHours, 2) }}h | ${{ number_format($totalEarnings, 2) }} | |||
| Date | Employee | Job | Task | Stage | Start | Stop | Hours | Rate | Amount | Status |
|---|---|---|---|---|---|---|---|---|---|---|
| {{ $entry->started_at?->format('d M Y') }} |
{{ $entry->user?->name ?? '—' }}
{{ $entry->user?->role?->display_name ?? '' }}
|
{{ $entry->job?->job_number ?? '—' }} | {{ $entry->taskType?->name ?? '—' }} | @if($entry->job) {{ $entry->job->stageLabel() }} @else — @endif | {{ $entry->started_at?->format('H:i') }} | {{ $entry->stopped_at?->format('H:i') ?? '—' }} | {{ number_format($hrs, 2) }}h | ${{ number_format($rate, 2) }} | ${{ number_format($amount, 2) }} | @php $badge = match($entry->status) { 'completed' => 'badge-green', 'running' => 'badge-blue', 'paused' => 'badge-yellow', default => 'badge-gray', }; @endphp {{ ucfirst($entry->status) }} |
| No time entries found for the selected filters. | ||||||||||
Task completion by employee per job, with time taken, rate and price
| Job | Client | Stage | Employee | Task | Task Status | Hours Logged | Hourly Rate | Total Price |
|---|---|---|---|---|---|---|---|---|
| {{ $row['job_number'] }} | {{ $row['client'] }} | {{ $row['stage_label'] }} | {{ $row['employee'] }} | {{ $row['task'] }} | @php $badge = match($row['task_status']) { 'completed' => 'badge-green', 'in_progress' => 'badge-blue', 'paused' => 'badge-yellow', default => 'badge-gray', }; @endphp {{ ucfirst(str_replace('_',' ',$row['task_status'])) }} | {{ number_format($row['hours'], 2) }}h | ${{ number_format($row['rate'], 2) }} | ${{ number_format($row['total_price'], 2) }} |
| No task assignments found for the selected period. | ||||||||
| Total | {{ number_format(collect($jobStageRows)->sum('hours'), 2) }}h | ${{ number_format(collect($jobStageRows)->sum('total_price'), 2) }} | ||||||