dbo.PANEL_CONTROL_EXCEL_RESULTADO

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

Used By

No items found