-- Ventas por línea por año por sucursal

SELECT
    CONCAT(dvi.id_sucursal,DATE_FORMAT(MAX(dv.fecha),'%Y'),l.id_linea) AS Llave,
    dvi.id_sucursal AS Sucursal,
    DATE_FORMAT(MAX(dv.fecha),'%Y-01-01') AS Ano,
    l.id_linea AS Linea,
    l.descripcion AS Descripcion,
    SUM(dvi.valor) AS Valor,
    SUM(dvi.cantidad*i.peso*(IF(dvi.valor>0,1,-1))) AS Peso,
    SUM(dvi.costo) AS Costo,
    SUM(dvi.valor-dvi.costo) AS Utilidad

FROM
    documento_ventas dv
    JOIN documento_ventas_has_item dvi
    ON ( dv.id_documento=dvi.id_documento AND dv.id_sucursal=dvi.id_sucursal )
    JOIN item i
    ON ( dvi.id_item=i.id_item AND dvi.id_sucursal=i.id_sucursal )
    JOIN linea l
    ON ( l.id_linea = LEFT(i.id_linea,2) AND l.tipo = i.tipo )

WHERE
    LEFT(dv.id_documento,2) RLIKE "F|D[^0-9MP]"
    AND NOT (i.tipo LIKE "5")
    AND NOT (dv.id_cliente LIKE "999")
    AND dv.fecha >= '2006-01-01'
    AND dv.fecha <= '2011-08-31'

GROUP BY
    Sucursal, Linea, DATE_FORMAT(dv.fecha,'%Y-%m')

ORDER BY
    Llave ASC

