dbo.LN_contraparte_indicadores_

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

3
Name Data Type Length Description
@accion varchar 50
@p_contraparte int 4
@p_clave_indicador varchar 50

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: Luis Prenafeta
-- Create date: 05/04/2019
-- Description: Algunas funciones adicionales para la obtención de indicadores de una contraparte en la gestión activa
-- =============================================
CREATE OR ALTER PROCEDURE dbo.LN_contraparte_indicadores_ 
 -- Add the parameters for the stored procedure here

 @accion            varchar(50),
 @p_contraparte          int = NULL,
 @p_clave_indicador         varchar(50) = NULL

 
AS
BEGIN
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;

    -- Insert statements for procedure here
 
 /* La acción status devuelve todos los indicadores de cálculo AUTOMATICO que le corresponden a la contraparte
  y le adiciona una columna adicional de cuántos días han transcurrido desde la última actualización.
  En caso de que nunca se haya calculad, esa columna se setea en 30 días de manera que la regla
  que invoca a esta funcionalidad sepa que debe ser actualizado
  Esta lógica es ideal para enviar a calcular los indicadores automáticos en el momento del alta de contraparte
  o cuando se visualiza el detalle de la misma
  */


 if (@accion = 'status') begin

  /* contraparte requerida */
  if (@p_contraparte > 0)

   if (@p_clave_indicador is null)

    SELECT indica.*, datos.*,
      ISNULL(datos.modified, datos.created) as ultima_actualizacion,
      ISNULL(DATEDIFF(DAY,datos.modified,GETDATE()), ISNULL(DATEDIFF(DAY,datos.created,GETDATE()),30)) as dias_ultima_actualizacion
    FROM
     (select LN_indicadores.indicador, LN_indicadores.clave_indicador, LN_indicadores.producto,
       LN_contraparte_familias.contraparte, ISNULL(LN_productos.balance, 0) as balance,
       LN_cliente_productos.orden_producto, LN_indicadores.orden, LN_contrapartes.cliente
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
     inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
     inner join LN_familia_productos on LN_cliente_productos.producto = LN_familia_productos.producto
     inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
     inner join LN_contrapartes on (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
             and LN_cliente_productos.cliente = LN_contrapartes.cliente)
     where LN_contrapartes.contraparte = @p_contraparte
     and LN_productos.visible = 1
     and LN_cliente_productos.activo = 1
     and LN_familia_productos.activo = 1
     and LN_contraparte_familias.activo = 1
     and ISNULL(LN_productos.balance, 0) = 0
     and LN_indicadores.valoracion = 'A'

     union

     select LN_indicadores.indicador, LN_indicadores.clave_indicador, LN_indicadores.producto,
       LN_contraparte_familias.contraparte, ISNULL(LN_productos.balance, 0) as balance,
       LN_cliente_productos.orden_producto, LN_indicadores.orden, LN_contrapartes.cliente
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
     inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
     inner join LN_familia_productos on LN_cliente_productos.producto = LN_familia_productos.producto
     inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
     inner join LN_contrapartes on (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
             and LN_cliente_productos.cliente = LN_contrapartes.cliente)
     inner join LN_cliente_indicadores on (LN_cliente_productos.cliente = LN_cliente_indicadores.cliente
              AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)


     where LN_contrapartes.contraparte = @p_contraparte
     and LN_productos.visible = 1
     and LN_cliente_productos.activo = 1
     and LN_familia_productos.activo = 1
     and LN_contraparte_familias.activo = 1
     and ISNULL(LN_productos.balance, 0) = 1
     and LN_indicadores.valoracion = 'A') indica
    LEFT OUTER JOIN
     (SELECT LN_contraparte_indicadores.contraparte, 
       LN_contraparte_indicadores.indicador, 
       LN_contraparte_indicadores.gestion,
       LN_contraparte_indicadores.created,
       LN_contraparte_indicadores.modified
     FROM LN_contraparte_indicadores 
     INNER JOIN LN_gestiones ON LN_contraparte_indicadores.contraparte = LN_gestiones.contraparte
     WHERE LN_contraparte_indicadores.contraparte = @p_contraparte
     AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()) datos ON indica.indicador = datos.indicador
 
    ORDER BY indica.orden_producto, indica.orden  

   else

    SELECT indica.*, datos.*,
      ISNULL(datos.modified, datos.created) as ultima_actualizacion,
      ISNULL(DATEDIFF(DAY,datos.modified,GETDATE()), ISNULL(DATEDIFF(DAY,datos.created,GETDATE()),30)) as dias_ultima_actualizacion
    FROM
     (select LN_indicadores.indicador, LN_indicadores.clave_indicador, LN_indicadores.producto,
       LN_contraparte_familias.contraparte, ISNULL(LN_productos.balance, 0) as balance,
       LN_cliente_productos.orden_producto, LN_indicadores.orden, LN_contrapartes.cliente
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
     inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
     inner join LN_familia_productos on LN_cliente_productos.producto = LN_familia_productos.producto
     inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
     inner join LN_contrapartes on (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
             and LN_cliente_productos.cliente = LN_contrapartes.cliente)
     where LN_contrapartes.contraparte = @p_contraparte
     and LN_productos.visible = 1
     and LN_cliente_productos.activo = 1
     and LN_familia_productos.activo = 1
     and LN_contraparte_familias.activo = 1
     and ISNULL(LN_productos.balance, 0) = 0
     and LN_indicadores.valoracion = 'A'

     union

     select LN_indicadores.indicador, LN_indicadores.clave_indicador, LN_indicadores.producto,
       LN_contraparte_familias.contraparte, ISNULL(LN_productos.balance, 0) as balance,
       LN_cliente_productos.orden_producto, LN_indicadores.orden, LN_contrapartes.cliente
     from LN_indicadores inner join LN_productos on LN_indicadores.producto = LN_productos.producto
     inner join LN_cliente_productos on LN_productos.producto = LN_cliente_productos.producto
     inner join LN_familia_productos on LN_cliente_productos.producto = LN_familia_productos.producto
     inner join LN_contraparte_familias on LN_familia_productos.familia = LN_contraparte_familias.familia
     inner join LN_contrapartes on (LN_contraparte_familias.contraparte = LN_contrapartes.contraparte
             and LN_cliente_productos.cliente = LN_contrapartes.cliente)
     inner join LN_cliente_indicadores on (LN_cliente_productos.cliente = LN_cliente_indicadores.cliente
              AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)


     where LN_contrapartes.contraparte = @p_contraparte
     and LN_productos.visible = 1
     and LN_cliente_productos.activo = 1
     and LN_familia_productos.activo = 1
     and LN_contraparte_familias.activo = 1
     and ISNULL(LN_productos.balance, 0) = 1
     and LN_indicadores.valoracion = 'A') indica
    LEFT OUTER JOIN
     (SELECT LN_contraparte_indicadores.contraparte, 
       LN_contraparte_indicadores.indicador, 
       LN_contraparte_indicadores.gestion,
       LN_contraparte_indicadores.created,
       LN_contraparte_indicadores.modified
     FROM LN_contraparte_indicadores 
     INNER JOIN LN_gestiones ON LN_contraparte_indicadores.contraparte = LN_gestiones.contraparte
     WHERE LN_contraparte_indicadores.contraparte = @p_contraparte
     AND LN_gestiones.desde <= GETDATE() AND LN_gestiones.hasta >= GETDATE()) datos ON indica.indicador = datos.indicador
 
    WHERE indica.clave_indicador = @p_clave_indicador
    ORDER BY indica.orden_producto, indica.orden


 end

 /** Esta accion 'status_manual' devuelve una consulta con los indicadores de input manual de balance para una contraparte o todas
  con el objeto de visualizar y actualizar sus valores **/


 if (@accion = 'indicadores_manuales_balance') begin

  if (@p_contraparte is null)

   SELECT clientes.nombre_cliente, country.country_code, country.country_name, 
     padrones.nombre_persona, identificadores.abreviatura, padrones.identificacion,
     LN_contrapartes.contraparte, LN_productos.producto, LN_productos.nombre_producto,
     LN_indicadores.indicador, LN_indicadores.clave_indicador, LN_indicadores.tipo_dato,
     LN_indicadores.opciones, LN_indicadores.nombre_indicador,
     LN_contraparte_indicadores.valor_fecha, LN_contraparte_indicadores.valor_numerico, 
     LN_contraparte_indicadores.valor_texto, LN_contraparte_indicadores.valor_memo 


   FROM LN_contrapartes
   INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
   INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
   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_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   INNER JOIN LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
          AND LN_contrapartes.cliente = LN_familias.cliente)
   INNER JOIN LN_cliente_productos ON LN_contrapartes.cliente = LN_cliente_productos.cliente
   INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
   INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
          AND LN_productos.producto = LN_familia_productos.producto)
   INNER JOIN LN_indicadores ON LN_productos.producto = LN_indicadores.producto
   INNER JOIN LN_cliente_indicadores ON (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
          AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)

   LEFT OUTER JOIN LN_contraparte_indicadores ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
              AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion
              AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador)

   WHERE LN_gestiones.desde <= GETDATE()
   AND LN_gestiones.hasta >= GETDATE()
   AND LN_contraparte_familias.activo = 1
   AND LN_cliente_productos.activo = 1
   AND LN_familia_productos.activo = 1
   AND LN_productos.balance = 1
   AND LN_indicadores.valoracion = 'F'

   ORDER BY clientes.nombre_cliente, country.country_name, padrones.nombre_persona,
      LN_productos.nombre_producto, LN_indicadores.orden

  else

   SELECT clientes.nombre_cliente, country.country_code, country.country_name, 
     padrones.nombre_persona, identificadores.abreviatura, padrones.identificacion,
     LN_contrapartes.contraparte, LN_productos.producto, LN_productos.nombre_producto,
     LN_indicadores.indicador, LN_indicadores.clave_indicador, LN_indicadores.tipo_dato,
     LN_indicadores.opciones, LN_indicadores.nombre_indicador,
     LN_contraparte_indicadores.valor_fecha, LN_contraparte_indicadores.valor_numerico, 
     LN_contraparte_indicadores.valor_texto, LN_contraparte_indicadores.valor_memo 


   FROM LN_contrapartes
   INNER JOIN LN_gestiones ON LN_contrapartes.contraparte = LN_gestiones.contraparte
   INNER JOIN clientes ON LN_contrapartes.cliente = clientes.cliente
   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_contraparte_familias ON LN_contrapartes.contraparte = LN_contraparte_familias.contraparte
   INNER JOIN LN_familias ON (LN_contraparte_familias.familia = LN_familias.familia
          AND LN_contrapartes.cliente = LN_familias.cliente)
   INNER JOIN LN_cliente_productos ON LN_contrapartes.cliente = LN_cliente_productos.cliente
   INNER JOIN LN_productos ON LN_cliente_productos.producto = LN_productos.producto
   INNER JOIN LN_familia_productos ON (LN_contraparte_familias.familia = LN_familia_productos.familia
          AND LN_productos.producto = LN_familia_productos.producto)
   INNER JOIN LN_indicadores ON LN_productos.producto = LN_indicadores.producto
   INNER JOIN LN_cliente_indicadores ON (LN_contrapartes.cliente = LN_cliente_indicadores.cliente
          AND LN_indicadores.indicador = LN_cliente_indicadores.indicador)

   LEFT OUTER JOIN LN_contraparte_indicadores ON (LN_contrapartes.contraparte = LN_contraparte_indicadores.contraparte
              AND LN_gestiones.gestion = LN_contraparte_indicadores.gestion
              AND LN_indicadores.indicador = LN_contraparte_indicadores.indicador)

   WHERE LN_gestiones.desde <= GETDATE()
   AND LN_gestiones.hasta >= GETDATE()
   AND LN_contraparte_familias.activo = 1
   AND LN_cliente_productos.activo = 1
   AND LN_familia_productos.activo = 1
   AND LN_productos.balance = 1
   AND LN_indicadores.valoracion = 'F'
   AND LN_contrapartes.contraparte = @p_contraparte

   ORDER BY clientes.nombre_cliente, country.country_name, padrones.nombre_persona,
      LN_productos.nombre_producto, LN_indicadores.orden


 end


END
GO

Used By

No items found