CREATE FUNCTION `update_fechas_incidencia_partediario`() RETURNS varchar(1000) CHARSET latin1
BEGIN
	declare done_proy, done, id_Proyecto, id_Informe int default 0;
    declare mensaje varchar(1000) default '';
    
    declare proyCursor cursor for
		SELECT proyecto.idProyecto, informe.idInforme 
		FROM planwe.proyecto
		INNER JOIN planwe.informe on informe.idProyecto = proyecto.idProyecto
        #WHERE proyecto.idProyecto = 551
		ORDER BY proyecto.idProyecto, informe.idInforme ;
        
    declare continue handler for not found set done_proy = 1;  
	open proyCursor;
    SET SQL_SAFE_UPDATES=0;
    
	read_loop: loop
		fetch proyCursor into id_Proyecto, id_Informe;  
		if done_proy = 1 then
			leave read_loop;
		end if;
		
        set mensaje = concat(mensaje,' ', id_Proyecto,' ', id_Informe,' ** ');
        #fecha inicio
		update filagrillainforme fgi
		inner join 
		(select cons.idIncidencia, cons.nOrden, cons.dFechaInicio, cons.dFechaFin, subcons.*
		from (
		select columnagrillaproyecto.* 
		from columnagrillaproyecto 
		inner join grillaproyecto gp on gp.idgrillaproyecto = columnagrillaproyecto.idgrillaproyecto
		inner join incidencia inc on inc.idIncidencia = columnagrillaproyecto.idIncidencia
		where gp.idProyecto = id_Proyecto and inc.idTipoValor = 2
		order by columnagrillaproyecto.nOrden) as cons

		inner join
		(
		select  inc.sTituloIncidencia, cgi.idColumnaGrillaInforme, i.dFecha, cgi.nOrden as orden, cgi.idIncidencia as incidencia
		from columnagrillainforme cgi
		inner join grillainforme gi on gi.idGrillaInforme = cgi.idGrillaInforme
		inner join informe i on i.idInforme = gi.idInforme
		inner join incidencia inc on inc.idIncidencia = cgi.idIncidencia
		where i.idProyecto = id_Proyecto and i.idinforme = id_Informe 
		and inc.idTipoValor = 2
		order by cgi.nOrden) as subcons on subcons.orden = cons.nOrden and subcons.incidencia = cons.idIncidencia
		) as datos on datos.idColumnaGrillaInforme = fgi.idColumnaGrillaInforme
		set fgi.dFechaInicio = datos.dFechaInicio
		where datos.dFecha >= datos.dFechaInicio ; 

		#fecha fin
		update filagrillainforme fgi
		inner join 
		(select cons.idIncidencia, cons.nOrden, cons.dFechaInicio, cons.dFechaFin, subcons.*
		from (
		select columnagrillaproyecto.* 
		from columnagrillaproyecto 
		inner join grillaproyecto gp on gp.idgrillaproyecto = columnagrillaproyecto.idgrillaproyecto
		inner join incidencia inc on inc.idIncidencia = columnagrillaproyecto.idIncidencia
		where gp.idProyecto = id_Proyecto and inc.idTipoValor = 2
		order by columnagrillaproyecto.nOrden) as cons

		inner join
		(
		select  inc.sTituloIncidencia, cgi.idColumnaGrillaInforme, i.dFecha, cgi.nOrden as orden, cgi.idIncidencia as incidencia
		from columnagrillainforme cgi
		inner join grillainforme gi on gi.idGrillaInforme = cgi.idGrillaInforme
		inner join informe i on i.idInforme = gi.idInforme
		inner join incidencia inc on inc.idIncidencia = cgi.idIncidencia
		where i.idProyecto = id_Proyecto and i.idinforme = id_Informe 
		and inc.idTipoValor = 2
		order by cgi.nOrden) as subcons on subcons.orden = cons.nOrden and subcons.incidencia = cons.idIncidencia
		) as datos on datos.idColumnaGrillaInforme = fgi.idColumnaGrillaInforme
		set fgi.dFechaFin = datos.dFechaFin
		where datos.dFecha >= datos.dFechaFin;

	end loop;
	close proyCursor;
    
	SET SQL_SAFE_UPDATES=1;
	
set mensaje = "";
RETURN mensaje;
END