@extends('layout.main') @section('content') @php $money = function ($v) { return '$' . number_format((float) $v, 2); }; $delta = function ($now, $before) { return $before > 0 ? round(100 * ($now - $before) / $before, 1) : null; }; $m = $data['month']; $dm = $delta($m['net'], $m['prev']); $dt = $delta($data['today']['total'], $data['yesterday']['total']); $r = $data['reservations']; $goal = $data['goal']; $isAdmin = Auth::user()->isAdminOrOwner(); $firstName = explode(' ', trim(Auth::user()->name))[0]; // Resumen del día: lo arma el software con reglas fijas (sin IA). $summary = []; $summary[] = $data['today']['count'] ? 'Hoy llevas ' . $money($data['today']['total']) . ' en ' . $data['today']['count'] . ($data['today']['count'] == 1 ? ' venta' : ' ventas') . ($dt !== null ? ', ' . abs($dt) . '% ' . ($dt >= 0 ? 'más' : 'menos') . ' que ayer.' : '.') : 'Hoy todavía no hay ventas registradas' . ($data['yesterday']['count'] ? ' (ayer: ' . $money($data['yesterday']['total']) . ').' : '.'); if ($dm !== null) $summary[] = 'En ' . $m['label'] . ' vas ' . abs($dm) . '% ' . ($dm >= 0 ? 'por encima' : 'por debajo') . ' del mes pasado a esta misma fecha.'; if ($goal['amount']) $summary[] = 'Llevas el ' . $goal['pct'] . '% de tu meta; a esta fecha lo esperado es ' . $goal['expected_pct'] . '%.'; $summary[] = count($data['attention']) ? 'Hay ' . count($data['attention']) . ' ' . (count($data['attention']) == 1 ? 'cosa' : 'cosas') . ' que revisar.' : 'Todo está en orden.'; $maxStore = collect($data['stores'])->max('total') ?: 1; $maxTop = collect($data['top'])->max('total') ?: 1; $payTotal = array_sum($data['payments']); $brand = \App\Services\Brand::settings(); @endphp
{!! implode(' ', $summary) !!}
Todavía no hay ventas este mes.
@endifSin movimientos todavía.
@endifDatos del sistema en tiempo real · ventas sin borradores del ambiente SRI activo · Volver al Inicio (radar) · Ver tablero clásico