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_contraparte | int | 4 | |
| @p_producto | int | 4 | |
| @p_gestion | int | 4 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec [LN_indicadores_producto] 169241,2084,166541
exec [LN_indicadores_producto] 169241,2084,181993
select * from ln_gestiones where contraparte = 169241
*/
CREATE OR ALTER PROCEDURE dbo.LN_indicadores_producto
@p_contraparte int,
@p_producto int,
@p_gestion int = null
AS
BEGIN
DECLARE @indicador int ,
@producto int ,
@nombre_indicador varchar(100),
@etiqueta_indicador varchar(100),
@clave_indicador varchar(max),
@nombre_producto varchar(100),
@etiqueta_producto varchar(100),
@valor_numerico decimal(20,2),
@valor_texto varchar(max),
@valor_fecha date,
@valor_memo varchar(max),
@opciones varchar(max),
@orden int,
@color varchar(6) = null,
@tipo_valoracion char(1) = null
DECLARE @resultado table (gestion int,producto int, etiqueta_producto varchar(max), nombre_producto varchar(max), indicador int,
etiqueta_indicador varchar(max), nombre_indicador varchar(max),
clave_indicador varchar(max),
valor_numerico decimal(20,2),
valor_texto varchar(max),
valor_fecha date,
valor_memo varchar(max),
detalle varchar(max), orden int, color varchar(6),
tipo_valoracion char(1))
DECLARE @detalle varchar(max) = null
declare @cliente int = (select cliente from ln_contrapartes where contraparte = @p_contraparte)
if (@p_gestion is null)
begin
select @p_gestion = gestion from ln_gestiones where contraparte = @p_contraparte
and vigente = 1 and desde <= getdate() and hasta >= getdate()
end
DECLARE C_Cursor CURSOR FOR
SELECT LN_indicadores.indicador, LN_indicadores.producto,
LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta as etiqueta_indicador,
LN_indicadores.clave_indicador as clave_indicador,
LN_productos.nombre_producto,
LN_productos.etiqueta as etiqueta_producto,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_memo,
ln_indicadores.opciones, ln_indicadores.orden, ln_indicadores.valoracion
FROM LN_contrapartes
INNER JOIN LN_productos ON LN_productos.producto = @p_producto
INNER JOIN LN_indicadores ON LN_indicadores.producto = ln_productos.producto
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_productos.producto = LN_cliente_productos.producto)
left JOIN LN_cliente_indicadores ON (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)
left JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion
AND ln_contraparte_indicadores.indicador = ln_indicadores.indicador
AND LN_contraparte_indicadores.visible = 1)
WHERE LN_contrapartes.contraparte = @p_contraparte
and (LN_productos.suscribe_indicadores = 0 or (LN_productos.suscribe_indicadores = 1 and LN_cliente_indicadores.indicador is not null))
AND LN_gestiones.gestion = @p_gestion
order by LN_indicadores.orden
OPEN C_Cursor
FETCH NEXT FROM C_Cursor INTO @indicador, @producto,
@nombre_indicador,
@etiqueta_indicador,
@clave_indicador,
@nombre_producto,
@etiqueta_producto,
@valor_numerico,
@valor_texto,
@valor_fecha,
@valor_memo,
@opciones,
@orden,
@tipo_valoracion
WHILE @@fetch_status = 0
BEGIN
set @detalle = null
if (@opciones is not null)
begin
declare @valor varchar(max) = null
declare @opcion varchar(max) = null
set @valor = (select item from dbo.DelimitedSplit8K(@opciones, '^') where ItemNumber = 1)
set @opcion = (select item from dbo.DelimitedSplit8K(@opciones, '^') where ItemNumber = 2)
if (@valor_texto is not null)
begin
select @detalle = item
from dbo.DelimitedSplit8K( @valor,'|')
where ItemNumber = (select ItemNumber from dbo.DelimitedSplit8K( @opcion,'|') where item = @valor_texto)
end
end
if (@detalle is null and @valor_fecha is not null) set @detalle = convert(varchar, @valor_fecha, 103)
if (@detalle is null and @valor_numerico is not null) set @detalle = format(@valor_numerico,'### ### ### ### ###.##')
if (@clave_indicador in ( 'SOS_VENTAS','SOS_VENTAS_EUROS') and @valor_numerico is not null) set @detalle = format(@valor_numerico,'### ### ### ### ###') -- Se quiere sin decimales en los de sostenibilidad
if (@clave_indicador in ( 'SOS_COTIZACION') and @valor_numerico is not null) set @detalle = format(@valor_numerico,'### ### ### ### ##0.00')
if (@detalle is null and @valor_texto is not null) set @detalle = @valor_texto
if (@detalle is null and @valor_memo is not null) set @detalle = @valor_memo
if exists (select * from LN_cliente_nivel
where cliente = @cliente and indicador = @indicador and @valor_numerico >= desde and @valor_numerico < hasta)
select @color = color_fondo
from LN_cliente_nivel
where cliente = @cliente and indicador = @indicador and @valor_numerico >= desde and @valor_numerico < hasta
else
set @color = case
when @valor_numerico >= 81 then '63b68c'
when @valor_numerico >= 61 then 'cbc367'
when @valor_numerico >= 41 then 'FFB81C'
when @valor_numerico >= 21 then 'd37123'
when @valor_numerico >= 0 then 'A72B2A'
else NULL
end
insert into @resultado values (@p_gestion, @producto, @etiqueta_producto, @nombre_producto, @indicador, @etiqueta_indicador, @nombre_indicador, @clave_indicador, @valor_numerico,
@valor_texto, @valor_fecha, @valor_memo, @detalle, @orden,@color, @tipo_valoracion)
FETCH NEXT FROM C_Cursor INTO @indicador, @producto,
@nombre_indicador,
@etiqueta_indicador,
@clave_indicador,
@nombre_producto,
@etiqueta_producto,
@valor_numerico,
@valor_texto,
@valor_fecha,
@valor_memo,
@opciones,
@orden,
@tipo_valoracion
END
CLOSE C_Cursor
DEALLOCATE C_Cursor
select * from @resultado order by orden
END
GO
GO
/*
exec [LN_indicadores_producto] 169241,2084,166541
exec [LN_indicadores_producto] 169241,2084,181993
select * from ln_gestiones where contraparte = 169241
*/
CREATE OR ALTER PROCEDURE dbo.LN_indicadores_producto
@p_contraparte int,
@p_producto int,
@p_gestion int = null
AS
BEGIN
DECLARE @indicador int ,
@producto int ,
@nombre_indicador varchar(100),
@etiqueta_indicador varchar(100),
@clave_indicador varchar(max),
@nombre_producto varchar(100),
@etiqueta_producto varchar(100),
@valor_numerico decimal(20,2),
@valor_texto varchar(max),
@valor_fecha date,
@valor_memo varchar(max),
@opciones varchar(max),
@orden int,
@color varchar(6) = null,
@tipo_valoracion char(1) = null
DECLARE @resultado table (gestion int,producto int, etiqueta_producto varchar(max), nombre_producto varchar(max), indicador int,
etiqueta_indicador varchar(max), nombre_indicador varchar(max),
clave_indicador varchar(max),
valor_numerico decimal(20,2),
valor_texto varchar(max),
valor_fecha date,
valor_memo varchar(max),
detalle varchar(max), orden int, color varchar(6),
tipo_valoracion char(1))
DECLARE @detalle varchar(max) = null
declare @cliente int = (select cliente from ln_contrapartes where contraparte = @p_contraparte)
if (@p_gestion is null)
begin
select @p_gestion = gestion from ln_gestiones where contraparte = @p_contraparte
and vigente = 1 and desde <= getdate() and hasta >= getdate()
end
DECLARE C_Cursor CURSOR FOR
SELECT LN_indicadores.indicador, LN_indicadores.producto,
LN_indicadores.nombre_indicador,
LN_indicadores.etiqueta as etiqueta_indicador,
LN_indicadores.clave_indicador as clave_indicador,
LN_productos.nombre_producto,
LN_productos.etiqueta as etiqueta_producto,
LN_contraparte_indicadores.valor_numerico,
LN_contraparte_indicadores.valor_texto,
LN_contraparte_indicadores.valor_fecha,
LN_contraparte_indicadores.valor_memo,
ln_indicadores.opciones, ln_indicadores.orden, ln_indicadores.valoracion
FROM LN_contrapartes
INNER JOIN LN_productos ON LN_productos.producto = @p_producto
INNER JOIN LN_indicadores ON LN_indicadores.producto = ln_productos.producto
INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
INNER JOIN LN_cliente_productos ON (LN_contrapartes.cliente = LN_cliente_productos.cliente
AND LN_productos.producto = LN_cliente_productos.producto)
left JOIN LN_cliente_indicadores ON (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)
left JOIN LN_contraparte_indicadores
ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion
AND ln_contraparte_indicadores.indicador = ln_indicadores.indicador
AND LN_contraparte_indicadores.visible = 1)
WHERE LN_contrapartes.contraparte = @p_contraparte
and (LN_productos.suscribe_indicadores = 0 or (LN_productos.suscribe_indicadores = 1 and LN_cliente_indicadores.indicador is not null))
AND LN_gestiones.gestion = @p_gestion
order by LN_indicadores.orden
OPEN C_Cursor
FETCH NEXT FROM C_Cursor INTO @indicador, @producto,
@nombre_indicador,
@etiqueta_indicador,
@clave_indicador,
@nombre_producto,
@etiqueta_producto,
@valor_numerico,
@valor_texto,
@valor_fecha,
@valor_memo,
@opciones,
@orden,
@tipo_valoracion
WHILE @@fetch_status = 0
BEGIN
set @detalle = null
if (@opciones is not null)
begin
declare @valor varchar(max) = null
declare @opcion varchar(max) = null
set @valor = (select item from dbo.DelimitedSplit8K(@opciones, '^') where ItemNumber = 1)
set @opcion = (select item from dbo.DelimitedSplit8K(@opciones, '^') where ItemNumber = 2)
if (@valor_texto is not null)
begin
select @detalle = item
from dbo.DelimitedSplit8K( @valor,'|')
where ItemNumber = (select ItemNumber from dbo.DelimitedSplit8K( @opcion,'|') where item = @valor_texto)
end
end
if (@detalle is null and @valor_fecha is not null) set @detalle = convert(varchar, @valor_fecha, 103)
if (@detalle is null and @valor_numerico is not null) set @detalle = format(@valor_numerico,'### ### ### ### ###.##')
if (@clave_indicador in ( 'SOS_VENTAS','SOS_VENTAS_EUROS') and @valor_numerico is not null) set @detalle = format(@valor_numerico,'### ### ### ### ###') -- Se quiere sin decimales en los de sostenibilidad
if (@clave_indicador in ( 'SOS_COTIZACION') and @valor_numerico is not null) set @detalle = format(@valor_numerico,'### ### ### ### ##0.00')
if (@detalle is null and @valor_texto is not null) set @detalle = @valor_texto
if (@detalle is null and @valor_memo is not null) set @detalle = @valor_memo
if exists (select * from LN_cliente_nivel
where cliente = @cliente and indicador = @indicador and @valor_numerico >= desde and @valor_numerico < hasta)
select @color = color_fondo
from LN_cliente_nivel
where cliente = @cliente and indicador = @indicador and @valor_numerico >= desde and @valor_numerico < hasta
else
set @color = case
when @valor_numerico >= 81 then '63b68c'
when @valor_numerico >= 61 then 'cbc367'
when @valor_numerico >= 41 then 'FFB81C'
when @valor_numerico >= 21 then 'd37123'
when @valor_numerico >= 0 then 'A72B2A'
else NULL
end
insert into @resultado values (@p_gestion, @producto, @etiqueta_producto, @nombre_producto, @indicador, @etiqueta_indicador, @nombre_indicador, @clave_indicador, @valor_numerico,
@valor_texto, @valor_fecha, @valor_memo, @detalle, @orden,@color, @tipo_valoracion)
FETCH NEXT FROM C_Cursor INTO @indicador, @producto,
@nombre_indicador,
@etiqueta_indicador,
@clave_indicador,
@nombre_producto,
@etiqueta_producto,
@valor_numerico,
@valor_texto,
@valor_fecha,
@valor_memo,
@opciones,
@orden,
@tipo_valoracion
END
CLOSE C_Cursor
DEALLOCATE C_Cursor
select * from @resultado order by orden
END
GO
Depends On
9Used By
No items found