dbo.LN_alertas_cheques_cliente

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_cliente int 4
@rechazados int 4

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
DECLARE  @rechazados int 
EXEC [LN_alertas_cheques_cliente] '30602627388', '5546348', @rechazados output
select @rechazados as rechazados 
*/

/*****************************************************************************
En la tabla [LN_dias_alertas] buscamos los criterios de 'cheques' que hay que tomar
Si hay varias, devuelve el total de todos los casos a tener en cuenta
Por default:

CHEQUES RECHAZADOS SIN FONDOS NO PAGADOS 
(SIN FECHA DE LEVANTAMIENTO) DE LOS ULTIMOS 360 DIAS
******************************************************************************/

CREATE OR ALTER PROCEDURE dbo.LN_alertas_cheques_cliente
    
    @p_Cuit       varchar(20),
    @p_cliente      int, 
    @rechazados      int = NULL OUTPUT

AS
BEGIN
    SET NOCOUNT ON;
 DECLARE @p_5anios smalldatetime = getdate() - 1825
    DECLARE @p_2anios smalldatetime = getdate() - 730
    DECLARE @p_1anio  smalldatetime = getdate() - 365
 DECLARE @dias int, @causal int, @levantados char(1) 
    declare @cheques_rechazados int = 0
    declare @total_rechazados   int = 0
 
 if ((select COUNT(*) from ln_dias_alertas where cliente = @p_Cliente and tabla = 'cheques') = 0)
 begin
  DECLARE C_Cheques CURSOR FOR
   select 360 as dias, 2 as causal, 'N' as levantados 
    end 
 else
 begin 
  DECLARE C_Cheques CURSOR FOR
   select dias, causal, levantados 
     from ln_dias_alertas 
    where tabla = 'cheques' and cliente = @p_Cliente
 end 

 OPEN C_Cheques
 FETCH NEXT FROM C_Cheques INTO @dias, @causal, @levantados  
    WHILE @@fetch_status = 0
 BEGIN
 
      select @cheques_rechazados = count(*) 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 ChequesBCRA.id_causa = @causal 
  AND ((@levantados = 'N' AND ChequesBCRA.fecha_levantamiento IS NULL)
       or 
    (@levantados = 'S' AND ChequesBCRA.fecha_levantamiento IS NOT NULL)
    or 
    (@levantados is null))
        AND (visible = 1)
  AND ChequesBCRA.fecha_rechazo >= (GETDATE()-@dias)
     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) 
    )
   )
   
  set @total_rechazados = @total_rechazados + @cheques_rechazados
  FETCH NEXT FROM C_Cheques INTO @dias, @causal, @levantados  
 END 
 SET @rechazados = @total_rechazados
 CLOSE C_cheques
 DEALLOCATE C_cheques
END

GO