dbo.LN_panel_control_excel_todas_las_gestiones

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

2
Name Data Type Length Description
@p_cliente int 4
@p_servicio_contratado int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

CREATE OR ALTER PROCEDURE dbo.LN_panel_control_excel_todas_las_gestiones 
 @p_cliente int = 7500717,
 @p_servicio_contratado int = 47
 
AS
BEGIN

 SET NOCOUNT ON;
 declare @resultado table (contraparte int, activa varchar(100), 
            Pais varchar(10), 
         Nombre varchar(500), 
         Identificador varchar(500), 
         TaxId varchar(500), 
         familia varchar(500), 
         gestion int, 
         Inicio date, 
         Fin date, 
         ordenp int, 
         ordeni int, 
         indicador int,  
         nombre_indicador varchar(500), 
         etiqueta varchar(500),  
         valor varchar(500)) 
 DECLARE @contraparte int, @activa  varchar(100), 
            @Pais varchar(10), 
         @Nombre varchar(500), 
         @Identificador varchar(500), 
         @TaxId varchar(500), 
         @familia varchar(500), 
         @gestion int, 
         @Inicio date, 
         @Fin date, 
         @ordenp int, 
         @ordeni int, 
         @indicador int,  
         @nombre_indicador varchar(500), 
         @etiqueta varchar(500),  
         @valor varchar(500)

 insert into @resultado
   SELECT LN_contrapartes.contraparte, iif(LN_contrapartes.activo=1,'ACTIVA','NO ACTIVA'), 
       LN_contrapartes.country_code as Pais, 
    padrones.nombre_persona as Nombre, 
    identificadores.abreviatura as Identificador, padrones.identificacion as TaxId, 
    LN_familias.nombre_familia, 
    LN_gestiones.gestion, 
    LN_gestiones.desde as 'Inicio Gestión', LN_gestiones.hasta as 'Fin Gestión', 
    LN_cliente_productos.orden_producto,
    LN_indicadores.orden, 
    ln_indicadores.indicador,  
    ln_indicadores.nombre_indicador,  
    ln_indicadores.etiqueta,  
    case LN_indicadores.tipo_dato 
     when 'I' then convert(varchar,ln_contraparte_indicadores.valor_numerico)
     when 'F' then convert(varchar,ln_contraparte_indicadores.valor_numerico)
     when 'D' then convert(varchar,ln_contraparte_indicadores.valor_fecha, 103)
     when 'T' then ln_contraparte_indicadores.valor_texto
     else valor_texto
    end as valor
  

   FROM LN_contraparte_indicadores 

   inner join LN_contrapartes on LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte 
   inner join LN_gestiones on LN_gestiones.gestion = LN_contraparte_indicadores.gestion 
   INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
   INNER JOIN identificadores ON padrones.identificador = identificadores.identificador
   INNER JOIN country ON identificadores.country_code = country.country_code
   INNER JOIN LN_familias ON LN_familias.familia  = LN_contraparte_indicadores.familia 
   INNER JOIN LN_indicadores ON LN_indicadores.indicador = ln_contraparte_indicadores.indicador  
   INNER JOIN LN_cliente_productos ON (LN_cliente_productos.cliente = LN_contrapartes.cliente and LN_cliente_productos.producto = LN_indicadores.producto)
   inner join LN_cliente_indicadores on (LN_cliente_indicadores.cliente = LN_contrapartes.cliente and LN_cliente_indicadores.indicador = LN_contraparte_indicadores.indicador and LN_cliente_indicadores.activo = 1)
   where LN_contrapartes.cliente = @p_cliente
   and LN_contrapartes.servicio_contratado = @p_servicio_contratado
   and LN_contrapartes.subcontratista = 0
   and LN_contraparte_indicadores.visible = 1
   and LN_gestiones.desde < LN_gestiones.hasta 

   order by padrones.nombre_persona, ln_gestiones.desde, LN_cliente_productos.orden_producto

--select * from @resultado order by contraparte, inicio
--select distinct contraparte, Pais, Nombre, TaxId, Inicio, Fin from @resultado order by contraparte, Inicio 


 declare @Id bigint = 0
 declare w_cursor_ind1 cursor for
  select distinct ordenp, ordeni, indicador, etiqueta, nombre_indicador from @resultado order by ordenp, ordeni
 declare w_cursor_contrapartes cursor for
  select distinct contraparte, activa, Pais, Nombre, TaxId, familia, gestion, Inicio, Fin from @resultado order by contraparte, gestion 

 declare @final table (Id bigint, texto varchar(max))
 declare @registro varchar(max) = '' 
 set @Id = 1
 set @registro = 'Contraparte|Estado|País|Nombre|TaxId|Familia|Inicio Gestión|Fin Gestión'
 OPEN w_cursor_ind1
 FETCH NEXT FROM w_cursor_ind1 INTO @ordenp, @ordeni, @indicador, @etiqueta, @nombre_indicador
 WHILE @@fetch_status = 0
 BEGIN
  set @registro = @registro + '|' + @nombre_indicador + ' (' + @etiqueta + ')' 
  FETCH NEXT FROM w_cursor_ind1 INTO @ordenp, @ordeni, @indicador, @etiqueta, @nombre_indicador
 END
 CLOSE w_cursor_ind1
 DEALLOCATE w_cursor_ind1


 insert into @final values (@Id, @registro)
 /*
  select * from @final 
  return 
  */

 OPEN w_cursor_contrapartes
 FETCH NEXT FROM w_cursor_contrapartes INTO @contraparte, @activa, @Pais, @Nombre, @TaxId, @familia, @gestion, @Inicio, @Fin
 WHILE @@fetch_status = 0
 BEGIN
  set @Id = @Id + 1
  set @registro = convert(varchar,@contraparte) + '|' + 
            @activa + '|' + 
                  @Pais + '|'  + 
      @Nombre + '|'  +  
      @TaxId + '|'  +
      @familia + '|'  +  
      convert(varchar,@Inicio,103) + '|' + 
      convert(varchar,@Fin,103)
  
  declare w_cursor_ind cursor for
   select distinct ordenp, ordeni, indicador, etiqueta, nombre_indicador from @resultado order by ordenp, ordeni
  OPEN w_cursor_ind
  FETCH NEXT FROM w_cursor_ind INTO @ordenp, @ordeni, @indicador, @etiqueta, @nombre_indicador
  WHILE @@fetch_status = 0
  BEGIN
   declare @valor_indicador varchar(max) = null 
   
   SELECT @valor_indicador = valor from @resultado where contraparte = @contraparte and gestion = @gestion and indicador = @indicador
   --SELECT @contraparte, @Inicio, @indicador, @valor
   --RETURN 
   set @registro = @registro + '|' + ISNULL(@valor_indicador,'')
   FETCH NEXT FROM w_cursor_ind INTO @ordenp, @ordeni, @indicador, @etiqueta, @nombre_indicador
  END
  CLOSE w_cursor_ind
  DEALLOCATE w_cursor_ind
  insert into @final values (@Id, @registro)
  FETCH NEXT FROM w_cursor_contrapartes INTO @contraparte, @activa, @Pais, @Nombre, @TaxId, @familia, @gestion, @Inicio, @Fin

 END 
 CLOSE w_cursor_contrapartes
 DEALLOCATE w_cursor_contrapartes 
 
 select * from @final order by Id 
END

GO

Used By

No items found