creditu-common-library 2.3.12 → 2.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -83,6 +83,7 @@ var AppLoggerMiddleware = /** @class */ (function () {
|
|
|
83
83
|
var originalSend = response.send;
|
|
84
84
|
var chunks = [];
|
|
85
85
|
// Interceptar el método send que suele usarse para errores
|
|
86
|
+
// eslint-disable-next-line func-names
|
|
86
87
|
response.send = function (body) {
|
|
87
88
|
if (body && typeof body === 'object' && response.statusCode >= 400) {
|
|
88
89
|
var sanitizedBody = this.sanitizeObject(body);
|
|
@@ -137,7 +138,7 @@ var AppLoggerMiddleware = /** @class */ (function () {
|
|
|
137
138
|
// Sanitizar la respuesta
|
|
138
139
|
var sanitizedResponseBody = this.sanitizeObject(parsedBody);
|
|
139
140
|
// Mensaje base con tiempo de respuesta
|
|
140
|
-
var baseMessage = "".concat(method, " ").concat(originalUrl, " ").concat(statusCode, " ").concat(statusMessage, " - ").concat(responseTime, "ms");
|
|
141
|
+
var baseMessage = "".concat(method, " ").concat(originalUrl, " ").concat(statusCode, " ").concat(statusMessage !== null && statusMessage !== void 0 ? statusMessage : '', " - ").concat(responseTime, "ms");
|
|
141
142
|
// Mensaje detallado con cuerpos de solicitud y respuesta
|
|
142
143
|
var detailedMessage = {
|
|
143
144
|
method: method,
|
|
@@ -156,7 +157,7 @@ var AppLoggerMiddleware = /** @class */ (function () {
|
|
|
156
157
|
this.logger.warn("".concat(baseMessage, "\n").concat(JSON.stringify(detailedMessage, null, 2)));
|
|
157
158
|
}
|
|
158
159
|
else {
|
|
159
|
-
this.logger.log("".concat(baseMessage));
|
|
160
|
+
this.logger.log("".concat(baseMessage, "\n").concat(JSON.stringify(detailedMessage, null, 2)));
|
|
160
161
|
}
|
|
161
162
|
return originalEnd.apply(response, __spreadArray([chunk], args, true));
|
|
162
163
|
}.bind(this);
|
|
@@ -40,28 +40,13 @@ var MaximumLocalService = /** @class */ (function () {
|
|
|
40
40
|
* @param longTermMonthlyFee Cuota largo plazo (Clp)
|
|
41
41
|
*/
|
|
42
42
|
MaximumLocalService.prototype.incomeDividend = function (params, longTermMonthlyFee) {
|
|
43
|
-
var
|
|
44
|
-
// Apply LTV-dependent frontend ratio if the parameters exist
|
|
45
|
-
if (params.ltvThresholdForFrontendRatio !== undefined
|
|
46
|
-
&& params.maximumFrontendRatioHighLTV !== undefined
|
|
47
|
-
&& params.maximumFrontendRatioLowLTV !== undefined
|
|
48
|
-
&& params.loanToValueHome !== undefined) {
|
|
49
|
-
// If LTV > threshold, use the high LTV ratio, otherwise use the low LTV ratio
|
|
50
|
-
if (params.loanToValueHome > params.ltvThresholdForFrontendRatio) {
|
|
51
|
-
maximumFrontendRatio = params.maximumFrontendRatioHighLTV;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
maximumFrontendRatio = params.maximumFrontendRatioLowLTV;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
var numerator = this.calculateIncomeDividendNumerator(longTermMonthlyFee, params, maximumFrontendRatio);
|
|
43
|
+
var numerator = this.calculateIncomeDividendNumerator(longTermMonthlyFee, params);
|
|
58
44
|
var denominator = this.calculateIncomeDividendDenominator(params);
|
|
59
45
|
return this.math.divide(numerator, denominator);
|
|
60
46
|
};
|
|
61
|
-
MaximumLocalService.prototype.calculateIncomeDividendNumerator = function (longTermMonthlyFee, params
|
|
47
|
+
MaximumLocalService.prototype.calculateIncomeDividendNumerator = function (longTermMonthlyFee, params) {
|
|
62
48
|
var _a;
|
|
63
|
-
var
|
|
64
|
-
var paymentCapacity = this.math.subtract(this.math.multiply(params.disposableIncome, frontendRatio), longTermMonthlyFee);
|
|
49
|
+
var paymentCapacity = this.math.subtract(this.math.multiply(params.disposableIncome, params.maximumFrontendRatio.value()), longTermMonthlyFee);
|
|
65
50
|
var creditInsuranceResidual = params.creditInsuranceFeeTermDefinition === credit_insurance_fee_term_definition_enum_1.CreditInsuranceFeeTermDefinition.LONG
|
|
66
51
|
? this.math.multiply(params.k2Fin, params.kScr)
|
|
67
52
|
: 0;
|
|
@@ -101,4 +101,12 @@ export declare class OfferService {
|
|
|
101
101
|
* @param creditMaxAmount
|
|
102
102
|
*/
|
|
103
103
|
getCreditAmountToOffer(approvedAmount: number, credituAmount: number, creditMinAmount: CreditAmount, creditMaxAmount: CreditAmount): number;
|
|
104
|
+
/**
|
|
105
|
+
* Ajusta el ratio máximo de frontend (dividendo/renta) en base al LTV
|
|
106
|
+
* @param maximumFrontendRatio - Ratio máximo de frontend original (por defecto)
|
|
107
|
+
* @param estimatedLoanToValueHome - LTV estimado para la operación
|
|
108
|
+
* @param params - Parámetros de la oferta
|
|
109
|
+
* @returns Ratio máximo de frontend ajustado
|
|
110
|
+
*/
|
|
111
|
+
private adjustMaximumFrontendRatio;
|
|
104
112
|
}
|
|
@@ -128,6 +128,7 @@ var OfferService = /** @class */ (function () {
|
|
|
128
128
|
// creditInsuranceNumberOfMonths
|
|
129
129
|
var k1Gop = this.constantService.calculateK1Gop(creditTaxRate, creditTaxRatePercentage, operationalExpensesFinancing, operationalExpensesInterest, operationalExpensesNumberOfMonths);
|
|
130
130
|
var k2Gop = this.constantService.calculateK2Gop(operationalExpensesWeightedSum, operationalExpensesFinancing, operationalExpensesInterest, operationalExpensesNumberOfMonths);
|
|
131
|
+
var adjustedMaximumFrontendRatio = this.adjustMaximumFrontendRatio(maximumFrontendRatio, estimatedLoanToValueHome, params);
|
|
131
132
|
var maximumLocalParams = {
|
|
132
133
|
creditInsuranceFactor: creditInsuranceFactor,
|
|
133
134
|
creditInsurancePercentageFinanced: creditInsurancePercentageFinanced.value(),
|
|
@@ -147,13 +148,9 @@ var OfferService = /** @class */ (function () {
|
|
|
147
148
|
purpose: purpose,
|
|
148
149
|
investmentWeight: investmentWeight,
|
|
149
150
|
maximumBackendRatio: maximumBackendRatio,
|
|
150
|
-
maximumFrontendRatio:
|
|
151
|
+
maximumFrontendRatio: adjustedMaximumFrontendRatio,
|
|
151
152
|
numberOfGraceMonths: numberOfGraceMonths,
|
|
152
|
-
creditInsuranceNumberOfMonths: creditInsuranceNumberOfMonths
|
|
153
|
-
ltvThresholdForFrontendRatio: params.ltvThresholdForFrontendRatio,
|
|
154
|
-
maximumFrontendRatioHighLTV: params.maximumFrontendRatioHighLTV,
|
|
155
|
-
maximumFrontendRatioLowLTV: params.maximumFrontendRatioLowLTV,
|
|
156
|
-
loanToValueHome: estimatedLoanToValueHome
|
|
153
|
+
creditInsuranceNumberOfMonths: creditInsuranceNumberOfMonths
|
|
157
154
|
};
|
|
158
155
|
var approvedAmountFinanceCharge = this.maximumLocal.financeCharge(maximumLocalParams, shortTermMonthlyFee, longTermMonthlyFee);
|
|
159
156
|
var maximumLocalIncomeDividend = this.maximumLocal.incomeDividend(maximumLocalParams, longTermMonthlyFee);
|
|
@@ -367,6 +364,31 @@ var OfferService = /** @class */ (function () {
|
|
|
367
364
|
return 0;
|
|
368
365
|
return minApprovedAmount;
|
|
369
366
|
};
|
|
367
|
+
/**
|
|
368
|
+
* Ajusta el ratio máximo de frontend (dividendo/renta) en base al LTV
|
|
369
|
+
* @param maximumFrontendRatio - Ratio máximo de frontend original (por defecto)
|
|
370
|
+
* @param estimatedLoanToValueHome - LTV estimado para la operación
|
|
371
|
+
* @param params - Parámetros de la oferta
|
|
372
|
+
* @returns Ratio máximo de frontend ajustado
|
|
373
|
+
*/
|
|
374
|
+
OfferService.prototype.adjustMaximumFrontendRatio = function (maximumFrontendRatio, estimatedLoanToValueHome, params) {
|
|
375
|
+
// Valor original por defecto
|
|
376
|
+
var adjustedMaximumFrontendRatio = maximumFrontendRatio;
|
|
377
|
+
// Si existen los parámetros de umbral, ajustar el maximumFrontendRatio directamente
|
|
378
|
+
if (params.ltvThresholdForFrontendRatio !== undefined
|
|
379
|
+
&& params.maximumFrontendRatioHighLTV !== undefined
|
|
380
|
+
&& params.maximumFrontendRatioLowLTV !== undefined) {
|
|
381
|
+
if (estimatedLoanToValueHome <= params.ltvThresholdForFrontendRatio) {
|
|
382
|
+
// LTV por debajo o igual al umbral - aplicar ratio mayor
|
|
383
|
+
adjustedMaximumFrontendRatio = new models_1.MaximumFrontendRatio(params.maximumFrontendRatioLowLTV);
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
// LTV por encima del umbral - aplicar ratio menor
|
|
387
|
+
adjustedMaximumFrontendRatio = new models_1.MaximumFrontendRatio(params.maximumFrontendRatioHighLTV);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
return adjustedMaximumFrontendRatio;
|
|
391
|
+
};
|
|
370
392
|
return OfferService;
|
|
371
393
|
}());
|
|
372
394
|
exports.OfferService = OfferService;
|
package/package.json
CHANGED
|
@@ -25,8 +25,4 @@ export interface MaximumLocalParams {
|
|
|
25
25
|
isCreditInsuranceAccelerated: boolean;
|
|
26
26
|
numberOfGraceMonths: number;
|
|
27
27
|
creditInsuranceNumberOfMonths: number;
|
|
28
|
-
ltvThresholdForFrontendRatio?: number;
|
|
29
|
-
maximumFrontendRatioHighLTV?: number;
|
|
30
|
-
maximumFrontendRatioLowLTV?: number;
|
|
31
|
-
loanToValueHome?: number;
|
|
32
28
|
}
|