Gestionar TI sin control financiero es navegar sin brújula. GLPI incluye módulos nativos para contratos, presupuestos, proveedores y depreciación, todos integrados con los activos y los tickets. En la práctica, sin embargo, lo difícil no es el registro: es lograr que las alertas se disparen y que los números cuadren.
Contratos: qué registrar (y qué suele faltar)
En Gestión > Contratos, cada contrato debe incluir:
- Identificación: número, tipo (soporte, mantenimiento, alquiler, licencia) y proveedor vinculado.
- Vigencia: fecha de inicio y duración en meses. GLPI no guarda la fecha de fin; la calcula a partir del inicio más la duración.
- Preaviso (notice): en meses. Define con cuánta antelación debe llegar la alerta de renovación.
- Renovación: nunca, tácita o expresa.
- Costos: en la pestaña de costos, con periodicidad (mensual, anual) para que el consumo coincida con el presupuesto.
- Activos cubiertos: vincula ordenadores, servidores y demás elementos para saber qué queda sin cobertura al vencer.
La trampa clásica: registrar el contrato con duración 0 (indefinida). Sin duración no hay fecha de fin calculable, y la alerta de vencimiento simplemente nunca se dispara.
Hacer que las alertas se disparen de verdad
Tres capas deben estar activas al mismo tiempo, o no sale ningún correo:
- Notificaciones globales habilitadas en Configuración > Notificaciones, con un destinatario real configurado.
- Alerta activada en el propio contrato (fin de contrato o preaviso). El valor por defecto viene de la clave
default_contract_alert. - Acción automática en ejecución. La tarea
contractsolo envía si el cron de GLPI se está llamando de verdad.
En entornos de cliente, el fallo número uno es el cron detenido. Asegúrate de que GLPI lo dispara el sistema operativo, y no solo cuando alguien abre la interfaz:
# /etc/cron.d/glpi - dispara las acciones automáticas de GLPI cada minuto
* * * * * www-data /usr/bin/php /var/www/html/glpi/front/cron.php >/dev/null 2>&1
Luego, en Configuración > Acciones automáticas, abre la tarea contract y verifica: modo CLI/externo, frecuencia (diaria por defecto) y la fecha de la última ejecución. Si el modo está en "GLPI" (interno), la tarea depende de que alguien navegue por el sistema en el momento justo, lo cual es frágil.
La alerta configurada que no reenvía
Este es el detalle que solo aparece en el día a día: GLPI graba en glpi_alerts cada notificación ya enviada para no duplicar. Si el correo falló (SMTP mal, buzón lleno) pero la fila se grabó, GLPI lo considera "ya avisé" y no reenvía, aunque corrijas el SMTP después. Para forzar el reenvío de un contrato concreto, limpia el marcador de la alerta:
-- Buscar el id del contrato por nombre
SELECT id, name FROM glpi_contracts WHERE name LIKE '%Soporte Datacenter%';
-- Eliminar el marcador de alerta ya enviada (ej. contrato 42)
DELETE FROM glpi_alerts
WHERE itemtype = 'Contract' AND items_id = 42;
En la siguiente ejecución del cron, la tarea contract reevalúa el vencimiento y reenvía. Lo mismo aplica a las garantías, cambiando por itemtype = 'Infocom'.
Diagnóstico rápido: contratos por vencer
Antes de confiar en el panel, un SELECT directo confirma lo que realmente vence en los próximos 90 días, con proveedor y días restantes:
SELECT c.id,
c.name AS contrato,
s.name AS proveedor,
c.begin_date,
DATE_ADD(c.begin_date, INTERVAL c.duration MONTH) AS fin,
DATEDIFF(DATE_ADD(c.begin_date, INTERVAL c.duration MONTH),
CURDATE()) AS dias_restantes
FROM glpi_contracts c
LEFT JOIN glpi_contracts_suppliers cs ON cs.contracts_id = c.id
LEFT JOIN glpi_suppliers s ON s.id = cs.suppliers_id
WHERE c.is_deleted = 0
AND c.is_template = 0
AND c.duration > 0
AND DATE_ADD(c.begin_date, INTERVAL c.duration MONTH)
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 90 DAY)
ORDER BY fin ASC;
Ejecútalo como consulta de solo lectura. Es el mismo cálculo que hace la interfaz, útil para auditar antes de una renovación en lote.
Presupuestos ligados a contratos y compras
En Gestión > Presupuestos, define el valor, el período (anual, semestral o por proyecto) y el tipo. El punto que muchos ignoran: el presupuesto en GLPI es una referencia de seguimiento, no un bloqueo. No impide registros por encima del tope; muestra planificado frente a consumido cuando vinculas los costos de los contratos y la información financiera de los activos (Infocom) a ese presupuesto. Sin ese vínculo, el consumo queda en cero y el informe engaña.
Depreciación de activos
Cada activo tiene la pestaña Gestión (Infocom) con valor de compra, fecha de adquisición, garantía y depreciación. GLPI calcula el valor contable automáticamente a partir del tipo y el plazo. Elegir el método correcto evita distorsión en el TCO:
| Escenario | Tipo (sink_type) | Plazo típico (años) | Nota |
|---|---|---|---|
| Portátiles y equipos de escritorio | Lineal | 4 a 5 | Pérdida constante; fácil de auditar. |
| Servidores y almacenamiento | Lineal | 5 a 7 | Sigue la garantía extendida en paralelo. |
| Equipos con pérdida acelerada al inicio | Degresivo | 3 a 5 | Exige un coeficiente (sink_coeff) coherente. |
| Licencia o activo sin valor residual relevante | Lineal | 1 a 3 | Alinea el plazo con la vigencia del contrato. |
Define los valores por defecto en Configuración > General > pestaña Activos para no rellenar elemento por elemento. El error común aquí es dejar en blanco la fecha de inicio de uso: sin ella GLPI no sabe desde cuándo depreciar, y el valor contable queda igual al de compra para siempre.
Informes y costo por ticket
- Activos por valor: cuánto está invertido por ubicación o entidad.
- Contratos por vencer: la misma lista del SELECT anterior, ahora en el panel.
- Depreciación: valor contable del parque a lo largo del tiempo.
- Costo por ticket: valor del contrato dividido por el número de tickets atendidos por ese proveedor, ideal para sustentar una renegociación.
Checklist de soporte NexTool
Al hacernos cargo de entornos de clientes, antes de confiar en la gestión financiera de GLPI validamos siempre la misma secuencia: cron llamando a front/cron.php desde el sistema operativo (no desde el navegador); tarea contract en modo externo con una última ejecución reciente; notificaciones globales activas y un destinatario real en la alerta; contratos sin un duration = 0 indebido; y un barrido en glpi_alerts cuando el cliente dice que "dejó de recibir correos". Nueve de cada diez casos de "GLPI no avisa del vencimiento" caen en uno de estos cinco puntos, no en un bug del producto.
¿Necesitas poner los contratos, presupuestos y alertas de GLPI a funcionar de punta a punta? NexTool implanta y mantiene estos flujos en entornos de clientes B2B: conoce el soporte de sustentación NexTool.
Revisado por el equipo de NexTool Solutions.