DELIMITER $$
CREATE PROCEDURE `FixAvance`(idPro INT)
BEGIN
	DECLARE i INT DEFAULT 0;
    DECLARE j INT DEFAULT 1;
    DECLARE cantInformes INT DEFAULT 0;
    DECLARE avanceInforme INT DEFAULT 0;
    DECLARE avanceProyecto INT DEFAULT 0;
    SELECT count(idInforme) INTO cantInformes FROM informe
		WHERE idProyecto = idPro AND idEstado = 2;
	SELECT max(nOrden) INTO @cantIncidencias FROM columnagrillaproyecto
		INNER JOIN grillaproyecto USING (idGrillaProyecto)
		WHERE idProyecto = idPro;
	WHILE i < cantInformes DO
		SET avanceInforme = 0;
		WHILE j <= @cantIncidencias DO
			SELECT sValor INTO @avance FROM filagrillainforme
				INNER JOIN columnagrillainforme USING (idColumnaGrillaInforme)
				INNER JOIN grillainforme ON grillainforme.idGrillaInforme = columnagrillainforme.idGrillaInforme
				INNER JOIN informe ON grillainforme.idInforme = informe.idInforme
				WHERE idProyecto = idPro AND columnagrillainforme.nOrden = j
				order by idFilagrillainforme ASC LIMIT 1 OFFSET i;
			SELECT nValorPonderacion INTO @ponderacion FROM columnagrillaproyecto
				INNER JOIN grillaproyecto USING (idGrillaProyecto)
				WHERE idProyecto = idPro AND columnagrillaproyecto.nOrden = j;
			SET avanceInforme = avanceInforme + (@ponderacion * @avance / 100);
			SET j = j + 1;
		END WHILE;
        SELECT idInforme INTO @idInf FROM informe
			WHERE idProyecto = idPro
            order by idInforme ASC LIMIT 1 OFFSET i;
		UPDATE informe SET nAvance = avanceInforme WHERE idInforme = @idInf;
        SET avanceProyecto = avanceProyecto + avanceInforme;
        SET i = i + 1;
        SET j = 1;
	END WHILE;
    UPDATE proyecto SET nAvance = avanceInforme WHERE idProyecto = idPro;
END$$
DELIMITER ;