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 maximumFrontendRatio = params.maximumFrontendRatio.value();
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, maximumFrontendRatio) {
47
+ MaximumLocalService.prototype.calculateIncomeDividendNumerator = function (longTermMonthlyFee, params) {
62
48
  var _a;
63
- var frontendRatio = maximumFrontendRatio || params.maximumFrontendRatio.value();
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: 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "creditu-common-library",
3
- "version": "2.3.12",
3
+ "version": "2.3.13",
4
4
  "description": "Common library for Creditu applications",
5
5
  "main": "lib/index.js",
6
6
  "files": [
@@ -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
  }