Servicio - Notificar Reposición Recomendada
Este servicio envía notificaciones de reposición recomendada cuando un producto cae por debajo de su cantidad mínima recomendada de stock.
🔍 Ubicación
src/services/notificaciones/reposicion.service.ts
📦 Dependencias utilizadas
import prisma from '../../utils/prismaClient';
import { TipoNotificacion, productos as Producto } from '@prisma/client';
import { puedeNotificar } from '../../utils/notificaciones/preferenciasNotificaciones';
prisma→ Cliente Prisma configurado enutils/prismaClient.ts, para interactuar con la base de datos.TipoNotificacion→ Enumeración con los tipos de notificación.Producto→ Tipo correspondiente al modeloproductosen Prisma.puedeNotificar→ Función que valida si un usuario tiene habilitado recibir un tipo de notificación.
🔍 Descripción
La función notificarReposicionRecomendada:
- Obtiene los recordatorios de stock mínimo (
recorStock), filtrando opcionalmente por una lista de productos. - Comprueba si la cantidad actual está por debajo del mínimo recomendado, pero por encima del umbral crítico.
- Si se cumplen las condiciones:
- Usuarios individuales: se envía la notificación solo al propietario.
- Usuarios empresariales: se envía a todos los miembros de la empresa.
- Antes de enviar cualquier notificación, se respeta la configuración de preferencias de notificación.
🛠️ Lógica clave
const umbralCritico = Math.min(8, Math.floor(cantidadMinima / 8));
if (cantidadActual <= umbralCritico) return;
if (cantidadActual >= cantidadMinima) return;
// Crear notificación si puedeNotificar(...)
- Umbral crítico: evita notificar en casos de stock extremadamente bajo (posible notificación previa).
- Chequeos de cantidad: evita alertas innecesarias cuando el stock está igual o por encima del mínimo.
📌 Parámetros
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
productosOpcionales | Producto[] | No | Lista de productos a evaluar. Si no se pasa, se revisan todos en la BD. |
📤 Retorno
- Tipo:
Promise<void> - Efecto: Registra en la base de datos notificaciones de tipo
REPOSICION_RECOMENDADA.
📎 Notas
- El servicio diferencia entre usuarios individuales y empresariales.
- Solo se notifica a quienes tengan activa la preferencia
REPOSICION_RECOMENDADA. - La fecha de envío se registra para trazabilidad.