user()->canAccessCliente($cuenta->balanza->cliente_id)) { return response()->json(['message' => 'No autorizado'], 403); } $validated = $request->validate([ 'reporte_contable_id' => 'required|exists:reportes_contables,id', 'categoria_contable_id' => 'required|exists:categorias_contables,id', 'requiere_revision' => 'boolean', 'nota_revision' => 'nullable|string', ]); $cuenta->update([ 'reporte_contable_id' => $validated['reporte_contable_id'], 'categoria_contable_id' => $validated['categoria_contable_id'], 'requiere_revision' => $validated['requiere_revision'] ?? false, 'nota_revision' => $validated['nota_revision'] ?? null, ]); return response()->json($cuenta->load(['categoriaContable', 'reporteContable'])); } public function toggleExclusion(Request $request, Cuenta $cuenta): JsonResponse { if (!$request->user()->canAccessCliente($cuenta->balanza->cliente_id)) { return response()->json(['message' => 'No autorizado'], 403); } $cuenta->update(['excluida' => !$cuenta->excluida]); // Recalcular cuenta padre si existe if ($cuenta->cuentaPadre) { $cuenta->cuentaPadre->recalcularSaldoDesdeHijos(); } return response()->json($cuenta); } public function anomalias(Request $request): JsonResponse { $user = $request->user(); $query = Cuenta::where('requiere_revision', true) ->with(['balanza.cliente', 'categoriaContable', 'reporteContable']); if (!$user->isAdmin() && !$user->isAnalista()) { $query->whereHas('balanza', function ($q) use ($user) { $q->where('cliente_id', $user->cliente_id); }); } return response()->json($query->get()); } }