dbo.LN_dashboard_cliente_misportes

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

4
Name Data Type Length Description
@p_cliente int 4
@p_contraparte int 4
@p_clave_indicador varchar 50
@p_user_id int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: Marita Soria
-- Create date: 14/07/2020
-- Description: Calcula y guarda los indicadores del producto_id misaportes
-- =============================================
/*
exec [LN_dashboard_cliente_misportes] null, 219702, 'aportes_ss', null 
exec [LN_dashboard_cliente_misportes] null, 219702, 'aportes_os', null 
exec [LN_dashboard_cliente_misportes] null, 219702, 'aportes_patronal', null 
*/

CREATE OR ALTER PROCEDURE dbo.LN_dashboard_cliente_misportes 
 @p_cliente    int,
 @p_contraparte   int,
 @p_clave_indicador  varchar(50),
 @p_user_id    int = null
AS
BEGIN

 declare @gest int = 0
 declare @cuit varchar(20) = null 
 declare @indic int = null
 declare @texto varchar(50) = null
 declare @fecha date = null 
 declare @valor decimal(10,2) = null 


 declare @mis_aportes_empresa table (
         periodo int, 
         ddjj    varchar(50),
         aportes_ss varchar(50),
         aportes_os varchar(50), 
         contr_patronal varchar(50),
         periodo2 int, 
         cuit_empleador varchar(20), 
         nombre_empleador varchar(500),
         periodo_str varchar(10),
         cuit varchar(20))

 if (@p_cliente is null or @p_cliente = 0) 
  begin
   select @p_cliente = cliente from ln_contrapartes where contraparte = @p_contraparte
  end 

 SELECT @gest = LN_gestiones.gestion,
     @cuit = padrones.identificacion
 FROM LN_gestiones INNER JOIN LN_contrapartes
 ON LN_gestiones.contraparte = LN_contrapartes.contraparte
 INNER JOIN padrones ON LN_contrapartes.id_padron = padrones.id_padron
 WHERE LN_gestiones.desde <= GETDATE()
 AND LN_gestiones.hasta >= GETDATE()
 AND LN_contrapartes.activo = 1
 AND LN_contrapartes.contraparte = @p_contraparte
 
 select @indic  = LN_indicadores.indicador
   from LN_indicadores
  where clave_indicador = @p_clave_indicador 

  --select @cuit as cuit, @indic as indicador, @gest as gestion 
 if (@indic is not null and isnull(@gest,0) > 0) begin
  insert into @mis_aportes_empresa 
    EXEC mis_aportes_empresa @cuit, 720
 
  -- gana el NO
  if (@p_clave_indicador = 'aportes_ddjj')
  begin

   if (exists (select TOP 1 * from @mis_aportes_empresa a where a.ddjj like 'NO%' and 
       not exists (select TOP 1 * from @mis_aportes_empresa b where b.periodo = a.periodo and b.ddjj like 'SI%')))
    set @texto = 'NO'
   else 
    if (exists (select TOP 1 * from @mis_aportes_empresa where ddjj like 'SI%'))
     set @texto = 'SI'
  end 

  if (@p_clave_indicador = 'aportes_periodo')
  begin
   set @texto = (select max(periodo) from @mis_aportes_empresa)
   if (@texto is not null) 
   begin
    set @texto = SUBSTRING(@texto,1,4) + '-' + SUBSTRING(@texto,5,2) + '-01'
    set @fecha = convert(date,@texto) 
    set @texto = null 
   end 
  end 
  -- Eliminamos los periodos vacíos o No presentó
  -- De cada uno de los periodos tomo el mejor
  -- De los datos que quedan en todos los periodos que quedan: Gana el peor 
  -- las posibilidades que quedan son IMPAGO - PAGO PARCIAL - PAGO TOTAL 
  -- ( al ordenarlos toma el peor ) 
  if (@p_clave_indicador = 'aportes_ss')
  begin
   update @mis_aportes_empresa set aportes_ss = 'PAGO TOTAL' where aportes_ss like 'PAG_' -- para que al ordenar PAGO TOTAL quede despues de PAGO PARCIAL
   delete from @mis_aportes_empresa 
    where isnull(aportes_ss,'') in ('-','',' ') or aportes_ss like 'NO PRESENT%' -- No tomar en cuenta los vacíos
   set @texto = (select top 1 aportes_ss 
       from @mis_aportes_empresa  a 
       -- De cada uno de los periodos tomo el mejor
       where not exists (select * from @mis_aportes_empresa b where b.periodo = a.periodo and b.aportes_ss > a.aportes_ss) 
       --
             order by a.aportes_ss)
  end 

  if (@p_clave_indicador = 'aportes_os')
  begin
   update  @mis_aportes_empresa set aportes_os = 'PAGO TOTAL' where aportes_os like 'PAG_' -- para que al ordenar PAGO TOTAL quede despues de PAGO PARCIAL
   delete from @mis_aportes_empresa 
    where isnull(aportes_os,'') in ('-','',' ') or aportes_os like 'NO PRESENT%' -- No tomar en cuenta los vacíos
   set @texto = (select top 1 aportes_os
       from @mis_aportes_empresa a
       -- De cada uno de los periodos tomo el mejor
       where not exists (select * from @mis_aportes_empresa b where b.periodo = a.periodo and b.aportes_os > a.aportes_os)
             --
       order by a.aportes_os)

  end 

  if (@p_clave_indicador = 'aportes_patronal')
  begin
   update  @mis_aportes_empresa set contr_patronal = 'PAGO TOTAL' where contr_patronal like 'PAG_' -- para que al ordenar PAGO TOTAL quede despues de PAGO PARCIAL
   delete from @mis_aportes_empresa 
    where isnull(contr_patronal,'') in ('-','',' ') or contr_patronal like 'NO PRESENT%' -- No tomar en cuenta los vacíos
   set @texto = (select top 1 contr_patronal
       from @mis_aportes_empresa a
         -- De cada uno de los periodos tomo el mejor
         where not exists (select * from @mis_aportes_empresa b where b.periodo = a.periodo and b.contr_patronal > a.contr_patronal)
            --
         order by a.contr_patronal)

  end 
  
  if (@texto = 'PAGO TOTAL') set @texto = 'PAGO'

  if not exists (select contraparte, gestion, indicador
       from LN_contraparte_indicadores
       where contraparte = @p_contraparte
       and gestion = @gest
       and visible = 1
       and indicador = @indic)

    INSERT INTO LN_contraparte_indicadores
    (contraparte, gestion, indicador, valor_texto,valor_fecha,created, created_by)
    VALUES
    (@p_contraparte, @gest, @indic, @texto, @fecha, GETDATE(), @p_user_id)

   else

    UPDATE LN_contraparte_indicadores SET
      valor_texto = @texto,
      valor_fecha = @fecha, 
      modified = GETDATE(),
      modified_by = @p_user_id
    WHERE contraparte = @p_contraparte
     AND gestion = @gest
     AND indicador = @indic
     and visible = 1
  end
  select @texto as texto, @fecha as fecha
END
GO

Used By

No items found