
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[_historiaEquiposXAlquiler]') AND type in (N'P', N'PC'))
DROP PROCEDURE [_historiaEquiposXAlquiler]
GO
CREATE procedure [_historiaEquiposXAlquiler]
	@p_idAlquiler int = 0,
	@p_idEquipo int = 0,
	@inicio smalldatetime,
	@fin smalldatetime
as
begin
declare @historia table(
inicio  datetime
,fin  datetime
,hinicio float
,hfin float
,documento  varchar(100)
,equipo varchar(100)
,serial varchar(100)
,id_equipo int
)
insert into @historia(
inicio 
,fin  
,hinicio 
,hfin 
,documento  
,equipo 
,serial 
,id_equipo 
)
select
tra.fecha_ff  as inicio
,(select top 1 tra1.fecha_ff 
 from equ_trazabilidad tra1
 inner join doc_documento doc1 on doc1.id=tra.[id_documento]  and tra1.active=1 and doc1.active =1
 inner join doc_estadoTipoDocumento estado on doc1.id_estadoTipoDocumento 
 not in( select id from doc_estadoTipoDocumento where estadotipodocumento_codigo  in('CAN')) and  estado.id=doc1.id_estadoTipoDocumento 
where tra1.[id_documento.alquiler] =@p_idAlquiler and  tra1.fecha_ff >=@inicio and  tra1.fecha_ff <=@fin and tra1.id_tercero <>doc.id_tercero_cliente and tra1.id_equipo=tra.id_equipo and tra1.fecha_ff >tra.fecha_ff 
order by tra1.fecha_ff asc

) as fin
,tra.horometro 
,(select top 1 tra1.horometro 
 from equ_trazabilidad tra1
 inner join doc_documento doc1 on doc1.id=tra.[id_documento]  and tra1.active=1 and doc1.active =1
 inner join doc_estadoTipoDocumento estado on doc1.id_estadoTipoDocumento 
 not in( select id from doc_estadoTipoDocumento where estadotipodocumento_codigo  in('CAN')) and  estado.id=doc1.id_estadoTipoDocumento 
where tra1.[id_documento.alquiler] =@p_idAlquiler and  tra1.fecha_ff >=@inicio and  tra1.fecha_ff <=@fin and tra1.id_tercero <>doc.id_tercero_cliente and tra1.id_equipo=tra.id_equipo and tra1.fecha_ff >tra.fecha_ff 
order by tra1.fecha_ff asc

) as fin
,doc.prefijo+'-'+cast(doc.documento_numero  as varchar(100))
,equ.equipo
,equ.equipo_serial 
,equ.id
 from equ_trazabilidad tra
inner join doc_documento doc on doc.id=tra.[id_documento] and tra.active=1 and doc.active =1
 inner join doc_estadoTipoDocumento estado on doc.id_estadoTipoDocumento 
 not in( select id from doc_estadoTipoDocumento where estadotipodocumento_codigo  in('CAN')) and  estado.id=doc.id_estadoTipoDocumento 
inner join doc_documento alq on alq .id=tra.[id_documento.alquiler] and tra.id_tercero =alq.id_tercero_cliente
inner join equ_equipo equ on equ.id=tra.id_equipo 
where tra.[id_documento.alquiler] =@p_idAlquiler and  tra.fecha_ff >=@inicio and  tra.fecha_ff <=@fin and( tra.id_equipo =@p_idEquipo or @p_idEquipo =0) ;
select
isnull(convert( varchar(100),inicio,103 ) ,'')  as inicio
,isnull(convert( varchar(100),fin,103) ,'') as  fin
,isnull(hinicio ,'')  as hinicio
,isnull(hfin ,'') as hfin
,documento  
,equipo 
,serial 
,id_equipo , ISNULL ( DATEDIFF (DD,inicio,fin )+1,0) as duracion from @historia;
end

