--Para este reporte se requiere mostrar las últimas demostraciones en un lapso de máximo 6 meses hechas para un cada cliente, pero solo se mostrarán cuando el cliente haya comprado y no exista demo relacionada con el seguimiento de la compra.
--Se requiere mostrar el nombre del cliente, correo, id de seguimiento, id de demostracion y fecha de demostracion.
SELECT
    c.contacto,
    c.correoc,
    d.id AS id_demo,
    c.id AS id_cotizacion,
    d.id_cotizacion AS id_seguimiento,
    c.idempresa,
    d.fecha_hora_demo,
    c.descripcionser,
    d.descripcionser AS nombre_sistema,
    d.id_consultor_demo
FROM
    cotizaciones c
LEFT JOIN (
    SELECT
        ld.*
    FROM
        list_demostraciones ld
    JOIN (
        SELECT
            id_cliente,
            descripcionser,
            MAX(fecha_hora_demo) AS max_fecha_hora_demo
        FROM
            list_demostraciones
        WHERE
            bandera_demo = 2
            AND DATE(fecha_hora_demo) >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH) -- Limitar a demostraciones de los últimos 6 meses
        GROUP BY
            id_cliente,
            descripcionser
    ) subquery ON ld.id_cliente = subquery.id_cliente
    AND ld.descripcionser = subquery.descripcionser
    AND ld.fecha_hora_demo = subquery.max_fecha_hora_demo
) AS d ON c.idempresa = d.id_cliente
AND c.descripcionser = d.descripcionser
WHERE 
    c.bandera = 1
    AND c.montov > 0
    AND d.id IS NOT NULL -- Para asegurar que hay una demostración
    AND d.id_cotizacion != c.id -- Para asegurar que la cotización actual no tenga la demostración
    AND YEAR(c.fecha_posible_pago) = YEAR(CURDATE())
    AND MONTH(c.fecha_posible_pago) = MONTH(CURDATE())
    AND DATE(d.fecha_hora_demo) >= DATE_SUB(c.fecha_posible_pago, INTERVAL 6 MONTH); -- Asegurar que la demo no es más de 6 meses antes de la fecha de posible pago

--Para ejecutar en producción:
SELECT c.contacto, c.correoc, d.id AS id_demo, c.id AS id_cotizacion, d.id_cotizacion AS id_seguimiento, c.idempresa, d.fecha_hora_demo, c.descripcionser, d.descripcionser AS nombre_sistema, d.id_consultor_demo FROM humansma_ventas.cotizaciones c LEFT JOIN (SELECT ld.* FROM humansma_ventas.list_demostraciones ld JOIN (SELECT id_cliente, descripcionser, MAX(fecha_hora_demo) AS max_fecha_hora_demo FROM humansma_ventas.list_demostraciones WHERE bandera_demo = 2 AND DATE(fecha_hora_demo) >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH) GROUP BY id_cliente, descripcionser) subquery ON ld.id_cliente = subquery.id_cliente AND ld.descripcionser = subquery.descripcionser AND ld.fecha_hora_demo = subquery.max_fecha_hora_demo) AS d ON c.idempresa = d.id_cliente AND c.descripcionser = d.descripcionser WHERE c.bandera = 1 AND c.montov > 0 AND d.id IS NOT NULL AND d.id_cotizacion != c.id AND YEAR(c.fecha_posible_pago) = YEAR(CURDATE()) AND MONTH(c.fecha_posible_pago) = MONTH(CURDATE()) AND DATE(d.fecha_hora_demo) >= DATE_SUB(c.fecha_posible_pago, INTERVAL 6 MONTH) AND estatus_pago = 'Validado';
