valmex

Popular datos financieros

Estos scripts PHP son llamados por tareas programadas externas. Cada uno consulta servicios de datos financieros externos, limpia la tabla correspondiente en la base de datos local y la repopula con los datos más recientes. En caso de error, notifican vía un servicio de integración y dejan un archivo de respaldo.


Horarios de ejecución

Los crons están configurados en el servidor bajo la ruta /home/customer/www/operadoravalmex.mx/public_html/functions/populate/. Todos los horarios son hora del servidor (UTC-6, México).

Script Expresión cron Descripción
fondos.php 0 13,16 * * 1-5 Lunes a viernes a las 13:00 y 16:00
deuda.php 0 14 * * 1-5 Lunes a viernes a las 14:00
divisas.php 0 14 * * 1-5 Lunes a viernes a las 14:00
mercancias.php 0 14 * * 1-5 Lunes a viernes a las 14:00
indices.php 0 14 * * 1-5 Lunes a viernes a las 14:00
cartera_semanal_check.php 0 15 * * 5 Viernes a las 15:00
cartera_mensual_check.php 0 18 28-31 * * Días 28–31 de cada mes a las 18:00

Las carteras (cartera_mensual.php y cartera_semanal.php) no aparecen en la lista de crons del servidor — se asume que se ejecutan manualmente o desde otro mecanismo externo.

Días inhábiles (queryMustRun)

La función queryMustRun() en crons.php impide la ejecución en fines de semana y en los siguientes días festivos (Ley Federal del Trabajo). La lista debe actualizarse cada año:

Fecha Descripción
2026-01-01 Año Nuevo
2026-02-02 Día de la Constitución (primer lunes de febrero)
2026-03-16 Natalicio de Benito Juárez (tercer lunes de marzo)
2026-04-02 Jueves Santo
2026-04-03 Viernes Santo
2026-05-01 Día del Trabajo
2026-09-16 Día de la Independencia
2026-11-02 Día de Muertos
2026-11-16 Día de la Revolución (tercer lunes de noviembre)
2026-12-12 Día de la Virgen de Guadalupe
2026-12-25 Navidad

Solo fondos.php usa esta validación internamente. El resto de los scripts delegan esa responsabilidad al programador de tareas (ejecutándolos únicamente lunes a viernes).


Notificaciones de error

Cuando un script detecta un error, dispara una notificación que ejecuta un flujo de integración:

  1. Recibe el mensaje de error con detalles generales
  2. Bifurca según el entorno (producción o desarrollo)
  3. Envía un correo electrónico a destinatarios designados

Dependencias compartidas

Todos los archivos incluyen alguna combinación de utilidades comunes para conexión a base de datos, manejo de fechas y validaciones.

Flujo general de cada script

1. Consultar servicio externo → respuesta en formato estructurado
2. Si falla la comunicación → notificar + finalizar
3. Procesar respuesta
4. Si el formato es inválido → notificar + guardar respaldo + finalizar
5. Limpiar tabla destino
6. Insertar datos fila por fila
7. Guardar archivo de respaldo con timestamp
8. Confirmar ejecución

Archivos

fondos.php

Tabla destino: fondos
Fuente: Jonima — endpoint $servicios["fondos"] (XML)
Cron: Lunes a viernes a las 13:00 y 16:00 — además valida internamente con queryMustRun() que no sea día inhábil
Parámetros opcionales: ?fecha=YYYY-MM-DD vía GET (si se omite, usa fecha de hoy en México)

Descarga los rendimientos de fondos de inversión. Por cada fondo/serie registra:

Campo Descripción
fondo / serie Identificador del fondo y su serie
actual Precio actual del fondo
rend_dia Rendimiento del día
rend_mes Rendimiento en el mes en curso
rend_3_meses / rend_12_meses / rend_24_meses / rend_36_meses Rendimientos acumulados por período
rend_anterior / rend_anterior2 / rend_anterior3 Rendimientos de los 3 meses anteriores
rend_eje Rendimiento en el ejercicio (año)
ini_* / fin_anterior / dias_* Fechas de inicio/fin de cada período y número de días
updated Timestamp de la última actualización

Los valores vacíos se convierten a NULL con NULLIF.
Archivos de respaldo: archive/{año}/{mes}/fondos/


cartera_mensual.php

Tabla destino: cartera_mensual
Fuente: Jonima — endpoint $servicios["cartera_mensual"] (XML)
Parámetros: clasificador=tipo_valor, limite_composicion=2, ?fecha=YYYY-MM-DD

Descarga la composición mensual de carteras de fondos. Por cada registro:

Campo Descripción
fondo Clave del fondo
rubro Categoría del instrumento
tipo_valor Tipo de valor (ej. Renta Fija, Variable)
emisora / serie Identificador del instrumento
calificacion Calificación crediticia
valor Valor del instrumento
participacion % de participación en la cartera
fecha / updated Fecha de la cartera y timestamp de carga

Archivos de respaldo: archive/{año}/{mes}/carteras/mensual/


cartera_semanal.php

Tabla destino: cartera_semanal
Fuente: Jonima — endpoint $servicios["cartera_semanal"] (XML)
Parámetros: clasificador=tipo_valor, limite_composicion=2, ?fecha=YYYY-MM-DD

Idéntico en estructura a cartera_mensual.php. Descarga la composición semanal de carteras. Mismos campos que la cartera mensual.

Archivos de respaldo: archive/{año}/{mes}/carteras/semanal/


cartera_mensual_check.php

Tabla consultada: cartera_mensual (solo lectura)
Fuente: Sin llamada a servicios externos
Cron: Días 28–31 de cada mes a las 18:00 — el script además valida internamente con esUltimoDiaDelMes() para actuar solo el último día real del mes

Script de validación, no de carga. Verifica que la cartera mensual haya sido poblada correctamente antes de que cierre el mes:

  1. Si hoy no es el último día del mes → termina sin acción
  2. Busca en cartera_mensual registros con fecha = ayer
  3. Si los encuentra → ✅ confirmación vía callback
  4. Si no los encuentra → ⚠️ alerta vía notificar() (Zapier) + callback

cartera_semanal_check.php

Tabla consultada: cartera_semanal (solo lectura)
Fuente: Sin llamada a servicios externos
Cron: Viernes a las 15:00

Script de validación análogo al mensual. Verifica que la cartera semanal tenga datos de ayer:

  1. Busca en cartera_semanal registros con fecha = ayer
  2. Si los encuentra → ✅ confirmación vía callback
  3. Si no los encuentra → ⚠️ alerta vía notificar() + callback

divisas.php

Tabla destino: divisas
Fuente: Infosel — endpoint $servicios["divisas"] (JSON)
Cron: Lunes a viernes a las 14:00

Descarga tipos de cambio de divisas contra el peso mexicano:

Campo Descripción
divisa Código de la divisa (ej. USD, EUR)
valor Tipo de cambio actual
valor_anterior Tipo de cambio del día anterior
variacion_unitaria Diferencia absoluta
variacion_porcentual Diferencia porcentual
hora / fecha Hora y fecha del dato

Nota: La fecha llega en formato dd/mm/yyyy y se convierte a yyyy-mm-dd con convertirFechaStringToFechaDate().
Archivos de respaldo: archive/{año}/{mes}/divisas/


indices.php

Tabla destino: indices
Fuente: Infosel — endpoint $servicios["indices"] (JSON)
Cron: Lunes a viernes a las 14:00

Descarga índices bursátiles nacionales e internacionales:

Campo Descripción
instrumento Nombre del índice (ej. IPC, S&P 500, Dow Jones)
ciudad Plaza/mercado al que pertenece
valor / valor_anterior Nivel actual y anterior
variacion_unitaria / variacion_porcentual Variaciones absoluta y porcentual
volumen Volumen operado
hora / fecha Hora y fecha del dato

Archivos de respaldo: archive/{año}/{mes}/indices/


deuda.php

Tabla destino: deuda
Fuente: Infosel — endpoint $servicios["deuda"] (JSON)
Cron: Lunes a viernes a las 14:00

Descarga instrumentos de deuda gubernamental y corporativa:

Campo Descripción
instrumento Clave del instrumento (ej. CETES 28, BONOS 10A)
dias_por_vencer Días restantes al vencimiento
valor Tasa o precio del instrumento
variacion_unitaria Variación absoluta
hora / fecha Hora y fecha del dato

Nota: La fecha llega en formato dd/mm/yyyy y se convierte manualmente a yyyy-mm-dd.
Archivos de respaldo: archive/{año}/{mes}/deuda/


mercancias.php

Tabla destino: mercancias
Fuente: Infosel — endpoint $servicios["mercancias"] (JSON)
Cron: Lunes a viernes a las 14:00

Descarga precios de materias primas (commodities):

Campo Descripción
instrumento Nombre de la mercancía (ej. Oro, Plata, Petróleo WTI)
valor / valor_anterior Precio actual y anterior
variacion_unitaria / variacion_porcentual Variaciones
hora / fecha Hora y fecha del dato
nota Fecha original tal como llega del servicio (dd/mm/yyyy), guardada para referencia

Nota: volumen está en el código pero comentado.
Archivos de respaldo: archive/{año}/{mes}/mercancias/


Infraestructura de soporte

Notificación de errores

Envía alertas a través de un servicio de integración con mensaje de error y metadatos básicos.

Callback

Proporciona retroalimentación visual del resultado de la ejecución.

Escritura de archivos

Persiste respuestas crudas en el sistema de archivos para respaldo histórico.


Resumen de scripts

Script Tabla MySQL Servicio Formato Horario (cron)
fondos.php fondos Jonima XML Lun–Vie 13:00 y 16:00
cartera_mensual.php cartera_mensual Jonima XML Manual / externo
cartera_semanal.php cartera_semanal Jonima XML Manual / externo
cartera_mensual_check.php cartera_mensual (lectura) Días 28–31, 18:00
cartera_semanal_check.php cartera_semanal (lectura) Viernes 15:00
divisas.php divisas Infosel JSON Lun–Vie 14:00
indices.php indices Infosel JSON Lun–Vie 14:00
deuda.php deuda Infosel JSON Lun–Vie 14:00
mercancias.php mercancias Infosel JSON Lun–Vie 14:00