DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `bs`.`saleGraphic`(IN vItemFk INT, IN vTypeFk INT, IN vCategoryFk INT, IN vFromDate DATE,
                                             IN vToDate DATE, IN vProducerFk INT)
BEGIN
	
	DECLARE vFromDateLastYear DATE;
	DECLARE vToDateLastYear DATE;
	DECLARE	vFromDateTwoYearsAgo DATE;
	DECLARE vToDateTwoYearsAgo DATE;
	
	SET vItemFk = IFNULL(vItemFk,0);
	SET vTypeFk = IFNULL(vTypeFk, 0);
	SET vCategoryFk = IFNULL(vCategoryFk,0);
	SET vFromDate = IFNULL(vFromDate,util.VN_CURDATE());
	SET vToDate = IFNULL(vToDate,util.VN_CURDATE());
	SET vProducerFk = IFNULL(vProducerFk,0);

	SET vFromDateLastYear = TIMESTAMPADD(YEAR,-1,vFromDate);
	SET vToDateLastYear = TIMESTAMPADD(YEAR,-1,vToDate);
	SET vFromDateTwoYearsAgo = TIMESTAMPADD(YEAR,-2,vFromDate);
	SET vToDateTwoYearsAgo = TIMESTAMPADD(YEAR,-2,vToDate);

	SELECT s.quantity, CAST(v.importe AS DECIMAL(10,0)) importe, v.fecha
		FROM bs.ventas v
			JOIN vn.sale s ON s.id = v.Id_Movimiento 
			JOIN vn.item i ON i.id = s.itemFk 
			JOIN vn.itemType it ON it.id = i.typeFk 
			JOIN vn.itemCategory ic ON ic.id = it.categoryFk 
		WHERE vItemFk IN (i.id, 0)
			AND vTypeFk IN (i.typeFk, 0)
			AND vCategoryFk IN (it.categoryFk, 0)
			AND vProducerFk IN (i.producerFk, 0)
			AND (v.fecha BETWEEN vFromDate AND vToDate
				OR v.fecha BETWEEN vFromDateLastYear AND vToDateLastYear
				OR v.fecha BETWEEN vFromDateTwoYearsAgo AND vToDateTwoYearsAgo	
				);
			
END$$
DELIMITER ;