-- esta funcion me retorna un flotante q es el total de actividades terminadas sobre la cantidad de actividades de la etapa y asi obtener el avance

/****** Object:  UserDefinedFunction [dbo].[DuracionOT]    Script Date: 03/16/2016 14:45:08 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[porrcentaje_avance_etapas]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[porrcentaje_avance_etapas]
GO

create function [dbo].[porrcentaje_avance_etapas](@p_id int) returns float
as 
begin
declare @resultado as float




declare @table as table (
 id_etapa   int 
 ,id_actividad  int 
, porcentaje float
)
insert  into @table 
 (
 id_etapa 
 ,id_actividad  
 , porcentaje
)
select  
etact .id_etapa ,act.id,
(select top 1 rep1.porcentaje_avance
from  pro_reporteActividad rep1
where rep1.id_actividad=act.id order by rep1.fechaCreacion desc)

from   pro_actividad act   
inner join pro_actividad_etapa etact on etact.id_actividad =act.id and etact.active=1 and act.active=1
inner join pro_etapa eta on eta.id=etact .id_etapa   and eta.active=1
inner join [doc_documento.proyecto_etapa] docet on docet .id_etapa  =eta.id and docet.active=1
where eta.id =@p_id
-- and rep.porcentaje_avance  >=100
group by etact .id_etapa  ,act.id;



--VIEJO JV
--set @resultado =(select  top 1  cast (COUNT (id_actividad ) as float) 
--/cast((
--select  top 1 COUNT (  act1 .id )
--from  pro_actividad act1
--inner join pro_actividad_etapa etact1 on etact1.id_actividad =act1.id 
--where etact1 .id_etapa =etapita .id_etapa 
--)as float)
-- from @table etapita group by etapita .id_etapa  
-- );





set @resultado =(
(cast((select sum(tablita.porcentaje) from @table tablita)as float))
/(cast((select count(distinct tablita.id_actividad  ) from @table tablita) as float)*100.0)
);
return @resultado

end 

