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
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
Depends On
5Used By
No items found