
ALTER PROCEDURE [dbo].[a_sel_recordatoriosXFiltroTable]
	 @p_filtro as varchar(max) ,
	 @p_id_usuario int
AS BEGIN
	declare @usuario varchar(100)
	create table #tmp_1  (
	id_documento int,
	id_doc int,
	ter_contacto_contacto VARCHAR(200),
	fechaCreacion SmallDatetime,
	comentario varchar(max),
	doc_documento_documento_numero varchar(200),
	doc_documento_prefijo varchar(200),
	id_contacto int,
	id_docPadre int,
	id int, 
	documentoComentario varchar(max),
	id_cliente int,
	doc_documentocomentario_documentocomentario varchar(max),
	doc_documentocomentario_comentario varchar(max),
	doc_documento_fecha_fh smalldatetime,
	seg_usuario_nombre varchar(max),
	id_documentocomentario int,
	id_documentosComentarios int,
	conRespuesta int,
	id_usuario int,
	cerrada int,
	recordar int,
	fecha smalldatetime,
	fechaOrden smalldatetime,
	fechaModificacion smalldatetime,
	id_usuarioOriginal int, 
	relevante int,
	finalizado int
	)
	insert into #tmp_1 
	exec ('select 
	id_documento,id_documento as id_doc,ter_contacto_contacto,fechaCreacion,comentario,doc_documento_documento_numero,
	doc_documento_prefijo,id_contacto,doc_documento_id_documento as id_docPadre,
	id as id,documentoComentario,doc_documento_id_tercero_cliente as id_cliente,
	documentoComentario as doc_documentocomentario_documentocomentario,
	comentario as doc_documentocomentario_comentario,fechaOriginal as doc_documento_fecha_fh,
	(select nombre  from seg_usuario where id = id_usuarioOriginal) as seg_usuario_nombre
	, Case when id_documentocomentario =0 then id else id_documentocomentario end as id_documentocomentario,
	id_documentocomentario as id_documentosComentarios 
	,conRespuesta,id_usuario,cerrada,recordar,fechaRecordar_fh as fecha,fechaOrden,fechaModificacion,id_usuarioOriginal,relevante,finalizado
	from view_doc_documentoComentario where (' +@p_filtro+ ')  order by fechaModificacion desc , id_documentoComentario asc')
	--- Tabla 2 con el numero de registros
	create table #tmp_2  (
	id_documento int,
	id_doc int,
	ter_contacto_contacto VARCHAR(200),
	fechaCreacion SmallDatetime,
	comentario varchar(max),
	doc_documento_documento_numero varchar(200),
	doc_documento_prefijo varchar(200),
	id_contacto int,
	id_docPadre int,
	id int, 
	documentoComentario varchar(max),
	id_cliente int,
	doc_documentocomentario_documentocomentario varchar(max),
	doc_documentocomentario_comentario varchar(max),
	doc_documento_fecha_fh smalldatetime,
	seg_usuario_nombre varchar(max),
	id_documentocomentario int,
	id_documentosComentarios int,
	conRespuesta int,
	id_usuario int,
	cerrada int,
	recordar int,
	fecha smalldatetime,
	fechaOrden smalldatetime,
	fechaModificacion smalldatetime,
	id_usuarioOriginal int, 
	relevante int,
	finalizado int,
	numeroR int
	)
	insert into #tmp_2 
	exec ('
	SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY id ) as row FROM #tmp_1 ) a
	')
	DROP TABLE #tmp_1
	declare @i int = 1
	declare @cantidadItems int = (SELECT COUNT (DISTINCT numeroR) from #tmp_2)
	--Declarar variables
	declare @id_documento int 
	declare @id_doc int 
	declare @ter_contacto_contacto varchar(max) 
	declare @fechaCreacion smalldatetime 
	declare @comentario varchar(max)
	declare @doc_documento_documento_numero varchar(max)
	declare @doc_documento_prefijo varchar(max)
	declare @id_contacto int
	declare @id_docPadre int 
	declare @id int 
	declare @documentoComentario varchar(max) 
	declare @id_cliente int 
	declare @doc_documentocomentario_documentocomentario varchar(max) 
	declare @doc_documentocomentario_comentario varchar(max)
	declare @doc_documento_fecha_fh smalldatetime
	declare @seg_usuario_nombre varchar(max) 
	declare @id_documentocomentario int 
	declare @id_documentosComentarios int 
	declare @conRespuesta int 
	declare @id_usuario int 
	declare @cerrada int 
	declare @recordar int
	declare @fecha smalldatetime 
	declare @fechaOrden smalldatetime
	declare @fechaModificacion smalldatetime 
	declare @id_usuarioOriginal int 
	declare @relevante int
	declare @finalizado int
	while ( @i <= @cantidadItems)
	begin
	--colocar datos de variables
	select @id_documento = id_documento , @id_doc  =  id_doc , @ter_contacto_contacto = ter_contacto_contacto,
	@fechaCreacion  = fechaCreacion, @comentario  = comentario,@doc_documento_documento_numero  = doc_documento_documento_numero,
	@doc_documento_prefijo  =  doc_documento_prefijo,@id_contacto  =  id_contacto,@id_docPadre  =  id_docPadre,
	@id  = id , @documentoComentario  = documentoComentario,@id_cliente  = id_cliente ,@doc_documentocomentario_documentocomentario = doc_documentocomentario_documentocomentario,
	@doc_documentocomentario_comentario =  doc_documentocomentario_comentario,@doc_documento_fecha_fh  = doc_documento_fecha_fh,
	@seg_usuario_nombre  = seg_usuario_nombre,@id_documentocomentario  = id_documentocomentario,@id_documentosComentarios  = id_documentosComentarios,
	@conRespuesta  = conRespuesta, @id_usuario  = id_usuario, @cerrada  = cerrada, @recordar  = recordar,@fecha  = fecha,
	@fechaOrden  = fechaOrden,@fechaModificacion  = fechaModificacion,@id_usuarioOriginal  = id_usuarioOriginal,
	@relevante  = relevante,@finalizado  = finalizado
	from #tmp_2 where numeroR = @i

	IF @id_documentosComentarios = 0 and @relevante = 1
	begin
	INSERT INTO #tmp_2
	(id_documento,id_doc,ter_contacto_contacto,fechaCreacion,comentario,doc_documento_documento_numero,doc_documento_prefijo,id_contacto,id_docPadre,
	id, documentoComentario,id_cliente,doc_documentocomentario_documentocomentario,doc_documentocomentario_comentario,doc_documento_fecha_fh,seg_usuario_nombre,
	id_documentocomentario,id_documentosComentarios,conRespuesta,id_usuario,cerrada,recordar,fecha,fechaOrden,fechaModificacion,id_usuarioOriginal, relevante,finalizado,numeroR)
	VALUES
	(0, @id_documento,'','1/1/1900',0,@doc_documento_documento_numero,@doc_documento_prefijo,@id_contacto,@id_docPadre,@id,0,@id_cliente,@doc_documentocomentario_documentocomentario,0,
	'1/1/1900',0,0,0,0,0,@cerrada,0,'1/1/1900','1/1/1900','1/1/1900',0,0,@finalizado,0 )
	END
	SET @i = @i + 1
	end
	--- Tabla 3 con el numero de registros
	create table #tmp_3  
	(id_documento int,id_doc int,ter_contacto_contacto VARCHAR(200),fechaCreacion SmallDatetime,comentario varchar(max),doc_documento_documento_numero varchar(200),doc_documento_prefijo varchar(200),
	id_contacto int,id_docPadre int,id int, documentoComentario varchar(max),id_cliente int,doc_documentocomentario_documentocomentario varchar(max),doc_documentocomentario_comentario varchar(max),
	doc_documento_fecha_fh smalldatetime,seg_usuario_nombre varchar(max),id_documentocomentario int,id_documentosComentarios int,conRespuesta int,id_usuario int,cerrada int,recordar int,fecha smalldatetime,
	fechaOrden smalldatetime,fechaModificacion smalldatetime,id_usuarioOriginal int, relevante int,finalizado int,numeroR int,numeroR2 int)
	insert into #tmp_3
	exec ('SELECT * FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY id ) as row FROM #tmp_2 ) a')
	DROP TABLE #tmp_2
	-------------------------------------------------------------------------------------------------- parte 2
	declare @x int = 1
	declare @cantidadComentariosFin int = (SELECT COUNT (DISTINCT numeroR2) from #tmp_3)
	--Agregar columnas
	ALTER TABLE #tmp_3 ADD cliente varchar(max)
	ALTER TABLE #tmp_3 ADD doc varchar(max)
	ALTER TABLE #tmp_3 ADD docPadre varchar(max)
	ALTER TABLE #tmp_3 ADD detalle varchar(max)
	ALTER TABLE #tmp_3 ADD id_documentoOrden int
	ALTER TABLE #tmp_3 ADD cantidadComentarios int
	declare @numeroPrincipales int = 0
	--Declarar variables
	declare @id_documentoFin int 
	declare @id_docFin int 
	declare @ter_contacto_contactoFin varchar(max) 
	declare @fechaCreacionFin smalldatetime 
	declare @comentarioFin varchar(max) 
	declare @doc_documento_documento_numeroFin varchar(max) 
	declare @doc_documento_prefijoFin varchar(max)
	declare @id_contactoFin int 
	declare @id_docPadreFin int 
	declare @idFin int
	declare @documentoComentarioFin varchar(max)
	declare @id_clienteFin int 
	declare @doc_documentocomentario_documentocomentarioFin varchar(max) 
	declare @doc_documentocomentario_comentarioFin varchar(max) 
	declare @doc_documento_fecha_fhFin smalldatetime 
	declare @seg_usuario_nombreFin varchar(max) 
	declare @id_documentocomentarioFin int
	declare @id_documentosComentariosFin int 
	declare @conRespuestaFin int 
	declare @id_usuarioFin int 
	declare @cerradaFin int 
	declare @recordarFin int 
	declare @fechaFin smalldatetime 
	declare @fechaOrdenFin smalldatetime 
	declare @fechaModificacionFin smalldatetime 
	declare @id_usuarioOriginalFin int 
	declare @relevanteFin int 
	declare @finalizadoFin int 
	declare @cliente varchar(max) 
	declare @doc varchar(max) 
	declare @docPadre varchar(max) 
	declare @detalle varchar(max)
	declare @id_documentoOrden int
	declare @cantidadComentarios int 
	declare @tercero_nombreCorto varchar(max) 
	declare @tercero_tercero varchar(max) 
	declare @doc_prefijo varchar(max) 
	declare @doc_numero varchar(max) 
	while (@x <= @cantidadComentariosFin)
	begin
	--coloca valores

	select @id_documentoFin  = id_documento,@id_docFin  = id_doc,@ter_contacto_contactoFin  = ter_contacto_contacto,
	@fechaCreacionFin  =  fechaCreacion, @comentarioFin = comentario,@doc_documento_documento_numeroFin = doc_documento_documento_numero,
	 @doc_documento_prefijoFin  = doc_documento_prefijo,@id_contactoFin  = id_contacto,@id_docPadreFin  = id_docPadre,
	 @id_docPadreFin  = id_docPadre,@idFin  = id,@documentoComentarioFin  = documentoComentario,@id_clienteFin  = id_cliente,
	@doc_documentocomentario_documentocomentarioFin  = doc_documentocomentario_documentocomentario,
	@doc_documentocomentario_comentarioFin  = doc_documentocomentario_comentario,@doc_documento_fecha_fhFin  = doc_documento_fecha_fh,
	@seg_usuario_nombreFin = seg_usuario_nombre , @id_documentocomentarioFin  =id_documentocomentario,
	 @id_documentosComentariosFin  =  id_documentosComentarios,
	@conRespuestaFin  = conRespuesta ,
	 @id_usuarioFin  =  id_usuario ,
	 @cerradaFin  = cerrada ,
	 @recordarFin  =  recordar ,
	 @fechaFin  =  fecha ,
	 @fechaOrdenFin  =  fechaOrden,
	 @fechaModificacionFin  = fechaModificacion ,
	 @id_usuarioOriginalFin  =  id_usuarioOriginal ,
	 @relevanteFin  =  relevante ,
	 @finalizadoFin  =  finalizado,@cliente  = cliente,
	 @doc  = doc,@docPadre  = docPadre,@detalle  = detalle,
	 @id_documentoOrden  = id_documentoOrden,
	 @cantidadComentarios  = cantidadComentarios
	  from #tmp_3 where numeroR2 = @x
	select @tercero_nombreCorto  = tercero_nombreCorto,@tercero_tercero  = tercero from view_ter_tercero where id = @id_clienteFin
	select @doc_prefijo  = prefijo,@doc_numero  = documento_numero from view_doc_documento where id = @id_docPadreFin

	if @id_documentosComentariosFin  = 0 and @relevanteFin  = 1
	begin
		set @numeroPrincipales = @numeroPrincipales +1
		update #tmp_3 set doc = @doc_documento_prefijoFin + '-' + @doc_documento_documento_numeroFin  where numeroR2 = @x
		If @id_docPadreFin > 0 
		begin
						update #tmp_3 set docPadre = @doc_prefijo + '-' + @doc_numero where numeroR2 = @x
		end
		Else
		begin
						update #tmp_3 set docPadre = '' where numeroR2 = @x
		End

		If @id_documentocomentarioFin  = 0 
		begin
						update #tmp_3 set id_documentoOrden = @idFin where numeroR2 = @x
		end
		Else
		begin
						update #tmp_3 set id_documentoOrden = @id_documentocomentarioFin  where numeroR2 = @x
		end
		update #tmp_3 set cliente = IIf(@tercero_nombreCorto = '', '<br/>' + @tercero_tercero, ' - ' + @tercero_nombreCorto) where numeroR2 = @x
		update #tmp_3 set detalle = @comentarioFin  where numeroR2 = @x

	end
	else
	begin

	update #tmp_3 set doc = @doc_documento_prefijoFin + '-' + @doc_documento_documento_numeroFin  where numeroR2 = @x
	update #tmp_3 set cliente = IIf(@tercero_nombreCorto = '', '<br/>' + @tercero_tercero, ' - ' + @tercero_nombreCorto) where numeroR2 = @x
		If @id_docPadreFin > 0 
		begin
						update #tmp_3 set docPadre = @doc_prefijo + '-' + @doc_numero where numeroR2 = @x
		end
		Else
		begin
						update #tmp_3 set docPadre = '' where numeroR2 = @x
		End

		If @id_documentocomentarioFin  = 0 
		begin
						update #tmp_3 set id_documentoOrden = @idFin where numeroR2 = @x
		end
		Else
		begin
						update #tmp_3 set id_documentoOrden = @id_documentocomentarioFin  where numeroR2 = @x
		end
		update #tmp_3 set detalle = @comentarioFin where numeroR2 = @x
	end
	--numero de comentarios principales guardados en el campo cantidadComentarios
	update #tmp_3 set cantidadComentarios = @numeroPrincipales where numeroR2 = 1
	SET @x = @x + 1
	end
	SELECT * FROM #tmp_3 
END
GO

	
