dbo.backend_mis_aportes

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_cuit varchar 13
@p_cuit_empleador varchar 13
@p_periodos int 4
@p_filtro_60 tinyint 1

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
/*

exec backend_mis_aportes '20335754655','30641368977'

exec backend_mis_aportes '20955578350','30641368977'


select * from mis_aportes where cuit='20335754655'
and cuit_empleador= '30641368977'

exec backend_mis_aportes '20628151440',null,12,1


SELECT padrones.id_padron, padrones.identificador, padrones.numero,
padrones.nombre_persona, padrones.tipo_persona, padrones.habilitado,
mis_aportes.ddjj, mis_aportes.aportes_ss, mis_aportes.aportes_os,
mis_aportes.contr_patronal, mis_aportes.periodo, mis_aportes.cuit_empleador,
empleador.nombre_persona as nombre_empleador
from padrones inner join mis_aportes on padrones.identificacion = mis_aportes.cuit
inner join padrones empleador on mis_aportes.cuit_empleador = empleador.identificacion
inner join
(select cuit, cuit_empleador, periodo, max(inserted) as ultimo
from mis_aportes
where cuit = '20335754655'
and cuit_empleador = '30641368977'
group by cuit, cuit_empleador, periodo) per_last 
ON (mis_aportes.cuit = per_last.cuit
AND mis_aportes.cuit_empleador = per_last.cuit_empleador
AND mis_aportes.periodo = per_last.periodo
AND mis_aportes.inserted = per_last.ultimo)
WHERE mis_aportes.periodo BETWEEN 201709 AND 201808
ORDER BY mis_aportes.periodo, empleador.nombre_persona







*/

CREATE OR ALTER PROCEDURE dbo.backend_mis_aportes

 -- Add the parameters for the stored procedure here
 @p_cuit     varchar(13),
 @p_cuit_empleador  varchar(13) = NULL,
 @p_periodos    int = 12,
 @p_filtro_60   tinyint = 0

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

    -- Insert statements for procedure here


 DECLARE @p1 INT
 DECLARE @p2 INT
 DECLARE @d1 DATETIME
 DECLARE @d2 DATETIME

 DECLARE @meses int = (@p_periodos - 1) * (-1)

 /* VALOR yyyymm  del período correspondiente a la fecha actual - preset por si no hay datos */ 
 DECLARE @m1 INT = CONVERT(INT, CONVERT(varchar, Year(GETDATE())) +  RIGHT('00' + CONVERT(varchar, Month(GETDATE())), 2))

 /* máximo período encontrado en mis aportes para el cuit - en caso de estar vacío es el período de hoy */
 SELECT @p2 = ISNULL(MAX(periodo), @m1) FROM mis_aportes WHERE cuit = @p_cuit

 /* el rango de la consulta son los últimos 12 meses registrados */
 SET @d2 = DATETIMEFROMPARTS(CONVERT(INT, @p2/100), CONVERT(INT, RIGHT(CONVERT(varchar,@p2),2)),1,0,0,0,0)
 SET @d1 = DATEADD(MONTH,@meses,@d2)
 SET @p1 = CONVERT(INT, CONVERT(varchar,Year(@d1)) + RIGHT('00' + CONVERT(varchar, Month(@d1)), 2))


 IF (@p_filtro_60 = 0) BEGIN

  IF (@p_cuit_empleador IS NOT NULL)

   SELECT padrones.id_padron, padrones.identificador, padrones.numero,
   padrones.nombre_persona, padrones.tipo_persona, padrones.habilitado,
   mis_aportes.ddjj, mis_aportes.aportes_ss, mis_aportes.aportes_os,
   mis_aportes.contr_patronal, mis_aportes.periodo, mis_aportes.cuit_empleador,
   empleador.nombre_persona as nombre_empleador, empleador.identificador as identificador_empleador,
   substring(convert(varchar(6), mis_aportes.periodo),5,2) + '-' + left(convert(varchar(6), mis_aportes.periodo), 4) AS periodo_str
   from padrones inner join mis_aportes on padrones.identificacion = mis_aportes.cuit and padrones.identificador in ('CUIL','CUIT')
   inner join padrones empleador on mis_aportes.cuit_empleador = empleador.identificacion and empleador.identificador in ('CUIL','CUIT')
   inner join
    (select cuit, cuit_empleador, periodo, max(inserted) as ultimo
    from mis_aportes
    where cuit = @p_cuit
    and cuit_empleador = @p_cuit_empleador
    group by cuit, cuit_empleador, periodo) per_last 
   ON (mis_aportes.cuit = per_last.cuit
    AND mis_aportes.cuit_empleador = per_last.cuit_empleador
    AND mis_aportes.periodo = per_last.periodo
    AND mis_aportes.inserted = per_last.ultimo)
   WHERE mis_aportes.periodo BETWEEN @p1 AND @p2
   ORDER BY mis_aportes.periodo, empleador.nombre_persona
 
  ELSE

   SELECT padrones.id_padron, padrones.identificador, padrones.numero,
   padrones.nombre_persona, padrones.tipo_persona, padrones.habilitado,
   mis_aportes.ddjj, mis_aportes.aportes_ss, mis_aportes.aportes_os,
   mis_aportes.contr_patronal, mis_aportes.periodo, mis_aportes.cuit_empleador,
   empleador.nombre_persona as nombre_empleador, empleador.identificador as identificador_empleador,
   substring(convert(varchar(6), mis_aportes.periodo),5,2) + '-' + left(convert(varchar(6), mis_aportes.periodo), 4) AS periodo_str
   from padrones inner join mis_aportes on padrones.identificacion = mis_aportes.cuit and padrones.identificador in ('CUIL','CUIT')
   inner join padrones empleador on mis_aportes.cuit_empleador = empleador.identificacion and empleador.identificador in ('CUIL','CUIT')
   inner join
    (select cuit, cuit_empleador, periodo, max(inserted) as ultimo
    from mis_aportes
    where cuit = @p_cuit   
    group by cuit, cuit_empleador, periodo) per_last 
   ON (mis_aportes.cuit = per_last.cuit
    AND mis_aportes.cuit_empleador = per_last.cuit_empleador
    AND mis_aportes.periodo = per_last.periodo
    AND mis_aportes.inserted = per_last.ultimo)
   WHERE mis_aportes.periodo BETWEEN @p1 AND @p2
   ORDER BY empleador.nombre_persona, mis_aportes.periodo



 END ELSE BEGIN

  /* con filtro a 60 días */

  IF (@p_cuit_empleador IS NOT NULL) BEGIN


   if exists(select cuit, cuit_empleador, periodo
      from mis_aportes
      where cuit = @p_cuit
      and cuit_empleador = @p_cuit_empleador
      and inserted >= (GETDATE() - 60))

    SELECT padrones.id_padron, padrones.identificador, padrones.numero,
    padrones.nombre_persona, padrones.tipo_persona, padrones.habilitado,
    mis_aportes.ddjj, mis_aportes.aportes_ss, mis_aportes.aportes_os,
    mis_aportes.contr_patronal, mis_aportes.periodo, mis_aportes.cuit_empleador,
    empleador.nombre_persona as nombre_empleador, empleador.identificador as identificador_empleador,
    substring(convert(varchar(6), mis_aportes.periodo),5,2) + '-' + left(convert(varchar(6), mis_aportes.periodo), 4) AS periodo_str
    from padrones inner join mis_aportes on padrones.identificacion = mis_aportes.cuit and padrones.identificador in ('CUIL','CUIT')
    inner join padrones empleador on mis_aportes.cuit_empleador = empleador.identificacion and empleador.identificador in ('CUIL','CUIT')
    inner join
     (select cuit, cuit_empleador, periodo, max(inserted) as ultimo
     from mis_aportes
     where cuit = @p_cuit
     and cuit_empleador = @p_cuit_empleador
     --and inserted >= (GETDATE() - 60)
     group by cuit, cuit_empleador, periodo) per_last 
    ON (mis_aportes.cuit = per_last.cuit
     AND mis_aportes.cuit_empleador = per_last.cuit_empleador
     AND mis_aportes.periodo = per_last.periodo
     AND mis_aportes.inserted = per_last.ultimo)
    WHERE mis_aportes.periodo BETWEEN @p1 AND @p2
    ORDER BY mis_aportes.periodo, empleador.nombre_persona


 
  END ELSE BEGIN

   if exists(select cuit, cuit_empleador, periodo
      from mis_aportes
      where cuit = @p_cuit   
      and inserted >= (GETDATE() - 60))

    SELECT padrones.id_padron, padrones.identificador, padrones.numero,
    padrones.nombre_persona, padrones.tipo_persona, padrones.habilitado,
    mis_aportes.ddjj, mis_aportes.aportes_ss, mis_aportes.aportes_os,
    mis_aportes.contr_patronal, mis_aportes.periodo, mis_aportes.cuit_empleador,
    empleador.nombre_persona as nombre_empleador, empleador.identificador as identificador_empleador,
    substring(convert(varchar(6), mis_aportes.periodo),5,2) + '-' + left(convert(varchar(6), mis_aportes.periodo), 4) AS periodo_str
    from padrones inner join mis_aportes on padrones.identificacion = mis_aportes.cuit and padrones.identificador in ('CUIL','CUIT')
    inner join padrones empleador on mis_aportes.cuit_empleador = empleador.identificacion and empleador.identificador in ('CUIL','CUIT')
    inner join
     (select cuit, cuit_empleador, periodo, max(inserted) as ultimo
     from mis_aportes
     where cuit = @p_cuit   
     --and inserted >= (GETDATE() - 60)
     group by cuit, cuit_empleador, periodo) per_last 
    ON (mis_aportes.cuit = per_last.cuit
     AND mis_aportes.cuit_empleador = per_last.cuit_empleador
     AND mis_aportes.periodo = per_last.periodo
     AND mis_aportes.inserted = per_last.ultimo)
    WHERE mis_aportes.periodo BETWEEN @p1 AND @p2
    ORDER BY empleador.nombre_persona, mis_aportes.periodo

  END



 END


END

GO

Used By

No items found