-- Clientes para clasificacion ABC (comparacion pareto anual)

SET NAMES 'utf8';

SELECT 
    cl.id_cliente AS Nit,
    cl.nombre_cliente AS Cliente,
    cs.cupo AS Cupo,
    (IF(cs.cupo>0,"Credito","Contado")) As TipoCliente,
    v.nombre_vendedor AS Asesor_asignado,
    cs.id_sucursal AS Sucursal_asesor,
    SUM(dv.valor) AS ventas_cop,
    ROUND(
        SUM(
            dvi.cantidad * i.peso * (IF(dvi.valor >0, 1 , -1))
        ),
        2
    ) AS ventas_kg,
    COUNT(dv.id_documento) AS numero_facturas
FROM 
    cliente cl
    JOIN cliente_has_sucursal cs
        USING (id_cliente)
    LEFT JOIN documento_ventas dv
        ON (dv.id_sucursal = cs.id_sucursal
        AND dv.id_cliente = cs.id_cliente)
    JOIN documento_ventas_has_item dvi 
        ON ( dv.id_documento = dvi.id_documento
        AND dv.id_sucursal = dvi.id_sucursal )
    JOIN item i
        USING ( id_item )
    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)
    LEFT JOIN vendedor v
       ON (cs.id_vendedor = v.id_vendedor)
WHERE
    (LEFT(dv.id_documento,2) = 'DV' OR
     LEFT(dv.id_documento,2) = 'EF' OR
     LEFT(dv.id_documento,1) = 'F')
    AND YEAR(dv.fecha) = 2015

GROUP BY 
    Nit

