Description
Properties
| Name | Value |
|---|---|
| ANSI Nulls ON | True |
| Quoted Identifier ON | True |
| Encrypted | False |
| Execute As | |
| Assembly |
Parameters
5| Name | Data Type | Length | Description |
|---|---|---|---|
| @contraparte | int | 4 | |
| @cuit | varchar | 20 | |
| @monto | decimal | 13 | |
| @leyenda | varchar | 200 | |
| @fecha | date | 3 |
SQL Script
Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
-- Author: <María Inés Soria>
-- Create date: <16/10/2019>
-- Description: Cálculo de capacidad máxima de endeudamiento según BCRA (según el pastor)
/*
--EXEC [dbo].[LN_capacidad_endeudamiento_BCRA] null, '20335754655', @monto output, @leyenda output
--EXEC [dbo].[LN_capacidad_endeudamiento_BCRA] null, '30641368977', @monto output, @leyenda output
--EXEC [dbo].[LN_capacidad_endeudamiento_BCRA] null, '27208925658', @monto output, @leyenda output
--EXEC [dbo].[LN_capacidad_endeudamiento_BCRA] null, '23183026429', @monto output, @leyenda output
--EXEC [dbo].[LN_capacidad_endeudamiento_BCRA] null, '20177260909', @monto output, @leyenda output
DECLARE @monto decimal(20,2) = null, @leyenda varchar(200) = null, @fecha date = null
EXEC [dbo].[LN_capacidad_endeudamiento_balance_bcra] 43852, null, @monto output, @leyenda output, @fecha output
select @monto as monto, @leyenda as leyenda,@fecha as fecha
*/
CREATE OR ALTER PROCEDURE dbo.LN_capacidad_endeudamiento_BCRA
@contraparte int,
@cuit varchar(20) = null,
@monto decimal(20,2) = null output,
@leyenda varchar(200) = null output,
@fecha date = null output
AS
BEGIN
SET NOCOUNT ON;
if (@contraparte is not null)
begin
select @cuit = identificacion from padrones
where id_padron = (select id_padron from LN_contrapartes where contraparte = @contraparte)
end
if (@cuit is null) -- No encontrado
begin
set @monto = null
set @leyenda = null
set @fecha = null
return
end
declare @fecha_bcra date = null
declare @bancos table (fec_inf varchar(6), banco varchar(100), situacion int, deuda decimal(20,2))
insert into @bancos
exec obtener_bancos_test @cuit
declare @dtEnd date = (select max(fecha_informacion) from fuentes_procesadas where visible = '1' and fuente = 'cendeu')
declare @dtEnd_cuit date = (select convert(date,isnull(max(fec_inf),'200112')+'01') from @bancos)
if (@dtEnd_cuit > @dtEnd) set @dtEnd = @dtEnd_cuit
set @fecha_bcra = @dtEnd
declare @ultimomes varchar(6) = (convert(varchar(4),DATEPART(yyyy,@dtEnd)) +
right('0'+convert(varchar(2),DATEPART(mm,@dtEnd)),2))
declare @hoy date = dateadd(MM,-11,@dtEnd) -- le resta 11, para tomar los ultimos 12 meses
declare @12meses varchar(6) = (convert(varchar(4),DATEPART(yyyy,@hoy)) +
right('0'+convert(varchar(2),DATEPART(mm,@hoy)),2))
declare @hay_deudas int = (select COUNT(*) from @bancos where cast(fec_inf as int) >= cast(@12meses as int))
IF (@hay_deudas = 0)
begin
set @monto = 0.01
set @leyenda = null
set @fecha = null
end
else
begin
declare @monto_total decimal(20,2) = (select sum(deuda*1000) from @bancos where cast(fec_inf as int) >= cast(@12meses as int))
declare @monto_ultimo_mes decimal(20,2) = (select sum(deuda*1000) from @bancos where cast(fec_inf as int) = cast(@ultimomes as int))
declare @monto_mal decimal(20,2) = (select sum(deuda*1000) from @bancos where cast(fec_inf as int) >= cast(@12meses as int) and situacion >= 3)
-- Siempre se divide por 12: no importa la cant. de meses que haya deuda
set @monto_total = @monto_total / 12 -- Promedio general de la deuda
set @monto_ultimo_mes = @monto_ultimo_mes * 0.40 -- 40% deuda del ultimo mes
set @monto_mal = @monto_mal / 12
IF (@monto_mal > @monto_ultimo_mes)
begin
set @monto = @monto_total * 0.10
set @leyenda = null
set @fecha = @fecha_bcra
end
ELSE
begin
set @monto = @monto_total * 0.20
set @leyenda = null
set @fecha = @fecha_bcra
end
end
END
GO
GO
-- Author: <María Inés Soria>
-- Create date: <16/10/2019>
-- Description: Cálculo de capacidad máxima de endeudamiento según BCRA (según el pastor)
/*
--EXEC [dbo].[LN_capacidad_endeudamiento_BCRA] null, '20335754655', @monto output, @leyenda output
--EXEC [dbo].[LN_capacidad_endeudamiento_BCRA] null, '30641368977', @monto output, @leyenda output
--EXEC [dbo].[LN_capacidad_endeudamiento_BCRA] null, '27208925658', @monto output, @leyenda output
--EXEC [dbo].[LN_capacidad_endeudamiento_BCRA] null, '23183026429', @monto output, @leyenda output
--EXEC [dbo].[LN_capacidad_endeudamiento_BCRA] null, '20177260909', @monto output, @leyenda output
DECLARE @monto decimal(20,2) = null, @leyenda varchar(200) = null, @fecha date = null
EXEC [dbo].[LN_capacidad_endeudamiento_balance_bcra] 43852, null, @monto output, @leyenda output, @fecha output
select @monto as monto, @leyenda as leyenda,@fecha as fecha
*/
CREATE OR ALTER PROCEDURE dbo.LN_capacidad_endeudamiento_BCRA
@contraparte int,
@cuit varchar(20) = null,
@monto decimal(20,2) = null output,
@leyenda varchar(200) = null output,
@fecha date = null output
AS
BEGIN
SET NOCOUNT ON;
if (@contraparte is not null)
begin
select @cuit = identificacion from padrones
where id_padron = (select id_padron from LN_contrapartes where contraparte = @contraparte)
end
if (@cuit is null) -- No encontrado
begin
set @monto = null
set @leyenda = null
set @fecha = null
return
end
declare @fecha_bcra date = null
declare @bancos table (fec_inf varchar(6), banco varchar(100), situacion int, deuda decimal(20,2))
insert into @bancos
exec obtener_bancos_test @cuit
declare @dtEnd date = (select max(fecha_informacion) from fuentes_procesadas where visible = '1' and fuente = 'cendeu')
declare @dtEnd_cuit date = (select convert(date,isnull(max(fec_inf),'200112')+'01') from @bancos)
if (@dtEnd_cuit > @dtEnd) set @dtEnd = @dtEnd_cuit
set @fecha_bcra = @dtEnd
declare @ultimomes varchar(6) = (convert(varchar(4),DATEPART(yyyy,@dtEnd)) +
right('0'+convert(varchar(2),DATEPART(mm,@dtEnd)),2))
declare @hoy date = dateadd(MM,-11,@dtEnd) -- le resta 11, para tomar los ultimos 12 meses
declare @12meses varchar(6) = (convert(varchar(4),DATEPART(yyyy,@hoy)) +
right('0'+convert(varchar(2),DATEPART(mm,@hoy)),2))
declare @hay_deudas int = (select COUNT(*) from @bancos where cast(fec_inf as int) >= cast(@12meses as int))
IF (@hay_deudas = 0)
begin
set @monto = 0.01
set @leyenda = null
set @fecha = null
end
else
begin
declare @monto_total decimal(20,2) = (select sum(deuda*1000) from @bancos where cast(fec_inf as int) >= cast(@12meses as int))
declare @monto_ultimo_mes decimal(20,2) = (select sum(deuda*1000) from @bancos where cast(fec_inf as int) = cast(@ultimomes as int))
declare @monto_mal decimal(20,2) = (select sum(deuda*1000) from @bancos where cast(fec_inf as int) >= cast(@12meses as int) and situacion >= 3)
-- Siempre se divide por 12: no importa la cant. de meses que haya deuda
set @monto_total = @monto_total / 12 -- Promedio general de la deuda
set @monto_ultimo_mes = @monto_ultimo_mes * 0.40 -- 40% deuda del ultimo mes
set @monto_mal = @monto_mal / 12
IF (@monto_mal > @monto_ultimo_mes)
begin
set @monto = @monto_total * 0.10
set @leyenda = null
set @fecha = @fecha_bcra
end
ELSE
begin
set @monto = @monto_total * 0.20
set @leyenda = null
set @fecha = @fecha_bcra
end
end
END
GO