Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
3| Name | Data Type | Length | Description |
|---|---|---|---|
| @p_client_id | int | 4 | |
| @p_activo | bit | 1 | |
| @p_parte | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec [monitoreo_lista] 2254875,1
exec [monitoreo_lista_2025] 2254875,1
exec monitoreo_lista_2025 '5026361',1
exec [monitoreo_lista_2025] 2254875,0
select distinct cuit from monitoreos where cliente = 2254875 and fecha_vigencia_mantenimiento>=getdate() and visible = 1
select * from cendeu where id_cendeu = 853645420
select * from EntidadesBancarias where id_banco = 55332
select * from productos_secciones where producto = 12
select * from monitoreos where cuit = '20258965214' and cliente = 2254875
*/
/*
Se pasa como parámetro el código de cliente,
devuelve la lista de todos los CUITs en monitoreo aún vigente,
y la fecha de última novedad encontrada (si es del último año)
*/
CREATE OR ALTER PROCEDURE dbo.monitoreo_lista_2025
@p_client_id int,
@p_activo bit = 1,
@p_parte int = 1
AS
BEGIN
SET NOCOUNT ON;
declare @cuits table (id int identity, cuit varchar(50))
if @p_activo = 1
begin
insert into @cuits (cuit)
select distinct cuit from monitoreos where cliente = @p_client_id
and monitoreos.visible = 1
and monitoreos.fecha_desde <= getdate() and monitoreos.fecha_vigencia_mantenimiento >= getdate()
order by cuit
end
else
begin
insert into @cuits (cuit)
select distinct cuit from monitoreos where cliente = @p_client_id
and (monitoreos.visible = 0 or monitoreos.fecha_vigencia_mantenimiento < getdate())
and not exists (select *
from monitoreos mb
where mb.cliente = monitoreos.cliente and mb.cuit = monitoreos.cuit
and mb.seccion_mantenimiento = monitoreos.seccion_mantenimiento and mb.visible = 1 and mb.fecha_vigencia_mantenimiento >= getdate())
order by cuit
end
if (select COUNT(*) from @cuits
where id between (@p_parte * 1000) - 999 and (@p_parte * 1000)) = 0
begin
select 'sin datos' as error
return
end
/*
select
nombre_persona,
cuit,
convert(date,iif(max(monitoreos.fecha_ultimo_procesamiento) < getdate()-365,null, max(monitoreos.fecha_ultimo_procesamiento))) as ultima_novedad,
convert(date,max(monitoreos.fecha_vigencia_mantenimiento)) as fin_monitoreo
from monitoreos
left join padrones on (padrones.identificacion = cuit and
padrones.habilitado = 1 and
padrones.identificador in (select identificador from identificadores where country_code = 'AR'))
where monitoreos.cliente = @p_client_id
and monitoreos.visible = 1
and monitoreos.fecha_desde <= getdate() and monitoreos.fecha_vigencia_mantenimiento >= getdate()
--and (monitoreos.fecha_ultimo_procesamiento is null or monitoreos.fecha_ultimo_procesamiento between monitoreos.fecha_desde and monitoreos.fecha_vigencia_mantenimiento)
group by cuit, nombre_persona
order by ultima_novedad desc, nombre_persona asc
*/
declare @resultado table (nombre_persona varchar(500), cuit varchar(22), seccion int,
ultima_novedad date, fin_monitoreo date, inicio_monitoreo date,
tabla varchar(100), id_tabla int, lista varchar(512),comentarios varchar(max))
declare @nombre varchar(500),
@cuit varchar(22),
@ultima_novedad date,
@fin_monitoreo date,
@inicio_monitoreo date,
@seccion int,
@lista varchar(512),
@comentarios varchar(max)
declare @tabla_secciones table (cuit varchar(50), seccion VARCHAR(3))
declare @tabla_comentarios table (cuit varchar(50), comentarios varchar(max))
declare @fecha datetime, @tabla varchar(100), @id_tabla int, @id_monitoreo int
if @p_activo = 1
begin
declare C_Cursor CURSOR FOR
select
nombre_persona,
cuit,
monitoreos.seccion_mantenimiento,
convert(date,fecha_desde) as fecha_desde,
convert(date,fecha_vigencia_mantenimiento) as fin_monitoreo,
--dd.lista_secciones as lista, dd2.comentarios
null as lista, observaciones_cliente as comentarios
--convert(date,max(monitoreos.fecha_vigencia_mantenimiento)) as fin_monitoreo
from monitoreos
left join padrones on (padrones.identificacion = cuit and
padrones.habilitado = 1 and
padrones.identificador in (select identificador from identificadores where country_code = 'AR'))
/*
left join (select cliente as cli_sec, cuit as cuit_sec, fecha_vigencia_mantenimiento as fin, lista_secciones=STUFF(
(SELECT distinct ','+seccion_mantenimiento AS [text()]
FROM monitoreos XT
WHERE XT.cuit = T.cuit and XT.cliente = T.cliente
order by [text()]
FOR XML PATH('')), 1,1, '')
FROM monitoreos T where T.visible = 1
GROUP BY cliente, cuit, fecha_vigencia_mantenimiento) dd
on (dd.cuit_sec = monitoreos.cuit
and dd.cli_sec = monitoreos.cliente
and dd.fin >= getdate())
left join (select cliente as cli_sec, cuit as cuit_sec, fecha_vigencia_mantenimiento as fin, comentarios=STUFF(
(SELECT distinct '|'+observaciones_cliente AS [text()]
FROM monitoreos XT
WHERE XT.cuit = T.cuit and XT.cliente = T.cliente
order by [text()]
FOR XML PATH('')), 1,1, '')
FROM monitoreos T where T.visible = 1
GROUP BY cliente, cuit, fecha_vigencia_mantenimiento) dd2
on (dd2.cuit_sec = monitoreos.cuit
and dd2.cli_sec = monitoreos.cliente
and dd2.fin >= getdate())
*/
where monitoreos.cliente = @p_client_id
and monitoreos.visible = 1
and monitoreos.fecha_desde <= getdate() and monitoreos.fecha_vigencia_mantenimiento >= getdate()
and nombre_persona is not null -- para saber que existe en padron
--order by nombre_persona
and cuit in (select cuit from @cuits where id between (@p_parte * 1000) - 999 and (@p_parte * 1000))
order by cuit, seccion_mantenimiento
end
else
begin
declare C_Cursor CURSOR FOR
select
nombre_persona,
cuit,
monitoreos.seccion_mantenimiento,
convert(date,fecha_desde) as fecha_desde,
--iif(monitoreos.visible=1,convert(date,fecha_vigencia_mantenimiento),null) as fin_monitoreo,
null as fin_monitoreo,
--dd.lista_secciones as lista, dd2.comentarios
null as lista, observaciones_cliente as comentarios
--convert(date,max(monitoreos.fecha_vigencia_mantenimiento)) as fin_monitoreo
from monitoreos
left join padrones on (padrones.identificacion = cuit and
padrones.habilitado = 1 and
padrones.identificador in (select identificador from identificadores where country_code = 'AR'))
/*
left join (select cliente as cli_sec, cuit as cuit_sec, fecha_vigencia_mantenimiento as fin, lista_secciones=STUFF(
(SELECT distinct ','+seccion_mantenimiento AS [text()]
FROM monitoreos XT
WHERE XT.cuit = T.cuit and XT.cliente = T.cliente
order by [text()]
FOR XML PATH('')), 1,1, '')
FROM monitoreos T where T.visible = 1
GROUP BY cliente, cuit, fecha_vigencia_mantenimiento) dd
on (dd.cuit_sec = monitoreos.cuit
and dd.cli_sec = monitoreos.cliente
and dd.fin >= getdate())
left join (select cliente as cli_sec, cuit as cuit_sec, fecha_vigencia_mantenimiento as fin, comentarios=STUFF(
(SELECT distinct '|'+observaciones_cliente AS [text()]
FROM monitoreos XT
WHERE XT.cuit = T.cuit and XT.cliente = T.cliente
order by [text()]
FOR XML PATH('')), 1,1, '')
FROM monitoreos T where T.visible = 1
GROUP BY cliente, cuit, fecha_vigencia_mantenimiento) dd2
on (dd2.cuit_sec = monitoreos.cuit
and dd2.cli_sec = monitoreos.cliente
and dd2.fin >= getdate())
*/
where monitoreos.cliente = @p_client_id
and nombre_persona is not null -- para saber que existe en padron
and (monitoreos.visible = 0 or monitoreos.fecha_vigencia_mantenimiento < getdate())
and not exists (select * from monitoreos mb where mb.cliente = monitoreos.cliente and mb.cuit = monitoreos.cuit and mb.seccion_mantenimiento = monitoreos.seccion_mantenimiento and mb.visible = 1 and mb.fecha_vigencia_mantenimiento >= getdate())
--order by nombre_persona
and cuit in (select cuit from @cuits where id between (@p_parte * 1000) - 999 and (@p_parte * 1000))
order by cuit, seccion_mantenimiento
end
declare @cuit_ant varchar(50) = null
declare @seccion_ant int = null
declare @lista_secciones varchar(max) = null
declare @lista_comentarios varchar(max) = null
OPEN C_Cursor
FETCH NEXT FROM C_Cursor INTO @nombre, @cuit, @seccion, @inicio_monitoreo, @fin_monitoreo, @lista, @comentarios
WHILE @@fetch_status = 0
BEGIN
insert into @resultado(nombre_persona, cuit, seccion,
ultima_novedad, fin_monitoreo, inicio_monitoreo,
tabla,id_tabla,lista,comentarios)
values (@nombre, @cuit, @seccion, null, @fin_monitoreo, @inicio_monitoreo, null, null,@lista,@comentarios)
if ISNULL(@cuit_ant,'') != @cuit
begin
IF ISNULL(@cuit_ant,'') != ''
update @resultado set lista = @lista_secciones, comentarios = @lista_comentarios
where cuit = @cuit_ant
set @lista_secciones = null
set @lista_comentarios = null
set @seccion_ant = null
end
set @cuit_ant = @cuit
if ISNULL(@seccion_ant,'0') != ISNULL(@seccion,'0')
begin
set @lista_secciones = ISNULL(@lista_secciones,'') + ',' + CONVERT(varchar,@seccion)
end
set @seccion_ant = @seccion
if ISNULL(@comentarios,'') != ''
set @lista_comentarios = ISNULL(@lista_comentarios,'') + '|' + CONVERT(varchar,@comentarios)
/*
IF (isnull(@comentarios,'') != '')
insert into @tabla_comentarios values (@cuit, @comentarios)
IF (isnull(@seccion,'0') != '0')
insert into @tabla_secciones values (@cuit, @seccion)
*/
if @p_activo = 1 --> Busco fecha de ultima novedad
begin
declare C_Resultados CURSOR FOR
SELECT fecha, tabla, id_tabla, id_monitoreo
FROM monitoreos_resultados
WHERE Cuit = @cuit
and Fecha > getdate() - 365
and Fecha > @inicio_monitoreo
and seccion_mantenimiento = @seccion
order by fecha desc, id_monitoreo desc
OPEN C_Resultados
FETCH NEXT FROM C_Resultados INTO @fecha, @tabla, @id_tabla, @id_monitoreo
WHILE @@fetch_status = 0
BEGIN
if (@tabla like 'cendeu%') -- veo si cambio la situacion con respecto al mes anterior
begin
if not exists (select * from cendeu a
left join cendeu b on (b.iden = a.iden and convert(int,a.codigo_ent) = convert(int,b.codigo_ent) and b.vigente = 1
and b.fec_inf = (select max(fec_inf)
from cendeu c
where c.iden = a.iden and convert(int,a.codigo_ent) = convert(int,c.codigo_ent)
and c.fec_inf < a.fec_inf))
where a.id_cendeu = @id_tabla and a.vigente = 1
and (b.iden is null or convert(int,b.situacion) != convert(int,a.situacion)))
begin
-- si no hay cambio de situacion o deuda nueva sigo buscando
FETCH NEXT FROM C_Resultados INTO @fecha, @tabla, @id_tabla, @id_monitoreo
continue
end
end
UPDATE @resultado set ultima_novedad = @fecha, tabla = @tabla, id_tabla = @id_tabla where cuit = @cuit
break
END
CLOSE C_Resultados
DEALLOCATE C_Resultados
end
FETCH NEXT FROM C_Cursor INTO @nombre, @cuit, @seccion, @inicio_monitoreo, @fin_monitoreo, @lista, @comentarios
END
CLOSE C_Cursor
DEALLOCATE C_Cursor
IF ISNULL(@cuit_ant,'') != ''
update @resultado set lista = @lista_secciones, comentarios = @lista_comentarios
where cuit = @cuit_ant
select nombre_persona, cuit, max(ultima_novedad) as ultima_novedad, max(fin_monitoreo) as fin_monitoreo, substring(lista,2,LEN(lista)) as lista,
substring(comentarios,2,LEN(comentarios)) as comentarios
--sec.lista, com.comentarios
from @resultado res
/*
left join (SELECT cuit as c, lista=STUFF(
(SELECT distinct ','+seccion AS [text()]
FROM @tabla_secciones XT
WHERE XT.cuit = T.cuit
order by [text()]
FOR XML PATH('')), 1,1, '')
FROM @tabla_secciones T
GROUP BY cuit) sec on (sec.c = res.cuit)
left join (SELECT cuit as c2, comentarios=STUFF(
(SELECT distinct '|'+comentarios AS [text()]
FROM @tabla_comentarios XT
WHERE XT.cuit = T.cuit
order by [text()]
FOR XML PATH('')), 1,1, '')
FROM @tabla_comentarios T
GROUP BY cuit) com on (com.c2 = res.cuit)
*/
group by nombre_persona, cuit, lista, comentarios
order by cuit
END
GO
GO
/*
exec [monitoreo_lista] 2254875,1
exec [monitoreo_lista_2025] 2254875,1
exec monitoreo_lista_2025 '5026361',1
exec [monitoreo_lista_2025] 2254875,0
select distinct cuit from monitoreos where cliente = 2254875 and fecha_vigencia_mantenimiento>=getdate() and visible = 1
select * from cendeu where id_cendeu = 853645420
select * from EntidadesBancarias where id_banco = 55332
select * from productos_secciones where producto = 12
select * from monitoreos where cuit = '20258965214' and cliente = 2254875
*/
/*
Se pasa como parámetro el código de cliente,
devuelve la lista de todos los CUITs en monitoreo aún vigente,
y la fecha de última novedad encontrada (si es del último año)
*/
CREATE OR ALTER PROCEDURE dbo.monitoreo_lista_2025
@p_client_id int,
@p_activo bit = 1,
@p_parte int = 1
AS
BEGIN
SET NOCOUNT ON;
declare @cuits table (id int identity, cuit varchar(50))
if @p_activo = 1
begin
insert into @cuits (cuit)
select distinct cuit from monitoreos where cliente = @p_client_id
and monitoreos.visible = 1
and monitoreos.fecha_desde <= getdate() and monitoreos.fecha_vigencia_mantenimiento >= getdate()
order by cuit
end
else
begin
insert into @cuits (cuit)
select distinct cuit from monitoreos where cliente = @p_client_id
and (monitoreos.visible = 0 or monitoreos.fecha_vigencia_mantenimiento < getdate())
and not exists (select *
from monitoreos mb
where mb.cliente = monitoreos.cliente and mb.cuit = monitoreos.cuit
and mb.seccion_mantenimiento = monitoreos.seccion_mantenimiento and mb.visible = 1 and mb.fecha_vigencia_mantenimiento >= getdate())
order by cuit
end
if (select COUNT(*) from @cuits
where id between (@p_parte * 1000) - 999 and (@p_parte * 1000)) = 0
begin
select 'sin datos' as error
return
end
/*
select
nombre_persona,
cuit,
convert(date,iif(max(monitoreos.fecha_ultimo_procesamiento) < getdate()-365,null, max(monitoreos.fecha_ultimo_procesamiento))) as ultima_novedad,
convert(date,max(monitoreos.fecha_vigencia_mantenimiento)) as fin_monitoreo
from monitoreos
left join padrones on (padrones.identificacion = cuit and
padrones.habilitado = 1 and
padrones.identificador in (select identificador from identificadores where country_code = 'AR'))
where monitoreos.cliente = @p_client_id
and monitoreos.visible = 1
and monitoreos.fecha_desde <= getdate() and monitoreos.fecha_vigencia_mantenimiento >= getdate()
--and (monitoreos.fecha_ultimo_procesamiento is null or monitoreos.fecha_ultimo_procesamiento between monitoreos.fecha_desde and monitoreos.fecha_vigencia_mantenimiento)
group by cuit, nombre_persona
order by ultima_novedad desc, nombre_persona asc
*/
declare @resultado table (nombre_persona varchar(500), cuit varchar(22), seccion int,
ultima_novedad date, fin_monitoreo date, inicio_monitoreo date,
tabla varchar(100), id_tabla int, lista varchar(512),comentarios varchar(max))
declare @nombre varchar(500),
@cuit varchar(22),
@ultima_novedad date,
@fin_monitoreo date,
@inicio_monitoreo date,
@seccion int,
@lista varchar(512),
@comentarios varchar(max)
declare @tabla_secciones table (cuit varchar(50), seccion VARCHAR(3))
declare @tabla_comentarios table (cuit varchar(50), comentarios varchar(max))
declare @fecha datetime, @tabla varchar(100), @id_tabla int, @id_monitoreo int
if @p_activo = 1
begin
declare C_Cursor CURSOR FOR
select
nombre_persona,
cuit,
monitoreos.seccion_mantenimiento,
convert(date,fecha_desde) as fecha_desde,
convert(date,fecha_vigencia_mantenimiento) as fin_monitoreo,
--dd.lista_secciones as lista, dd2.comentarios
null as lista, observaciones_cliente as comentarios
--convert(date,max(monitoreos.fecha_vigencia_mantenimiento)) as fin_monitoreo
from monitoreos
left join padrones on (padrones.identificacion = cuit and
padrones.habilitado = 1 and
padrones.identificador in (select identificador from identificadores where country_code = 'AR'))
/*
left join (select cliente as cli_sec, cuit as cuit_sec, fecha_vigencia_mantenimiento as fin, lista_secciones=STUFF(
(SELECT distinct ','+seccion_mantenimiento AS [text()]
FROM monitoreos XT
WHERE XT.cuit = T.cuit and XT.cliente = T.cliente
order by [text()]
FOR XML PATH('')), 1,1, '')
FROM monitoreos T where T.visible = 1
GROUP BY cliente, cuit, fecha_vigencia_mantenimiento) dd
on (dd.cuit_sec = monitoreos.cuit
and dd.cli_sec = monitoreos.cliente
and dd.fin >= getdate())
left join (select cliente as cli_sec, cuit as cuit_sec, fecha_vigencia_mantenimiento as fin, comentarios=STUFF(
(SELECT distinct '|'+observaciones_cliente AS [text()]
FROM monitoreos XT
WHERE XT.cuit = T.cuit and XT.cliente = T.cliente
order by [text()]
FOR XML PATH('')), 1,1, '')
FROM monitoreos T where T.visible = 1
GROUP BY cliente, cuit, fecha_vigencia_mantenimiento) dd2
on (dd2.cuit_sec = monitoreos.cuit
and dd2.cli_sec = monitoreos.cliente
and dd2.fin >= getdate())
*/
where monitoreos.cliente = @p_client_id
and monitoreos.visible = 1
and monitoreos.fecha_desde <= getdate() and monitoreos.fecha_vigencia_mantenimiento >= getdate()
and nombre_persona is not null -- para saber que existe en padron
--order by nombre_persona
and cuit in (select cuit from @cuits where id between (@p_parte * 1000) - 999 and (@p_parte * 1000))
order by cuit, seccion_mantenimiento
end
else
begin
declare C_Cursor CURSOR FOR
select
nombre_persona,
cuit,
monitoreos.seccion_mantenimiento,
convert(date,fecha_desde) as fecha_desde,
--iif(monitoreos.visible=1,convert(date,fecha_vigencia_mantenimiento),null) as fin_monitoreo,
null as fin_monitoreo,
--dd.lista_secciones as lista, dd2.comentarios
null as lista, observaciones_cliente as comentarios
--convert(date,max(monitoreos.fecha_vigencia_mantenimiento)) as fin_monitoreo
from monitoreos
left join padrones on (padrones.identificacion = cuit and
padrones.habilitado = 1 and
padrones.identificador in (select identificador from identificadores where country_code = 'AR'))
/*
left join (select cliente as cli_sec, cuit as cuit_sec, fecha_vigencia_mantenimiento as fin, lista_secciones=STUFF(
(SELECT distinct ','+seccion_mantenimiento AS [text()]
FROM monitoreos XT
WHERE XT.cuit = T.cuit and XT.cliente = T.cliente
order by [text()]
FOR XML PATH('')), 1,1, '')
FROM monitoreos T where T.visible = 1
GROUP BY cliente, cuit, fecha_vigencia_mantenimiento) dd
on (dd.cuit_sec = monitoreos.cuit
and dd.cli_sec = monitoreos.cliente
and dd.fin >= getdate())
left join (select cliente as cli_sec, cuit as cuit_sec, fecha_vigencia_mantenimiento as fin, comentarios=STUFF(
(SELECT distinct '|'+observaciones_cliente AS [text()]
FROM monitoreos XT
WHERE XT.cuit = T.cuit and XT.cliente = T.cliente
order by [text()]
FOR XML PATH('')), 1,1, '')
FROM monitoreos T where T.visible = 1
GROUP BY cliente, cuit, fecha_vigencia_mantenimiento) dd2
on (dd2.cuit_sec = monitoreos.cuit
and dd2.cli_sec = monitoreos.cliente
and dd2.fin >= getdate())
*/
where monitoreos.cliente = @p_client_id
and nombre_persona is not null -- para saber que existe en padron
and (monitoreos.visible = 0 or monitoreos.fecha_vigencia_mantenimiento < getdate())
and not exists (select * from monitoreos mb where mb.cliente = monitoreos.cliente and mb.cuit = monitoreos.cuit and mb.seccion_mantenimiento = monitoreos.seccion_mantenimiento and mb.visible = 1 and mb.fecha_vigencia_mantenimiento >= getdate())
--order by nombre_persona
and cuit in (select cuit from @cuits where id between (@p_parte * 1000) - 999 and (@p_parte * 1000))
order by cuit, seccion_mantenimiento
end
declare @cuit_ant varchar(50) = null
declare @seccion_ant int = null
declare @lista_secciones varchar(max) = null
declare @lista_comentarios varchar(max) = null
OPEN C_Cursor
FETCH NEXT FROM C_Cursor INTO @nombre, @cuit, @seccion, @inicio_monitoreo, @fin_monitoreo, @lista, @comentarios
WHILE @@fetch_status = 0
BEGIN
insert into @resultado(nombre_persona, cuit, seccion,
ultima_novedad, fin_monitoreo, inicio_monitoreo,
tabla,id_tabla,lista,comentarios)
values (@nombre, @cuit, @seccion, null, @fin_monitoreo, @inicio_monitoreo, null, null,@lista,@comentarios)
if ISNULL(@cuit_ant,'') != @cuit
begin
IF ISNULL(@cuit_ant,'') != ''
update @resultado set lista = @lista_secciones, comentarios = @lista_comentarios
where cuit = @cuit_ant
set @lista_secciones = null
set @lista_comentarios = null
set @seccion_ant = null
end
set @cuit_ant = @cuit
if ISNULL(@seccion_ant,'0') != ISNULL(@seccion,'0')
begin
set @lista_secciones = ISNULL(@lista_secciones,'') + ',' + CONVERT(varchar,@seccion)
end
set @seccion_ant = @seccion
if ISNULL(@comentarios,'') != ''
set @lista_comentarios = ISNULL(@lista_comentarios,'') + '|' + CONVERT(varchar,@comentarios)
/*
IF (isnull(@comentarios,'') != '')
insert into @tabla_comentarios values (@cuit, @comentarios)
IF (isnull(@seccion,'0') != '0')
insert into @tabla_secciones values (@cuit, @seccion)
*/
if @p_activo = 1 --> Busco fecha de ultima novedad
begin
declare C_Resultados CURSOR FOR
SELECT fecha, tabla, id_tabla, id_monitoreo
FROM monitoreos_resultados
WHERE Cuit = @cuit
and Fecha > getdate() - 365
and Fecha > @inicio_monitoreo
and seccion_mantenimiento = @seccion
order by fecha desc, id_monitoreo desc
OPEN C_Resultados
FETCH NEXT FROM C_Resultados INTO @fecha, @tabla, @id_tabla, @id_monitoreo
WHILE @@fetch_status = 0
BEGIN
if (@tabla like 'cendeu%') -- veo si cambio la situacion con respecto al mes anterior
begin
if not exists (select * from cendeu a
left join cendeu b on (b.iden = a.iden and convert(int,a.codigo_ent) = convert(int,b.codigo_ent) and b.vigente = 1
and b.fec_inf = (select max(fec_inf)
from cendeu c
where c.iden = a.iden and convert(int,a.codigo_ent) = convert(int,c.codigo_ent)
and c.fec_inf < a.fec_inf))
where a.id_cendeu = @id_tabla and a.vigente = 1
and (b.iden is null or convert(int,b.situacion) != convert(int,a.situacion)))
begin
-- si no hay cambio de situacion o deuda nueva sigo buscando
FETCH NEXT FROM C_Resultados INTO @fecha, @tabla, @id_tabla, @id_monitoreo
continue
end
end
UPDATE @resultado set ultima_novedad = @fecha, tabla = @tabla, id_tabla = @id_tabla where cuit = @cuit
break
END
CLOSE C_Resultados
DEALLOCATE C_Resultados
end
FETCH NEXT FROM C_Cursor INTO @nombre, @cuit, @seccion, @inicio_monitoreo, @fin_monitoreo, @lista, @comentarios
END
CLOSE C_Cursor
DEALLOCATE C_Cursor
IF ISNULL(@cuit_ant,'') != ''
update @resultado set lista = @lista_secciones, comentarios = @lista_comentarios
where cuit = @cuit_ant
select nombre_persona, cuit, max(ultima_novedad) as ultima_novedad, max(fin_monitoreo) as fin_monitoreo, substring(lista,2,LEN(lista)) as lista,
substring(comentarios,2,LEN(comentarios)) as comentarios
--sec.lista, com.comentarios
from @resultado res
/*
left join (SELECT cuit as c, lista=STUFF(
(SELECT distinct ','+seccion AS [text()]
FROM @tabla_secciones XT
WHERE XT.cuit = T.cuit
order by [text()]
FOR XML PATH('')), 1,1, '')
FROM @tabla_secciones T
GROUP BY cuit) sec on (sec.c = res.cuit)
left join (SELECT cuit as c2, comentarios=STUFF(
(SELECT distinct '|'+comentarios AS [text()]
FROM @tabla_comentarios XT
WHERE XT.cuit = T.cuit
order by [text()]
FOR XML PATH('')), 1,1, '')
FROM @tabla_comentarios T
GROUP BY cuit) com on (com.c2 = res.cuit)
*/
group by nombre_persona, cuit, lista, comentarios
order by cuit
END
GO
Used By
No items found