dbo.obtener_empleado_de

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

1
Name Data Type Length Description
@p_Cuit varchar 20

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*Esto es parte de tab Formales
[obtener_empleado_de] '20376645380'
[obtener_empleado_de] '20279424108'
select * from empleados where cuil = '20279424108' order by periodo desc
*/

CREATE OR ALTER PROCEDURE dbo.obtener_empleado_de
@p_Cuit varchar(20)
AS


BEGIN
    SET NOCOUNT ON;
 /*
  declare @periodo date 
  set @periodo = (select max(fuentes_procesadas.fecha_informacion) from fuentes_procesadas where fuente = 'empleados')
  select  @periodo as ultimo_periodo_procesado, 
          empleados.cuit as cuit_empleador, 
          pf.nombre_persona as nombre_empleador, 
  substring(convert(char,@periodo),6,2)  +'/20' + substring(convert(char,@periodo),3,2) as periodo
    from empleados
    left join padrones AS pf ON (pf.identificacion = cuit)
  where cuil = @p_Cuit
    and visible = '1'
    and periodo =  convert(int,substring(convert(char,@periodo),3,2)+substring(convert(char,@periodo),6,2))
  GROUP BY empleados.cuit, pf.nombre_persona
        order by 3 desc   
  */


 declare @ultimo_mes_empleados date
 declare @mes_empleados date
 declare @periodo_empleados_desde int 
 declare @periodo_empleados_hasta int 

 set @ultimo_mes_empleados = (select max(fuentes_procesadas.fecha_informacion) from fuentes_procesadas where fuente = 'empleados')
 set @periodo_empleados_hasta = convert(int,substring(convert(char,@ultimo_mes_empleados),3,2)+substring(convert(char,@ultimo_mes_empleados),6,2))
 -- set @mes_empleados = DATEADD(M,-6,@ultimo_mes_empleados) -- antes decia -2
 -- hasta 12/11/2024: periodo_desde = 12 meses para atras del ultimo mes procesado: 
 -- set @mes_empleados = DATEADD(M,-12,@ultimo_mes_empleados) 
 -- 12/11/2024: periodo_desde = 12 meses para atras de hoy
 -- set @mes_empleados = DATEADD(M,-12,getdate())
 -- 13/12/2024: periodo_desde = 8 meses para atras de hoy
 set @mes_empleados = DATEADD(M,-8,getdate())
 set @periodo_empleados_desde = convert(int,substring(convert(char,@mes_empleados),3,2)+substring(convert(char,@mes_empleados),6,2))

 declare @periodo_cuil int  = (select max(periodo) from empleados b where b.cuil = @p_cuit and b.visible = 1 )
 if @periodo_cuil > @periodo_empleados_hasta 
 begin
    set @periodo_empleados_hasta = @periodo_cuil
    set @periodo_empleados_desde = @periodo_cuil - 100 + 1
 end 

 -- si hay un mes posterior al que indica en fuentes_procesadas no se toma

 select  distinct @ultimo_mes_empleados as ultimo_periodo_procesado, 
         empleados.cuit as cuit_empleador, 
         pf.nombre_persona as nombre_empleador, 
   substring(convert(char,empleados.periodo),3,2)  +'/20' + substring(convert(char,empleados.periodo),1,2) as periodo
   from empleados
      left join padrones AS pf ON (pf.identificacion = empleados.cuit)

  where cuil = @p_Cuit
    and visible = '1'
    and periodo = (select max(periodo) from empleados b
                    where b.cuil = @p_cuit 
          and b.visible = 1 
                      and b.periodo between @periodo_empleados_desde and @periodo_empleados_hasta)
    order by 3 desc   
 
END

GO

Used By

No items found