-- Clientes con cupo por vendedor

SET NAMES 'utf8';

SELECT 
    cl.id_cliente AS Nit,
    cl.nombre_cliente AS Cliente,
    cs.cupo AS Cupo,
    cs.id_vendedor AS Id_Vendedor,
    vdr.nombre_vendedor AS Vendedor,
    (IF(cs.cupo>0,"Credito","Contado")) As TipoCliente,
    SUM(dv.valor) AS total_ventas,
    COUNT(dv.id_documento) AS numero_facturas,
    SUM(r.valor) AS total_recaudos,
    COUNT(r.id_documento) AS numero_recaudos,
    AVG(mora) AS promedio_mora,
    IFNULL(AVG(   
        IF(
            PERIOD_DIFF(201901,EXTRACT(YEAR_MONTH FROM r.fecha))>=3,
            NULL,
            IF(mora<0,0,mora)
        )
    ),0) AS promedio_mora_ultimos_3meses,
    MAX(mora) AS maxima_mora,
    COUNT(DISTINCT(EXTRACT(YEAR_MONTH FROM dv.fecha))) AS Frecuencia_meses
FROM 
    cliente cl
    JOIN cliente_has_sucursal cs
        USING (id_cliente)
    LEFT JOIN vendedor vdr
	USING (id_vendedor)
    LEFT JOIN documento_ventas dv
        ON (dv.id_sucursal = cs.id_sucursal
        AND dv.id_cliente = cs.id_cliente)
    LEFT JOIN recaudo r
        ON (r.id_cliente = cs.id_cliente
        AND r.id_sucursal = cs.id_sucursal
        AND r.id_documento = dv.id_documento)
WHERE
        (LEFT(dv.id_documento,2) = 'DV' OR
         LEFT(dv.id_documento,2) = 'EF' OR
         LEFT(dv.id_documento,2) = 'EI' OR
         LEFT(dv.id_documento,2) = 'AI' OR
         LEFT(dv.id_documento,2) = 'CF' OR
         LEFT(dv.id_documento,1) = 'F')


GROUP BY 
    Nit

