dbo.ws_obtener_cancelaciones_bcra

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

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


BEGIN
    SET NOCOUNT ON;
 declare @dtStart date, @dtEnd date, @dtEnd_cuit date,@periodo_maximo varchar(7),@fec_periodo_minimo varchar(11),@periodo_minimo varchar(7);
 
 select @dtEnd = (select max(fecha_informacion) from fuentes_procesadas where visible = '1')

 select @dtEnd_cuit = convert(date,isnull(max(cendeu.fec_inf),'200112')+'01') from cendeu where iden = @p_cuit

 if (@dtEnd_cuit > @dtEnd) 
  begin 
     set @dtEnd = @dtEnd_cuit
  end 
 set @dtStart = dateadd(month,-23, @dtEnd)
 set @periodo_maximo = replace(Convert(varchar(7),@dtEnd),'-','')
 set @fec_periodo_minimo = @dtStart
 set @periodo_minimo = replace(Convert(varchar(7),@dtStart),'-','')
 set @dtStart = dateadd(month,-23, @dtEnd)
 if (@periodo_maximo is not null)
  begin
    set @fec_periodo_minimo = dateadd(MM, -24,convert(date,@periodo_maximo+'01'))
    set @periodo_minimo = convert(varchar(4),DATEPART(yyyy,@fec_periodo_minimo))+right('0'+convert(varchar(2),DATEPART(mm,@fec_periodo_minimo)),2)
     end

    declare @codigo_ent varchar(5)
 declare @nombre_corto varchar(100)
 declare @nombre varchar(200)
 declare @situacion varchar(2)
 declare @situacion_char varchar(50)
 declare @primer_mes varchar(6)
 declare @ultimo_mes varchar(6)
 declare @monto_maximo numeric(12,1)
 declare @ultimo_monto numeric(12,1)
 declare @mes_1 varchar(7)
 declare @mes_2 varchar(7)
 declare @monto_1 char(13)
 declare @monto_2 char(13)

 declare @fecha_desde date
 declare @fecha_hasta date 
 declare @fec_inf_desde date
 declare @fec_inf_hasta date 
 declare @fecha_cancela date
 declare @fecha_cancela_dmy varchar(10)
 declare @fecha date
 declare @ok char(1)
 declare @eve_codigo varchar(10)
 declare @evento     varchar(50)
 declare @respuesta table (cod int, nombre_corto varchar(100), nombre varchar(100), fecha_desde varchar(7), fecha_hasta varchar(7), fecha varchar(10), evento varchar(50))

DECLARE bn CURSOR

FOR
-- Recorro las deudas que se mostraron
 select 
     convert(int,codigo_ent) as codigo_ent, 
  nombre_corto,
  nombre,
  min(fec_inf), 
  max(fec_inf)
 
 from cendeu 
 inner join EntidadesBancarias on
      convert(int,cendeu.codigo_ent) = EntidadesBancarias.id_banco 
 where iden = @p_Cuit 
   and cendeu.fec_inf between @periodo_minimo and @periodo_maximo   
   and vigente = 1  
   and not exists (select * from cendeu b 
           where b.iden = cendeu.iden and cast(b.codigo_ent as int) = cast(cendeu.codigo_ent as int)
              and b.fec_inf = cendeu.fec_inf 
            and b.vigente = 1 
          and b.id_fuente = 2 
          and b.id_cendeu != cendeu.id_cendeu)

 group by 
  convert(int,codigo_ent),
  nombre_corto, 
  nombre
 order by 2, 4 asc

 OPEN bn 
 Fetch next from bn INTO @codigo_ent, @nombre_corto, @nombre, @primer_mes, @ultimo_mes
 WHILE (@@FETCH_STATUS <> -1 )
 BEGIN
   set @fecha_desde = convert(date,@primer_mes+'01')
   set @fecha_hasta = convert(date,@ultimo_mes+'01')

   --- busco en cendeu_cancela, si algun registro cancela/regulariza/etc alguno de los meses mostrados para ese banco

   set @fecha = @fecha_desde
   while (@fecha < @fecha_hasta)  

   begin 
      DECLARE cn CURSOR
    FOR select eve_codigo, 
               convert(date,fec_inf_desde),
      convert(date,fec_inf_hasta),
               max(fecha)
    from cendeu_cancela 
    where iden = @p_cuit
      and vigente = '1'
      and codigo_ent = @codigo_ent 
      and (convert(date,fec_inf_desde) <= @fecha and dateadd(MM,1,convert(date,fec_inf_hasta)) > @fecha)
      group by eve_codigo, convert(date,fec_inf_desde),
      convert(date,fec_inf_hasta)
     OPEN cn
      Fetch next from cn INTO @eve_codigo, @fec_inf_desde, @fec_inf_hasta, @fecha_cancela
     WHILE (@@FETCH_STATUS <> -1 )
     BEGIN
      set @evento = (select eve_nombre
           from Eventos_Deudas
          where eve_codigo = @eve_codigo)

      /*set @mes_1 = SUBSTRING(convert(varchar(10),@primer_mes),5,2) + '/' + SUBSTRING(convert(varchar(10),@primer_mes),1,4)
          set @mes_2 = SUBSTRING(convert(varchar(10),@ultimo_mes),5,2) + '/' + SUBSTRING(convert(varchar(10),@ultimo_mes),1,4)
         */

      set @mes_1 = SUBSTRING(convert(varchar(10),@fec_inf_desde),6,2) + '/' + SUBSTRING(convert(varchar(10),@fec_inf_desde),1,4) 
      set @mes_2 = SUBSTRING(convert(varchar(10),@fec_inf_hasta),6,2) + '/' + SUBSTRING(convert(varchar(10),@fec_inf_hasta),1,4) 
        
      set @fecha_cancela_dmy = CONVERT(varchar(10),@fecha_cancela,103) 
     
       insert into @respuesta values(@codigo_ent, @nombre_corto, @nombre, @mes_1, @mes_2, @fecha_cancela_dmy, @evento)
      Fetch next from cn INTO @evento, @fec_inf_desde, @fec_inf_hasta, @fecha_cancela
       END 
     CLOSE cn
     DEALLOCATE cn 
     set @fecha = dateadd(month,1,@fecha)
     
   end
   Fetch next from bn INTO  @codigo_ent, @nombre_corto, @nombre, @primer_mes, @ultimo_mes

 END
 CLOSE bn
 DEALLOCATE bn 
 select distinct * from @respuesta
END 

GO

Used By

No items found