
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[a_sel_estadosXDocumento]') AND type in (N'P', N'PC'))DROP PROCEDURE [dbo].[a_sel_estadosXDocumento]
GO
CREATE PROCEDURE  [dbo].[a_sel_estadosXDocumento]	
@idDocumento as int
as begin
declare @tabla  table (
id int
--,documento_numero varchar(20)
--,documento  varchar(5000)
,estadoTipoDocumento  varchar(5000)
,motivo varchar(5000)
,notas varchar(5000)
,usuario varchar(100)
,nombre varchar(200)
,fecha_fh smalldatetime
,fechaAnterior  smalldatetime
,diferencia  float)
insert into @tabla
(id 
--,documento_numero 
--,documento 
,estadoTipoDocumento  
,motivo 
,notas
,usuario 
,nombre
,fecha_fh 
,fechaAnterior 
,diferencia)
select 
view_doc_documento_estadoTipoDocumento.id
--,doc_documento_prefijo + ' - ' + convert(varchar(10),doc_documento_documento_numero)as doc_documento_documento_numero
--,doc_documento_documento
,doc_estadoTipoDocumento_estadoTipoDocumento
,doc_motivoestado_motivoestado as motivo
,notas as n
,usuario.usuario
,usuario.nombre
,view_doc_documento_estadoTipoDocumento.fechaCreacion as doc_documento_fecha_fh
,(select top 1 temp.fechaCreacion  
   from doc_documento_estadoTipoDocumento temp 
	where temp.id_documento =view_doc_documento_estadoTipoDocumento.id_documento 
	and temp.active =1 
	and temp.fechaCreacion <= view_doc_documento_estadoTipoDocumento.fechaCreacion 
	and temp.id <view_doc_documento_estadoTipoDocumento.id
	order by temp.fechaCreacion desc )fechaAnterior
,0
from view_doc_documento_estadoTipoDocumento
inner join seg_usuario usuario on usuario.id=view_doc_documento_estadoTipoDocumento.id_usuario_modifico
where view_doc_documento_estadoTipoDocumento.active=1
and id_documento=@idDocumento
order by 
view_doc_documento_estadoTipoDocumento.fechaCreacion desc,id desc

update @tabla set diferencia= DATEDIFF(MINUTE,fechaAnterior,fecha_fh)
update @tabla set diferencia= ISNULL(diferencia,0)
select id 
--,documento_numero 
--,documento 
,estadoTipoDocumento  doc_documento_id_estadotipodocumento
,motivo doc_motivoestado_motivoestado
,notas doc_documento_estadotipodocumento_notas
,usuario seg_usuario_usuario
,nombre seg_usuario_nombre
,fecha_fh doc_documento_fecha_fh
, case when diferencia>=1440 then 
    CAST (  round(diferencia/1440,2) as varchar(50) ) +' dias'
	else 
		case when diferencia>=60 then 
			CAST (   round(diferencia/60,2) as varchar(50) ) +' horas'
		else 
			CAST (  round( diferencia,2) as varchar(50) ) +' minutos'
		end
	end ort_programacion_duracion 

from @tabla

end 