@php $currentUser = Auth::guard('admin')->user() ?? Auth::guard('web')->user() ?? Auth::user(); $cajeroNombre = $currentUser->nombre_completo ?? $currentUser->name ?? 'Cajero'; $cajeroRol = $currentUser->perfil->nombre ?? $currentUser->rol ?? 'Cajero'; $cajeroInitials = strtoupper(substr($cajeroNombre, 0, 2)); if (empty($cajeroInitials)) $cajeroInitials = 'CA'; $sucursalIdActual = $currentUser->sucursal_asignada_id ?? $currentUser->sucursal_id ?? session('sucursal_id') ?? null; $montoEnCaja = '0.00'; $montoRetirado = '0.00'; $totalOperaciones = 0; $turnoAperturaHora = '--:--'; $turnoCodigo = '#TURNO-01'; try { $cajaQ = \Illuminate\Support\Facades\DB::table('Pagos_Cajas_Historial as ch') ->join('Pagos_Cajas_Diarias as cd', 'ch.caja_id', '=', 'cd.id_cajaDi') ->where('cd.estado', 'activo') ->whereNull('ch.fecha_cierre'); $currentUserId = $currentUser->id_usuario ?? $currentUser->id ?? null; $cajaActivaRow = null; if ($currentUserId) { $cajaActivaRow = (clone $cajaQ)->where('cd.usuario_id', $currentUserId)->orderBy('ch.fecha_apertura', 'desc')->first(); } if (empty($cajaActivaRow) && !empty($cajaActivaId)) { $cajaActivaRow = (clone $cajaQ)->where('cd.id_cajaDi', $cajaActivaId)->orderBy('ch.fecha_apertura', 'desc')->first(); } if (empty($cajaActivaRow) && $sucursalIdActual) { $cajaActivaRow = (clone $cajaQ)->where('cd.sucursal_id', $sucursalIdActual)->orderBy('ch.fecha_apertura', 'desc')->first(); } if (empty($cajaActivaRow)) { $cajaActivaRow = (clone $cajaQ)->orderBy('ch.fecha_apertura', 'desc')->first(); } if ($cajaActivaRow) { $cajaIdReal = $cajaActivaRow->caja_id ?? $cajaActivaRow->id_cajaDi; $turnoCodigo = '#TURNO-' . str_pad($cajaActivaRow->id_historial ?? '1', 2, '0', STR_PAD_LEFT); if ($cajaActivaRow->fecha_apertura) { $turnoAperturaHora = date('h:i a', strtotime(substr($cajaActivaRow->fecha_apertura, 0, 19))); } $pagosEfectivo = \Illuminate\Support\Facades\DB::table('Ventas_Pagos') ->where('creado_at', '>=', $cajaActivaRow->fecha_apertura) ->where('estado', 'COMPLETED') ->where('metodo_pago', 'LIKE', '%EFECTIVO%') ->get(); $ventasEfectivo = 0; foreach ($pagosEfectivo as $pEfectivo) { $montoNeto = (float) $pEfectivo->monto; if (preg_match('/Recibido:\s*S\/\s*([0-9.]+)/u', $pEfectivo->descripcion ?? '', $mRec)) { $ventasEfectivo += (float) $mRec[1]; } else { $ventasEfectivo += $montoNeto; } } $egresosSum = (float) \Illuminate\Support\Facades\DB::table('Pagos_Cajas_Egresos') ->where('caja_diaria_id', $cajaIdReal) ->where('creado_at', '>=', $cajaActivaRow->fecha_apertura) ->sum('monto'); $numEgresos = \Illuminate\Support\Facades\DB::table('Pagos_Cajas_Egresos') ->where('caja_diaria_id', $cajaIdReal) ->where('creado_at', '>=', $cajaActivaRow->fecha_apertura) ->count(); $montoInicial = (float) ($cajaActivaRow->monto_inicial ?? 0); $totalEnCaja = max(0, $montoInicial + $ventasEfectivo - $egresosSum); $montoEnCaja = number_format($totalEnCaja, 2, '.', ''); $montoRetirado = number_format($egresosSum, 2, '.', ''); $totalOperaciones = $numEgresos; } } catch (\Exception $e) {} @endphp