2365 lines
170 KiB
Text
2365 lines
170 KiB
Text
USE [BPMDATA]
|
|
GO
|
|
/****** Object: Table [Parametros].[WFShockTipoCambio] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Parametros].[WFShockTipoCambio]') AND type in (N'U'))
|
|
DROP TABLE [Parametros].[WFShockTipoCambio]
|
|
GO
|
|
/****** Object: Table [Parametros].[WFShockTasaInteres] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Parametros].[WFShockTasaInteres]') AND type in (N'U'))
|
|
DROP TABLE [Parametros].[WFShockTasaInteres]
|
|
GO
|
|
/****** Object: Table [Parametros].[WFGradualidadCobertura] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Parametros].[WFGradualidadCobertura]') AND type in (N'U'))
|
|
DROP TABLE [Parametros].[WFGradualidadCobertura]
|
|
GO
|
|
/****** Object: UserDefinedFunction [dbo].[F_pmt] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[F_pmt]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
|
|
DROP FUNCTION [dbo].[F_pmt]
|
|
GO
|
|
/****** Object: UserDefinedFunction [dbo].[F_getCuotaDTI] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[F_getCuotaDTI]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
|
|
DROP FUNCTION [dbo].[F_getCuotaDTI]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[usp_wf_sensibilizacion_deudas] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usp_wf_sensibilizacion_deudas]') AND type in (N'P', N'PC'))
|
|
DROP PROCEDURE [dbo].[usp_wf_sensibilizacion_deudas]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[usp_wf_riesgocambiario_CSD] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usp_wf_riesgocambiario_CSD]') AND type in (N'P', N'PC'))
|
|
DROP PROCEDURE [dbo].[usp_wf_riesgocambiario_CSD]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[usp_wf_generador_moneda] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usp_wf_generador_moneda]') AND type in (N'P', N'PC'))
|
|
DROP PROCEDURE [dbo].[usp_wf_generador_moneda]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[usp_wf_generador_moneda] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER OFF
|
|
GO
|
|
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usp_wf_generador_moneda]') AND type in (N'P', N'PC'))
|
|
BEGIN
|
|
EXEC dbo.sp_executesql @statement = N'
|
|
------------------------------------------------------------------------------
|
|
-- Ultimus LA
|
|
-- Nombre SP: usp_wf_generador_moneda
|
|
-- Proceso Utiliza: PrestamoPrendario
|
|
-- Creado Por: Byron Madrigal
|
|
-- Fecha Creación: 22/11/2016
|
|
------------------------------------------------------------------------------
|
|
-- Modif. Por: Andres Leon R
|
|
-- Modif. Fecha : 24/10/2017
|
|
-- Modif. Detalle:Nuevos ajuste Proyecto Actualización
|
|
------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
/*
|
|
exec [usp_wf_generador_moneda]
|
|
@i_opcion = 1,
|
|
@i_incidente = 109,
|
|
@i_solicitud = 145,
|
|
@i_idcliente = 180,
|
|
@i_identificacion = ''01-1288-0438'',
|
|
@i_proceso = ''PrestamoPrendario'',
|
|
|
|
@i_ingreso_brut_col = 1652000.00,
|
|
@i_ingreso_brut_dol = 0,
|
|
@i_tipo_cambio = 542,
|
|
@i_fecha_solicitud = ''2016-07-05''
|
|
|
|
|
|
|
|
exec [usp_wf_generador_moneda]
|
|
@i_opcion = 1,
|
|
@i_incidente = 217,
|
|
@i_solicitud = 253,
|
|
@i_idcliente = 293,
|
|
@i_identificacion = ''02-0726-0237'',
|
|
@i_proceso = ''PrestamoPrendario'',
|
|
|
|
@i_ingreso_brut_col = 1348310.0000,
|
|
@i_ingreso_brut_dol = 1753.5500,
|
|
@i_tipo_cambio = 562.75,
|
|
@i_fecha_solicitud = ''2017-03-23''
|
|
|
|
|
|
|
|
|
|
*/
|
|
CREATE PROCEDURE [dbo].[usp_wf_generador_moneda]
|
|
@i_opcion INT,
|
|
@i_incidente INT = 0,
|
|
@i_solicitud INT = 0,
|
|
@i_proceso VARCHAR(50) = '''',
|
|
@i_idcliente INT = NULL,
|
|
@i_identificacion VARCHAR(30) = '''',
|
|
@i_ingreso_brut_col FLOAT = NULL,
|
|
@i_ingreso_brut_dol FLOAT = NULL,
|
|
@i_tipo_cambio FLOAT = NULL,
|
|
@i_fecha_solicitud VARCHAR(10) = NULL
|
|
AS
|
|
|
|
DECLARE @o_res_code INT,
|
|
@o_res_message NVARCHAR(MAX),
|
|
@o_res_err_procedure NVARCHAR(MAX),
|
|
@o_res_err_line INT,
|
|
@o_tipo_generador INT,
|
|
@o_desc_tipo_generador NVARCHAR(100),
|
|
@MonedaIngresos CHAR(1) = '''',
|
|
@MonedaDeudaActual CHAR(1) = '''', -- C = Colones, D = Dolares, T = Todas
|
|
@SumaCuotasCIC FLOAT = 0,
|
|
@SumaCuotasFSN FLOAT = 0,
|
|
@SumaTotal FLOAT = 0,
|
|
@DeudaActualColones INT = 0,
|
|
@DeudaActualDolares INT = 0,
|
|
@Cobertura CHAR(1) = '''', -- C = Cubre, N = No Cubre
|
|
@PuntoCorte FLOAT,
|
|
@CSDCliente FLOAT,
|
|
@Riesgo NVARCHAR(50)
|
|
|
|
|
|
IF @i_opcion = 1
|
|
BEGIN
|
|
|
|
BEGIN TRY
|
|
|
|
BEGIN TRAN T1
|
|
|
|
|
|
SET @i_fecha_solicitud = ISNULL(@i_fecha_solicitud, '''')
|
|
|
|
SELECT @i_ingreso_brut_col = ISNULL(@i_ingreso_brut_col,0),
|
|
@i_ingreso_brut_dol = ISNULL(@i_ingreso_brut_dol,0),
|
|
@i_tipo_cambio = ISNULL(@i_tipo_cambio,1),
|
|
@i_fecha_solicitud = CONVERT(DATE,CONVERT(VARCHAR(20),ISNULL(@i_fecha_solicitud, GETDATE()),105)),
|
|
@o_tipo_generador = 0,
|
|
@o_desc_tipo_generador = ''''
|
|
|
|
|
|
BEGIN -- Moneda Ingreso
|
|
|
|
SELECT @i_ingreso_brut_col = ISNULL(@i_ingreso_brut_col,0),
|
|
@i_ingreso_brut_dol = ISNULL(@i_ingreso_brut_dol,0),
|
|
@i_tipo_cambio = ISNULL(@i_tipo_cambio,1)
|
|
|
|
IF @i_ingreso_brut_col > 0 AND @i_ingreso_brut_dol > 0
|
|
BEGIN
|
|
SET @MonedaIngresos = ''T''
|
|
END ELSE IF @i_ingreso_brut_col > 0 AND @i_ingreso_brut_dol = 0
|
|
BEGIN
|
|
SET @MonedaIngresos = ''C''
|
|
END ELSE IF @i_ingreso_brut_dol > 0 AND @i_ingreso_brut_col = 0
|
|
BEGIN
|
|
SET @MonedaIngresos = ''D''
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @MonedaIngresos = ''N''
|
|
END
|
|
|
|
END
|
|
|
|
|
|
|
|
BEGIN -- Moneda Deudas Actuales
|
|
|
|
SELECT @DeudaActualColones = COUNT(*)
|
|
FROM [BPMPRENDARIO].[Prendario].[SituacionActual]
|
|
WHERE IdSolicitud = @i_solicitud
|
|
--and sa_saldo != ''0.0000''
|
|
and Moneda = ''N - COLONES O UNIDADES DE DESARROLLO''
|
|
|
|
SELECT @DeudaActualDolares = COUNT(*)
|
|
FROM [BPMPRENDARIO].[Prendario].[SituacionActual]
|
|
WHERE IdSolicitud = @i_solicitud
|
|
--and sa_saldo != ''0.0000''
|
|
and Moneda = ''E - DIVISA EXTRANJERA''
|
|
|
|
IF @DeudaActualColones > 0 AND @DeudaActualDolares > 0
|
|
BEGIN
|
|
SET @MonedaDeudaActual = ''T''
|
|
END ELSE IF @DeudaActualColones > 0 AND @DeudaActualDolares = 0
|
|
BEGIN
|
|
SET @MonedaDeudaActual = ''C''
|
|
END ELSE IF @DeudaActualDolares > 0 AND @DeudaActualColones = 0
|
|
BEGIN
|
|
SET @MonedaDeudaActual = ''D''
|
|
END ELSE IF @DeudaActualDolares = 0 AND @DeudaActualColones = 0
|
|
BEGIN
|
|
SET @MonedaDeudaActual = ''N''
|
|
END
|
|
|
|
|
|
|
|
END
|
|
|
|
BEGIN -- SumaCuotasCIC - SumaCuotasFSN
|
|
SELECT @SumaCuotasCIC = CONVERT(FLOAT,ISNULL(CargaMensualCSD,''0'')),
|
|
@SumaCuotasFSN = CONVERT(FLOAT,ISNULL(CuotasNoReguladasCSD,''0''))
|
|
FROM [BPMPRENDARIO].[Global].[InformacionIngresosCliente]
|
|
WHERE IdCliente = @i_idcliente
|
|
|
|
SET @SumaTotal = ((@SumaCuotasCIC/@i_tipo_cambio)+(@SumaCuotasFSN/@i_tipo_cambio))
|
|
|
|
END
|
|
|
|
|
|
BEGIN --Cobertura
|
|
IF(@SumaTotal<@i_ingreso_brut_dol)
|
|
BEGIN
|
|
SET @Cobertura = ''C''
|
|
END ELSE
|
|
BEGIN
|
|
SET @Cobertura = ''N''
|
|
END
|
|
END
|
|
|
|
|
|
|
|
|
|
--Obtiene el Punto de Corte CSD
|
|
BEGIN
|
|
SELECT @PuntoCorte = PorcentajePuntoCorteCSD
|
|
FROM [BPMPRENDARIO].[Catalogos].[PuntoCorteCSD] WHERE IdPuntoCorteCSD = 1
|
|
END
|
|
|
|
--Obtiene el CSD del Cliente
|
|
BEGIN
|
|
SELECT @CSDCliente = CoberturaSobreDeuda
|
|
FROM [BPMPRENDARIO].[Global].[Cliente] WHERE IdCliente = @i_idcliente
|
|
END
|
|
|
|
|
|
|
|
--Riesgo
|
|
BEGIN
|
|
IF(@CSDCliente>(@PuntoCorte*100))
|
|
BEGIN
|
|
SET @Riesgo = ''DE ALTO RIESGO''
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @Riesgo = ''DE BAJO RIESGO''
|
|
END
|
|
|
|
|
|
END
|
|
|
|
--@MonedaIngresos = ''T''
|
|
--@MonedaDeudaActual = ''C''
|
|
--@Cobertura = ''C''
|
|
|
|
--select @MonedaIngresos
|
|
--select @MonedaDeudaActual
|
|
--select @Cobertura
|
|
|
|
IF ((@MonedaIngresos = ''D'' AND @MonedaDeudaActual = ''D'' AND @Cobertura = ''C'')
|
|
OR (@MonedaIngresos = ''D'' AND @MonedaDeudaActual = ''C'' AND @Cobertura = ''C'')
|
|
OR (@MonedaIngresos = ''T'' AND @MonedaDeudaActual = ''C'' AND @Cobertura = ''C'')
|
|
OR (@MonedaIngresos = ''T'' AND @MonedaDeudaActual = ''T'' AND @Cobertura = ''C'')
|
|
OR (@MonedaIngresos = ''C'' AND @MonedaDeudaActual = ''N'' AND @Cobertura = ''C'')
|
|
OR (@MonedaIngresos = ''D'' AND @MonedaDeudaActual = ''N'' AND @Cobertura = ''C'')
|
|
OR (@MonedaIngresos = ''T'' AND @MonedaDeudaActual = ''N'' AND @Cobertura = ''C''))
|
|
OR (@MonedaIngresos = ''D'' AND @MonedaDeudaActual = ''T'' AND @Cobertura = ''C'')
|
|
BEGIN
|
|
SET @o_tipo_generador = 1
|
|
|
|
END ELSE IF ((@MonedaIngresos = ''D'' AND @MonedaDeudaActual = ''D'' AND @Cobertura = ''N'')
|
|
OR (@MonedaIngresos = ''C'' AND @MonedaDeudaActual = ''C'' AND @Cobertura = ''N'')
|
|
OR (@MonedaIngresos = ''D'' AND @MonedaDeudaActual = ''C'' AND @Cobertura = ''N'')
|
|
OR (@MonedaIngresos = ''T'' AND @MonedaDeudaActual = ''D'' AND @Cobertura = ''N'')
|
|
OR (@MonedaIngresos = ''T'' AND @MonedaDeudaActual = ''C'' AND @Cobertura = ''N'')
|
|
OR (@MonedaIngresos = ''T'' AND @MonedaDeudaActual = ''T'' AND @Cobertura = ''N'')
|
|
OR (@MonedaIngresos = ''D'' AND @MonedaDeudaActual = ''T'' AND @Cobertura = ''N'')
|
|
OR (@MonedaIngresos = ''C'' AND @MonedaDeudaActual = ''T'' AND @Cobertura = ''C'')
|
|
OR (@MonedaIngresos = ''C'' AND @MonedaDeudaActual = ''T'' AND @Cobertura = ''N'')
|
|
OR (@MonedaIngresos = ''C'' AND @MonedaDeudaActual = ''C'' AND @Cobertura = ''N'')
|
|
OR (@MonedaIngresos = ''C'' AND @MonedaDeudaActual = ''N'' AND @Cobertura = ''N'')
|
|
OR (@MonedaIngresos = ''D'' AND @MonedaDeudaActual = ''N'' AND @Cobertura = ''N'')
|
|
OR (@MonedaIngresos = ''T'' AND @MonedaDeudaActual = ''N'' AND @Cobertura = ''N''))
|
|
BEGIN
|
|
SET @o_tipo_generador = 2
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @o_tipo_generador = 3
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SET @o_desc_tipo_generador = CASE @o_tipo_generador
|
|
WHEN 1 THEN ''GENERADOR DE MONEDA EXTRANJERA''
|
|
WHEN 2 THEN ''NO GENERADOR DE MONEDA EXTRANJERA''+'' ''+ @Riesgo
|
|
WHEN 3 THEN ''NO GENERADOR DE MONEDA EXTRANJERA''
|
|
END
|
|
|
|
|
|
|
|
|
|
SELECT @o_res_code = 0,
|
|
@o_res_message = ''EXITOSO''
|
|
|
|
COMMIT TRAN T1
|
|
|
|
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
ROLLBACK TRAN T1
|
|
|
|
SELECT @o_res_code = ERROR_NUMBER(),
|
|
@o_res_message = ERROR_MESSAGE(),
|
|
@o_res_err_procedure = ERROR_PROCEDURE(),
|
|
@o_res_err_line = ERROR_LINE()
|
|
|
|
END CATCH
|
|
|
|
SELECT res_cod_generador = @o_tipo_generador,
|
|
res_des_generador = @o_desc_tipo_generador,
|
|
res_code = @o_res_code,
|
|
res_message = @o_res_message,
|
|
res_err_procedure = @o_res_err_procedure,
|
|
res_err_line = @o_res_err_line
|
|
|
|
END
|
|
|
|
|
|
|
|
|
|
'
|
|
END
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[usp_wf_riesgocambiario_CSD] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER OFF
|
|
GO
|
|
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usp_wf_riesgocambiario_CSD]') AND type in (N'P', N'PC'))
|
|
BEGIN
|
|
EXEC dbo.sp_executesql @statement = N'
|
|
|
|
|
|
|
|
------------------------------------------------------------------------------
|
|
-- Ultimus LA
|
|
-- Nombre SP: usp_wf_riesgocambiario_CSD
|
|
-- Proceso Utiliza: PrestamoPrendario
|
|
-- Creado Por: Andrés León
|
|
-- Fecha Creación: 17/10/2017
|
|
------------------------------------------------------------------------------
|
|
-- Modif. Por:
|
|
-- Modif. Fecha :
|
|
-- Modif. Detalle:
|
|
------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
/*
|
|
exec [usp_wf_riesgocambiario_CSD]
|
|
@i_opcion = 1,
|
|
@i_incidente = 109,
|
|
@i_solicitud = 145,
|
|
@i_idcliente = 180,
|
|
@i_identificacion = ''01-1288-0438'',
|
|
@i_proceso = ''PrestamoPrendario'',
|
|
@i_ingreso_neto_col = 1652000.00,
|
|
@i_ingreso_neto_dol = 0,
|
|
@i_tipo_cambio = 542,
|
|
@i_fecha_solicitud = ''2016-07-05''
|
|
|
|
|
|
exec [usp_wf_riesgocambiario_CSD]
|
|
@i_opcion = 2,
|
|
@i_incidente = 251,
|
|
@i_solicitud = 301,
|
|
@i_idcliente = 336,
|
|
@i_identificacion = ''01-0782-0379'',
|
|
@i_proceso = ''PrestamoPrendario'',
|
|
@i_ingreso_neto_col = 1652000.00,
|
|
@i_ingreso_neto_dol = 0,
|
|
@i_tipo_cambio = 542,
|
|
@i_fecha_solicitud = ''2016-07-05''
|
|
|
|
*/
|
|
CREATE PROCEDURE [dbo].[usp_wf_riesgocambiario_CSD]
|
|
@i_opcion INT,
|
|
@i_incidente INT = 0,
|
|
@i_solicitud INT = 0,
|
|
@i_proceso VARCHAR(50) = '''',
|
|
@i_idcliente INT = NULL,
|
|
@i_identificacion VARCHAR(30) = '''',
|
|
@i_ingreso_neto_col FLOAT = NULL,
|
|
@i_ingreso_neto_dol FLOAT = NULL,
|
|
@i_ingreso_bruto_col FLOAT = NULL,
|
|
@i_ingreso_bruto_dol FLOAT = NULL,
|
|
@i_tipo_cambio FLOAT = NULL,
|
|
@i_fecha_solicitud VARCHAR(10) = NULL
|
|
AS
|
|
|
|
DECLARE @o_res_code INT,
|
|
@o_res_message NVARCHAR(MAX),
|
|
@o_res_err_procedure NVARCHAR(MAX),
|
|
@o_res_err_line INT,
|
|
@MonedaIngresos CHAR(1) = '''', -- C = Colones, D = Dolares, T = Todas
|
|
@MonedaDeudaActual CHAR(1) = '''', -- C = Colones, D = Dolares, T = Todas
|
|
@DeudaActualColones INT = 0,
|
|
@DeudaActualDolares INT = 0,
|
|
@SumaCuotasCIC_COLONES FLOAT = 0,
|
|
@SumaCuotasCIC_DOLARES FLOAT = 0,
|
|
@SumaCuotasCIC FLOAT = 0,
|
|
@SumaCuotasFSN FLOAT = 0,
|
|
@NuevaCuota FLOAT = 0,
|
|
@NuevaDeuda CHAR(1) = ''D'', -- C = Colones, D = Dolares, T = Todas
|
|
@RiesgoCambiario FLOAT = 0,
|
|
@DesRiesgoCambiario VARCHAR(50)= '''',
|
|
@CodRiesgoCambiario CHAR(1) = '''',
|
|
@PuntoCorte FLOAT,
|
|
@CSD FLOAT = 0
|
|
|
|
BEGIN TRY
|
|
|
|
|
|
IF @i_opcion = 1
|
|
BEGIN
|
|
|
|
BEGIN -- Moneda Ingreso
|
|
|
|
SELECT @i_ingreso_neto_col = ISNULL(@i_ingreso_neto_col,0),
|
|
@i_ingreso_neto_dol = ISNULL(@i_ingreso_neto_dol,0),
|
|
@i_tipo_cambio = ISNULL(@i_tipo_cambio,1)
|
|
|
|
IF @i_ingreso_neto_col > 0 AND @i_ingreso_neto_dol > 0
|
|
BEGIN
|
|
SET @MonedaIngresos = ''T''
|
|
END ELSE IF @i_ingreso_neto_col > 0 AND @i_ingreso_neto_dol = 0
|
|
BEGIN
|
|
SET @MonedaIngresos = ''C''
|
|
END ELSE IF @i_ingreso_neto_dol > 0 AND @i_ingreso_neto_col = 0
|
|
BEGIN
|
|
SET @MonedaIngresos = ''D''
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
SET @MonedaIngresos = ''N''
|
|
END
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
BEGIN -- Moneda Deudas Actuales
|
|
|
|
SELECT @DeudaActualColones = COUNT(*)
|
|
FROM [BPMPRENDARIO].[Prendario].[SituacionActual]
|
|
WHERE IdSolicitud = @i_solicitud
|
|
--and sa_saldo != ''0.0000''
|
|
and Moneda = ''N - COLONES O UNIDADES DE DESARROLLO''
|
|
|
|
SELECT @DeudaActualDolares = COUNT(*)
|
|
FROM [BPMPRENDARIO].[Prendario].[SituacionActual]
|
|
WHERE IdSolicitud = @i_solicitud
|
|
--and sa_saldo != ''0.0000''
|
|
and Moneda = ''E - DIVISA EXTRANJERA''
|
|
|
|
IF @DeudaActualColones > 0 AND @DeudaActualDolares > 0
|
|
BEGIN
|
|
SET @MonedaDeudaActual = ''T''
|
|
END ELSE IF @DeudaActualColones > 0 AND @DeudaActualDolares = 0
|
|
BEGIN
|
|
SET @MonedaDeudaActual = ''C''
|
|
END ELSE IF @DeudaActualDolares > 0 AND @DeudaActualColones = 0
|
|
BEGIN
|
|
SET @MonedaDeudaActual = ''D''
|
|
END
|
|
|
|
END
|
|
|
|
|
|
BEGIN -- SumaCuotasFSN
|
|
SELECT --@SumaCuotasCIC = CONVERT(FLOAT,ISNULL(CargaMensualCSD,''0'')),
|
|
@SumaCuotasFSN = (CONVERT(FLOAT,ISNULL(CuotasNoReguladasCSD,''0''))/@i_tipo_cambio)
|
|
FROM [BPMPRENDARIO].[Global].[InformacionIngresosCliente]
|
|
WHERE IdCliente = @i_idcliente
|
|
|
|
END
|
|
|
|
|
|
BEGIN-- SumaCuotasCIC
|
|
|
|
SELECT @SumaCuotasCIC_COLONES =ISNULL(SUM(CONVERT(FLOAT,ISNULL(REPLACE(so_cuota_esc_normal ,'','',''''),''0''))),0) FROM [BPMPRENDARIO].[Prendario].[SensibilizacionOperacion]
|
|
WHERE so_solicitud =@i_solicitud
|
|
AND so_co_moneda = 0
|
|
and so_id_operacion != ''Operacion del Tramite Actual''
|
|
|
|
SELECT
|
|
@SumaCuotasCIC_DOLARES =ISNULL(SUM(CONVERT(FLOAT,ISNULL(REPLACE(so_cuota_esc_normal ,'','',''''),''0''))),0) FROM [BPMPRENDARIO].[Prendario].[SensibilizacionOperacion]
|
|
WHERE so_solicitud =@i_solicitud
|
|
AND so_co_moneda = 1
|
|
and so_id_operacion != ''Operacion del Tramite Actual''
|
|
|
|
SET @SumaCuotasCIC = @SumaCuotasCIC_COLONES + (@SumaCuotasCIC_DOLARES*@i_tipo_cambio)
|
|
END
|
|
|
|
|
|
|
|
BEGIN -- Nueva Cuota
|
|
|
|
SELECT @NuevaCuota = so_cuota_esc_normal
|
|
FROM [BPMPRENDARIO].[Prendario].[SensibilizacionOperacion]
|
|
WHERE so_id_operacion = ''Operacion del Tramite Actual''
|
|
AND so_solicitud = @i_solicitud
|
|
|
|
|
|
END
|
|
|
|
BEGIN -- No Aplica
|
|
|
|
IF (@MonedaIngresos = @MonedaDeudaActual and @MonedaDeudaActual = @NuevaDeuda)
|
|
BEGIN
|
|
SET @DesRiesgoCambiario = ''No Aplica''
|
|
SET @CodRiesgoCambiario = ''0''
|
|
END
|
|
END
|
|
|
|
IF (@CodRiesgoCambiario != ''0'')
|
|
BEGIN
|
|
IF (@MonedaIngresos = ''C'' and @MonedaDeudaActual = ''C'' and @NuevaDeuda = ''C'')
|
|
BEGIN
|
|
SELECT ''0'' as IdRiesgoCambiarioDeudor,
|
|
''No Aplica'' as DescripcionRiesgoCambiarioDeudor
|
|
END
|
|
|
|
-- Para Ingreso en Colones / Deudas en Colones / Nueva deuda Dólares:
|
|
IF (@MonedaIngresos = ''C'' and @MonedaDeudaActual = ''C'' and @NuevaDeuda = ''D'')
|
|
BEGIN
|
|
SELECT @RiesgoCambiario = (@SumaCuotasCIC + @SumaCuotasFSN + (@NuevaCuota * @i_tipo_cambio)) / @i_ingreso_neto_col
|
|
END
|
|
|
|
-- Para Ingreso en Colones / Deudas en Dólares / Nueva deuda Dólares:
|
|
-- Para Ingreso en Colones / Deudas en Dólares / Nueva deuda Colones:
|
|
-- Para Ingreso en Colones / Deudas Ambas Monedas / Nueva deuda Dólares:
|
|
-- Para Ingreso en Colones / Deudas Ambas Monedas / Nueva deuda Colones:
|
|
IF ((@MonedaIngresos = ''C'' and @MonedaDeudaActual = ''D'' and @NuevaDeuda = ''D'') OR
|
|
(@MonedaIngresos = ''C'' and @MonedaDeudaActual = ''D'' and @NuevaDeuda = ''C'') OR
|
|
(@MonedaIngresos = ''C'' and @MonedaDeudaActual = ''T'' and @NuevaDeuda = ''D'') OR
|
|
(@MonedaIngresos = ''C'' and @MonedaDeudaActual = ''T'' and @NuevaDeuda = ''C''))
|
|
BEGIN
|
|
SELECT @RiesgoCambiario = (@SumaCuotasCIC + (@SumaCuotasFSN * @i_tipo_cambio) + (@NuevaCuota * @i_tipo_cambio)) / @i_ingreso_neto_col
|
|
END
|
|
|
|
-- Para Ingreso en Dólares / Deudas en Colones / Nueva deuda Dólares:
|
|
-- Para Ingreso en Dólares / Deudas en Colones / Nueva deuda Colones:
|
|
-- Para Ingreso en Dólares / Deudas en Dólares / Nueva deuda Colones:
|
|
IF ((@MonedaIngresos = ''D'' and @MonedaDeudaActual = ''C'' and @NuevaDeuda = ''D'') OR
|
|
(@MonedaIngresos = ''D'' and @MonedaDeudaActual = ''C'' and @NuevaDeuda = ''C'') OR
|
|
(@MonedaIngresos = ''D'' and @MonedaDeudaActual = ''D'' and @NuevaDeuda = ''C''))
|
|
BEGIN
|
|
SELECT @RiesgoCambiario = (@SumaCuotasCIC + @SumaCuotasFSN + (@NuevaCuota * @i_tipo_cambio)) / (@i_ingreso_neto_dol* @i_tipo_cambio)
|
|
END
|
|
|
|
|
|
-- Para Ingreso en Dólares / Deudas Ambas Monedas / Nueva deuda Dólares:
|
|
-- Para Ingreso en Dólares / Deudas Ambas Monedas / Nueva deuda Colones:
|
|
-- Para Ingreso Ambas Monedas / Deudas en colones / Nueva deuda Colones:
|
|
-- Para Ingreso Ambas Monedas / Deudas en Dólares / Nueva deuda Colones:
|
|
-- Para Ingreso Ambas Monedas / Deudas en Dólares / Nueva deuda Dólares:
|
|
-- Para Ingreso Ambas Monedas / Deudas en Colones / Nueva deuda Dólares:
|
|
-- Para Ingreso Ambas Monedas / Deudas en Ambas Monedas / Nueva deuda Dólares:
|
|
-- Para Ingreso Ambas Monedas / Deudas en Ambas Monedas / Nueva deuda Colones:
|
|
IF ((@MonedaIngresos = ''D'' and @MonedaDeudaActual = ''T'' and @NuevaDeuda = ''D'') OR
|
|
(@MonedaIngresos = ''D'' and @MonedaDeudaActual = ''T'' and @NuevaDeuda = ''C'') OR
|
|
(@MonedaIngresos = ''T'' and @MonedaDeudaActual = ''D'' and @NuevaDeuda = ''C'') OR
|
|
(@MonedaIngresos = ''T'' and @MonedaDeudaActual = ''D'' and @NuevaDeuda = ''D'') OR
|
|
(@MonedaIngresos = ''T'' and @MonedaDeudaActual = ''C'' and @NuevaDeuda = ''D'') OR
|
|
(@MonedaIngresos = ''T'' and @MonedaDeudaActual = ''T'' and @NuevaDeuda = ''D'') OR
|
|
(@MonedaIngresos = ''T'' and @MonedaDeudaActual = ''T'' and @NuevaDeuda = ''C''))
|
|
BEGIN
|
|
SELECT @RiesgoCambiario = (@SumaCuotasCIC + (@SumaCuotasFSN * @i_tipo_cambio) + (@NuevaCuota * @i_tipo_cambio)) / ((@i_ingreso_neto_dol * @i_tipo_cambio) + @i_ingreso_neto_col)
|
|
END
|
|
|
|
|
|
-- Para Ingreso Ambas Monedas / Deudas en colones / Nueva deuda Colones:
|
|
IF (@MonedaIngresos = ''T'' and @MonedaDeudaActual = ''C'' and @NuevaDeuda = ''C'')
|
|
BEGIN
|
|
SELECT @RiesgoCambiario = (@SumaCuotasCIC + @SumaCuotasFSN + (@NuevaCuota * @i_tipo_cambio)) / ((@i_ingreso_neto_dol * @i_tipo_cambio) + @i_ingreso_neto_col)
|
|
END
|
|
|
|
select @PuntoCorte = PorcentajePuntoCorteCSD
|
|
from [BPMPRENDARIO].[Catalogos].[PuntoCorteCSD] where IdPuntoCorteCSD = 1
|
|
|
|
|
|
|
|
IF (@RiesgoCambiario <= @PuntoCorte)
|
|
BEGIN
|
|
SET @DesRiesgoCambiario = ''Deudor con Bajo Riesgo Cambiario''
|
|
SET @CodRiesgoCambiario = ''1''
|
|
END
|
|
ELSE IF (@RiesgoCambiario > @PuntoCorte)
|
|
BEGIN
|
|
SET @DesRiesgoCambiario = ''Deudor con Alto Riesgo Cambiario''
|
|
SET @CodRiesgoCambiario = ''2''
|
|
END
|
|
END
|
|
|
|
SELECT @o_res_code = 0,
|
|
@o_res_message = ''EXITOSO''
|
|
|
|
|
|
SELECT res_riesgo_cambiario = @DesRiesgoCambiario,
|
|
res_cod_riesgo_cambiario = @CodRiesgoCambiario,
|
|
res_code = @o_res_code,
|
|
res_message = @o_res_message,
|
|
res_err_procedure = @o_res_err_procedure,
|
|
res_err_line = @o_res_err_line
|
|
|
|
|
|
|
|
END
|
|
|
|
IF @i_opcion = 2
|
|
BEGIN
|
|
|
|
|
|
|
|
BEGIN -- SumaCuotasFSN
|
|
SELECT --@SumaCuotasCIC = CONVERT(FLOAT,ISNULL(CargaMensualCSD,''0'')),
|
|
@SumaCuotasFSN = (CONVERT(FLOAT,ISNULL(CuotasNoReguladasCSD,''0''))/@i_tipo_cambio)
|
|
FROM [BPMPRENDARIO].[Global].[InformacionIngresosCliente]
|
|
WHERE IdCliente = @i_idcliente
|
|
|
|
|
|
END
|
|
|
|
BEGIN -- SumaCuotasCIC
|
|
|
|
SELECT @SumaCuotasCIC_COLONES =ISNULL(SUM(CONVERT(FLOAT,ISNULL(REPLACE(so_cuota_esc_severo ,'','',''''),''0''))),0) FROM [BPMPRENDARIO].[Prendario].[SensibilizacionOperacion]
|
|
WHERE so_solicitud =@i_solicitud
|
|
AND so_co_moneda = 0
|
|
and so_id_operacion != ''Operacion del Tramite Actual''
|
|
|
|
SELECT
|
|
@SumaCuotasCIC_DOLARES =ISNULL(SUM(CONVERT(FLOAT,ISNULL(REPLACE(so_cuota_esc_severo ,'','',''''),''0''))),0) FROM [BPMPRENDARIO].[Prendario].[SensibilizacionOperacion]
|
|
WHERE so_solicitud =@i_solicitud
|
|
AND so_co_moneda = 1
|
|
and so_id_operacion != ''Operacion del Tramite Actual''
|
|
|
|
|
|
|
|
|
|
SET @SumaCuotasCIC = ((@SumaCuotasCIC_COLONES)/@i_tipo_cambio) + (@SumaCuotasCIC_DOLARES)
|
|
|
|
|
|
|
|
END
|
|
|
|
BEGIN -- Nueva Cuota
|
|
|
|
SELECT @NuevaCuota = so_cuota_esc_severo
|
|
FROM [BPMPRENDARIO].[Prendario].[SensibilizacionOperacion]
|
|
WHERE so_id_operacion = ''Operacion del Tramite Actual''
|
|
AND so_solicitud = @i_solicitud
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
Set @CSD = ((@SumaCuotasCIC + @SumaCuotasFSN + @NuevaCuota) / ((@i_ingreso_bruto_col/ @i_tipo_cambio) + @i_ingreso_bruto_dol))
|
|
|
|
--SELECT @CSD =((@SumaCuotasCIC + @SumaCuotasFSN + @NuevaCuota) / ((@i_ingreso_bruto_dol * @i_tipo_cambio) + @i_ingreso_bruto_col)) * 100
|
|
|
|
|
|
--select @CSD
|
|
|
|
SELECT @o_res_code = 0,
|
|
@o_res_message = ''EXITOSO''
|
|
|
|
|
|
SELECT CSD = @CSD,
|
|
res_code = @o_res_code,
|
|
res_message = @o_res_message,
|
|
res_err_procedure = @o_res_err_procedure,
|
|
res_err_line = @o_res_err_line
|
|
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
END TRY
|
|
|
|
BEGIN CATCH
|
|
SELECT @o_res_code = ERROR_NUMBER(),
|
|
@o_res_message = ERROR_MESSAGE(),
|
|
@o_res_err_procedure = ERROR_PROCEDURE(),
|
|
@o_res_err_line = ERROR_LINE()
|
|
END CATCH
|
|
|
|
|
|
|
|
|
|
|
|
'
|
|
END
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[usp_wf_sensibilizacion_deudas] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER OFF
|
|
GO
|
|
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[usp_wf_sensibilizacion_deudas]') AND type in (N'P', N'PC'))
|
|
BEGIN
|
|
EXEC dbo.sp_executesql @statement = N'
|
|
------------------------------------------------------------------------------
|
|
-- Ultimus LA
|
|
-- Nombre SP: usp_wf_sensibilizacion_deudas
|
|
-- Proceso Utiliza: PRESTAMO PRENDARIO
|
|
-- Creado Por: Byron Madrigal
|
|
-- Fecha Creación: 21/11/2016
|
|
------------------------------------------------------------------------------
|
|
-- Modif. Por:
|
|
-- Modif. Fecha :
|
|
-- Modif. Detalle:
|
|
------------------------------------------------------------------------------
|
|
|
|
|
|
/*
|
|
|
|
|
|
exec [usp_wf_sensibilizacion_deudas]
|
|
@i_opcion = 1,
|
|
@i_incidente = 226,
|
|
@i_idsolicitud = 268,
|
|
@i_idcliente = 306,
|
|
@i_identificacion = ''01-0790-0113'',
|
|
@i_co_tipoparticipante = 1,
|
|
@i_proceso = ''PrestamoPrendario'',
|
|
|
|
@i_ingreso_neto_col = 4677350,
|
|
@i_ingreso_neto_dol = 3268.49,
|
|
@i_tipo_cambio = 562.75,
|
|
@i_cuota = 1102.7118179391582,
|
|
@i_tasa = 8.71,
|
|
@i_tipo_tasa = ''V'',
|
|
@i_co_moneda = 1,
|
|
@i_plazo_meses = 96,
|
|
@i_monto = 73022.81,
|
|
@i_seguros = 81.09
|
|
|
|
|
|
|
|
*/
|
|
|
|
CREATE PROCEDURE [dbo].[usp_wf_sensibilizacion_deudas]
|
|
@i_opcion INT,
|
|
@i_incidente INT = 0,
|
|
@i_idsolicitud INT = 0,
|
|
@i_proceso VARCHAR(50) = '''',
|
|
@i_idcliente INT = 0,
|
|
@i_identificacion VARCHAR(30) = '''',
|
|
@i_co_tipoparticipante BIT = 1,
|
|
|
|
@i_ingreso_neto_col FLOAT = NULL,
|
|
@i_ingreso_neto_dol FLOAT = NULL,
|
|
@i_tipo_cambio FLOAT = NULL,
|
|
@i_cuota FLOAT = 0,
|
|
@i_tasa FLOAT = 0,
|
|
@i_tipo_tasa VARCHAR(10) = ''F'', --F=Fija, V=Variable
|
|
@i_co_moneda INT = 0, --0=Colones, 1=Dolares
|
|
@i_plazo_meses INT = 0,
|
|
@i_monto FLOAT = 0,
|
|
@i_seguros FLOAT = 0
|
|
|
|
AS
|
|
|
|
DECLARE @o_res_code INT,
|
|
@o_res_message NVARCHAR(MAX),
|
|
@o_res_err_procedure NVARCHAR(MAX),
|
|
@o_res_err_line INT,
|
|
@i_incidente_corte INT
|
|
|
|
|
|
IF @i_opcion = 1
|
|
BEGIN
|
|
|
|
BEGIN TRY
|
|
|
|
BEGIN TRAN T1
|
|
|
|
Set @i_incidente_corte = 227;
|
|
|
|
--ALR 09052017(Se cambia la forma de sensibilizacion dependeiendo de la fecha del incidente)
|
|
|
|
IF(@i_incidente >= @i_incidente_corte)
|
|
BEGIN
|
|
--INICIO DE SENSIBILIZACION DE INCIDENTES MAYORES AL 18-04-2017
|
|
|
|
SELECT @i_ingreso_neto_col = ISNULL(@i_ingreso_neto_col,0),
|
|
@i_ingreso_neto_dol = ISNULL(@i_ingreso_neto_dol,0),
|
|
@i_tipo_cambio = ISNULL(@i_tipo_cambio,1)
|
|
|
|
|
|
|
|
---Crea la estructura estandar para el temporal de situacion actual
|
|
CREATE TABLE #Temp_Situacion_Actual
|
|
(
|
|
[IdSituacionActual] [int] NOT NULL,
|
|
[IdSolicitud] [int] NULL,
|
|
[IdCliente] [int] NULL,
|
|
[Incidente] [int] NULL,
|
|
[Proceso] [nchar](48) NULL,
|
|
[Identificacion] [varchar](30) NULL,
|
|
[EsDeudor] [bit] NULL,
|
|
[Estado] [char](1) NULL,
|
|
[IdOperacion] [varchar](30) NULL,
|
|
[Moneda] [varchar](50) NULL,
|
|
[FecVencimiento] [varchar](15) NULL,
|
|
[TipoOperacion] [varchar](50) NULL,
|
|
[Condicion] [varchar](50) NULL,
|
|
[EstadoOperacion] [varchar](50) NULL,
|
|
[DiasAtraso] [int] NULL,
|
|
[EntidadAcreedora] [varchar](50) NULL,
|
|
[Saldo] [varchar](20) NULL,
|
|
[CuotasEquivalente] [varchar](20) NULL,
|
|
[MontoOriginal] [varchar](20) NULL,
|
|
[FecInicio] [varchar](10) NULL,
|
|
[MontoNoDesembolsado] [varchar](50) NULL,
|
|
[Cancela] [int] NULL,
|
|
[CuotaPrincipal] [decimal](18, 2) NULL,
|
|
[CuotaIntereses] [decimal](18, 2) NULL,
|
|
[TipoTasa] [varchar](50) NULL,
|
|
[TasaNominal] [decimal](18, 2) NULL,
|
|
[DTI_MiniEndeudamiento] [decimal](18, 2) NULL,
|
|
[CuotaCertificada] [varchar](20) NULL,
|
|
)
|
|
|
|
|
|
|
|
---Crea la estructura estandar para el temporal de situacion actual
|
|
CREATE TABLE #Temp_Sensibilizacion_Operacion
|
|
(
|
|
so_incidente int NOT NULL,
|
|
so_solicitud int NOT NULL,
|
|
so_proceso varchar(30) NOT NULL,
|
|
so_idcliente int NOT NULL,
|
|
so_identificacion varchar(30) NOT NULL,
|
|
so_esdeudor bit NOT NULL,
|
|
so_estado char(1) NOT NULL,
|
|
so_id_operacion varchar(50) NOT NULL,
|
|
so_refinancia bit NULL,
|
|
so_meses_plazo_restante float NULL,
|
|
so_producto varchar(20) NULL,
|
|
so_cuota_generada float NULL,
|
|
so_cuota_sin_seguro float NULL,
|
|
so_cuota_seguro float NULL,
|
|
---Cuota Estresada
|
|
so_cuota_esc_normal float NULL,
|
|
so_cuota_esc_leve float NULL,
|
|
so_cuota_esc_moderado float NULL,
|
|
so_cuota_esc_severo float NULL,
|
|
---Cuota MiniEndeudamiento
|
|
so_dti_esc_normal float NULL,
|
|
so_dti_esc_leve float NULL,
|
|
so_dti_esc_moderado float NULL,
|
|
so_dti_esc_severo float NULL,
|
|
so_co_moneda int NULL,
|
|
---Tipo Cambio Devaluacion
|
|
so_tip_camb_deval_esc_normal float NULL,
|
|
so_tip_camb_deval_esc_leve float NULL,
|
|
so_tip_camb_deval_esc_moderado float NULL,
|
|
so_tip_camb_deval_esc_servero float NULL,
|
|
---Tipo Cambio Revaluacion
|
|
so_tip_camb_reval_esc_normal float NULL,
|
|
so_tip_camb_reval_esc_leve float NULL,
|
|
so_tip_camb_reval_esc_moderado float NULL,
|
|
so_tip_camb_reval_esc_servero float NULL,
|
|
---Ingresos Colones
|
|
so_ingreso_col_esc_normal float NULL,
|
|
so_ingreso_col_esc_leve float NULL,
|
|
so_ingreso_col_esc_moderado float NULL,
|
|
so_ingreso_col_esc_severo float NULL,
|
|
---Ingresos Colones
|
|
so_ingreso_dol_esc_normal float NULL,
|
|
so_ingreso_dol_esc_leve float NULL,
|
|
so_ingreso_dol_esc_moderado float NULL,
|
|
so_ingreso_dol_esc_severo float NULL,
|
|
)
|
|
|
|
|
|
CREATE TABLE #Temp_Sensibilizacion_Resumen
|
|
(
|
|
[sr_incidente] [int] NOT NULL,
|
|
[sr_solicitud] [int] NOT NULL,
|
|
[sr_proceso] [varchar](30) NOT NULL,
|
|
[sr_idcliente] int NOT NULL,
|
|
[sr_identificacion] [varchar](30) NOT NULL,
|
|
[sr_cuota_esc_normal] [float] NULL,
|
|
[sr_cuota_esc_leve] [float] NULL,
|
|
[sr_cuota_esc_moderado] [float] NULL,
|
|
[sr_cuota_esc_severo] [float] NULL,
|
|
[sr_co_moneda] [int] NOT NULL,
|
|
[sr_endeuda_esc_normal] [float] NULL,
|
|
[sr_endeuda_esc_leve] [float] NULL,
|
|
[sr_endeuda_esc_moderado] [float] NULL,
|
|
[sr_endeuda_esc_severo] [float] NULL
|
|
)
|
|
|
|
---Obtiene la configuracion de los parametros de shock de Tipo de Cambio
|
|
SELECT [st_codigo],
|
|
[st_esc_normal],
|
|
[st_esc_leve],
|
|
[st_esc_moderado],
|
|
[st_esc_severo],
|
|
[st_cod_moneda],
|
|
[st_estado]
|
|
INTO #Temp_Parametrizacion_Shock_Tipo_Cambio
|
|
FROM BPMDATA.Parametros.WFShockTipoCambio
|
|
WHERE st_estado = 1
|
|
|
|
|
|
IF(NOT EXISTS(SELECT TOP 1 st_codigo FROM #Temp_Parametrizacion_Shock_Tipo_Cambio))
|
|
THROW 51000, ''No existe parametrización vigente para el shock de tipo de cambio '', 1;
|
|
|
|
IF(NOT EXISTS(SELECT TOP 1 st_codigo FROM #Temp_Parametrizacion_Shock_Tipo_Cambio WHERE st_cod_moneda = 0))
|
|
THROW 51001, ''No existe parametrización vigente para el shock de tipo de cambio para la moneda colones'', 1;
|
|
|
|
IF(NOT EXISTS(SELECT TOP 1 st_codigo FROM #Temp_Parametrizacion_Shock_Tipo_Cambio WHERE st_cod_moneda = 1))
|
|
THROW 51002, ''No existe parametrización vigente para el shock de tipo de cambio para la moneda dolares'', 1;
|
|
|
|
|
|
|
|
---Obtiene la configuracion de los parametros de shock de tasa de interes
|
|
SELECT [st_codigo],
|
|
[st_esc_normal],
|
|
[st_esc_leve],
|
|
[st_esc_moderado],
|
|
[st_esc_severo],
|
|
[st_cod_moneda],
|
|
[st_estado]
|
|
INTO #Temp_Parametrizacion_Shock_Tasa_Interes
|
|
FROM BPMDATA.Parametros.WFShockTasaInteres
|
|
WHERE st_estado = 1
|
|
|
|
IF(NOT EXISTS(SELECT TOP 1 st_codigo FROM #Temp_Parametrizacion_Shock_Tasa_Interes))
|
|
THROW 51003, ''No existe parametrización para el shock de tasa de interes '', 1;
|
|
|
|
IF(NOT EXISTS(SELECT TOP 1 st_codigo FROM #Temp_Parametrizacion_Shock_Tasa_Interes WHERE st_cod_moneda = 0))
|
|
THROW 51004, ''No existe parametrización para el shock de tasa de interes para la moneda colones '', 1;
|
|
|
|
IF(NOT EXISTS(SELECT TOP 1 st_codigo FROM #Temp_Parametrizacion_Shock_Tasa_Interes WHERE st_cod_moneda = 1))
|
|
THROW 51005, ''No existe parametrización para el shock de tasa de interes para la moneda dolares'', 1;
|
|
|
|
|
|
|
|
---Obtiene la Situacion Actual del Cliente
|
|
IF(CHARINDEX(''PRENDARIO'', @i_proceso, 0) > 0)
|
|
INSERT INTO #Temp_Situacion_Actual
|
|
SELECT *
|
|
FROM BPMPRENDARIO.Prendario.SituacionActual
|
|
WHERE IdSolicitud = @i_idsolicitud
|
|
AND Proceso = @i_proceso
|
|
AND IdCliente = @i_idcliente
|
|
|
|
|
|
|
|
|
|
INSERT INTO #Temp_Situacion_Actual( [IdSituacionActual],
|
|
[IdSolicitud],
|
|
[IdCliente],
|
|
[Incidente],
|
|
[Proceso],
|
|
[Identificacion],
|
|
[EsDeudor],
|
|
[Estado],
|
|
[IdOperacion],
|
|
[Moneda],
|
|
[FecVencimiento],
|
|
[TipoOperacion],
|
|
[Condicion],
|
|
[EstadoOperacion],
|
|
[DiasAtraso],
|
|
[EntidadAcreedora],
|
|
[Saldo],
|
|
[CuotasEquivalente],
|
|
[MontoOriginal],
|
|
[FecInicio],
|
|
[MontoNoDesembolsado],
|
|
[Cancela],
|
|
[CuotaPrincipal],
|
|
[CuotaIntereses],
|
|
[TipoTasa],
|
|
[TasaNominal],
|
|
[DTI_MiniEndeudamiento]
|
|
)
|
|
SELECT [IdSituacionActual] = ISNULL((SELECT MAX([IdSituacionActual])+1 FROM BPMPRENDARIO.Prendario.SituacionActual ),1),
|
|
[IdSolicitud] = @i_idsolicitud,
|
|
[IdCliente] = @i_idcliente,
|
|
[Incidente] = @i_incidente,
|
|
[Proceso] = @i_proceso,
|
|
[Identificacion] = @i_identificacion,
|
|
[EsDeudor] = 1,
|
|
[Estado] = ''C'',
|
|
[IdOperacion] = ''Operacion del Tramite Actual'',
|
|
[Moneda] = @i_co_moneda,
|
|
[FecVencimiento] = CONVERT(VARCHAR,DATEADD(DAY, (@i_plazo_meses * 30), GETDATE()),103),
|
|
[TipoOperacion] = CASE WHEN CHARINDEX(''PRENDARIO'', @i_proceso, 0) > 0 THEN ''1''
|
|
WHEN CHARINDEX(''TARJETA'', @i_proceso, 0) > 0 THEN ''3''
|
|
END,
|
|
[Condicion] = ''DEUDOR'',
|
|
[EstadoOperacion] = ''VIGENTE'',
|
|
[DiasAtraso] = 0,
|
|
[EntidadAcreedora] = ''Banco Davivienda (Costa Rica)'',
|
|
[Saldo] = @i_monto,
|
|
[CuotasEquivalente] = 0,
|
|
[MontoOriginal] = @i_monto,
|
|
[FecInicio] = CONVERT(VARCHAR,GETDATE(),103),
|
|
[MontoNoDesembolsado] = @i_monto,
|
|
|
|
[Cancela] = 0,
|
|
[CuotaPrincipal] = 0,
|
|
[CuotaIntereses] = 0,
|
|
[TipoTasa] = @i_tipo_tasa,
|
|
[TasaNominal] = @i_tasa,
|
|
[DTI_MiniEndeudamiento] = 0
|
|
|
|
|
|
|
|
---Obtiene el código del tipo de operacion
|
|
UPDATE #Temp_Situacion_Actual
|
|
SET TipoOperacion = RTRIM(SUBSTRING(TipoOperacion,0, CHARINDEX(''-'',TipoOperacion)))
|
|
|
|
|
|
---Carga la temporal de sensibilizacion operacion con la informacion base de la Situacion Actual
|
|
INSERT INTO #Temp_Sensibilizacion_Operacion(so_incidente,
|
|
so_solicitud,
|
|
so_proceso,
|
|
so_idcliente,
|
|
so_identificacion,
|
|
so_esdeudor,
|
|
so_estado,
|
|
so_id_operacion,
|
|
so_refinancia,
|
|
so_meses_plazo_restante,
|
|
so_co_moneda)
|
|
SELECT Incidente,
|
|
IdSolicitud,
|
|
Proceso,
|
|
IdCliente,
|
|
Identificacion,
|
|
EsDeudor,
|
|
Estado,
|
|
IdOperacion,
|
|
Refinancia = CASE Cancela
|
|
WHEN 1 THEN 1
|
|
ELSE 0
|
|
END,
|
|
MesesPlazoRestante = CASE
|
|
WHEN TipoTasa IN (''F'') OR TipoOperacion IN (3,6) THEN 0
|
|
ELSE DATEDIFF(DAY, CONVERT(DATETIME, FecInicio, 103), CONVERT(DATETIME, FecVencimiento, 103))
|
|
END,
|
|
Moneda = CASE Moneda
|
|
WHEN ''E - DIVISA EXTRANJERA'' THEN 1
|
|
WHEN ''N - COLONES O UNIDADES DE DESARROLLO'' THEN 0
|
|
WHEN 1 THEN 1
|
|
ELSE 0
|
|
END
|
|
FROM #Temp_Situacion_Actual
|
|
|
|
|
|
|
|
---Calcula los escenarios de devaluacion del tipo de cambio
|
|
UPDATE #Temp_Sensibilizacion_Operacion
|
|
SET so_tip_camb_deval_esc_normal = @i_tipo_cambio * ((st_esc_normal/100)+1),
|
|
so_tip_camb_deval_esc_leve = @i_tipo_cambio * ((st_esc_leve/100)+1),
|
|
so_tip_camb_deval_esc_moderado = @i_tipo_cambio * ((st_esc_moderado/100)+1),
|
|
so_tip_camb_deval_esc_servero = @i_tipo_cambio * ((st_esc_severo/100)+1)
|
|
FROM #Temp_Parametrizacion_Shock_Tipo_Cambio
|
|
WHERE st_cod_moneda = 0
|
|
|
|
|
|
---Calcula los escenarios de revaluacion del tipo de cambio
|
|
UPDATE #Temp_Sensibilizacion_Operacion
|
|
SET so_tip_camb_reval_esc_normal = @i_tipo_cambio * ((st_esc_normal/100)+1),
|
|
so_tip_camb_reval_esc_leve = @i_tipo_cambio * ((st_esc_leve/100)+1),
|
|
so_tip_camb_reval_esc_moderado = @i_tipo_cambio * ((st_esc_moderado/100)+1),
|
|
so_tip_camb_reval_esc_servero = @i_tipo_cambio * ((st_esc_severo/100)+1)
|
|
FROM #Temp_Parametrizacion_Shock_Tipo_Cambio
|
|
WHERE st_cod_moneda = 1
|
|
|
|
|
|
---Calcula los escenarios los ingresos con tipo de cambio revaluado o devaluado segun la moneda
|
|
UPDATE #Temp_Sensibilizacion_Operacion
|
|
SET so_ingreso_col_esc_normal = @i_ingreso_neto_col + (@i_ingreso_neto_dol * so_tip_camb_deval_esc_normal),
|
|
so_ingreso_col_esc_leve = @i_ingreso_neto_col + (@i_ingreso_neto_dol * so_tip_camb_deval_esc_leve),
|
|
so_ingreso_col_esc_moderado = @i_ingreso_neto_col + (@i_ingreso_neto_dol * so_tip_camb_deval_esc_moderado),
|
|
so_ingreso_col_esc_severo = @i_ingreso_neto_col + (@i_ingreso_neto_dol * so_tip_camb_deval_esc_servero),
|
|
|
|
so_ingreso_dol_esc_normal = @i_ingreso_neto_dol + (@i_ingreso_neto_col / so_tip_camb_reval_esc_normal),
|
|
so_ingreso_dol_esc_leve = @i_ingreso_neto_dol + (@i_ingreso_neto_col / so_tip_camb_reval_esc_leve),
|
|
so_ingreso_dol_esc_moderado = @i_ingreso_neto_dol + (@i_ingreso_neto_col / so_tip_camb_reval_esc_moderado),
|
|
so_ingreso_dol_esc_severo = @i_ingreso_neto_dol + (@i_ingreso_neto_col / so_tip_camb_reval_esc_servero)
|
|
|
|
FROM #Temp_Parametrizacion_Shock_Tipo_Cambio
|
|
|
|
|
|
---Determina cual es el producto asociado
|
|
UPDATE #Temp_Sensibilizacion_Operacion
|
|
SET so_producto = CASE WHEN (so_meses_plazo_restante/30) > 96 THEN ''HVI''
|
|
WHEN (so_meses_plazo_restante/30) > 60 AND (so_meses_plazo_restante/30) < 84 AND CONVERT(FLOAT,B.Saldo) > 15000000 THEN ''AUTO''
|
|
WHEN (so_meses_plazo_restante/30) > 1 AND (so_meses_plazo_restante/30) < 96 AND CONVERT(FLOAT,B.Saldo) < 15000000 THEN ''CP''
|
|
ELSE NULL
|
|
END
|
|
FROM #Temp_Sensibilizacion_Operacion A
|
|
INNER JOIN #Temp_Situacion_Actual B
|
|
ON A.so_incidente = B.Incidente
|
|
AND A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_identificacion = B.Identificacion
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
|
|
|
|
|
|
-------------------Determina la cuota generada-------------------
|
|
|
|
--Si la Cuota Certidficada es cero o nulo
|
|
UPDATE A
|
|
SET A.so_cuota_generada = ROUND([BPMDATA].[dbo].[F_getCuotaDTI](ISNULL(B.Condicion, ''''),
|
|
ISNULL(B.TasaNominal,0),
|
|
0,
|
|
CONVERT(FLOAT,ISNULL(A.so_meses_plazo_restante,0)) /30,
|
|
ISNULL(B.Saldo,0),
|
|
B.TipoOperacion,
|
|
0),2)
|
|
FROM #Temp_Sensibilizacion_Operacion A
|
|
INNER JOIN #Temp_Situacion_Actual B
|
|
ON A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_idcliente = B.IdCliente
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
WHERE B.CuotaCertificada IS NULL
|
|
OR B.CuotaCertificada = ''0''
|
|
|
|
|
|
--Si la Cuota Certidficada no es cero ni nulo
|
|
UPDATE A
|
|
SET A.so_cuota_generada = ROUND(CONVERT(FLOAT,B.CuotaCertificada),2)
|
|
FROM #Temp_Sensibilizacion_Operacion A
|
|
INNER JOIN #Temp_Situacion_Actual B
|
|
ON A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_idcliente = B.IdCliente
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
WHERE B.CuotaCertificada IS NOT NULL
|
|
AND B.CuotaCertificada != ''0''
|
|
|
|
|
|
-------------------Calcula la cuota sin seguro y la cuota del seguro-------------------
|
|
|
|
--Si la Cuota Certidficada es cero o nulo
|
|
UPDATE A
|
|
SET A.so_cuota_sin_seguro = A.so_cuota_generada,
|
|
A.so_cuota_seguro = CASE A.so_producto
|
|
WHEN ''HVI''THEN ROUND((A.so_cuota_generada * 0.1),2)
|
|
WHEN ''AUTO''THEN ROUND((A.so_cuota_generada * 0.35),2)
|
|
ELSE 0
|
|
END
|
|
FROM #Temp_Sensibilizacion_Operacion A
|
|
INNER JOIN #Temp_Situacion_Actual B
|
|
ON A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_idcliente = B.IdCliente
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
WHERE A.so_id_operacion != ''Operacion del Tramite Actual''
|
|
AND (B.CuotaCertificada IS NULL
|
|
OR B.CuotaCertificada = ''0'')
|
|
|
|
|
|
--Si la Cuota Certidficada NO es cero ni es nulo
|
|
UPDATE A
|
|
SET A.so_cuota_sin_seguro = A.so_cuota_generada,
|
|
A.so_cuota_seguro = 0
|
|
FROM #Temp_Sensibilizacion_Operacion A
|
|
INNER JOIN #Temp_Situacion_Actual B
|
|
ON A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_idcliente = B.IdCliente
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
WHERE A.so_id_operacion != ''Operacion del Tramite Actual''
|
|
AND B.CuotaCertificada IS NOT NULL
|
|
AND B.CuotaCertificada != ''0''
|
|
|
|
--Si es la operacion del Tramite actual
|
|
UPDATE #Temp_Sensibilizacion_Operacion
|
|
SET so_cuota_sin_seguro = so_cuota_generada,
|
|
so_cuota_seguro = ISNULL(@i_seguros,0)
|
|
WHERE so_id_operacion = ''Operacion del Tramite Actual''
|
|
|
|
|
|
-------------------Calcula las cuotas según el escenario de estres-------------------
|
|
|
|
--Si la Cuota Certidficada es cero o nulo
|
|
UPDATE A
|
|
SET A.so_cuota_esc_normal = (A.so_cuota_sin_seguro + A.so_cuota_seguro),
|
|
|
|
A.so_cuota_esc_leve = CASE
|
|
WHEN B.TipoTasa IN (''V'',''FV'', ''VF'')THEN ROUND(([BPMDATA].[dbo].[F_getCuotaDTI](ISNULL(B.Condicion, ''''), ISNULL(B.TasaNominal,0), ISNULL(C.st_esc_leve,0), CONVERT(FLOAT,ISNULL(A.so_meses_plazo_restante,0)) /30, ISNULL(B.Saldo,0), B.TipoOperacion, 1) + A.so_cuota_seguro),2)
|
|
WHEN B.TipoTasa IN (''F'') THEN (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
ELSE (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
END,
|
|
|
|
A.so_cuota_esc_moderado = CASE
|
|
WHEN B.TipoTasa IN (''V'',''FV'', ''VF'')THEN ROUND(([BPMDATA].[dbo].[F_getCuotaDTI](ISNULL(B.Condicion, ''''),ISNULL(B.TasaNominal,0), ISNULL(C.st_esc_moderado,0), CONVERT(FLOAT,ISNULL(A.so_meses_plazo_restante,0)) /30, ISNULL(B.Saldo,0), B.TipoOperacion, 2) + A.so_cuota_seguro),2)
|
|
WHEN B.TipoTasa IN (''F'') THEN (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
ELSE (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
END,
|
|
|
|
A.so_cuota_esc_severo = CASE
|
|
WHEN B.TipoTasa IN (''V'',''FV'', ''VF'')THEN ROUND(([BPMDATA].[dbo].[F_getCuotaDTI](ISNULL(B.Condicion, ''''),ISNULL(B.TasaNominal,0), ISNULL(C.st_esc_severo,0), CONVERT(FLOAT,ISNULL(A.so_meses_plazo_restante,0)) /30, ISNULL(B.Saldo,0), B.TipoOperacion, 3) + A.so_cuota_seguro),2)
|
|
WHEN B.TipoTasa IN (''F'') THEN (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
ELSE (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
END
|
|
|
|
FROM #Temp_Sensibilizacion_Operacion A
|
|
INNER JOIN #Temp_Situacion_Actual B
|
|
ON A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_idcliente = B.IdCliente
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
INNER JOIN #Temp_Parametrizacion_Shock_Tasa_Interes C
|
|
ON (A.so_co_moneda = C.st_cod_moneda)
|
|
WHERE B.CuotaCertificada IS NULL
|
|
OR B.CuotaCertificada = ''0''
|
|
|
|
|
|
--Si la Cuota Certidficada NO es cero ni es nulo
|
|
UPDATE A
|
|
SET A.so_cuota_esc_normal = (A.so_cuota_sin_seguro + A.so_cuota_seguro),
|
|
A.so_cuota_esc_leve = (A.so_cuota_sin_seguro + A.so_cuota_seguro),
|
|
A.so_cuota_esc_moderado = (A.so_cuota_sin_seguro + A.so_cuota_seguro),
|
|
A.so_cuota_esc_severo = (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
FROM #Temp_Sensibilizacion_Operacion A
|
|
INNER JOIN #Temp_Situacion_Actual B
|
|
ON A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_idcliente = B.IdCliente
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
INNER JOIN #Temp_Parametrizacion_Shock_Tasa_Interes C
|
|
ON (A.so_co_moneda = C.st_cod_moneda)
|
|
WHERE B.CuotaCertificada IS NOT NULL
|
|
AND B.CuotaCertificada != ''0''
|
|
|
|
|
|
-------------------Calcula los mini-endeudamientos según el escenario de estres-------------------
|
|
UPDATE #Temp_Sensibilizacion_Operacion
|
|
SET so_dti_esc_normal = CASE so_co_moneda
|
|
WHEN 0 THEN (so_cuota_esc_normal/ so_ingreso_col_esc_normal)
|
|
WHEN 1 THEN (so_cuota_esc_normal/ so_ingreso_dol_esc_normal)
|
|
END,
|
|
so_dti_esc_leve = CASE so_co_moneda
|
|
WHEN 0 THEN (so_cuota_esc_leve/ so_ingreso_col_esc_leve)
|
|
WHEN 1 THEN (so_cuota_esc_leve/ so_ingreso_dol_esc_leve)
|
|
END,
|
|
so_dti_esc_moderado = CASE so_co_moneda
|
|
WHEN 0 THEN (so_cuota_esc_moderado/ so_ingreso_col_esc_moderado)
|
|
WHEN 1 THEN (so_cuota_esc_moderado/ so_ingreso_dol_esc_moderado)
|
|
END,
|
|
so_dti_esc_severo = CASE so_co_moneda
|
|
WHEN 0 THEN (so_cuota_esc_severo/ so_ingreso_col_esc_severo)
|
|
WHEN 1 THEN (so_cuota_esc_severo/ so_ingreso_dol_esc_severo)
|
|
END
|
|
|
|
|
|
|
|
INSERT INTO #Temp_Sensibilizacion_Resumen
|
|
SELECT so_incidente,
|
|
so_solicitud,
|
|
so_proceso,
|
|
so_idcliente,
|
|
so_identificacion,
|
|
SUM(so_cuota_esc_normal),
|
|
SUM(so_cuota_esc_leve),
|
|
SUM(so_cuota_esc_moderado),
|
|
SUM(so_cuota_esc_severo),
|
|
so_co_moneda,
|
|
0,
|
|
0,
|
|
0,
|
|
0
|
|
FROM #Temp_Sensibilizacion_Operacion
|
|
GROUP BY so_incidente,
|
|
so_solicitud,
|
|
so_proceso,
|
|
so_idcliente,
|
|
so_identificacion,
|
|
so_co_moneda
|
|
|
|
|
|
|
|
|
|
UPDATE #Temp_Sensibilizacion_Resumen
|
|
SET sr_endeuda_esc_normal = A.sr_endeuda_esc_normal,
|
|
sr_endeuda_esc_leve = A.sr_endeuda_esc_leve,
|
|
sr_endeuda_esc_moderado = A.sr_endeuda_esc_moderado,
|
|
sr_endeuda_esc_severo = A.sr_endeuda_esc_severo
|
|
FROM (SELECT sr_endeuda_esc_normal = SUM(so_dti_esc_normal),
|
|
sr_endeuda_esc_leve = SUM(so_dti_esc_leve),
|
|
sr_endeuda_esc_moderado = SUM(so_dti_esc_moderado),
|
|
sr_endeuda_esc_severo = SUM(so_dti_esc_severo)
|
|
FROM #Temp_Sensibilizacion_Operacion)A
|
|
|
|
|
|
|
|
IF(CHARINDEX(''PRENDARIO'', @i_proceso, 0) > 0)
|
|
BEGIN
|
|
DELETE BPMPRENDARIO.Prendario.SensibilizacionOperacion
|
|
WHERE
|
|
--so_incidente = @i_incidente
|
|
so_solicitud = @i_idsolicitud
|
|
AND so_proceso = @i_proceso
|
|
AND so_idcliente = @i_idcliente
|
|
--AND so_identificacion = @i_identificacion
|
|
|
|
DELETE BPMPRENDARIO.Prendario.SensibilizacionResumen
|
|
WHERE --sr_incidente = @i_incidente
|
|
sr_solicitud = @i_idsolicitud
|
|
AND sr_proceso = @i_proceso
|
|
AND sr_idcliente = @i_idcliente
|
|
--AND sr_identificacion = @i_identificacion
|
|
|
|
|
|
INSERT INTO BPMPRENDARIO.Prendario.SensibilizacionOperacion
|
|
SELECT * FROM #Temp_Sensibilizacion_Operacion
|
|
|
|
|
|
INSERT INTO BPMPRENDARIO.Prendario.SensibilizacionResumen
|
|
SELECT * FROM #Temp_Sensibilizacion_Resumen
|
|
|
|
END
|
|
|
|
|
|
SELECT @o_res_code = 0,
|
|
@o_res_message = ''EXITOSO''
|
|
|
|
--FIN DE SENSIBILIZACION DE INCIDENTES MAYORES AL 18-04-2017
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
|
|
--INICIO DE SENSIBILIZACION DE INCIDENTES MENORES AL 18-04-2017
|
|
|
|
SELECT @i_ingreso_neto_col = ISNULL(@i_ingreso_neto_col,0),
|
|
@i_ingreso_neto_dol = ISNULL(@i_ingreso_neto_dol,0),
|
|
@i_tipo_cambio = ISNULL(@i_tipo_cambio,1)
|
|
|
|
|
|
|
|
---Crea la estructura estandar para el temporal de situacion actual
|
|
CREATE TABLE #Temp_Situacion_Actual1
|
|
(
|
|
[IdSituacionActual] [int] NOT NULL,
|
|
[IdSolicitud] [int] NULL,
|
|
[IdCliente] [int] NULL,
|
|
[Incidente] [int] NULL,
|
|
[Proceso] [nchar](48) NULL,
|
|
[Identificacion] [varchar](30) NULL,
|
|
[EsDeudor] [bit] NULL,
|
|
[Estado] [char](1) NULL,
|
|
[IdOperacion] [varchar](30) NULL,
|
|
[Moneda] [varchar](50) NULL,
|
|
[FecVencimiento] [varchar](15) NULL,
|
|
[TipoOperacion] [varchar](50) NULL,
|
|
[Condicion] [varchar](50) NULL,
|
|
[EstadoOperacion] [varchar](50) NULL,
|
|
[DiasAtraso] [int] NULL,
|
|
[EntidadAcreedora] [varchar](50) NULL,
|
|
[Saldo] FLOAT NULL,
|
|
[CuotasEquivalente] FLOAT NULL,
|
|
[MontoOriginal] [varchar](20) NULL,
|
|
[FecInicio] [varchar](10) NULL,
|
|
[MontoNoDesembolsado] FLOAT NULL,
|
|
[Cancela] [int] NULL,
|
|
[CuotaPrincipal] [decimal](18, 2) NULL,
|
|
[CuotaIntereses] [decimal](18, 2) NULL,
|
|
[TipoTasa] [varchar](50) NULL,
|
|
[TasaNominal] [decimal](18, 2) NULL,
|
|
[DTI_MiniEndeudamiento] [decimal](18, 2) NULL,
|
|
[CuotaCertificada] [varchar](20) NULL,
|
|
)
|
|
|
|
|
|
|
|
---Crea la estructura estandar para el temporal de situacion actual
|
|
CREATE TABLE #Temp_Sensibilizacion_Operacion1
|
|
(
|
|
so_incidente int NOT NULL,
|
|
so_solicitud int NOT NULL,
|
|
so_proceso varchar(30) NOT NULL,
|
|
so_idcliente int NOT NULL,
|
|
so_identificacion varchar(30) NOT NULL,
|
|
so_esdeudor bit NOT NULL,
|
|
so_estado char(1) NOT NULL,
|
|
so_id_operacion varchar(50) NOT NULL,
|
|
so_refinancia bit NULL,
|
|
so_meses_plazo_restante float NULL,
|
|
so_producto varchar(20) NULL,
|
|
so_cuota_generada float NULL,
|
|
so_cuota_sin_seguro float NULL,
|
|
so_cuota_seguro float NULL,
|
|
---Cuota Estresada
|
|
so_cuota_esc_normal float NULL,
|
|
so_cuota_esc_leve float NULL,
|
|
so_cuota_esc_moderado float NULL,
|
|
so_cuota_esc_severo float NULL,
|
|
---Cuota MiniEndeudamiento
|
|
so_dti_esc_normal float NULL,
|
|
so_dti_esc_leve float NULL,
|
|
so_dti_esc_moderado float NULL,
|
|
so_dti_esc_severo float NULL,
|
|
so_co_moneda int NULL,
|
|
---Tipo Cambio Devaluacion
|
|
so_tip_camb_deval_esc_normal float NULL,
|
|
so_tip_camb_deval_esc_leve float NULL,
|
|
so_tip_camb_deval_esc_moderado float NULL,
|
|
so_tip_camb_deval_esc_servero float NULL,
|
|
---Tipo Cambio Revaluacion
|
|
so_tip_camb_reval_esc_normal float NULL,
|
|
so_tip_camb_reval_esc_leve float NULL,
|
|
so_tip_camb_reval_esc_moderado float NULL,
|
|
so_tip_camb_reval_esc_servero float NULL,
|
|
---Ingresos Colones
|
|
so_ingreso_col_esc_normal float NULL,
|
|
so_ingreso_col_esc_leve float NULL,
|
|
so_ingreso_col_esc_moderado float NULL,
|
|
so_ingreso_col_esc_severo float NULL,
|
|
---Ingresos Colones
|
|
so_ingreso_dol_esc_normal float NULL,
|
|
so_ingreso_dol_esc_leve float NULL,
|
|
so_ingreso_dol_esc_moderado float NULL,
|
|
so_ingreso_dol_esc_severo float NULL,
|
|
)
|
|
|
|
|
|
CREATE TABLE #Temp_Sensibilizacion_Resumen1
|
|
(
|
|
[sr_incidente] [int] NOT NULL,
|
|
[sr_solicitud] [int] NOT NULL,
|
|
[sr_proceso] [varchar](30) NOT NULL,
|
|
[sr_idcliente] int NOT NULL,
|
|
[sr_identificacion] [varchar](30) NOT NULL,
|
|
[sr_cuota_esc_normal] [float] NULL,
|
|
[sr_cuota_esc_leve] [float] NULL,
|
|
[sr_cuota_esc_moderado] [float] NULL,
|
|
[sr_cuota_esc_severo] [float] NULL,
|
|
[sr_co_moneda] [int] NOT NULL,
|
|
[sr_endeuda_esc_normal] [float] NULL,
|
|
[sr_endeuda_esc_leve] [float] NULL,
|
|
[sr_endeuda_esc_moderado] [float] NULL,
|
|
[sr_endeuda_esc_severo] [float] NULL
|
|
)
|
|
|
|
---Obtiene la configuracion de los parametros de shock de Tipo de Cambio
|
|
SELECT [st_codigo],
|
|
[st_esc_normal],
|
|
[st_esc_leve],
|
|
[st_esc_moderado],
|
|
[st_esc_severo],
|
|
[st_cod_moneda],
|
|
[st_estado]
|
|
INTO #Temp_Parametrizacion_Shock_Tipo_Cambio1
|
|
FROM BPMDATA.Parametros.WFShockTipoCambio
|
|
WHERE st_estado = 1
|
|
|
|
|
|
IF(NOT EXISTS(SELECT TOP 1 st_codigo FROM #Temp_Parametrizacion_Shock_Tipo_Cambio1))
|
|
THROW 51000, ''No existe parametrización vigente para el shock de tipo de cambio '', 1;
|
|
|
|
IF(NOT EXISTS(SELECT TOP 1 st_codigo FROM #Temp_Parametrizacion_Shock_Tipo_Cambio1 WHERE st_cod_moneda = 0))
|
|
THROW 51001, ''No existe parametrización vigente para el shock de tipo de cambio para la moneda colones'', 1;
|
|
|
|
IF(NOT EXISTS(SELECT TOP 1 st_codigo FROM #Temp_Parametrizacion_Shock_Tipo_Cambio1 WHERE st_cod_moneda = 1))
|
|
THROW 51002, ''No existe parametrización vigente para el shock de tipo de cambio para la moneda dolares'', 1;
|
|
|
|
|
|
|
|
---Obtiene la configuracion de los parametros de shock de tasa de interes
|
|
SELECT [st_codigo],
|
|
[st_esc_normal],
|
|
[st_esc_leve],
|
|
[st_esc_moderado],
|
|
[st_esc_severo],
|
|
[st_cod_moneda],
|
|
[st_estado]
|
|
INTO #Temp_Parametrizacion_Shock_Tasa_Interes1
|
|
FROM BPMDATA.Parametros.WFShockTasaInteres
|
|
WHERE st_estado = 1
|
|
|
|
IF(NOT EXISTS(SELECT TOP 1 st_codigo FROM #Temp_Parametrizacion_Shock_Tasa_Interes1))
|
|
THROW 51003, ''No existe parametrización para el shock de tasa de interes '', 1;
|
|
|
|
IF(NOT EXISTS(SELECT TOP 1 st_codigo FROM #Temp_Parametrizacion_Shock_Tasa_Interes1 WHERE st_cod_moneda = 0))
|
|
THROW 51004, ''No existe parametrización para el shock de tasa de interes para la moneda colones '', 1;
|
|
|
|
IF(NOT EXISTS(SELECT TOP 1 st_codigo FROM #Temp_Parametrizacion_Shock_Tasa_Interes1 WHERE st_cod_moneda = 1))
|
|
THROW 51005, ''No existe parametrización para el shock de tasa de interes para la moneda dolares'', 1;
|
|
|
|
|
|
|
|
---Obtiene la Situacion Actual del Cliente
|
|
IF(CHARINDEX(''PRENDARIO'', @i_proceso, 0) > 0)
|
|
INSERT INTO #Temp_Situacion_Actual1( [IdSituacionActual],
|
|
[IdSolicitud],
|
|
[IdCliente],
|
|
[Incidente],
|
|
[Proceso],
|
|
[Identificacion],
|
|
[EsDeudor],
|
|
[Estado],
|
|
[IdOperacion],
|
|
[Moneda],
|
|
[FecVencimiento],
|
|
[TipoOperacion],
|
|
[Condicion],
|
|
[EstadoOperacion],
|
|
[DiasAtraso],
|
|
[EntidadAcreedora],
|
|
[Saldo],
|
|
[CuotasEquivalente],
|
|
[MontoOriginal],
|
|
[FecInicio],
|
|
[MontoNoDesembolsado],
|
|
[Cancela],
|
|
[CuotaPrincipal],
|
|
[CuotaIntereses],
|
|
[TipoTasa],
|
|
[TasaNominal],
|
|
[DTI_MiniEndeudamiento],
|
|
[CuotaCertificada]
|
|
)
|
|
SELECT [IdSituacionActual],
|
|
[IdSolicitud],
|
|
[IdCliente],
|
|
[Incidente],
|
|
[Proceso],
|
|
[Identificacion],
|
|
[EsDeudor],
|
|
[Estado],
|
|
[IdOperacion],
|
|
[Moneda],
|
|
[FecVencimiento],
|
|
[TipoOperacion],
|
|
[Condicion],
|
|
[EstadoOperacion],
|
|
[DiasAtraso],
|
|
[EntidadAcreedora],
|
|
CASE [Moneda]
|
|
WHEN ''E - DIVISA EXTRANJERA'' THEN (convert(float,[Saldo]) /@i_tipo_cambio)
|
|
WHEN ''N - COLONES O UNIDADES DE DESARROLLO'' THEN convert(float,[Saldo])
|
|
ELSE convert(float,[Saldo])
|
|
END,
|
|
CASE [Moneda]
|
|
WHEN ''E - DIVISA EXTRANJERA'' THEN (convert(float,[CuotasEquivalente])/@i_tipo_cambio)
|
|
WHEN ''N - COLONES O UNIDADES DE DESARROLLO'' THEN convert(float,[CuotasEquivalente])
|
|
ELSE convert(float,[CuotasEquivalente])
|
|
END,
|
|
[MontoOriginal],
|
|
[FecInicio],
|
|
CASE [Moneda]
|
|
WHEN ''E - DIVISA EXTRANJERA'' THEN (convert(float,[MontoNoDesembolsado])/@i_tipo_cambio)
|
|
WHEN ''N - COLONES O UNIDADES DE DESARROLLO'' THEN convert(float,[MontoNoDesembolsado])
|
|
ELSE convert(float,[MontoNoDesembolsado])
|
|
END,
|
|
[Cancela],
|
|
[CuotaPrincipal],
|
|
[CuotaIntereses],
|
|
[TipoTasa],
|
|
[TasaNominal],
|
|
[DTI_MiniEndeudamiento],
|
|
[CuotaCertificada]
|
|
FROM BPMPRENDARIO.Prendario.SituacionActual
|
|
WHERE IdSolicitud = @i_idsolicitud
|
|
AND Proceso = @i_proceso
|
|
AND IdCliente = @i_idcliente
|
|
|
|
|
|
|
|
|
|
INSERT INTO #Temp_Situacion_Actual1( [IdSituacionActual],
|
|
[IdSolicitud],
|
|
[IdCliente],
|
|
[Incidente],
|
|
[Proceso],
|
|
[Identificacion],
|
|
[EsDeudor],
|
|
[Estado],
|
|
[IdOperacion],
|
|
[Moneda],
|
|
[FecVencimiento],
|
|
[TipoOperacion],
|
|
[Condicion],
|
|
[EstadoOperacion],
|
|
[DiasAtraso],
|
|
[EntidadAcreedora],
|
|
[Saldo],
|
|
[CuotasEquivalente],
|
|
[MontoOriginal],
|
|
[FecInicio],
|
|
[MontoNoDesembolsado],
|
|
[Cancela],
|
|
[CuotaPrincipal],
|
|
[CuotaIntereses],
|
|
[TipoTasa],
|
|
[TasaNominal],
|
|
[DTI_MiniEndeudamiento]
|
|
)
|
|
SELECT [IdSituacionActual] = ISNULL((SELECT MAX([IdSituacionActual])+1 FROM BPMPRENDARIO.Prendario.SituacionActual ),1),
|
|
[IdSolicitud] = @i_idsolicitud,
|
|
[IdCliente] = @i_idcliente,
|
|
[Incidente] = @i_incidente,
|
|
[Proceso] = @i_proceso,
|
|
[Identificacion] = @i_identificacion,
|
|
[EsDeudor] = 1,
|
|
[Estado] = ''C'',
|
|
[IdOperacion] = ''Operacion del Tramite Actual'',
|
|
[Moneda] = @i_co_moneda,
|
|
[FecVencimiento] = CONVERT(VARCHAR,DATEADD(DAY, (@i_plazo_meses * 30), GETDATE()),103),
|
|
[TipoOperacion] = CASE WHEN CHARINDEX(''PRENDARIO'', @i_proceso, 0) > 0 THEN ''1''
|
|
WHEN CHARINDEX(''TARJETA'', @i_proceso, 0) > 0 THEN ''3''
|
|
END,
|
|
[Condicion] = ''DEUDOR'',
|
|
[EstadoOperacion] = ''VIGENTE'',
|
|
[DiasAtraso] = 0,
|
|
[EntidadAcreedora] = ''Banco Davivienda (Costa Rica)'',
|
|
[Saldo] = @i_monto,
|
|
[CuotasEquivalente] = 0,
|
|
[MontoOriginal] = @i_monto,
|
|
[FecInicio] = CONVERT(VARCHAR,GETDATE(),103),
|
|
[MontoNoDesembolsado] = @i_monto,
|
|
|
|
[Cancela] = 0,
|
|
[CuotaPrincipal] = 0,
|
|
[CuotaIntereses] = 0,
|
|
[TipoTasa] = @i_tipo_tasa,
|
|
[TasaNominal] = @i_tasa,
|
|
[DTI_MiniEndeudamiento] = 0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---Obtiene el código del tipo de operacion
|
|
UPDATE #Temp_Situacion_Actual1
|
|
SET TipoOperacion = RTRIM(SUBSTRING(TipoOperacion,0, CHARINDEX(''-'',TipoOperacion)))
|
|
|
|
|
|
---Carga la temporal de sensibilizacion operacion con la informacion base de la Situacion Actual
|
|
INSERT INTO #Temp_Sensibilizacion_Operacion1(so_incidente,
|
|
so_solicitud,
|
|
so_proceso,
|
|
so_idcliente,
|
|
so_identificacion,
|
|
so_esdeudor,
|
|
so_estado,
|
|
so_id_operacion,
|
|
so_refinancia,
|
|
so_meses_plazo_restante,
|
|
so_co_moneda)
|
|
SELECT Incidente,
|
|
IdSolicitud,
|
|
Proceso,
|
|
IdCliente,
|
|
Identificacion,
|
|
EsDeudor,
|
|
Estado,
|
|
IdOperacion,
|
|
Refinancia = CASE Cancela
|
|
WHEN 1 THEN 1
|
|
ELSE 0
|
|
END,
|
|
MesesPlazoRestante = CASE
|
|
WHEN TipoTasa IN (''F'') AND TipoOperacion IN (3,6) THEN 0
|
|
ELSE DATEDIFF(DAY, CONVERT(DATETIME, FecInicio, 103), CONVERT(DATETIME, FecVencimiento, 103))
|
|
END,
|
|
Moneda = CASE Moneda
|
|
WHEN ''E - DIVISA EXTRANJERA'' THEN 1
|
|
WHEN ''N - COLONES O UNIDADES DE DESARROLLO'' THEN 0
|
|
WHEN 1 THEN 1
|
|
ELSE 0
|
|
END
|
|
FROM #Temp_Situacion_Actual1
|
|
|
|
|
|
|
|
|
|
|
|
---Calcula los escenarios de devaluacion del tipo de cambio
|
|
UPDATE #Temp_Sensibilizacion_Operacion1
|
|
SET so_tip_camb_deval_esc_normal = @i_tipo_cambio * ((st_esc_normal/100)+1),
|
|
so_tip_camb_deval_esc_leve = @i_tipo_cambio * ((st_esc_leve/100)+1),
|
|
so_tip_camb_deval_esc_moderado = @i_tipo_cambio * ((st_esc_moderado/100)+1),
|
|
so_tip_camb_deval_esc_servero = @i_tipo_cambio * ((st_esc_severo/100)+1)
|
|
FROM #Temp_Parametrizacion_Shock_Tipo_Cambio1
|
|
WHERE st_cod_moneda = 0
|
|
|
|
|
|
|
|
|
|
---Calcula los escenarios de revaluacion del tipo de cambio
|
|
UPDATE #Temp_Sensibilizacion_Operacion1
|
|
SET so_tip_camb_reval_esc_normal = @i_tipo_cambio * ((st_esc_normal/100)+1),
|
|
so_tip_camb_reval_esc_leve = @i_tipo_cambio * ((st_esc_leve/100)+1),
|
|
so_tip_camb_reval_esc_moderado = @i_tipo_cambio * ((st_esc_moderado/100)+1),
|
|
so_tip_camb_reval_esc_servero = @i_tipo_cambio * ((st_esc_severo/100)+1)
|
|
FROM #Temp_Parametrizacion_Shock_Tipo_Cambio1
|
|
WHERE st_cod_moneda = 1
|
|
|
|
|
|
|
|
|
|
|
|
---Calcula los escenarios los ingresos con tipo de cambio revaluado o devaluado segun la moneda
|
|
UPDATE #Temp_Sensibilizacion_Operacion1
|
|
SET so_ingreso_col_esc_normal = @i_ingreso_neto_col + (@i_ingreso_neto_dol * so_tip_camb_deval_esc_normal),
|
|
so_ingreso_col_esc_leve = @i_ingreso_neto_col + (@i_ingreso_neto_dol * so_tip_camb_deval_esc_leve),
|
|
so_ingreso_col_esc_moderado = @i_ingreso_neto_col + (@i_ingreso_neto_dol * so_tip_camb_deval_esc_moderado),
|
|
so_ingreso_col_esc_severo = @i_ingreso_neto_col + (@i_ingreso_neto_dol * so_tip_camb_deval_esc_servero),
|
|
|
|
so_ingreso_dol_esc_normal = @i_ingreso_neto_dol + (@i_ingreso_neto_col / so_tip_camb_reval_esc_normal),
|
|
so_ingreso_dol_esc_leve = @i_ingreso_neto_dol + (@i_ingreso_neto_col / so_tip_camb_reval_esc_leve),
|
|
so_ingreso_dol_esc_moderado = @i_ingreso_neto_dol + (@i_ingreso_neto_col / so_tip_camb_reval_esc_moderado),
|
|
so_ingreso_dol_esc_severo = @i_ingreso_neto_dol + (@i_ingreso_neto_col / so_tip_camb_reval_esc_servero)
|
|
|
|
FROM #Temp_Parametrizacion_Shock_Tipo_Cambio1
|
|
|
|
|
|
|
|
|
|
---Determina cual es el producto asociado
|
|
UPDATE #Temp_Sensibilizacion_Operacion1
|
|
SET so_producto = CASE WHEN (so_meses_plazo_restante/30) > 96 THEN ''HVI''
|
|
WHEN (so_meses_plazo_restante/30) > 60 THEN ''AUTO''
|
|
WHEN (so_meses_plazo_restante/30) > 1 THEN ''CP''
|
|
ELSE NULL
|
|
END
|
|
|
|
|
|
|
|
-------------------Determina la cuota generada-------------------
|
|
|
|
--Si la Cuota Certidficada es cero o nulo
|
|
UPDATE A
|
|
SET A.so_cuota_generada = ROUND([BPMDATA].[dbo].[F_getCuotaDTI](ISNULL(B.Condicion, ''''),
|
|
ISNULL(B.TasaNominal,0),
|
|
0,
|
|
CONVERT(FLOAT,ISNULL(A.so_meses_plazo_restante,0)) /30,
|
|
ISNULL(B.Saldo,0),
|
|
B.TipoOperacion,
|
|
0),2)
|
|
FROM #Temp_Sensibilizacion_Operacion1 A
|
|
INNER JOIN #Temp_Situacion_Actual1 B
|
|
ON A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_idcliente = B.IdCliente
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
WHERE B.CuotaCertificada IS NULL
|
|
OR B.CuotaCertificada = ''0''
|
|
|
|
|
|
--Si la Cuota Certidficada no es cero ni nulo
|
|
|
|
UPDATE A
|
|
SET A.so_cuota_generada = ROUND(CONVERT(FLOAT,B.CuotaCertificada),2)
|
|
FROM #Temp_Sensibilizacion_Operacion1 A
|
|
INNER JOIN #Temp_Situacion_Actual1 B
|
|
ON A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_idcliente = B.IdCliente
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
WHERE B.CuotaCertificada IS NOT NULL
|
|
AND B.CuotaCertificada != ''0''
|
|
|
|
|
|
|
|
|
|
|
|
-------------------Calcula la cuota sin seguro y la cuota del seguro-------------------
|
|
|
|
--Si la Cuota Certidficada es cero o nulo
|
|
UPDATE A
|
|
SET A.so_cuota_sin_seguro = A.so_cuota_generada,
|
|
A.so_cuota_seguro = CASE A.so_producto
|
|
WHEN ''HVI''THEN ROUND((A.so_cuota_generada * 0.1),2)
|
|
WHEN ''AUTO''THEN ROUND((A.so_cuota_generada * 0.35),2)
|
|
ELSE 0
|
|
END
|
|
FROM #Temp_Sensibilizacion_Operacion1 A
|
|
INNER JOIN #Temp_Situacion_Actual1 B
|
|
ON A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_idcliente = B.IdCliente
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
WHERE A.so_id_operacion != ''Operacion del Tramite Actual''
|
|
AND (B.CuotaCertificada IS NULL
|
|
OR B.CuotaCertificada = ''0'')
|
|
|
|
|
|
--Si la Cuota Certidficada NO es cero ni es nulo
|
|
UPDATE A
|
|
SET A.so_cuota_sin_seguro = A.so_cuota_generada,
|
|
A.so_cuota_seguro = 0
|
|
FROM #Temp_Sensibilizacion_Operacion1 A
|
|
INNER JOIN #Temp_Situacion_Actual1 B
|
|
ON A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_idcliente = B.IdCliente
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
WHERE A.so_id_operacion != ''Operacion del Tramite Actual''
|
|
AND B.CuotaCertificada IS NOT NULL
|
|
AND B.CuotaCertificada != ''0''
|
|
|
|
--Si es la operacion del Tramite actual
|
|
UPDATE #Temp_Sensibilizacion_Operacion1
|
|
SET so_cuota_sin_seguro = so_cuota_generada,
|
|
so_cuota_seguro = ISNULL(@i_seguros,0)
|
|
WHERE so_id_operacion = ''Operacion del Tramite Actual''
|
|
|
|
|
|
|
|
|
|
-------------------Calcula las cuotas según el escenario de estres-------------------
|
|
|
|
--Si la Cuota Certidficada es cero o nulo
|
|
UPDATE A
|
|
SET A.so_cuota_esc_normal = (A.so_cuota_sin_seguro + A.so_cuota_seguro),
|
|
|
|
A.so_cuota_esc_leve = CASE
|
|
WHEN B.TipoTasa IN (''V'',''FV'', ''VF'')THEN ROUND(([BPMDATA].[dbo].[F_getCuotaDTI](ISNULL(B.Condicion, ''''), ISNULL(B.TasaNominal,0), ISNULL(C.st_esc_leve,0), CONVERT(FLOAT,ISNULL(A.so_meses_plazo_restante,0)) /30, ISNULL(B.Saldo,0), B.TipoOperacion, 1) + A.so_cuota_seguro),2)
|
|
WHEN B.TipoTasa IN (''F'') THEN (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
ELSE (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
END,
|
|
|
|
A.so_cuota_esc_moderado = CASE
|
|
WHEN B.TipoTasa IN (''V'',''FV'', ''VF'')THEN ROUND(([BPMDATA].[dbo].[F_getCuotaDTI](ISNULL(B.Condicion, ''''),ISNULL(B.TasaNominal,0), ISNULL(C.st_esc_moderado,0), CONVERT(FLOAT,ISNULL(A.so_meses_plazo_restante,0)) /30, ISNULL(B.Saldo,0), B.TipoOperacion, 2) + A.so_cuota_seguro),2)
|
|
WHEN B.TipoTasa IN (''F'') THEN (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
ELSE (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
END,
|
|
|
|
A.so_cuota_esc_severo = CASE
|
|
WHEN B.TipoTasa IN (''V'',''FV'', ''VF'')THEN ROUND(([BPMDATA].[dbo].[F_getCuotaDTI](ISNULL(B.Condicion, ''''),ISNULL(B.TasaNominal,0), ISNULL(C.st_esc_severo,0), CONVERT(FLOAT,ISNULL(A.so_meses_plazo_restante,0)) /30, ISNULL(B.Saldo,0), B.TipoOperacion, 3) + A.so_cuota_seguro),2)
|
|
WHEN B.TipoTasa IN (''F'') THEN (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
ELSE (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
END
|
|
|
|
FROM #Temp_Sensibilizacion_Operacion1 A
|
|
INNER JOIN #Temp_Situacion_Actual1 B
|
|
ON A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_idcliente = B.IdCliente
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
INNER JOIN #Temp_Parametrizacion_Shock_Tasa_Interes1 C
|
|
ON (A.so_co_moneda = C.st_cod_moneda)
|
|
WHERE B.CuotaCertificada IS NULL
|
|
OR B.CuotaCertificada = ''0''
|
|
|
|
|
|
--Si la Cuota Certidficada NO es cero ni es nulo
|
|
UPDATE A
|
|
SET A.so_cuota_esc_normal = (A.so_cuota_sin_seguro + A.so_cuota_seguro),
|
|
A.so_cuota_esc_leve = (A.so_cuota_sin_seguro + A.so_cuota_seguro),
|
|
A.so_cuota_esc_moderado = (A.so_cuota_sin_seguro + A.so_cuota_seguro),
|
|
A.so_cuota_esc_severo = (A.so_cuota_sin_seguro + A.so_cuota_seguro)
|
|
FROM #Temp_Sensibilizacion_Operacion1 A
|
|
INNER JOIN #Temp_Situacion_Actual1 B
|
|
ON A.so_solicitud = B.IdSolicitud
|
|
AND A.so_proceso = B.Proceso
|
|
AND A.so_idcliente = B.IdCliente
|
|
AND A.so_id_operacion = B.IdOperacion
|
|
INNER JOIN #Temp_Parametrizacion_Shock_Tasa_Interes1 C
|
|
ON (A.so_co_moneda = C.st_cod_moneda)
|
|
WHERE B.CuotaCertificada IS NOT NULL
|
|
AND B.CuotaCertificada != ''0''
|
|
|
|
|
|
|
|
|
|
|
|
-------------------Calcula los mini-endeudamientos según el escenario de estres-------------------
|
|
UPDATE #Temp_Sensibilizacion_Operacion1
|
|
SET so_dti_esc_normal = CASE so_co_moneda
|
|
WHEN 0 THEN (so_cuota_esc_normal/ so_ingreso_col_esc_normal)
|
|
WHEN 1 THEN (so_cuota_esc_normal/ so_ingreso_dol_esc_normal)
|
|
END,
|
|
so_dti_esc_leve = CASE so_co_moneda
|
|
WHEN 0 THEN (so_cuota_esc_leve/ so_ingreso_col_esc_leve)
|
|
WHEN 1 THEN (so_cuota_esc_leve/ so_ingreso_dol_esc_leve)
|
|
END,
|
|
so_dti_esc_moderado = CASE so_co_moneda
|
|
WHEN 0 THEN (so_cuota_esc_moderado/ so_ingreso_col_esc_moderado)
|
|
WHEN 1 THEN (so_cuota_esc_moderado/ so_ingreso_dol_esc_moderado)
|
|
END,
|
|
so_dti_esc_severo = CASE so_co_moneda
|
|
WHEN 0 THEN (so_cuota_esc_severo/ so_ingreso_col_esc_severo)
|
|
WHEN 1 THEN (so_cuota_esc_severo/ so_ingreso_dol_esc_severo)
|
|
END
|
|
|
|
|
|
|
|
INSERT INTO #Temp_Sensibilizacion_Resumen1
|
|
SELECT so_incidente,
|
|
so_solicitud,
|
|
so_proceso,
|
|
so_idcliente,
|
|
so_identificacion,
|
|
SUM(so_cuota_esc_normal),
|
|
SUM(so_cuota_esc_leve),
|
|
SUM(so_cuota_esc_moderado),
|
|
SUM(so_cuota_esc_severo),
|
|
so_co_moneda,
|
|
0,
|
|
0,
|
|
0,
|
|
0
|
|
FROM #Temp_Sensibilizacion_Operacion1
|
|
GROUP BY so_incidente,
|
|
so_solicitud,
|
|
so_proceso,
|
|
so_idcliente,
|
|
so_identificacion,
|
|
so_co_moneda
|
|
|
|
|
|
|
|
|
|
UPDATE #Temp_Sensibilizacion_Resumen1
|
|
SET sr_endeuda_esc_normal = A.sr_endeuda_esc_normal,
|
|
sr_endeuda_esc_leve = A.sr_endeuda_esc_leve,
|
|
sr_endeuda_esc_moderado = A.sr_endeuda_esc_moderado,
|
|
sr_endeuda_esc_severo = A.sr_endeuda_esc_severo
|
|
FROM (SELECT sr_endeuda_esc_normal = SUM(so_dti_esc_normal),
|
|
sr_endeuda_esc_leve = SUM(so_dti_esc_leve),
|
|
sr_endeuda_esc_moderado = SUM(so_dti_esc_moderado),
|
|
sr_endeuda_esc_severo = SUM(so_dti_esc_severo)
|
|
FROM #Temp_Sensibilizacion_Operacion1)A
|
|
|
|
|
|
|
|
IF(CHARINDEX(''PRENDARIO'', @i_proceso, 0) > 0)
|
|
BEGIN
|
|
DELETE BPMPRENDARIO.Prendario.SensibilizacionOperacion
|
|
WHERE
|
|
--so_incidente = @i_incidente
|
|
so_solicitud = @i_idsolicitud
|
|
AND so_proceso = @i_proceso
|
|
AND so_idcliente = @i_idcliente
|
|
--AND so_identificacion = @i_identificacion
|
|
|
|
DELETE BPMPRENDARIO.Prendario.SensibilizacionResumen
|
|
WHERE --sr_incidente = @i_incidente
|
|
sr_solicitud = @i_idsolicitud
|
|
AND sr_proceso = @i_proceso
|
|
AND sr_idcliente = @i_idcliente
|
|
--AND sr_identificacion = @i_identificacion
|
|
|
|
|
|
INSERT INTO BPMPRENDARIO.Prendario.SensibilizacionOperacion
|
|
SELECT * FROM #Temp_Sensibilizacion_Operacion1
|
|
|
|
|
|
INSERT INTO BPMPRENDARIO.Prendario.SensibilizacionResumen
|
|
SELECT * FROM #Temp_Sensibilizacion_Resumen1
|
|
|
|
END
|
|
|
|
|
|
SELECT @o_res_code = 0,
|
|
@o_res_message = ''EXITOSO''
|
|
|
|
--FIN DE SENSIBILIZACION DE INCIDENTES MAYORES AL 18-04-2017
|
|
|
|
|
|
END
|
|
|
|
COMMIT TRAN T1
|
|
|
|
|
|
|
|
END TRY
|
|
BEGIN CATCH
|
|
|
|
ROLLBACK TRAN T1
|
|
|
|
SELECT @o_res_code = ERROR_NUMBER(),
|
|
@o_res_message = ERROR_MESSAGE(),
|
|
@o_res_err_procedure = ERROR_PROCEDURE(),
|
|
@o_res_err_line = ERROR_LINE()
|
|
|
|
END CATCH
|
|
|
|
SELECT res_code = @o_res_code,
|
|
res_message = @o_res_message,
|
|
res_err_procedure = @o_res_err_procedure,
|
|
res_err_line = @o_res_err_line
|
|
|
|
END
|
|
|
|
|
|
IF @i_opcion = 2
|
|
BEGIN
|
|
|
|
|
|
IF(CHARINDEX(''PRENDARIO'', @i_proceso, 0) > 0)
|
|
BEGIN
|
|
|
|
--[DataSet 1] - Calculo de Cuotas y DTI por Operacion y Moneda en cada Escenario
|
|
SELECT so_incidente,
|
|
so_solicitud,
|
|
so_proceso,
|
|
so_idcliente,
|
|
so_identificacion,
|
|
so_esdeudor,
|
|
so_estado,
|
|
so_id_operacion,
|
|
so_co_moneda,
|
|
so_simbolo_moneda_col = (SELECT TOP 1 Simbolo FROM BPMPRENDARIO.Catalogos.Moneda WHERE IdMoneda=0),
|
|
so_simbolo_moneda_dol = (SELECT TOP 1 Simbolo FROM BPMPRENDARIO.Catalogos.Moneda WHERE IdMoneda=1),
|
|
so_cuota_esc_normal_col = CASE so_co_moneda WHEN 0 THEN CONVERT(VARCHAR,CAST(so_cuota_esc_normal AS MONEY),1) ELSE ''0.00'' END,
|
|
so_cuota_esc_leve_col = CASE so_co_moneda WHEN 0 THEN CONVERT(VARCHAR,CAST(so_cuota_esc_leve AS MONEY),1) ELSE ''0.00'' END,
|
|
so_cuota_esc_moderado_col = CASE so_co_moneda WHEN 0 THEN CONVERT(VARCHAR,CAST(so_cuota_esc_moderado AS MONEY),1) ELSE ''0.00'' END,
|
|
so_cuota_esc_severo_col = CASE so_co_moneda WHEN 0 THEN CONVERT(VARCHAR,CAST(so_cuota_esc_severo AS MONEY),1) ELSE ''0.00'' END,
|
|
|
|
so_cuota_esc_normal_dol = CASE so_co_moneda WHEN 1 THEN CONVERT(VARCHAR,CAST(so_cuota_esc_normal AS MONEY),1) ELSE ''0.00'' END,
|
|
so_cuota_esc_leve_dol = CASE so_co_moneda WHEN 1 THEN CONVERT(VARCHAR,CAST(so_cuota_esc_leve AS MONEY),1) ELSE ''0.00'' END,
|
|
so_cuota_esc_moderado_dol = CASE so_co_moneda WHEN 1 THEN CONVERT(VARCHAR,CAST(so_cuota_esc_moderado AS MONEY),1) ELSE ''0.00'' END,
|
|
so_cuota_esc_severo_dol = CASE so_co_moneda WHEN 1 THEN CONVERT(VARCHAR,CAST(so_cuota_esc_severo AS MONEY),1) ELSE ''0.00'' END
|
|
|
|
FROM BPMPRENDARIO.Prendario.SensibilizacionOperacion S
|
|
WHERE ---so_incidente = @i_incidente
|
|
so_solicitud = @i_idsolicitud
|
|
AND so_proceso = @i_proceso
|
|
AND so_idcliente = @i_idcliente
|
|
--AND so_identificacion = @i_identificacion
|
|
|
|
--[DataSet 2] - Resumen de Cuotas por moneda en cada Escenario
|
|
SELECT sr_etiqueta = ''Totales'',
|
|
A.sr_incidente,
|
|
A.sr_solicitud,
|
|
A.sr_proceso,
|
|
A.sr_idcliente,
|
|
A.sr_identificacion,
|
|
sr_cuota_esc_normal_col = CASE A.sr_co_moneda WHEN 0 THEN CONVERT(VARCHAR,CAST(A.sr_cuota_esc_normal AS MONEY),1) ELSE ''0.00'' END,
|
|
sr_cuota_esc_leve_col = CASE A.sr_co_moneda WHEN 0 THEN CONVERT(VARCHAR,CAST(A.sr_cuota_esc_leve AS MONEY),1) ELSE ''0.00'' END,
|
|
sr_cuota_esc_moderado_col = CASE A.sr_co_moneda WHEN 0 THEN CONVERT(VARCHAR,CAST(A.sr_cuota_esc_moderado AS MONEY),1) ELSE ''0.00'' END,
|
|
sr_cuota_esc_severo_col = CASE A.sr_co_moneda WHEN 0 THEN CONVERT(VARCHAR,CAST(A.sr_cuota_esc_severo AS MONEY),1) ELSE ''0.00'' END,
|
|
|
|
sr_cuota_esc_normal_dol = CASE B.sr_co_moneda WHEN 1 THEN CONVERT(VARCHAR,CAST(B.sr_cuota_esc_normal AS MONEY),1) ELSE ''0.00'' END,
|
|
sr_cuota_esc_leve_dol = CASE B.sr_co_moneda WHEN 1 THEN CONVERT(VARCHAR,CAST(B.sr_cuota_esc_leve AS MONEY),1) ELSE ''0.00'' END,
|
|
sr_cuota_esc_moderado_dol = CASE B.sr_co_moneda WHEN 1 THEN CONVERT(VARCHAR,CAST(B.sr_cuota_esc_moderado AS MONEY),1) ELSE ''0.00'' END,
|
|
sr_cuota_esc_severo_dol = CASE B.sr_co_moneda WHEN 1 THEN CONVERT(VARCHAR,CAST(B.sr_cuota_esc_severo AS MONEY),1) ELSE ''0.00'' END,
|
|
|
|
sr_simbolo_moneda_col = (SELECT TOP 1 Simbolo FROM BPMPRENDARIO.Catalogos.Moneda WHERE IdMoneda=0),
|
|
sr_simbolo_moneda_dol = (SELECT TOP 1 Simbolo FROM BPMPRENDARIO.Catalogos.Moneda WHERE IdMoneda=1)
|
|
|
|
FROM (
|
|
SELECT *
|
|
FROM BPMPRENDARIO.Prendario.SensibilizacionResumen
|
|
WHERE ---sr_incidente = @i_incidente
|
|
sr_solicitud = @i_idsolicitud
|
|
AND sr_proceso = @i_proceso
|
|
AND sr_idcliente = @i_idcliente
|
|
--AND sr_identificacion = @i_identificacion
|
|
AND sr_co_moneda = 1
|
|
)A
|
|
LEFT JOIN (
|
|
SELECT *
|
|
FROM BPMPRENDARIO.Prendario.SensibilizacionResumen
|
|
WHERE ---sr_incidente = @i_incidente
|
|
sr_solicitud = @i_idsolicitud
|
|
AND sr_proceso = @i_proceso
|
|
AND sr_idcliente = @i_idcliente
|
|
--AND sr_identificacion = @i_identificacion
|
|
AND sr_co_moneda = 0
|
|
)B
|
|
ON --A.sr_incidente = B.sr_incidente
|
|
A.sr_solicitud = B.sr_solicitud
|
|
AND A.sr_proceso = B.sr_proceso
|
|
AND A.sr_idcliente = B.sr_idcliente
|
|
AND A.sr_identificacion = B.sr_identificacion
|
|
|
|
--[DataSet 3] - DTI por moneda en cada Escenario
|
|
SELECT DISTINCT
|
|
sr_incidente,
|
|
sr_solicitud,
|
|
sr_proceso,
|
|
sr_idcliente,
|
|
sr_identificacion,
|
|
sr_endeuda_esc_normal = (CONVERT(VARCHAR,CAST((sr_endeuda_esc_normal*100) AS MONEY),1) + ''%''),
|
|
sr_endeuda_esc_leve = (CONVERT(VARCHAR,CAST((sr_endeuda_esc_leve*100) AS MONEY),1) + ''%''),
|
|
sr_endeuda_esc_moderado = (CONVERT(VARCHAR,CAST((sr_endeuda_esc_moderado*100) AS MONEY),1) + ''%''),
|
|
sr_endeuda_esc_severo = (CONVERT(VARCHAR,CAST((sr_endeuda_esc_severo*100) AS MONEY),1) + ''%'')
|
|
FROM BPMPRENDARIO.Prendario.SensibilizacionResumen
|
|
WHERE ---sr_incidente = @i_incidente
|
|
sr_solicitud = @i_idsolicitud
|
|
AND sr_proceso = @i_proceso
|
|
AND sr_idcliente = @i_idcliente
|
|
--AND sr_identificacion = @i_identificacion
|
|
|
|
END
|
|
END
|
|
|
|
|
|
IF @i_opcion = 3
|
|
BEGIN
|
|
|
|
IF(CHARINDEX(''PRENDARIO'', @i_proceso, 0) > 0)
|
|
BEGIN
|
|
|
|
SELECT DISTINCT
|
|
sr_incidente,
|
|
sr_solicitud,
|
|
sr_proceso,
|
|
sr_idcliente,
|
|
sr_identificacion,
|
|
sr_endeuda_esc_normal,
|
|
sr_endeuda_esc_leve,
|
|
sr_endeuda_esc_moderado,
|
|
sr_endeuda_esc_severo
|
|
FROM BPMPRENDARIO.Prendario.SensibilizacionResumen
|
|
WHERE ---sr_incidente = @i_incidente
|
|
sr_solicitud = @i_idsolicitud
|
|
AND sr_proceso = @i_proceso
|
|
AND sr_idcliente = @i_idcliente
|
|
--AND sr_identificacion = @i_identificacion
|
|
|
|
END
|
|
END
|
|
'
|
|
END
|
|
GO
|
|
/****** Object: UserDefinedFunction [dbo].[F_getCuotaDTI] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[F_getCuotaDTI]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
|
|
BEGIN
|
|
execute dbo.sp_executesql @statement = N'
|
|
|
|
/*
|
|
|
|
SELECT [dbo].[F_getCuotaDTI](''DEUDOR'',15, 0, 118.80, 980849.25,''1'')
|
|
|
|
SELECT [dbo].[F_getCuotaDTI](''DEUDOR'',0, 0, 0, 0,''1'')
|
|
|
|
*/
|
|
CREATE FUNCTION [dbo].[F_getCuotaDTI]
|
|
(@i_condicion VARCHAR(50) = ''DEUDOR'', --DEUDOR, CODEUDOR, FIADOR
|
|
@i_porc_tasa_nominal FLOAT = 0, --Porcentaje de Tasa Anual
|
|
@i_porc_shock_tasa FLOAT = 0, --Porcentaje de Incremento de Tasa
|
|
@i_plazo_meses FLOAT = 0, --Cantidad de Meses
|
|
@i_saldo_monto FLOAT = 0, --Saldo o Monto del Crédito
|
|
|
|
@i_tipo_operacion VARCHAR(50) = 0, --Tipo de Operacion de SUGEF
|
|
--1 - 98 DIRECTA
|
|
--3 - TARJETAS DE CRÉDITO
|
|
--6 - LÍNEA DE CRÉDITO SIN COMPROMISO
|
|
|
|
@i_escenario INT = 0 --0 - NORMAL
|
|
--1 - LEVE
|
|
--2 - MODERADO
|
|
--3 - SEVERO
|
|
)
|
|
RETURNS FLOAT --float
|
|
AS
|
|
BEGIN
|
|
|
|
DECLARE @Value FLOAT
|
|
|
|
|
|
IF((@i_tipo_operacion = ''3'' OR @i_tipo_operacion = ''6''))---AND @i_escenario = 0)
|
|
SET @Value = (@i_saldo_monto * 0.04)
|
|
ELSE
|
|
SET @Value = (dbo.F_pmt(CONVERT(FLOAT,(@i_porc_tasa_nominal + @i_porc_shock_tasa))/12, @i_plazo_meses, (-1 * @i_saldo_monto), 0,0))
|
|
|
|
|
|
SET @Value = CASE
|
|
WHEN @i_condicion = ''DEUDOR'' THEN @Value
|
|
WHEN @i_condicion = ''FIADOR'' THEN 0
|
|
WHEN @i_condicion IN (''CODEUDOR'', ''CO-DEUDOR'') THEN @Value / 2
|
|
ELSE 0
|
|
END
|
|
|
|
RETURN @Value
|
|
END
|
|
|
|
|
|
'
|
|
END
|
|
|
|
GO
|
|
/****** Object: UserDefinedFunction [dbo].[F_pmt] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[F_pmt]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
|
|
BEGIN
|
|
execute dbo.sp_executesql @statement = N'
|
|
|
|
|
|
/*
|
|
declare @tasa float
|
|
|
|
select @tasa = CONVERT(FLOAT,15)/12
|
|
SELECT [dbo].[F_pmt](@tasa, 118.80, -980849.25,0,0)
|
|
|
|
|
|
|
|
SELECT [dbo].[F_pmt](0, 0, 0,0,0)
|
|
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
CREATE FUNCTION [dbo].[F_pmt]
|
|
(@InterestRate FLOAT, --Rate is the interest rate per period.
|
|
@Nper FLOAT, --Nper is the total number of payment
|
|
--periods in an annuity.
|
|
@Pv FLOAT, --Pv is the present value, or the
|
|
--lump-sum amount that a series of
|
|
--future payments is worth right now.
|
|
--If pv is omitted, it is assumed to be
|
|
--0 (zero). PV must be entered as a
|
|
--negative number.
|
|
@Fv FLOAT, --Fv is the future value, or the
|
|
--lump-sum amount that a series of
|
|
--future payments is worth right now.
|
|
--If pv is omitted, it is assumed to
|
|
--be 0 (zero). PV must be entered as a
|
|
--negative number.
|
|
@Type BIT --Type is the number 0 or 1 and
|
|
--indicates when payments are due.
|
|
--If type is omitted, it is assumed
|
|
--to be 0 which represents at the end
|
|
--of the period.
|
|
--If payments are due at the beginning
|
|
--of the period, type should be 1.
|
|
)
|
|
RETURNS FLOAT --float
|
|
AS
|
|
BEGIN
|
|
DECLARE @Value FLOAT
|
|
|
|
IF(@Pv IS NULL OR @Pv = 0) --Si el monto es cero o nulo retorna cero
|
|
SET @Value = 0
|
|
ELSE IF(@Nper IS NULL OR @Nper = 0) -- Si el plazo es cero o nulo retorna cero
|
|
SET @Value = 0
|
|
ELSE IF (@InterestRate IS NULL OR @InterestRate = 0) -- Si el interes es cero o nulo retona monto entre plazo
|
|
SET @Value = ABS(@Pv / @Nper)
|
|
ELSE
|
|
BEGIN
|
|
DECLARE @w_interes FLOAT
|
|
SELECT @w_interes = Convert(float,@InterestRate) / 100
|
|
SELECT @Value = CASE
|
|
WHEN @Type=0
|
|
THEN
|
|
@w_interes
|
|
/((Power(1+@InterestRate/100,@Nper))-1)
|
|
*(-(@Pv*Power(1 + @InterestRate/100,@Nper)+@Fv))
|
|
|
|
WHEN @Type=1
|
|
THEN Convert(float,@InterestRate / 100) /
|
|
(Power(Convert(float,(1 + @InterestRate / 100)),@Nper)-1)
|
|
* -(@Pv*Power(Convert(float,(1 + @InterestRate / 100)),@Nper)
|
|
+@Fv)
|
|
/(1 + Convert(float,(@InterestRate / 100)))
|
|
END
|
|
|
|
|
|
END
|
|
|
|
RETURN @Value
|
|
|
|
END
|
|
|
|
|
|
'
|
|
END
|
|
|
|
GO
|
|
/****** Object: Table [Parametros].[WFGradualidadCobertura] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Parametros].[WFGradualidadCobertura]') AND type in (N'U'))
|
|
BEGIN
|
|
CREATE TABLE [Parametros].[WFGradualidadCobertura](
|
|
[gc_codigo] [int] NOT NULL,
|
|
[gc_anho] [int] NOT NULL,
|
|
[gc_tipo_credito] [nvarchar](50) NOT NULL,
|
|
[gc_porc_esc_normal] [float] NULL,
|
|
[gc_porc_esc_severo] [float] NULL,
|
|
[gc_estado] [bit] NULL,
|
|
CONSTRAINT [PK_WF_GRADUALIDAD_COBERTURA] PRIMARY KEY CLUSTERED
|
|
(
|
|
[gc_codigo] ASC,
|
|
[gc_anho] ASC,
|
|
[gc_tipo_credito] ASC
|
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
) ON [PRIMARY]
|
|
END
|
|
GO
|
|
/****** Object: Table [Parametros].[WFShockTasaInteres] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Parametros].[WFShockTasaInteres]') AND type in (N'U'))
|
|
BEGIN
|
|
CREATE TABLE [Parametros].[WFShockTasaInteres](
|
|
[st_codigo] [int] NOT NULL,
|
|
[st_esc_normal] [decimal](18, 2) NOT NULL,
|
|
[st_esc_leve] [decimal](18, 2) NOT NULL,
|
|
[st_esc_moderado] [decimal](18, 2) NOT NULL,
|
|
[st_esc_severo] [decimal](18, 2) NOT NULL,
|
|
[st_cod_moneda] [int] NOT NULL,
|
|
[st_estado] [bit] NOT NULL,
|
|
CONSTRAINT [PK_WF_SHOCK_TASA_INTERES] PRIMARY KEY CLUSTERED
|
|
(
|
|
[st_codigo] ASC
|
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
) ON [PRIMARY]
|
|
END
|
|
GO
|
|
/****** Object: Table [Parametros].[WFShockTipoCambio] Script Date: 16/02/2018 10:43:05 a.m. ******/
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Parametros].[WFShockTipoCambio]') AND type in (N'U'))
|
|
BEGIN
|
|
CREATE TABLE [Parametros].[WFShockTipoCambio](
|
|
[st_codigo] [int] NOT NULL,
|
|
[st_esc_normal] [decimal](18, 2) NOT NULL,
|
|
[st_esc_leve] [decimal](18, 2) NOT NULL,
|
|
[st_esc_moderado] [decimal](18, 2) NOT NULL,
|
|
[st_esc_severo] [decimal](18, 2) NOT NULL,
|
|
[st_cod_moneda] [int] NOT NULL,
|
|
[st_estado] [bit] NOT NULL,
|
|
CONSTRAINT [PK_WF_SHOCK_TIPO_CAMBIO] PRIMARY KEY CLUSTERED
|
|
(
|
|
[st_codigo] ASC
|
|
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
|
|
) ON [PRIMARY]
|
|
END
|
|
GO
|