bdpformulas 1.0.51 → 1.0.52

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.
@@ -153,8 +153,9 @@ class PrestamoDirectoHandler {
153
153
  this.prestamo.AmortizacionesCapital = amortizacion;
154
154
  }
155
155
  setPlazoRemanente() {
156
- this.prestamo.PlazoRemanenteAños = Math.floor((0, utils_1.ourParseFloat)(this.prestamo.Plazo) -
157
- (0, utils_1.ourParseFloat)(this.prestamo.Gracia) / 12);
156
+ this.prestamo.PlazoRemanenteAños =
157
+ (0, utils_1.ourParseFloat)(this.prestamo.Plazo) -
158
+ (0, utils_1.ourParseFloat)(this.prestamo.Gracia) / 12;
158
159
  }
159
160
  setPlazos() {
160
161
  this.prestamo.Plazos = (0, utils_1.generatePlazos)({
@@ -196,7 +197,7 @@ class PrestamoDirectoHandler {
196
197
  if (i === 1) {
197
198
  if (plazo && this.prestamo.AnnoProyectadoInicio === 1) {
198
199
  if ((0, utils_1.ourParseFloat)(this.prestamo.PlazoRemanenteAños) < plazo) {
199
- value = 0;
200
+ value = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal);
200
201
  }
201
202
  else {
202
203
  value =
@@ -21,7 +21,6 @@ interface Cuota {
21
21
  poliza: number;
22
22
  cuotaTotal: number;
23
23
  saldoCapital: number;
24
- tiempoDias: number;
25
24
  }
26
25
  export interface ResumenAnual {
27
26
  anio: number;
@@ -13,7 +13,7 @@ exports.frecuenciaMeses = {
13
13
  function simuladorCuotas({ monto, plazo, frecuencia, tipoCuota, periodoGracia = 0, tasaInteres = 0, polizaSD = 0, plazoMeses = false }) {
14
14
  const mesesPorFrecuencia = exports.frecuenciaMeses[frecuencia];
15
15
  const plazoEnMeses = !plazoMeses ? plazo * 12 : plazo;
16
- const cuotasTotales = Math.ceil(plazoEnMeses / mesesPorFrecuencia);
16
+ const cuotasTotales = plazoEnMeses / mesesPorFrecuencia;
17
17
  const tasaPorPeriodo = tasaInteres / (12 / mesesPorFrecuencia) / 100;
18
18
  let saldoCapital = monto;
19
19
  const cuotas = [];
@@ -22,29 +22,40 @@ function simuladorCuotas({ monto, plazo, frecuencia, tipoCuota, periodoGracia =
22
22
  let interesAnual = 0;
23
23
  let cuotaAnual = 0;
24
24
  let anioActual = 1;
25
- // Calcular cuota fija si aplica
26
- const cuotaFija = tipoCuota === 'FIJA'
27
- ? (monto * tasaPorPeriodo) /
28
- (1 - Math.pow(1 + tasaPorPeriodo, -cuotasTotales))
29
- : 0;
25
+ const diasFrecuencia = 360 / (mesesPorFrecuencia * 30);
26
+ const diasGracia = periodoGracia / 12;
30
27
  for (let i = 1; i <= cuotasTotales; i++) {
28
+ if (i > 1) {
29
+ const anteriorCuota = cuotas.at(-1);
30
+ saldoCapital =
31
+ ourParseFloat(anteriorCuota?.saldoCapital) -
32
+ ourParseFloat(anteriorCuota?.amortizacion);
33
+ }
34
+ const interes = saldoCapital * tasaPorPeriodo;
31
35
  let amortizacion = 0;
32
- let interes = 0;
33
- let cuotaCredito = 0;
34
- const tiempoDias = mesesPorFrecuencia * 30; // Aproximado.
35
- if (i > Math.ceil(periodoGracia / mesesPorFrecuencia)) {
36
- interes = saldoCapital * tasaPorPeriodo;
37
- if (tipoCuota === 'FIJA') {
38
- cuotaCredito = cuotaFija;
39
- amortizacion = cuotaCredito - interes;
36
+ let cuotaCredito;
37
+ if (tipoCuota === 'FIJA') {
38
+ const tasaInteresFrecuencia = tasaInteres / 100 / diasFrecuencia;
39
+ if (i > 1) {
40
+ const anteriorCuota = cuotas.at(-1);
41
+ cuotaCredito = anteriorCuota?.cuotaCredito ?? 0;
40
42
  }
41
43
  else {
44
+ cuotaCredito =
45
+ monto *
46
+ (tasaInteresFrecuencia /
47
+ (1 -
48
+ Math.pow(1 + tasaInteresFrecuencia, -(diasFrecuencia *
49
+ ((plazoEnMeses - periodoGracia) / 12)))));
50
+ }
51
+ amortizacion = cuotaCredito - interes;
52
+ }
53
+ else {
54
+ if (i > diasFrecuencia * diasGracia) {
42
55
  amortizacion =
43
- monto /
44
- (cuotasTotales -
45
- Math.ceil(periodoGracia / mesesPorFrecuencia));
46
- cuotaCredito = amortizacion + interes;
56
+ monto / (diasFrecuencia * (plazoEnMeses / 12 - diasGracia));
47
57
  }
58
+ cuotaCredito = amortizacion + interes;
48
59
  }
49
60
  const cuotaTotal = cuotaCredito + polizaSD;
50
61
  cuotas.push({
@@ -54,10 +65,8 @@ function simuladorCuotas({ monto, plazo, frecuencia, tipoCuota, periodoGracia =
54
65
  cuotaCredito,
55
66
  poliza: polizaSD,
56
67
  cuotaTotal,
57
- saldoCapital,
58
- tiempoDias
68
+ saldoCapital
59
69
  });
60
- saldoCapital -= amortizacion;
61
70
  // Acumular valores anuales
62
71
  capitalAnual += amortizacion;
63
72
  interesAnual += interes;