dbo.LN_capacidad_endeudamiento_BCRA

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