bdpformulas 1.0.48 → 1.0.50
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.
- package/build/context.js +1 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +3 -1
- package/build/models/eeff/admFinanciera/index.d.ts +144 -0
- package/build/models/eeff/admFinanciera/index.js +26 -0
- package/build/strategies/agriculture/balanceAgr.strategy.js +1 -0
- package/build/strategies/agriculture/costos.detail/costosCalc.js +1 -1
- package/build/strategies/agriculture/flujoProyAgr.strategy.js +3 -2
- package/build/strategies/agriculture/ventas.detail/ventas.calc.js +2 -1
- package/build/strategies/analisisFinancieros.strategy.js +20 -22
- package/build/strategies/balance.strategy.js +14 -2
- package/build/strategies/common/analisisFinCalculos/analisisGrafico.calc.js +47 -45
- package/build/strategies/common/analisisFinCalculos/ratios.calc.js +158 -157
- package/build/strategies/common/balance.calc.js +3 -1
- package/build/strategies/common/balanceCalculos/balanceAux.calc.js +11 -1
- package/build/strategies/common/balanceCalculos/flujoAux.calc.js +2 -11
- package/build/strategies/common/flujoCalculos/flujoConstructor.js +313 -308
- package/build/strategies/eeff/admFinanciera/amortizaciones.d.ts +8 -0
- package/build/strategies/eeff/admFinanciera/amortizaciones.js +31 -0
- package/build/strategies/eeff/admFinanciera/aplicacionesHandler.d.ts +16 -0
- package/build/strategies/eeff/admFinanciera/aplicacionesHandler.js +175 -0
- package/build/strategies/eeff/admFinanciera/lineasMixtasHandler.d.ts +7 -0
- package/build/strategies/eeff/admFinanciera/lineasMixtasHandler.js +40 -0
- package/build/strategies/eeff/admFinanciera/prestamoBajoLineaHandler.d.ts +13 -0
- package/build/strategies/eeff/admFinanciera/prestamoBajoLineaHandler.js +75 -0
- package/build/strategies/eeff/admFinanciera/prestamoDirectoHandler.d.ts +26 -0
- package/build/strategies/eeff/admFinanciera/prestamoDirectoHandler.js +267 -0
- package/build/strategies/eeff/admFinanciera/prestamoLeasingHandler.d.ts +20 -0
- package/build/strategies/eeff/admFinanciera/prestamoLeasingHandler.js +162 -0
- package/build/strategies/eeff/admFinanciera/proyeccionPrestamosDirectosHandler.d.ts +27 -0
- package/build/strategies/eeff/admFinanciera/proyeccionPrestamosDirectosHandler.js +219 -0
- package/build/strategies/eeff/admFinanciera/utils.d.ts +96 -0
- package/build/strategies/eeff/admFinanciera/utils.js +209 -0
- package/build/strategies/eeff/admFinanciera.strategy.d.ts +14 -0
- package/build/strategies/eeff/admFinanciera.strategy.js +139 -0
- package/build/strategies/eeff/balanceEEFF.strategy.js +3 -2
- package/build/strategies/eeff/flujoProyEEFF.strategy.js +3 -2
- package/build/strategies/general/balanceGeneral.strategy.js +2 -1
- package/build/strategies/general/flujoProyGeneral.strategy.js +2 -1
- package/build/strategies/pecuary/balancePec.strategy.js +7 -6
- package/build/strategies/pecuary/desarrollo.detail/desarrolloCalc.js +11 -3
- package/build/strategies/pecuary/desarrollo.strategy.js +2 -2
- package/build/strategies/pecuary/flujoProyPec.strategy.js +7 -6
- package/build/strategies/pecuary/ventas.detail/estacionalidadCalc.js +7 -1
- package/build/strategies/pecuary/ventas.detail/ventasIngresosCalc.js +7 -1
- package/build/strategies/production/balancePrd.strategy.js +7 -6
- package/build/strategies/production/costos.detail/costosCalc.js +1 -1
- package/build/strategies/production/flujoProyPrd.strategy.js +7 -6
- package/package.json +26 -21
- package/tsconfig.json +1 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PrestamoDirecto, ProyeccionPrestamo } from "../../../models/eeff/admFinanciera";
|
|
2
|
+
import { ResumenAnual } from "./utils";
|
|
3
|
+
export declare class Amortizaciones {
|
|
4
|
+
cuadroAmortizacionesCapitalVariable: Partial<ProyeccionPrestamo>[];
|
|
5
|
+
cuadroAmortizacionesCapitalFija: Partial<ProyeccionPrestamo>[];
|
|
6
|
+
constructor();
|
|
7
|
+
agregarAmortizacionCapital(prestamo: Partial<PrestamoDirecto>, resumenAnual: ResumenAnual[]): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Amortizaciones = void 0;
|
|
4
|
+
class Amortizaciones {
|
|
5
|
+
cuadroAmortizacionesCapitalVariable;
|
|
6
|
+
cuadroAmortizacionesCapitalFija;
|
|
7
|
+
constructor() {
|
|
8
|
+
this.cuadroAmortizacionesCapitalVariable = [];
|
|
9
|
+
this.cuadroAmortizacionesCapitalFija = [];
|
|
10
|
+
}
|
|
11
|
+
agregarAmortizacionCapital(prestamo, resumenAnual) {
|
|
12
|
+
const añoProyectadoInicio = prestamo.AnnoProyectadoInicio;
|
|
13
|
+
const amortizacion = { Descripcion: prestamo.Descripcion };
|
|
14
|
+
if (añoProyectadoInicio && añoProyectadoInicio <= 3) {
|
|
15
|
+
let i = añoProyectadoInicio;
|
|
16
|
+
resumenAnual.forEach(resumen => {
|
|
17
|
+
amortizacion[`Gestion${i}`] = resumen.capitalAnual;
|
|
18
|
+
i++;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
if (prestamo.TipoFacilidad == 'FIJA') {
|
|
22
|
+
this.cuadroAmortizacionesCapitalFija.push(amortizacion);
|
|
23
|
+
this.cuadroAmortizacionesCapitalVariable.push({});
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
this.cuadroAmortizacionesCapitalVariable.push(amortizacion);
|
|
27
|
+
this.cuadroAmortizacionesCapitalFija.push({});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.Amortizaciones = Amortizaciones;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AdministracionFinancieraCalcData } from "../../../models/eeff/admFinanciera";
|
|
2
|
+
interface AplicacionesData {
|
|
3
|
+
data: AdministracionFinancieraCalcData;
|
|
4
|
+
}
|
|
5
|
+
export declare class AplicacionesHandler {
|
|
6
|
+
private data;
|
|
7
|
+
constructor({ data }: AplicacionesData);
|
|
8
|
+
handle(): void;
|
|
9
|
+
private setKOLineaCredito;
|
|
10
|
+
private setKOPrestamoDirecto;
|
|
11
|
+
private setKIPrestamoDirecto;
|
|
12
|
+
private setMixtos;
|
|
13
|
+
private setKILeasingFinanciero;
|
|
14
|
+
private setKIKOLineas;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AplicacionesHandler = void 0;
|
|
4
|
+
const admFinanciera_1 = require("../../../models/eeff/admFinanciera");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
class AplicacionesHandler {
|
|
7
|
+
data;
|
|
8
|
+
constructor({ data }) {
|
|
9
|
+
this.data = data;
|
|
10
|
+
}
|
|
11
|
+
handle() {
|
|
12
|
+
this.setKOLineaCredito();
|
|
13
|
+
this.setKOPrestamoDirecto();
|
|
14
|
+
this.setKIPrestamoDirecto();
|
|
15
|
+
this.setMixtos();
|
|
16
|
+
this.setKILeasingFinanciero();
|
|
17
|
+
this.setKIKOLineas();
|
|
18
|
+
}
|
|
19
|
+
setKOLineaCredito() {
|
|
20
|
+
const filaTotales = {
|
|
21
|
+
Descripcion: 'KO - Línea de Crédito 100% KO',
|
|
22
|
+
Clasificador: 'T'
|
|
23
|
+
};
|
|
24
|
+
const filas = this.data.PrestamoBajoLinea.filter(pr => pr.Clasificador !== 'T')
|
|
25
|
+
.map(pr => {
|
|
26
|
+
for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
|
|
27
|
+
filaTotales[`Gestion${i}`] = (0, utils_1.ourParseFloat)(filaTotales[`Gestion${i}`]) + (0, utils_1.ourParseFloat)(pr.Aplicaciones?.[`Gestion${i}`]);
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
Descripcion: pr.Descripcion,
|
|
31
|
+
...pr.Aplicaciones
|
|
32
|
+
};
|
|
33
|
+
});
|
|
34
|
+
this.data.ProyeccionAplicaciones.push(...filas, filaTotales);
|
|
35
|
+
}
|
|
36
|
+
setKOPrestamoDirecto() {
|
|
37
|
+
const filaTotales = {
|
|
38
|
+
Descripcion: 'KO - Prestamo Directo',
|
|
39
|
+
Clasificador: 'T'
|
|
40
|
+
};
|
|
41
|
+
const filas = this.data.PrestamoDirecto.filter(pr => pr.TipoExistencia === 'NUEVA' && pr.DestinoOperacionId === admFinanciera_1.TipoDestinoEnum.CapitalOperacion)
|
|
42
|
+
.map(pr => {
|
|
43
|
+
const proyeccion = {};
|
|
44
|
+
if (pr.AnnoProyectadoInicio) {
|
|
45
|
+
let value = (0, utils_1.ourParseFloat)(pr.MontoOriginal);
|
|
46
|
+
proyeccion[`Gestion${pr.AnnoProyectadoInicio}`] = value;
|
|
47
|
+
filaTotales[`Gestion${pr.AnnoProyectadoInicio}`] = (0, utils_1.ourParseFloat)(filaTotales[`Gestion${pr.AnnoProyectadoInicio}`]) + value;
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
Descripcion: pr.Descripcion,
|
|
51
|
+
...proyeccion
|
|
52
|
+
};
|
|
53
|
+
});
|
|
54
|
+
this.data.ProyeccionAplicaciones.push(...filas, filaTotales);
|
|
55
|
+
}
|
|
56
|
+
setKIPrestamoDirecto() {
|
|
57
|
+
const filaTotales = {
|
|
58
|
+
Descripcion: 'KI - Prestamo Directo',
|
|
59
|
+
Clasificador: 'T'
|
|
60
|
+
};
|
|
61
|
+
const filas = this.data.PrestamoDirecto.filter(pr => pr.TipoExistencia === 'NUEVA' && pr.DestinoOperacionId === admFinanciera_1.TipoDestinoEnum.CapitalInversion)
|
|
62
|
+
.map(pr => {
|
|
63
|
+
const proyeccion = {};
|
|
64
|
+
if (pr.AnnoProyectadoInicio) {
|
|
65
|
+
let value = (0, utils_1.ourParseFloat)(pr.MontoOriginal);
|
|
66
|
+
proyeccion[`Gestion${pr.AnnoProyectadoInicio}`] = value;
|
|
67
|
+
filaTotales[`Gestion${pr.AnnoProyectadoInicio}`] = (0, utils_1.ourParseFloat)(filaTotales[`Gestion${pr.AnnoProyectadoInicio}`]) + value;
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
Descripcion: pr.Descripcion,
|
|
71
|
+
...proyeccion
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
this.data.ProyeccionAplicaciones.push(...filas, filaTotales);
|
|
75
|
+
}
|
|
76
|
+
setMixtos() {
|
|
77
|
+
const filaTotales = {
|
|
78
|
+
Descripcion: 'MIXTO - Pagares, Bonos, Etc.',
|
|
79
|
+
Clasificador: 'T'
|
|
80
|
+
};
|
|
81
|
+
const filas = this.data.PrestamoDirecto.filter(pr => pr.TipoExistencia === 'NUEVA' && pr.DestinoOperacionId === admFinanciera_1.TipoDestinoEnum.Otros)
|
|
82
|
+
.map(pr => {
|
|
83
|
+
const proyeccion = {};
|
|
84
|
+
if (pr.AnnoProyectadoInicio) {
|
|
85
|
+
let value = (0, utils_1.ourParseFloat)(pr.MontoOriginal);
|
|
86
|
+
proyeccion[`Gestion${pr.AnnoProyectadoInicio}`] = value;
|
|
87
|
+
filaTotales[`Gestion${pr.AnnoProyectadoInicio}`] = (0, utils_1.ourParseFloat)(filaTotales[`Gestion${pr.AnnoProyectadoInicio}`]) + value;
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
Descripcion: pr.Descripcion,
|
|
91
|
+
...proyeccion
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
this.data.ProyeccionAplicaciones.push(...filas, filaTotales);
|
|
95
|
+
}
|
|
96
|
+
setKILeasingFinanciero() {
|
|
97
|
+
const filaTotales = {
|
|
98
|
+
Descripcion: 'KI - Leasing Financiero',
|
|
99
|
+
Clasificador: 'T'
|
|
100
|
+
};
|
|
101
|
+
const filas = this.data.PrestamoLeasing.filter(pr => pr.TipoOperacion2 === admFinanciera_1.TipoOperacionExistencia.Nueva)
|
|
102
|
+
.map(pr => {
|
|
103
|
+
const proyeccion = {};
|
|
104
|
+
if (pr.AnnoProyectadoInicio) {
|
|
105
|
+
let value = (0, utils_1.ourParseFloat)(pr.ActivacionOperacion);
|
|
106
|
+
proyeccion[`Gestion${pr.AnnoProyectadoInicio}`] = value;
|
|
107
|
+
filaTotales[`Gestion${pr.AnnoProyectadoInicio}`] = (0, utils_1.ourParseFloat)(filaTotales[`Gestion${pr.AnnoProyectadoInicio}`]) + value;
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
Descripcion: pr.Descripcion,
|
|
111
|
+
...proyeccion
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
this.data.ProyeccionAplicaciones.push(...filas, filaTotales);
|
|
115
|
+
}
|
|
116
|
+
setKIKOLineas() {
|
|
117
|
+
const filaTotales = {
|
|
118
|
+
Descripcion: 'KO - Línea de Crédito 100% KO',
|
|
119
|
+
Clasificador: 'T'
|
|
120
|
+
};
|
|
121
|
+
const filas = [];
|
|
122
|
+
let i = 0;
|
|
123
|
+
let lineas = this.data.LineasMixtasBDP;
|
|
124
|
+
while (i < lineas.length) {
|
|
125
|
+
const filaVencimiento = lineas.at(i + 1);
|
|
126
|
+
if (filaVencimiento?.Clasificador !== 'T') {
|
|
127
|
+
const filaDescripcion = lineas.at(i);
|
|
128
|
+
const filaDeuda = lineas.at(i + 2);
|
|
129
|
+
const fila = {
|
|
130
|
+
Descripcion: filaDescripcion?.Descripcion,
|
|
131
|
+
};
|
|
132
|
+
for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
|
|
133
|
+
let value;
|
|
134
|
+
if (i == 1) {
|
|
135
|
+
value = (0, utils_1.ourParseFloat)(filaVencimiento?.[`Gestion${i}`]) + (0, utils_1.ourParseFloat)(filaDeuda?.[`Gestion${i}`]);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
value = (0, utils_1.ourParseFloat)(filaDeuda?.[`Gestion${i}`]) - (0, utils_1.ourParseFloat)(filaDeuda?.[`Gestion${i - 1}`]) + (0, utils_1.ourParseFloat)(filaVencimiento?.[`Gestion${i}`]);
|
|
139
|
+
}
|
|
140
|
+
fila[`Gestion${i}`] = value;
|
|
141
|
+
filaTotales[`Gestion${i}`] = (0, utils_1.ourParseFloat)(filaTotales[`Gestion${i}`]) + value;
|
|
142
|
+
}
|
|
143
|
+
filas.push(fila);
|
|
144
|
+
}
|
|
145
|
+
i += 4;
|
|
146
|
+
}
|
|
147
|
+
i = 0;
|
|
148
|
+
lineas = this.data.LineasMixtasOtros;
|
|
149
|
+
while (i < lineas.length) {
|
|
150
|
+
const filaVencimiento = lineas.at(i + 1);
|
|
151
|
+
if (filaVencimiento?.Clasificador !== 'T') {
|
|
152
|
+
const filaDescripcion = lineas.at(i);
|
|
153
|
+
const filaDeuda = lineas.at(i + 2);
|
|
154
|
+
const fila = {
|
|
155
|
+
Descripcion: filaDescripcion?.Descripcion,
|
|
156
|
+
};
|
|
157
|
+
for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
|
|
158
|
+
let value;
|
|
159
|
+
if (i == 1) {
|
|
160
|
+
value = (0, utils_1.ourParseFloat)(filaVencimiento?.[`Gestion${i}`]) + (0, utils_1.ourParseFloat)(filaDeuda?.[`Gestion${i}`]);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
value = (0, utils_1.ourParseFloat)(filaDeuda?.[`Gestion${i}`]) - (0, utils_1.ourParseFloat)(filaDeuda?.[`Gestion${i - 1}`]) + (0, utils_1.ourParseFloat)(filaVencimiento?.[`Gestion${i}`]);
|
|
164
|
+
}
|
|
165
|
+
fila[`Gestion${i}`] = value;
|
|
166
|
+
filaTotales[`Gestion${i}`] = (0, utils_1.ourParseFloat)(filaTotales[`Gestion${i}`]) + value;
|
|
167
|
+
}
|
|
168
|
+
filas.push(fila);
|
|
169
|
+
}
|
|
170
|
+
i += 4;
|
|
171
|
+
}
|
|
172
|
+
this.data.ProyeccionAplicaciones.push(...filas, filaTotales);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
exports.AplicacionesHandler = AplicacionesHandler;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LineasMixtasHandler = void 0;
|
|
4
|
+
const admFinanciera_1 = require("../../../models/eeff/admFinanciera");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
class LineasMixtasHandler {
|
|
7
|
+
data;
|
|
8
|
+
constructor(data) {
|
|
9
|
+
this.data = data;
|
|
10
|
+
}
|
|
11
|
+
handle() {
|
|
12
|
+
this.formatLineasMixtas(this.data.LineasMixtasBDP);
|
|
13
|
+
this.formatLineasMixtas(this.data.LineasMixtasOtros);
|
|
14
|
+
}
|
|
15
|
+
formatLineasMixtas(lineas) {
|
|
16
|
+
const filasTotales = [
|
|
17
|
+
{ Descripcion: 'Total Vencimiento Corriente de Deuda de Largo Plazo', Clasificador: 'T', RubroId: admFinanciera_1.rubros.lineasMixtas.vencimientoCorrienteLargoPlazo },
|
|
18
|
+
{ Descripcion: 'Total Deuda Financiera de largo plazo', Clasificador: 'T', RubroId: admFinanciera_1.rubros.lineasMixtas.deudaFinancieraLargoPlazo },
|
|
19
|
+
{ Descripcion: 'Total Gastos Financieros y Comisiones', Clasificador: 'T', RubroId: admFinanciera_1.rubros.lineasMixtas.gastosFinancierosYComisiones },
|
|
20
|
+
];
|
|
21
|
+
let i = 0;
|
|
22
|
+
while (i < lineas.length) {
|
|
23
|
+
const filaVencimiento = lineas.at(i + 1);
|
|
24
|
+
const filaDeuda = lineas.at(i + 2);
|
|
25
|
+
const filaGastos = lineas.at(i + 3);
|
|
26
|
+
const tasa = (0, utils_1.ourParseFloat)(filaGastos?.Tasa) / 100;
|
|
27
|
+
for (let j = 1; j <= this.data.CantidadProyeccion; j++) {
|
|
28
|
+
if (j > 1 && filaGastos) {
|
|
29
|
+
filaGastos[`Gestion${j}`] = (0, utils_1.ourParseFloat)(((0, utils_1.ourParseFloat)(filaVencimiento?.[`Gestion${j - 1}`]) + (0, utils_1.ourParseFloat)(filaDeuda?.[`Gestion${j - 1}`])) * tasa);
|
|
30
|
+
}
|
|
31
|
+
filasTotales[0][`Gestion${j}`] = (0, utils_1.ourParseFloat)(filasTotales[0][`Gestion${j}`]) + (0, utils_1.ourParseFloat)(filaVencimiento?.[`Gestion${j}`]);
|
|
32
|
+
filasTotales[1][`Gestion${j}`] = (0, utils_1.ourParseFloat)(filasTotales[1][`Gestion${j}`]) + (0, utils_1.ourParseFloat)(filaDeuda?.[`Gestion${j}`]);
|
|
33
|
+
filasTotales[2][`Gestion${j}`] = (0, utils_1.ourParseFloat)(filasTotales[2][`Gestion${j}`]) + (0, utils_1.ourParseFloat)(filaGastos?.[`Gestion${j}`]);
|
|
34
|
+
}
|
|
35
|
+
i += 4;
|
|
36
|
+
}
|
|
37
|
+
lineas.push(...filasTotales);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.LineasMixtasHandler = LineasMixtasHandler;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AdministracionFinancieraData, PrestamoBajoLinea } from "../../../models/eeff/admFinanciera";
|
|
2
|
+
export declare class PrestamoBajoLineaHandler {
|
|
3
|
+
private data;
|
|
4
|
+
private prestamo;
|
|
5
|
+
constructor(prestamo: Partial<PrestamoBajoLinea>, data: AdministracionFinancieraData);
|
|
6
|
+
handle(): Partial<PrestamoBajoLinea>;
|
|
7
|
+
private setCantidadAños;
|
|
8
|
+
private setSaldoLineaAplicar;
|
|
9
|
+
private setTasaPonderada;
|
|
10
|
+
private setProyecciones;
|
|
11
|
+
private setAplicacion;
|
|
12
|
+
private setProyeccion;
|
|
13
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrestamoBajoLineaHandler = void 0;
|
|
4
|
+
const luxon_1 = require("luxon");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
class PrestamoBajoLineaHandler {
|
|
7
|
+
data;
|
|
8
|
+
prestamo;
|
|
9
|
+
constructor(prestamo, data) {
|
|
10
|
+
this.data = data;
|
|
11
|
+
this.prestamo = prestamo;
|
|
12
|
+
}
|
|
13
|
+
handle() {
|
|
14
|
+
this.prestamo.Proyecciones = {};
|
|
15
|
+
this.prestamo.Aplicaciones = {};
|
|
16
|
+
this.setCantidadAños();
|
|
17
|
+
this.setTasaPonderada();
|
|
18
|
+
this.setSaldoLineaAplicar();
|
|
19
|
+
this.setProyecciones();
|
|
20
|
+
return this.prestamo;
|
|
21
|
+
}
|
|
22
|
+
setCantidadAños() {
|
|
23
|
+
let cantidadAños;
|
|
24
|
+
if (this.prestamo.TipoExistencia == 'EXISTENTE' && this.prestamo.VencimientoLinea) {
|
|
25
|
+
const fechaInicio = luxon_1.DateTime.fromISO(this.data.InicioProyeccion).endOf('month');
|
|
26
|
+
const fechaVencimiento = luxon_1.DateTime.fromISO(this.prestamo.VencimientoLinea).endOf('month');
|
|
27
|
+
const diferenciaAños = Math.ceil(Math.abs(fechaInicio.diff(fechaVencimiento, 'years').years));
|
|
28
|
+
if (diferenciaAños > 0) {
|
|
29
|
+
cantidadAños = diferenciaAños;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
cantidadAños = this.prestamo.Plazo;
|
|
34
|
+
}
|
|
35
|
+
this.prestamo.CantidadAnnos = cantidadAños;
|
|
36
|
+
}
|
|
37
|
+
setSaldoLineaAplicar() {
|
|
38
|
+
this.prestamo.SaldoLineaAplicar = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) - (0, utils_1.ourParseFloat)(this.prestamo.MontoUtilizado);
|
|
39
|
+
}
|
|
40
|
+
setTasaPonderada() {
|
|
41
|
+
let totalMonto = this.data.PrestamoBajoLinea.reduce((acc, curr) => acc + (0, utils_1.ourParseFloat)(curr.MontoOriginal), 0);
|
|
42
|
+
let promedio = 0;
|
|
43
|
+
if (totalMonto) {
|
|
44
|
+
promedio = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) / totalMonto;
|
|
45
|
+
}
|
|
46
|
+
this.prestamo.TasaPonderada = (0, utils_1.ourParseFloat)(promedio * (0, utils_1.ourParseFloat)(this.prestamo.Tasa));
|
|
47
|
+
}
|
|
48
|
+
setProyecciones() {
|
|
49
|
+
for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
|
|
50
|
+
this.setProyeccion(i);
|
|
51
|
+
this.setAplicacion(i);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
setAplicacion(gestion) {
|
|
55
|
+
let value;
|
|
56
|
+
if (gestion === 1) {
|
|
57
|
+
if (this.prestamo.TipoExistencia === 'EXISTENTE') {
|
|
58
|
+
value = this.prestamo.SaldoLineaAplicar;
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
value = this.prestamo.MontoOriginal;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
value = (0, utils_1.ourParseFloat)(this.prestamo.Proyecciones?.[`Gestion${gestion}`]) - (0, utils_1.ourParseFloat)(this.prestamo.Proyecciones?.[`Gestion${gestion - 1}`]);
|
|
66
|
+
}
|
|
67
|
+
this.prestamo.Aplicaciones[`Gestion${gestion}`] = (0, utils_1.ourParseFloat)(value);
|
|
68
|
+
}
|
|
69
|
+
setProyeccion(gestion) {
|
|
70
|
+
if (gestion <= (0, utils_1.ourParseFloat)(this.prestamo.CantidadAnnos)) {
|
|
71
|
+
this.prestamo.Proyecciones[`Gestion${gestion}`] = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.PrestamoBajoLineaHandler = PrestamoBajoLineaHandler;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AdministracionFinancieraData, PrestamoDirecto } from "../../../models/eeff/admFinanciera";
|
|
2
|
+
interface HandlerData {
|
|
3
|
+
data: AdministracionFinancieraData;
|
|
4
|
+
prestamo: Partial<PrestamoDirecto>;
|
|
5
|
+
}
|
|
6
|
+
export declare class PrestamoDirectoHandler {
|
|
7
|
+
private data;
|
|
8
|
+
private prestamo;
|
|
9
|
+
private simulador;
|
|
10
|
+
private simuladorFijo2;
|
|
11
|
+
constructor({ data, prestamo }: HandlerData);
|
|
12
|
+
handle(): Partial<PrestamoDirecto>;
|
|
13
|
+
private setMesesPorcionPagada;
|
|
14
|
+
private setProyecciones;
|
|
15
|
+
private setAmortizacionInteresVariable;
|
|
16
|
+
private setAmortizacionesInteresFija;
|
|
17
|
+
private setPorcionNoCorriente;
|
|
18
|
+
private setPorcionCuotasPagadas;
|
|
19
|
+
private setAmortizacionesCapital;
|
|
20
|
+
private setPlazoRemanente;
|
|
21
|
+
private setPlazos;
|
|
22
|
+
private setAmortizacionesCapitalEfectoCorrienteYCuotaFinal;
|
|
23
|
+
private setCuadroExposicion;
|
|
24
|
+
private setCuadroEfectoLinea;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PrestamoDirectoHandler = void 0;
|
|
4
|
+
const luxon_1 = require("luxon");
|
|
5
|
+
const utils_1 = require("./utils");
|
|
6
|
+
class PrestamoDirectoHandler {
|
|
7
|
+
data;
|
|
8
|
+
prestamo;
|
|
9
|
+
simulador;
|
|
10
|
+
simuladorFijo2 = null;
|
|
11
|
+
constructor({ data, prestamo }) {
|
|
12
|
+
this.data = data;
|
|
13
|
+
this.prestamo = prestamo;
|
|
14
|
+
this.simulador = (0, utils_1.simuladorCuotas)({
|
|
15
|
+
monto: prestamo.MontoOriginal ?? 0,
|
|
16
|
+
plazo: prestamo.Plazo ?? 0,
|
|
17
|
+
frecuencia: prestamo.TipoPeriodicidadId ?? 'MENSUAL',
|
|
18
|
+
tipoCuota: prestamo.TipoFacilidad ?? 'VARIABLE',
|
|
19
|
+
periodoGracia: prestamo.Gracia,
|
|
20
|
+
tasaInteres: prestamo.Tasa
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
handle() {
|
|
24
|
+
this.prestamo.PorcionesNoCorrientes = {};
|
|
25
|
+
this.prestamo.AmortizacionesInteres = {};
|
|
26
|
+
this.setMesesPorcionPagada();
|
|
27
|
+
this.setPorcionCuotasPagadas();
|
|
28
|
+
this.setPlazoRemanente();
|
|
29
|
+
this.setAmortizacionesCapital();
|
|
30
|
+
this.setPlazos();
|
|
31
|
+
this.setAmortizacionesCapitalEfectoCorrienteYCuotaFinal();
|
|
32
|
+
this.setCuadroExposicion();
|
|
33
|
+
this.setCuadroEfectoLinea();
|
|
34
|
+
this.setProyecciones();
|
|
35
|
+
this.setAmortizacionesInteresFija();
|
|
36
|
+
return this.prestamo;
|
|
37
|
+
}
|
|
38
|
+
setMesesPorcionPagada() {
|
|
39
|
+
if (this.prestamo.FechaDesembolso) {
|
|
40
|
+
const inicial = luxon_1.DateTime.fromISO(this.data.InicioProyeccion);
|
|
41
|
+
const desembolso = luxon_1.DateTime.fromISO(this.prestamo.FechaDesembolso);
|
|
42
|
+
this.prestamo.MesesPorcionPagada = Math.floor(inicial.diff(desembolso, 'months').months);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
setProyecciones() {
|
|
46
|
+
for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
|
|
47
|
+
this.setPorcionNoCorriente(i);
|
|
48
|
+
this.setAmortizacionInteresVariable(i);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
setAmortizacionInteresVariable(gestion) {
|
|
52
|
+
if (this.prestamo.TipoFacilidad === 'VARIABLE') {
|
|
53
|
+
let value;
|
|
54
|
+
const tasa = (0, utils_1.ourParseFloat)(this.prestamo.Tasa) / 100;
|
|
55
|
+
const mesesPorcionPagada = (0, utils_1.ourParseFloat)(this.prestamo.MesesPorcionPagada);
|
|
56
|
+
const plazo = (0, utils_1.ourParseFloat)(this.prestamo.Plazos?.[`Gestion${gestion}`]);
|
|
57
|
+
let porcionCorriente = (0, utils_1.ourParseFloat)(this.prestamo.AmortizacionesCapitalCuotaFinal?.[`Gestion${gestion}`]);
|
|
58
|
+
let porcionNoCorriente = (0, utils_1.ourParseFloat)(this.prestamo.PorcionesNoCorrientes?.[`Gestion${gestion}`]);
|
|
59
|
+
const porcionCorrientePagada = (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada);
|
|
60
|
+
if (gestion == 1) {
|
|
61
|
+
if ((0, utils_1.ourParseFloat)(this.prestamo.Gracia) / 12 > 0) {
|
|
62
|
+
value = (porcionCorriente + porcionNoCorriente) * tasa * mesesPorcionPagada / 12;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
if (plazo == this.prestamo.PlazoRemanenteAños) {
|
|
66
|
+
value = (porcionCorriente + porcionNoCorriente + porcionCorrientePagada) * tasa * mesesPorcionPagada / 12;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
value = (porcionCorriente + porcionNoCorriente) * tasa;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
porcionCorriente = (0, utils_1.ourParseFloat)(this.prestamo.AmortizacionesCapitalCuotaFinal?.[`Gestion${gestion - 1}`]);
|
|
75
|
+
porcionNoCorriente = (0, utils_1.ourParseFloat)(this.prestamo.PorcionesNoCorrientes?.[`Gestion${gestion - 1}`]);
|
|
76
|
+
value = (porcionCorriente + porcionNoCorriente) * tasa;
|
|
77
|
+
}
|
|
78
|
+
this.prestamo.AmortizacionesInteres[`Gestion${gestion}`] = value;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
setAmortizacionesInteresFija() {
|
|
82
|
+
if (this.prestamo.TipoFacilidad === 'FIJA') {
|
|
83
|
+
const tasa = (0, utils_1.ourParseFloat)(this.prestamo.Tasa) / 100;
|
|
84
|
+
this.prestamo.AmortizacionesInteres[`Gestion1`] = ((0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) * tasa / 12) * (0, utils_1.ourParseFloat)(this.prestamo.MesesPorcionPagada);
|
|
85
|
+
const añoProyectadoInicio = (0, utils_1.ourParseFloat)(this.prestamo.AnnoProyectadoInicio);
|
|
86
|
+
if (this.simuladorFijo2 && añoProyectadoInicio <= 3) {
|
|
87
|
+
let i = añoProyectadoInicio > 1 ? añoProyectadoInicio : 2;
|
|
88
|
+
this.simuladorFijo2.pagosAnuales.forEach(resumen => {
|
|
89
|
+
this.prestamo.AmortizacionesInteres[`Gestion${i}`] = resumen.interesAnual;
|
|
90
|
+
i++;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
setPorcionNoCorriente(gestion) {
|
|
96
|
+
this.prestamo.PorcionesNoCorrientes[`Gestion${gestion}`] = (0, utils_1.ourParseFloat)(this.prestamo.CuadroEfectoLinea?.[`Gestion${gestion}`]) + (0, utils_1.ourParseFloat)(this.prestamo.CuadroEfectoExposicion?.[`Gestion${gestion}`]) - (0, utils_1.ourParseFloat)(this.prestamo.AmortizacionesCapitalCuotaFinal?.[`Gestion${gestion}`]);
|
|
97
|
+
}
|
|
98
|
+
setPorcionCuotasPagadas() {
|
|
99
|
+
if (this.prestamo.FechaDesembolso) {
|
|
100
|
+
const pagado = (0, utils_1.calcularPorcionCorrientePagada)({
|
|
101
|
+
fechaInicial: this.data.InicioProyeccion,
|
|
102
|
+
fechaDesembolso: this.prestamo.FechaDesembolso,
|
|
103
|
+
frecuencia: this.prestamo.TipoPeriodicidadId ?? 'MENSUAL',
|
|
104
|
+
simulador: this.simulador.simulador
|
|
105
|
+
});
|
|
106
|
+
this.prestamo.PorcionPagada = (0, utils_1.ourParseFloat)(pagado.porcionCorrientePagada);
|
|
107
|
+
this.prestamo.CuotasPagadas = pagado.cuotasPagadas;
|
|
108
|
+
if (this.prestamo.TipoFacilidad === 'FIJA') {
|
|
109
|
+
const dif = (0, utils_1.ourParseFloat)(this.prestamo.Gracia) - (0, utils_1.ourParseFloat)(this.prestamo.CuotasPagadas);
|
|
110
|
+
const periodoGracia = dif > 0 ? dif : 0;
|
|
111
|
+
this.simuladorFijo2 = (0, utils_1.simuladorCuotas)({
|
|
112
|
+
monto: (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) - (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada),
|
|
113
|
+
plazo: (0, utils_1.ourParseFloat)(this.prestamo.Plazo) * 12 - (0, utils_1.ourParseFloat)(this.prestamo.CuotasPagadas),
|
|
114
|
+
frecuencia: this.prestamo.TipoPeriodicidadId ?? 'MENSUAL',
|
|
115
|
+
tipoCuota: this.prestamo.TipoFacilidad ?? 'VARIABLE',
|
|
116
|
+
periodoGracia,
|
|
117
|
+
tasaInteres: this.prestamo.Tasa,
|
|
118
|
+
plazoMeses: true
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
setAmortizacionesCapital() {
|
|
124
|
+
const añoProyectadoInicio = this.prestamo.AnnoProyectadoInicio;
|
|
125
|
+
const amortizacion = {};
|
|
126
|
+
if (añoProyectadoInicio && añoProyectadoInicio <= 3) {
|
|
127
|
+
let i = añoProyectadoInicio;
|
|
128
|
+
this.simulador.pagosAnuales.forEach(resumen => {
|
|
129
|
+
amortizacion[`Gestion${i}`] = (0, utils_1.ourParseFloat)(resumen.capitalAnual);
|
|
130
|
+
i++;
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
this.prestamo.AmortizacionesCapital = amortizacion;
|
|
134
|
+
}
|
|
135
|
+
setPlazoRemanente() {
|
|
136
|
+
this.prestamo.PlazoRemanenteAños = Math.floor((0, utils_1.ourParseFloat)(this.prestamo.Plazo) - (0, utils_1.ourParseFloat)(this.prestamo.Gracia) / 12);
|
|
137
|
+
}
|
|
138
|
+
setPlazos() {
|
|
139
|
+
this.prestamo.Plazos = (0, utils_1.generatePlazos)({
|
|
140
|
+
cantidadProyeccion: this.data.CantidadProyeccion,
|
|
141
|
+
inicio: this.prestamo.AnnoProyectadoInicio,
|
|
142
|
+
valor: this.prestamo.Plazo
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
setAmortizacionesCapitalEfectoCorrienteYCuotaFinal() {
|
|
146
|
+
const amortizacion = {};
|
|
147
|
+
const amortizacionCuotaFinal = {};
|
|
148
|
+
const plazos = this.prestamo.Plazos;
|
|
149
|
+
for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
|
|
150
|
+
const plazo = plazos?.[`Gestion${i}`];
|
|
151
|
+
let valor = 0;
|
|
152
|
+
if (plazo == 1) {
|
|
153
|
+
valor = -(0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada);
|
|
154
|
+
}
|
|
155
|
+
else if ((0, utils_1.ourParseFloat)(this.prestamo.PlazoRemanenteAños) + 1 == plazo) {
|
|
156
|
+
valor = (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada);
|
|
157
|
+
}
|
|
158
|
+
amortizacion[`Gestion${i}`] = valor;
|
|
159
|
+
amortizacionCuotaFinal[`Gestion${i}`] = (0, utils_1.ourParseFloat)(valor + (0, utils_1.ourParseFloat)(this.prestamo.AmortizacionesCapital?.[`Gestion${i}`]));
|
|
160
|
+
}
|
|
161
|
+
this.prestamo.AmortizacionesCapitalEfectoCorriente = amortizacion;
|
|
162
|
+
this.prestamo.AmortizacionesCapitalCuotaFinal = amortizacionCuotaFinal;
|
|
163
|
+
}
|
|
164
|
+
setCuadroExposicion() {
|
|
165
|
+
const cuadro = {};
|
|
166
|
+
const plazos = this.prestamo.Plazos;
|
|
167
|
+
if (!this.prestamo.EsBajoLinea) {
|
|
168
|
+
let value;
|
|
169
|
+
for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
|
|
170
|
+
const plazo = (0, utils_1.ourParseFloat)(plazos?.[`Gestion${i}`]);
|
|
171
|
+
const añoProyectadoInicio = (0, utils_1.ourParseFloat)(this.prestamo.AnnoProyectadoInicio);
|
|
172
|
+
if (this.prestamo.TipoFacilidad === 'VARIABLE') {
|
|
173
|
+
if (i === 1) {
|
|
174
|
+
if (plazo && this.prestamo.AnnoProyectadoInicio === 1) {
|
|
175
|
+
if ((0, utils_1.ourParseFloat)(this.prestamo.PlazoRemanenteAños) < plazo) {
|
|
176
|
+
value = 0;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
value = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) - (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
if ((0, utils_1.ourParseFloat)(this.prestamo.AnnoProyectadoInicio) <= i) {
|
|
185
|
+
if ((0, utils_1.ourParseFloat)(this.prestamo.PlazoRemanenteAños) < (0, utils_1.ourParseFloat)(plazo)) {
|
|
186
|
+
value = this.prestamo.MontoOriginal;
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
const sumaAmortizaciones = (0, utils_1.sumCorrelativeKeys)({
|
|
190
|
+
data: this.prestamo.AmortizacionesCapitalCuotaFinal ?? {},
|
|
191
|
+
baseKey: 'Gestion',
|
|
192
|
+
endIndex: i - 1
|
|
193
|
+
});
|
|
194
|
+
if ((0, utils_1.ourParseFloat)(this.prestamo.Gracia) > 0) {
|
|
195
|
+
value = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) - sumaAmortizaciones;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
value = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) - (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada) - sumaAmortizaciones;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
if (i == 1 && añoProyectadoInicio === 1) {
|
|
206
|
+
value = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal);
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
if (añoProyectadoInicio <= i) {
|
|
210
|
+
const sumaAnteriores = (0, utils_1.sumCorrelativeKeys)({
|
|
211
|
+
data: this.prestamo.AmortizacionesCapital,
|
|
212
|
+
baseKey: 'Gestion',
|
|
213
|
+
endIndex: i - 1
|
|
214
|
+
});
|
|
215
|
+
value = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) - sumaAnteriores;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
cuadro[`Gestion${i}`] = (0, utils_1.ourParseFloat)(value);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
this.prestamo.CuadroEfectoExposicion = cuadro;
|
|
223
|
+
}
|
|
224
|
+
setCuadroEfectoLinea() {
|
|
225
|
+
const cuadro = {};
|
|
226
|
+
const plazos = this.prestamo.Plazos;
|
|
227
|
+
if (this.prestamo.EsBajoLinea) {
|
|
228
|
+
let value;
|
|
229
|
+
for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
|
|
230
|
+
const plazo = plazos?.[`Gestion${i}`];
|
|
231
|
+
if (i === 1) {
|
|
232
|
+
if (plazo && this.prestamo.AnnoProyectadoInicio === 1) {
|
|
233
|
+
if ((0, utils_1.ourParseFloat)(this.prestamo.PlazoRemanenteAños) < plazo) {
|
|
234
|
+
value = this.prestamo.MontoOriginal;
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
value = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) - (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
if ((0, utils_1.ourParseFloat)(this.prestamo.AnnoProyectadoInicio) <= i) {
|
|
243
|
+
if ((0, utils_1.ourParseFloat)(this.prestamo.PlazoRemanenteAños) < (0, utils_1.ourParseFloat)(plazo)) {
|
|
244
|
+
value = this.prestamo.MontoOriginal;
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
const sumaAmortizaciones = (0, utils_1.sumCorrelativeKeys)({
|
|
248
|
+
data: this.prestamo.AmortizacionesCapitalCuotaFinal ?? {},
|
|
249
|
+
baseKey: 'Gestion',
|
|
250
|
+
endIndex: i - 1
|
|
251
|
+
});
|
|
252
|
+
if ((0, utils_1.ourParseFloat)(this.prestamo.Gracia) > 0) {
|
|
253
|
+
value = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) - sumaAmortizaciones;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
value = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) - (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada) - sumaAmortizaciones;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
cuadro[`Gestion${i}`] = (0, utils_1.ourParseFloat)(value);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
this.prestamo.CuadroEfectoLinea = cuadro;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
exports.PrestamoDirectoHandler = PrestamoDirectoHandler;
|