dbo.LN_indicadores_producto

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

Used By

No items found