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
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
Depends On
10Used By
No items found