Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
5| Name | Data Type | Length | Description |
|---|---|---|---|
| @cliente | int | 4 | |
| @servicio | int | 4 | |
| @subcontratista | int | 4 | |
| @lista | varchar | -1 | |
| @user_id | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec [PANEL_CONTROL_EXCEL_] 'TITULOS',5546348,47,null,0,0
select * from PANEL_CONTROL_EXCEL_TITULOS WHERE cliente = 5546348
exec [PANEL_CONTROL_EXCEL_] 'DATOS',null,null,152277,null,1
select clave_indicador, count(*) from PANEL_CONTROL_EXCEL_DATOS WHERE contraparte = 152277 and visible = 1 group by clave_indicador
[PANEL_CONTROL_EXCEL_RESULTADO] 0,167
[PANEL_CONTROL_EXCEL_RESULTADO] 5546348,47,0,'152277,',0
[PANEL_CONTROL_EXCEL_RESULTADO] 5546348,47,0,'555',122371307
select * from usuarios_restricciones where user_id = 122371307 and servicio_contratado ='47'
delete from PANEL_CONTROL_EXCEL_DATOS WHERE idrow = 258364
select * from PANEL_CONTROL_EXCEL_DATOS WHERE contraparte = 152277 and visible = 1 and clave_indicador in ('INICIO_GESTION','0_DIAS_GESTION')
select * from ln_contraparte_indicadores where contraparte = 152277 and indicador = 221
*/
CREATE OR ALTER PROCEDURE dbo.PANEL_CONTROL_EXCEL_RESULTADO
@cliente int = null,
@servicio int = 47,
@subcontratista int = 0,
@lista varchar(max) = '',
@user_id int = 0
AS
BEGIN
SET NOCOUNT ON;
declare @contrapartes table (nro int identity, contraparte int)
if isnull(@lista,'') = ''
begin
-- Todas las contrapartes
insert into @contrapartes (contraparte)
SELECT LN_contrapartes.contraparte
FROM LN_contrapartes
INNER JOIN LN_contraparte_familias ON (LN_contrapartes.contraparte = LN_contraparte_familias.contraparte and ln_contraparte_familias.activo = 1)
INNER JOIN LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia and LN_familias.visible = 1)
INNER JOIN LN_gestiones on (LN_gestiones.contraparte = ln_contrapartes.contraparte and ln_gestiones.vigente = 1 and ln_gestiones.desde <= getdate() and ln_gestiones.hasta >= getdate())
INNER JOIN Padrones on (Padrones.id_padron = LN_contrapartes.id_padron)
where LN_contrapartes.cliente = @cliente
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = @subcontratista
AND LN_contrapartes.servicio_contratado = @servicio
order by padrones.nombre_persona
end
else
begin
-- Solo las contrapartes de la lista
insert into @contrapartes(contraparte)
select item from dbo.DelimitedSplit8K(@lista,',') order by ItemNumber
end
delete from @contrapartes where isnull(contraparte,0) = 0
/* -- Sacamos el control que falte alguna
if (select count(*) from @contrapartes C
where (select count(*) from PANEL_CONTROL_EXCEL_DATOS P where P.contraparte = C.contraparte) = 0) > 0
begin
select 1 as error, 'NO ESTAN TODAS LAS CONTRAPARTES' as mensaje
return
end
*/
/*
select 0 as error, null as mensaje, D.contraparte, D.familia, D.pais_servicio,
T.nro_columna,T.indicador,T.clave_indicador, T.nombre_producto, T.etiqueta,
D.valor, D.valor_sin_formato, D.texto
from PANEL_CONTROL_EXCEL_TITULOS T
left join PANEL_CONTROL_EXCEL_DATOS D on
(T.clave_indicador = D.clave_indicador and T.indicador = D.indicador and
T.cliente = D.cliente and T.servicio = D.servicio and
T.es_subcontratista = D.es_subcontratista)
where
T.cliente = @cliente and T.es_subcontratista = @subcontratista
and D.contraparte in (select contraparte from @contrapartes)
and isnull(D.visible,1) = 1 and T.visible = 1
and iif((D.indicador = 37 and D.clave_indicador = 'SCORE_IC'),
iif(exists(select * from PANEL_CONTROL_EXCEL_TITULOS T2 where T2.cliente = T.cliente and T2.servicio = T.servicio and T2.es_subcontratista = T.es_subcontratista and T2.indicador = 6),0,1),1) = 1
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is not null and UR.familia is not null and
UR.indicador = T.indicador and UR.pais_servicio = isnull(D.pais_servicio,0) and UR.familia = isnull(D.familia,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is not null and UR.familia is null and
UR.indicador = T.indicador and UR.pais_servicio = isnull(D.pais_servicio,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is null and UR.familia is not null and
UR.indicador = T.indicador and UR.familia = isnull(D.familia,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is null and UR.pais_servicio is not null and UR.familia is not null and
UR.pais_servicio = isnull(D.pais_servicio,0) and UR.familia = isnull(D.familia,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is null and UR.familia is null and
UR.indicador = T.indicador)) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is null and UR.pais_servicio is not null and UR.familia is null and
UR.pais_servicio = isnull(D.pais_servicio,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is null and UR.pais_servicio is null and UR.familia is not null and
UR.familia = isnull(D.familia,0))) = 0
order by C.nro, /*D.contraparte, */ T.nro_columna
*/
/* Lo cambiamos por esto, para que busque por contarparte todas las columnas de acuerdo a la tabla PANEL_CONTROL_EXCEL_TITULOS
y los indicadores que no estan los ponga vacios, y si por algo está más de una vez, solo toma el más nuevo */
select 0 as error, null as mensaje, C.contraparte, F.familia, C.pais_servicio,
T.nro_columna,T.indicador,T.clave_indicador, T.nombre_producto, T.etiqueta,
D.valor, D.valor_sin_formato, D.texto
from @contrapartes CON
inner join ln_contrapartes C on C.contraparte = CON.contraparte
inner join ln_contraparte_familias F on (F.contraparte = CON.contraparte and F.activo = 1)
inner join PANEL_CONTROL_EXCEL_TITULOS T on
(T.cliente = C.cliente and T.servicio = C.servicio_contratado and T.es_subcontratista = C.subcontratista and T.visible = 1)
left join
(select distinct contraparte, clave_indicador, indicador, cliente, servicio,pais_servicio, familia, es_subcontratista, valor, valor_sin_formato, texto
FROM PANEL_CONTROL_EXCEL_DATOS P
where P.visible = 1
and P.idrow = (select max(idrow)
FROM PANEL_CONTROL_EXCEL_DATOS P2
where P2.contraparte = P.contraparte and P2.indicador = P.indicador and
P2.clave_indicador = P.clave_indicador and P2.visible = 1)
) D on
(D.contraparte = CON.contraparte and
D.clave_indicador = T.clave_indicador and
D.indicador = T.indicador and
D.cliente = T.cliente and
D.servicio = T.servicio and
D.es_subcontratista = T.es_subcontratista)
where iif((T.indicador = 37 and T.clave_indicador = 'SCORE_IC'),
iif(exists(select * from PANEL_CONTROL_EXCEL_TITULOS T2 where T2.cliente = T.cliente and T2.servicio = T.servicio and T2.es_subcontratista = T.es_subcontratista and T2.indicador = 6),0,1),1) = 1
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is not null and UR.familia is not null and
UR.indicador = T.indicador and UR.pais_servicio = isnull(D.pais_servicio,0) and UR.familia = isnull(D.familia,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is not null and UR.familia is null and
UR.indicador = T.indicador and UR.pais_servicio = isnull(D.pais_servicio,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is null and UR.familia is not null and
UR.indicador = T.indicador and UR.familia = isnull(D.familia,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is null and UR.pais_servicio is not null and UR.familia is not null and
UR.pais_servicio = isnull(D.pais_servicio,0) and UR.familia = isnull(D.familia,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is null and UR.familia is null and
UR.indicador = T.indicador)) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is null and UR.pais_servicio is not null and UR.familia is null and
UR.pais_servicio = isnull(D.pais_servicio,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is null and UR.pais_servicio is null and UR.familia is not null and
UR.familia = isnull(D.familia,0))) = 0
order by CON.nro, T.nro_columna
END
GO
GO
/*
exec [PANEL_CONTROL_EXCEL_] 'TITULOS',5546348,47,null,0,0
select * from PANEL_CONTROL_EXCEL_TITULOS WHERE cliente = 5546348
exec [PANEL_CONTROL_EXCEL_] 'DATOS',null,null,152277,null,1
select clave_indicador, count(*) from PANEL_CONTROL_EXCEL_DATOS WHERE contraparte = 152277 and visible = 1 group by clave_indicador
[PANEL_CONTROL_EXCEL_RESULTADO] 0,167
[PANEL_CONTROL_EXCEL_RESULTADO] 5546348,47,0,'152277,',0
[PANEL_CONTROL_EXCEL_RESULTADO] 5546348,47,0,'555',122371307
select * from usuarios_restricciones where user_id = 122371307 and servicio_contratado ='47'
delete from PANEL_CONTROL_EXCEL_DATOS WHERE idrow = 258364
select * from PANEL_CONTROL_EXCEL_DATOS WHERE contraparte = 152277 and visible = 1 and clave_indicador in ('INICIO_GESTION','0_DIAS_GESTION')
select * from ln_contraparte_indicadores where contraparte = 152277 and indicador = 221
*/
CREATE OR ALTER PROCEDURE dbo.PANEL_CONTROL_EXCEL_RESULTADO
@cliente int = null,
@servicio int = 47,
@subcontratista int = 0,
@lista varchar(max) = '',
@user_id int = 0
AS
BEGIN
SET NOCOUNT ON;
declare @contrapartes table (nro int identity, contraparte int)
if isnull(@lista,'') = ''
begin
-- Todas las contrapartes
insert into @contrapartes (contraparte)
SELECT LN_contrapartes.contraparte
FROM LN_contrapartes
INNER JOIN LN_contraparte_familias ON (LN_contrapartes.contraparte = LN_contraparte_familias.contraparte and ln_contraparte_familias.activo = 1)
INNER JOIN LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia and LN_familias.visible = 1)
INNER JOIN LN_gestiones on (LN_gestiones.contraparte = ln_contrapartes.contraparte and ln_gestiones.vigente = 1 and ln_gestiones.desde <= getdate() and ln_gestiones.hasta >= getdate())
INNER JOIN Padrones on (Padrones.id_padron = LN_contrapartes.id_padron)
where LN_contrapartes.cliente = @cliente
AND LN_contrapartes.activo = 1
AND LN_contrapartes.subcontratista = @subcontratista
AND LN_contrapartes.servicio_contratado = @servicio
order by padrones.nombre_persona
end
else
begin
-- Solo las contrapartes de la lista
insert into @contrapartes(contraparte)
select item from dbo.DelimitedSplit8K(@lista,',') order by ItemNumber
end
delete from @contrapartes where isnull(contraparte,0) = 0
/* -- Sacamos el control que falte alguna
if (select count(*) from @contrapartes C
where (select count(*) from PANEL_CONTROL_EXCEL_DATOS P where P.contraparte = C.contraparte) = 0) > 0
begin
select 1 as error, 'NO ESTAN TODAS LAS CONTRAPARTES' as mensaje
return
end
*/
/*
select 0 as error, null as mensaje, D.contraparte, D.familia, D.pais_servicio,
T.nro_columna,T.indicador,T.clave_indicador, T.nombre_producto, T.etiqueta,
D.valor, D.valor_sin_formato, D.texto
from PANEL_CONTROL_EXCEL_TITULOS T
left join PANEL_CONTROL_EXCEL_DATOS D on
(T.clave_indicador = D.clave_indicador and T.indicador = D.indicador and
T.cliente = D.cliente and T.servicio = D.servicio and
T.es_subcontratista = D.es_subcontratista)
where
T.cliente = @cliente and T.es_subcontratista = @subcontratista
and D.contraparte in (select contraparte from @contrapartes)
and isnull(D.visible,1) = 1 and T.visible = 1
and iif((D.indicador = 37 and D.clave_indicador = 'SCORE_IC'),
iif(exists(select * from PANEL_CONTROL_EXCEL_TITULOS T2 where T2.cliente = T.cliente and T2.servicio = T.servicio and T2.es_subcontratista = T.es_subcontratista and T2.indicador = 6),0,1),1) = 1
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is not null and UR.familia is not null and
UR.indicador = T.indicador and UR.pais_servicio = isnull(D.pais_servicio,0) and UR.familia = isnull(D.familia,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is not null and UR.familia is null and
UR.indicador = T.indicador and UR.pais_servicio = isnull(D.pais_servicio,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is null and UR.familia is not null and
UR.indicador = T.indicador and UR.familia = isnull(D.familia,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is null and UR.pais_servicio is not null and UR.familia is not null and
UR.pais_servicio = isnull(D.pais_servicio,0) and UR.familia = isnull(D.familia,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is null and UR.familia is null and
UR.indicador = T.indicador)) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is null and UR.pais_servicio is not null and UR.familia is null and
UR.pais_servicio = isnull(D.pais_servicio,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is null and UR.pais_servicio is null and UR.familia is not null and
UR.familia = isnull(D.familia,0))) = 0
order by C.nro, /*D.contraparte, */ T.nro_columna
*/
/* Lo cambiamos por esto, para que busque por contarparte todas las columnas de acuerdo a la tabla PANEL_CONTROL_EXCEL_TITULOS
y los indicadores que no estan los ponga vacios, y si por algo está más de una vez, solo toma el más nuevo */
select 0 as error, null as mensaje, C.contraparte, F.familia, C.pais_servicio,
T.nro_columna,T.indicador,T.clave_indicador, T.nombre_producto, T.etiqueta,
D.valor, D.valor_sin_formato, D.texto
from @contrapartes CON
inner join ln_contrapartes C on C.contraparte = CON.contraparte
inner join ln_contraparte_familias F on (F.contraparte = CON.contraparte and F.activo = 1)
inner join PANEL_CONTROL_EXCEL_TITULOS T on
(T.cliente = C.cliente and T.servicio = C.servicio_contratado and T.es_subcontratista = C.subcontratista and T.visible = 1)
left join
(select distinct contraparte, clave_indicador, indicador, cliente, servicio,pais_servicio, familia, es_subcontratista, valor, valor_sin_formato, texto
FROM PANEL_CONTROL_EXCEL_DATOS P
where P.visible = 1
and P.idrow = (select max(idrow)
FROM PANEL_CONTROL_EXCEL_DATOS P2
where P2.contraparte = P.contraparte and P2.indicador = P.indicador and
P2.clave_indicador = P.clave_indicador and P2.visible = 1)
) D on
(D.contraparte = CON.contraparte and
D.clave_indicador = T.clave_indicador and
D.indicador = T.indicador and
D.cliente = T.cliente and
D.servicio = T.servicio and
D.es_subcontratista = T.es_subcontratista)
where iif((T.indicador = 37 and T.clave_indicador = 'SCORE_IC'),
iif(exists(select * from PANEL_CONTROL_EXCEL_TITULOS T2 where T2.cliente = T.cliente and T2.servicio = T.servicio and T2.es_subcontratista = T.es_subcontratista and T2.indicador = 6),0,1),1) = 1
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is not null and UR.familia is not null and
UR.indicador = T.indicador and UR.pais_servicio = isnull(D.pais_servicio,0) and UR.familia = isnull(D.familia,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is not null and UR.familia is null and
UR.indicador = T.indicador and UR.pais_servicio = isnull(D.pais_servicio,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is null and UR.familia is not null and
UR.indicador = T.indicador and UR.familia = isnull(D.familia,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is null and UR.pais_servicio is not null and UR.familia is not null and
UR.pais_servicio = isnull(D.pais_servicio,0) and UR.familia = isnull(D.familia,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is not null and UR.pais_servicio is null and UR.familia is null and
UR.indicador = T.indicador)) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is null and UR.pais_servicio is not null and UR.familia is null and
UR.pais_servicio = isnull(D.pais_servicio,0))) = 0
and (select count(*) from usuarios_restricciones UR
where UR.servicio_contratado = T.servicio and UR.user_id = @user_id
and (UR.indicador is null and UR.pais_servicio is null and UR.familia is not null and
UR.familia = isnull(D.familia,0))) = 0
order by CON.nro, T.nro_columna
END
GO
Depends On
9Used By
No items found