@extends('layouts.app') @section('titulo', 'Dashboard') @section('subtitulo', 'Resumen general del negocio - '.now()->isoFormat('dddd, D [de] MMMM [de] YYYY')) @section('contenido') @php // Color primario resuelto a hex (Chart.js NO soporta var(--xxx)) $colorPrim = $config->color_primario ?? '#28a745'; $colorSec = $config->color_secundario ?? '#343a40'; $sinDatos = ($pedidosHoy == 0 && $ventasMes == 0 && array_sum($data7Total) == 0); @endphp @if($sinDatos)
No hay datos de pedidos todavía

El dashboard se llena con datos reales de pedidos. Para ver los gráficos con información demo, ejecuta los seeders:

php artisan migrate:fresh --seed
Esto generará ~900 pedidos en los últimos 60 días, 12 clientes, 11 cajas y todos los datos para que el dashboard cobre vida.
@endif {{-- KPIs --}}
Ventas hoy

{{ $config->formatearPrecio($ventasHoy) }}

@if($variacionDia >= 0) +{{ number_format($variacionDia,1) }}% @else {{ number_format($variacionDia,1) }}% @endif vs ayer
Pedidos hoy

{{ $pedidosHoy }}

Ticket medio: {{ $config->formatearPrecio($tickedMedio) }}
Ventas del mes

{{ $config->formatearPrecio($ventasMes) }}

@if($variacionMes >= 0) +{{ number_format($variacionMes,1) }}% @else {{ number_format($variacionMes,1) }}% @endif vs mes anterior
Clientes

{{ $totalClientes }}

+{{ $clientesNuevosMes }} nuevos este mes
{{-- Alertas --}} @if($stockBajo > 0)
Hay {{ $stockBajo }} producto(s) con stock bajo. Ver productos →
@endif
{{-- Gráfico ventas 7 días --}}
Ventas últimos 7 días
Total: {{ $config->formatearPrecio(array_sum($data7Total)) }}
{{-- Donut tipos pedido --}}
Ventas por tipo (mes)
@if(count($ventasPorTipo) === 0)

Sin pedidos este mes

@else
@endif
{{-- Ventas por hora --}}
Ventas por hora (hoy)
{{-- Top productos --}}
Top productos del mes
@forelse($topProductos as $i => $p) @empty @endforelse
#ProductoUds.Total
{{ $i+1 }} {{ $p->nombre_producto }} {{ number_format($p->cantidad,0) }} {{ $config->formatearPrecio($p->total) }}
Sin datos aún
{{-- Pedidos en curso --}}
Pedidos en curso Ver todos
@forelse($pedidosEnCurso as $p) @empty @endforelse
TipoCliente / MesaEstadoTotal
{{ $p->numero }} {{ \App\Models\Pedido::TIPOS[$p->tipo] ?? $p->tipo }} {{ $p->mesa ? 'Mesa '.$p->mesa->numero : ($p->cliente_nombre ?: 'Sin cliente') }} {{ \App\Models\Pedido::ESTADOS[$p->estado] ?? $p->estado }} {{ $config->formatearPrecio($p->total) }}
Sin pedidos pendientes
{{-- Categorías --}}
Ventas por categoría
@forelse($ventasCategorias as $c) @php $maxc = $ventasCategorias->max('total') ?: 1; $pct = ($c->total/$maxc)*100; @endphp
{{ $c->nombre }} {{ $config->formatearPrecio($c->total) }}
@empty

Sin datos aún

@endforelse
@endsection @section('scripts') @endsection