From bf2e4782b466f8f567e408998afb95c4e409a8e1 Mon Sep 17 00:00:00 2001 From: AgustinRodriguez-Andes <63318331+agustin1996ra@users.noreply.github.com> Date: Mon, 23 Feb 2026 11:11:44 -0300 Subject: [PATCH] (job): REC-202 Job para eliminar recetas con estado "eliminada" --- jobs/eliminarRecetas.ts | 7 +++++++ modules/recetas/recetasController.ts | 27 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) create mode 100644 jobs/eliminarRecetas.ts diff --git a/jobs/eliminarRecetas.ts b/jobs/eliminarRecetas.ts new file mode 100644 index 000000000..43f44b61c --- /dev/null +++ b/jobs/eliminarRecetas.ts @@ -0,0 +1,7 @@ +import { eliminarRecetas } from './../modules/recetas/recetasController'; + +async function run(done) { + await eliminarRecetas(done); +} + +export = run; diff --git a/modules/recetas/recetasController.ts b/modules/recetas/recetasController.ts index f6f61df78..6afb76b31 100644 --- a/modules/recetas/recetasController.ts +++ b/modules/recetas/recetasController.ts @@ -829,3 +829,30 @@ export async function actualizarEstadosDispensa() { await informarLog.error('actualizarEstadosDispensa', {}, error); } } +/** + * Elimina recetas con estado "eliminada" y con fecha de cambio de estado mayor a 6 meses. + * @param done + */ +export async function eliminarRecetas(done) { + let totalRecetasAEliminar = 0; + let totalRecetasEliminadas = 0; + let query = {}; + try { + const fechaEliminacion: any = await RecetasParametros.findOne({ key: 'fechaEliminacion' }); + const days = (fechaEliminacion && fechaEliminacion.value) ? Number(fechaEliminacion.value) : 180; + const fechaLimite = moment().subtract(days, 'days').toDate(); + query = { + 'estadoActual.tipo': 'eliminada', + 'estadoActual.createdAt': { $lte: fechaLimite } + }; + totalRecetasAEliminar = await Receta.countDocuments(query); + const result = await Receta.deleteMany(query); + totalRecetasEliminadas = result.deletedCount || 0; + await jobsLog.info('eliminarRecetas', { totalRecetasAEliminar, totalRecetasEliminadas, query }); + } catch (err) { + await jobsLog.error('eliminarRecetas', { totalRecetasEliminadas, totalRecetasAEliminar, query }, err); + return (done(err)); + } + done(); +} +