dbo.obtener_cheques_con_top_limitado

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_Cuit varchar 20
@p_a_sacar varchar 1
@p_cantidad int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO

CREATE OR ALTER PROCEDURE  dbo.obtener_cheques_con_top_limitado
@p_Cuit varchar(20),
@p_a_sacar varchar(1) = null,
@p_cantidad int
AS

BEGIN

DECLARE @p_5anios smalldatetime = getdate() - 1825
DECLARE @p_2anios smalldatetime = getdate() - 730
DECLARE @p_1anio  smalldatetime = getdate() - 365
DECLARE @total_cheques int = 0
DECLARE @tipo varchar(2)

set @total_cheques = (select count(nro_cheque) from ChequesBCRA
       where (cuit_firmante = @p_Cuit)
         AND id_cheque = (select max(id_cheque) from chequesBCRA b 
       where b.cuit_firmante = chequesBCRA.cuit_firmante 
         and b.nro_cheque = chequesBCRA.nro_cheque 
         and b.visible = 1) 
      AND visible = 1
        AND 
       (

        (
         (
          (
        (fecha_levantamiento IS NULL) 
        AND
        (fecha_rechazo >= @p_5anios)
          ) 
          OR 
          (
        (
         (fecha_levantamiento >= @p_5anios)
          AND ((datediff(day,fecha_rechazo,fecha_levantamiento)) <= 15 ) 
        ) 
        AND 
        (
         ((fecha_pago IS NOT NULL) AND (fecha_levantamiento >= (GETDATE() - 2))) 
         OR
         (((fecha_pago IS NULL) AND (fecha_levantamiento >=  (GETDATE() - 2))) AND (fecha_rechazo >= @p_5anios)) 
        ) 
          ) 
         ) 
         OR 
         (
          ((fecha_levantamiento >= @p_5anios) 
          AND (((datediff(day,fecha_rechazo,fecha_levantamiento)) >= 16 ) AND ((datediff(day,fecha_rechazo,fecha_levantamiento)) <= 90)) 
          ) 
          AND 
          (((fecha_pago IS NOT NULL) AND (fecha_levantamiento >= @p_1anio))
        OR (((fecha_pago IS NULL) AND (fecha_levantamiento >= @p_1anio)) AND (fecha_rechazo >= @p_5anios))
          ) 
         ) 
        )

        OR 
 
        (
         (((fecha_levantamiento >= @p_5anios) AND
        ((datediff(day,fecha_rechazo,fecha_levantamiento)) > 90)) AND (fecha_levantamiento >= @p_2anios) 
         ) 
         AND (fecha_rechazo >= @p_5anios) 
        )

       )
       )

SELECT @tipo = IIF(CharIndex('3',@p_Cuit)=1,'j',NULL)

IF @tipo = 'j'
  BEGIN
    -- Los Cheques que vienen a nombre de la empresa
 SELECT top (@p_cantidad)
      pf.nombre_persona AS 'nombre_persona_firmante',
   cuit_firmante  AS 'cuit_firmante',
   '0' AS 'nombre_persona_relacionado',
   '0' AS 'Cuit_relacionado',
      nro_cheque,
   pf.id_padron as idp,
   '0' as idppr,
      CONVERT(varchar, ChequesBCRA.fecha_rechazo, 103)       AS fecha_rechazo,
      CONVERT(varchar, ChequesBCRA.fecha_levantamiento, 103) AS fecha_levantamiento,
      CONVERT(varchar, ChequesBCRA.fecha_pago, 103)          AS fecha_pago,
      convert(decimal(16,2),importe) as importe,
   '0' AS cantidad,
   Cheques_causales.codigo AS causa,
      'a_nombre_de_empresa' AS tipo,
   @total_cheques as total_cheques
    FROM
      ChequesBCRA
      LEFT JOIN padrones AS pf ON (pf.identificacion = cuit_firmante and pf.habilitado = 1)    --info firmante
      INNER JOIN Cheques_causales ON (ChequesBCRA.id_causa = Cheques_causales.id_causa)
    WHERE
   (Cuit_firmante = @p_Cuit)
     AND id_cheque = (select max(id_cheque) from chequesBCRA b 
       where b.cuit_firmante = chequesBCRA.cuit_firmante 
         and b.nro_cheque = chequesBCRA.nro_cheque 
         and b.visible = 1) 

      AND visible = 1
   AND 
    (

   (
    (
     (
   (fecha_levantamiento IS NULL) 
   AND
   (fecha_rechazo >= @p_5anios)
     ) 
     OR 
     (
   (
    (fecha_levantamiento >= @p_5anios)
     AND ((datediff(day,fecha_rechazo,fecha_levantamiento)) <= 15 ) 
   ) 
   AND 
   (
    ((fecha_pago IS NOT NULL) AND (fecha_levantamiento >= (GETDATE() - 2))) 
    OR
    (((fecha_pago IS NULL) AND (fecha_levantamiento >=  (GETDATE() - 2))) AND (fecha_rechazo >= @p_5anios)) 
   ) 
     ) 
    ) 
    OR 
    (
     ((fecha_levantamiento >= @p_5anios) 
     AND (((datediff(day,fecha_rechazo,fecha_levantamiento)) >= 16 ) AND ((datediff(day,fecha_rechazo,fecha_levantamiento)) <= 90)) 
     ) 
     AND 
     (((fecha_pago IS NOT NULL) AND (fecha_levantamiento >= @p_1anio))
   OR (((fecha_pago IS NULL) AND (fecha_levantamiento >= @p_1anio)) AND (fecha_rechazo >= @p_5anios))
     ) 
    ) 
   )

   OR 
 
   (
    (((fecha_levantamiento >= @p_5anios) AND
   ((datediff(day,fecha_rechazo,fecha_levantamiento)) > 90)) AND (fecha_levantamiento >= @p_2anios) 
    ) 
    AND (fecha_rechazo >= @p_5anios) 
   )

  )

    UNION ALL 

 -- Los registros de los firmantes de los cheques de la empresa
  
 SELECT top (@p_cantidad)
      pf.nombre_persona AS 'nombre_persona_firmante',
   cuit_firmante     AS 'cuit_firmante',
   pr.nombre_persona AS 'nombre_persona_relacionado',
   Cuit_relacionado  AS 'Cuit_relacionado',
   pf.id_padron as idp,
   pr.id_padron as idppr,
   '0' as nro_cheque,
      '0' AS fecha_rechazo,
      '0' AS fecha_levantamiento,
      '0' AS fecha_pago,
      '0' AS importe,
   count(nro_cheque) as cantidad,
   '0' AS causa,
      'vinculaciones' AS tipo,
   @total_cheques as total_cheques

    FROM
      ChequesBCRA
      LEFT JOIN padrones AS pf ON (pf.identificacion = cuit_firmante and pf.habilitado = 1)    --info firmante
   LEFT JOIN padrones AS pr ON (pr.identificacion = Cuit_relacionado and pr.habilitado = 1) --info relacionado
      INNER JOIN Cheques_causales ON (ChequesBCRA.id_causa = Cheques_causales.id_causa)
    WHERE 
   (Cuit_relacionado = @p_Cuit)
    AND id_cheque = (select max(id_cheque) from chequesBCRA b 
       where b.cuit_firmante = chequesBCRA.cuit_firmante 
         and b.nro_cheque = chequesBCRA.nro_cheque 
         and b.visible = 1) 
      AND visible = 1 
   AND 

  (

   (
    (
     (
   (fecha_levantamiento IS NULL) 
   AND
   (fecha_rechazo >= @p_5anios)
     ) 
     OR 
     (
   (
    (fecha_levantamiento >= @p_5anios)
     AND ((datediff(day,fecha_rechazo,fecha_levantamiento)) <= 15 ) 
   ) 
   AND 
   (
    ((fecha_pago IS NOT NULL) AND (fecha_levantamiento >= (GETDATE() - 2))) 
    OR
    (((fecha_pago IS NULL) AND (fecha_levantamiento >=  (GETDATE() - 2))) AND (fecha_rechazo >= @p_5anios)) 
   ) 
     ) 
    ) 
    OR 
    (
     ((fecha_levantamiento >= @p_5anios) 
     AND (((datediff(day,fecha_rechazo,fecha_levantamiento)) >= 16 ) AND ((datediff(day,fecha_rechazo,fecha_levantamiento)) <= 90)) 
     ) 
     AND 
     (((fecha_pago IS NOT NULL) AND (fecha_levantamiento >= @p_1anio))
   OR (((fecha_pago IS NULL) AND (fecha_levantamiento >= @p_1anio)) AND (fecha_rechazo >= @p_5anios))
     ) 
    ) 
   )

   OR 
 
   (
    (((fecha_levantamiento >= @p_5anios) AND
   ((datediff(day,fecha_rechazo,fecha_levantamiento)) > 90)) AND (fecha_levantamiento >= @p_2anios) 
    ) 
    AND (fecha_rechazo >= @p_5anios) 
   )

  )
  group by pf.nombre_persona,ChequesBCRA.cuit_firmante,pr.nombre_persona,Cuit_relacionado,pf.id_padron,pr.id_padron
     ORDER BY fecha_rechazo, nro_cheque DESC
  END

  ELSE
  
  BEGIN
  /* persona fisica */

  -- Los cheques personales 
    SELECT top (@p_cantidad)
   pf.nombre_persona AS 'nombre_persona_firmante',
   cuit_firmante     AS 'cuit_firmante',
   '0' AS 'nombre_persona_relacionado',
   '0' AS 'Cuit_relacionado',
      nro_cheque,
   pf.id_padron as idp,
  '0' as idppr,
      CONVERT(varchar, ChequesBCRA.fecha_rechazo, 103)       AS fecha_rechazo,
      CONVERT(varchar, ChequesBCRA.fecha_levantamiento, 103) AS fecha_levantamiento,
      CONVERT(varchar, ChequesBCRA.fecha_pago, 103)          AS fecha_pago,
      convert(decimal(16,2),importe) as importe,
   '0' AS cantidad,
      Cheques_causales.codigo AS causa,
   'propio' as tipo,
   @total_cheques as total_cheques
    FROM 
      ChequesBCRA
      LEFT JOIN padrones AS pf ON (pf.identificacion = cuit_firmante and pf.habilitado = 1)    --info firmante
      INNER JOIN Cheques_causales ON (ChequesBCRA.id_causa = Cheques_causales.id_causa)
 WHERE 
      ( ( cuit_firmante = @p_Cuit) AND (cuit_relacionado is null or ltrim(rtrim(cuit_relacionado)) = ''))
      /*AND fecha_rechazo > getdate() - 770*/ -- Solo lo tenia este select, se lo saque para que sea igual a los demas
    AND id_cheque = (select max(id_cheque) from chequesBCRA b 
       where b.cuit_firmante = chequesBCRA.cuit_firmante 
         and b.nro_cheque = chequesBCRA.nro_cheque 
         and b.visible = 1) 
      AND visible = 1
   AND 

  (
   (
    (
     (
   (fecha_levantamiento IS NULL) AND (fecha_rechazo >= @p_5anios)
     ) 
     OR 
     (
   (
    (fecha_levantamiento >= @p_5anios)
     AND ((datediff(day,fecha_rechazo,fecha_levantamiento)) <= 15 ) 
   ) 
   AND 
   (
    ((fecha_pago IS NOT NULL) AND (fecha_levantamiento >= (GETDATE() - 2))) 
    OR
    (((fecha_pago IS NULL) AND (fecha_levantamiento >=  (GETDATE() - 2))) AND (fecha_rechazo >= @p_5anios)) 
   ) 
     ) 
    ) 
    OR 
    (
     ((fecha_levantamiento >= @p_5anios) 
     AND (((datediff(day,fecha_rechazo,fecha_levantamiento)) >= 16 ) AND ((datediff(day,fecha_rechazo,fecha_levantamiento)) <= 90)) 
     ) 
     AND 
     (((fecha_pago IS NOT NULL) AND (fecha_levantamiento >= @p_1anio))
   OR (((fecha_pago IS NULL) AND (fecha_levantamiento >= @p_1anio)) AND (fecha_rechazo >= @p_5anios))
     ) 
    ) 
   )

   OR 
 
   (
    (((fecha_levantamiento >= @p_5anios) AND
   ((datediff(day,fecha_rechazo,fecha_levantamiento)) > 90)) AND (fecha_levantamiento >= @p_2anios) 
    ) 
    AND (fecha_rechazo >= @p_5anios) 
   )

  )

 UNION ALL
 -- Los cheques de las empresas en las que es firmante
 SELECT top (@p_cantidad)  
   pf.nombre_persona AS 'nombre_persona_firmante',
   cuit_firmante     AS 'cuit_firmante',
   pr.nombre_persona AS 'nombre_persona_relacionado',
   Cuit_relacionado  AS 'Cuit_relacionado',
      nro_cheque,
   pf.id_padron as idp,
   pr.id_padron as idppr,
      CONVERT(varchar, ChequesBCRA.fecha_rechazo, 103)       AS fecha_rechazo,
      CONVERT(varchar, ChequesBCRA.fecha_levantamiento, 103) AS fecha_levantamiento,
      CONVERT(varchar, ChequesBCRA.fecha_pago, 103)          AS fecha_pago,
      convert(decimal(16,2),importe) as importe,
   '0' AS cantidad,
      Cheques_causales.codigo AS causa,
   'empresa' as tipo,
   @total_cheques as total_cheques
    FROM 
      ChequesBCRA
      LEFT JOIN padrones AS pf ON (pf.identificacion = cuit_firmante and pf.habilitado = 1)    --info firmante
   INNER JOIN padrones AS pr ON (pr.identificacion = Cuit_relacionado and pr.habilitado = 1) --info relacionado
      INNER JOIN Cheques_causales ON (ChequesBCRA.id_causa = Cheques_causales.id_causa)
 WHERE 
 ( ( cuit_firmante = @p_Cuit) AND (cuit_relacionado is not null and ltrim(rtrim(cuit_relacionado)) != ''))
     /*AND not exists(select * from chequesBCRA b 
            where b.cuit_firmante = chequesBCRA.cuit_firmante 
        and b.nro_cheque = chequesBCRA.nro_cheque 
        and b.visible = 1 
        and b.id_cheque > chequesBCRA.id_cheque)*/


     AND id_cheque = (select max(id_cheque) from chequesBCRA b 
       where b.cuit_firmante = chequesBCRA.cuit_firmante 
         and b.nro_cheque = chequesBCRA.nro_cheque 
         and b.visible = 1) 
      AND visible = 1
   AND 
  (
   (
    (
     (
   (fecha_levantamiento IS NULL) 
   AND
   (fecha_rechazo >= @p_5anios)
     ) 
     OR 
     (
   (
    (fecha_levantamiento >= @p_5anios)
     AND ((datediff(day,fecha_rechazo,fecha_levantamiento)) <= 15 ) 
   ) 
   AND 
   (
    ((fecha_pago IS NOT NULL) AND (fecha_levantamiento >= (GETDATE() - 2))) 
    OR
    (((fecha_pago IS NULL) AND (fecha_levantamiento >=  (GETDATE() - 2))) AND (fecha_rechazo >= @p_5anios)) 
   ) 
     ) 
    ) 
    OR 
    (
     ((fecha_levantamiento >= @p_5anios) 
     AND (((datediff(day,fecha_rechazo,fecha_levantamiento)) >= 16 ) AND ((datediff(day,fecha_rechazo,fecha_levantamiento)) <= 90)) 
     ) 
     AND 
     (((fecha_pago IS NOT NULL) AND (fecha_levantamiento >= @p_1anio))
   OR (((fecha_pago IS NULL) AND (fecha_levantamiento >= @p_1anio)) AND (fecha_rechazo >= @p_5anios))
     ) 
    ) 
   )

   OR 
 
   (
    (((fecha_levantamiento >= @p_5anios) AND
   ((datediff(day,fecha_rechazo,fecha_levantamiento)) > 90)) AND (fecha_levantamiento >= @p_2anios) 
    ) 
    AND (fecha_rechazo >= @p_5anios) 
   )

  )
  
 ORDER BY nro_cheque ASC
  END

END

GO

Used By

No items found