bdpformulas 1.0.49 → 1.0.51

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.
Files changed (50) hide show
  1. package/build/context.js +1 -0
  2. package/build/models/eeff/admFinanciera/index.d.ts +143 -0
  3. package/build/models/eeff/admFinanciera/index.js +26 -0
  4. package/build/strategies/agriculture/balanceAgr.strategy.js +1 -0
  5. package/build/strategies/agriculture/costos.detail/costosCalc.js +1 -1
  6. package/build/strategies/agriculture/flujoProyAgr.strategy.js +3 -2
  7. package/build/strategies/agriculture/ventas.detail/ventas.calc.js +2 -1
  8. package/build/strategies/analisisFinancieros.strategy.js +20 -22
  9. package/build/strategies/balance.strategy.js +14 -2
  10. package/build/strategies/common/analisisFinCalculos/analisisGrafico.calc.js +47 -45
  11. package/build/strategies/common/analisisFinCalculos/ratios.calc.js +158 -157
  12. package/build/strategies/common/balance.calc.js +3 -1
  13. package/build/strategies/common/balanceCalculos/balanceAux.calc.js +11 -1
  14. package/build/strategies/common/balanceCalculos/flujoAux.calc.js +2 -11
  15. package/build/strategies/common/flujoCalculos/flujoConstructor.js +313 -308
  16. package/build/strategies/eeff/admFinanciera/amortizaciones.d.ts +8 -0
  17. package/build/strategies/eeff/admFinanciera/amortizaciones.js +31 -0
  18. package/build/strategies/eeff/admFinanciera/aplicacionesHandler.d.ts +16 -0
  19. package/build/strategies/eeff/admFinanciera/aplicacionesHandler.js +202 -0
  20. package/build/strategies/eeff/admFinanciera/lineasMixtasHandler.d.ts +7 -0
  21. package/build/strategies/eeff/admFinanciera/lineasMixtasHandler.js +63 -0
  22. package/build/strategies/eeff/admFinanciera/prestamoBajoLineaHandler.d.ts +13 -0
  23. package/build/strategies/eeff/admFinanciera/prestamoBajoLineaHandler.js +80 -0
  24. package/build/strategies/eeff/admFinanciera/prestamoDirectoHandler.d.ts +26 -0
  25. package/build/strategies/eeff/admFinanciera/prestamoDirectoHandler.js +310 -0
  26. package/build/strategies/eeff/admFinanciera/prestamoLeasingHandler.d.ts +20 -0
  27. package/build/strategies/eeff/admFinanciera/prestamoLeasingHandler.js +162 -0
  28. package/build/strategies/eeff/admFinanciera/proyeccionPrestamosDirectosHandler.d.ts +51 -0
  29. package/build/strategies/eeff/admFinanciera/proyeccionPrestamosDirectosHandler.js +291 -0
  30. package/build/strategies/eeff/admFinanciera/utils.d.ts +98 -0
  31. package/build/strategies/eeff/admFinanciera/utils.js +218 -0
  32. package/build/strategies/eeff/admFinanciera.strategy.d.ts +11 -7
  33. package/build/strategies/eeff/admFinanciera.strategy.js +139 -85
  34. package/build/strategies/eeff/balanceEEFF.strategy.js +3 -2
  35. package/build/strategies/eeff/flujoProyEEFF.strategy.js +3 -2
  36. package/build/strategies/eeff/index.d.ts +1 -0
  37. package/build/strategies/eeff/index.js +1509 -0
  38. package/build/strategies/general/balanceGeneral.strategy.js +2 -1
  39. package/build/strategies/general/flujoProyGeneral.strategy.js +2 -1
  40. package/build/strategies/pecuary/balancePec.strategy.js +7 -6
  41. package/build/strategies/pecuary/desarrollo.detail/desarrolloCalc.js +11 -3
  42. package/build/strategies/pecuary/desarrollo.strategy.js +2 -2
  43. package/build/strategies/pecuary/flujoProyPec.strategy.js +7 -6
  44. package/build/strategies/pecuary/ventas.detail/estacionalidadCalc.js +7 -1
  45. package/build/strategies/pecuary/ventas.detail/ventasIngresosCalc.js +7 -1
  46. package/build/strategies/production/balancePrd.strategy.js +7 -6
  47. package/build/strategies/production/costos.detail/costosCalc.js +1 -1
  48. package/build/strategies/production/flujoProyPrd.strategy.js +7 -6
  49. package/package.json +26 -21
  50. package/tsconfig.json +1 -1
@@ -0,0 +1,310 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrestamoDirectoHandler = void 0;
4
+ const utils_1 = require("./utils");
5
+ class PrestamoDirectoHandler {
6
+ data;
7
+ prestamo;
8
+ simulador;
9
+ simuladorFijo2 = null;
10
+ constructor({ data, prestamo }) {
11
+ this.data = data;
12
+ this.prestamo = prestamo;
13
+ this.simulador = (0, utils_1.simuladorCuotas)({
14
+ monto: prestamo.MontoOriginal ?? 0,
15
+ plazo: prestamo.Plazo ?? 0,
16
+ frecuencia: prestamo.TipoPeriodicidadId ?? 'MENSUAL',
17
+ tipoCuota: prestamo.TipoFacilidad ?? 'VARIABLE',
18
+ periodoGracia: prestamo.Gracia,
19
+ tasaInteres: prestamo.Tasa
20
+ });
21
+ }
22
+ handle() {
23
+ this.prestamo.PorcionesNoCorrientes = {};
24
+ this.prestamo.AmortizacionesInteres = {};
25
+ this.setMesesPorcionPagada();
26
+ this.setPorcionCuotasPagadas();
27
+ this.setPlazoRemanente();
28
+ this.setAmortizacionesCapital();
29
+ this.setPlazos();
30
+ this.setAmortizacionesCapitalEfectoCorrienteYCuotaFinal();
31
+ this.setCuadroExposicion();
32
+ this.setCuadroEfectoLinea();
33
+ this.setProyecciones();
34
+ this.setAmortizacionesInteresFija();
35
+ return this.prestamo;
36
+ }
37
+ setMesesPorcionPagada() {
38
+ if (this.prestamo.FechaDesembolso) {
39
+ const inicial = (0, utils_1.getDateTime)(this.data.InicioProyeccion).endOf('month');
40
+ const desembolso = (0, utils_1.getDateTime)(this.prestamo.FechaDesembolso).endOf('month');
41
+ this.prestamo.MesesPorcionPagada = Math.floor(inicial.diff(desembolso, 'months').months);
42
+ }
43
+ }
44
+ setProyecciones() {
45
+ for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
46
+ this.setPorcionNoCorriente(i);
47
+ this.setAmortizacionInteresVariable(i);
48
+ }
49
+ }
50
+ setAmortizacionInteresVariable(gestion) {
51
+ if (this.prestamo.TipoFacilidad === 'VARIABLE') {
52
+ let value;
53
+ const tasa = (0, utils_1.ourParseFloat)(this.prestamo.Tasa) / 100;
54
+ const mesesPorcionPagada = (0, utils_1.ourParseFloat)(this.prestamo.MesesPorcionPagada);
55
+ const plazo = (0, utils_1.ourParseFloat)(this.prestamo.Plazos?.[`Gestion${gestion}`]);
56
+ let porcionCorriente = (0, utils_1.ourParseFloat)(this.prestamo.AmortizacionesCapitalCuotaFinal?.[`Gestion${gestion}`]);
57
+ let porcionNoCorriente = (0, utils_1.ourParseFloat)(this.prestamo.PorcionesNoCorrientes?.[`Gestion${gestion}`]);
58
+ const porcionCorrientePagada = (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada);
59
+ if (gestion == 1) {
60
+ if ((0, utils_1.ourParseFloat)(this.prestamo.Gracia) / 12 > 0) {
61
+ value =
62
+ ((porcionCorriente + porcionNoCorriente) *
63
+ tasa *
64
+ mesesPorcionPagada) /
65
+ 12;
66
+ }
67
+ else {
68
+ if (plazo == this.prestamo.PlazoRemanenteAños) {
69
+ value =
70
+ ((porcionCorriente +
71
+ porcionNoCorriente +
72
+ porcionCorrientePagada) *
73
+ tasa *
74
+ mesesPorcionPagada) /
75
+ 12;
76
+ }
77
+ else {
78
+ value = (porcionCorriente + porcionNoCorriente) * tasa;
79
+ }
80
+ }
81
+ }
82
+ else {
83
+ porcionCorriente = (0, utils_1.ourParseFloat)(this.prestamo.AmortizacionesCapitalCuotaFinal?.[`Gestion${gestion - 1}`]);
84
+ porcionNoCorriente = (0, utils_1.ourParseFloat)(this.prestamo.PorcionesNoCorrientes?.[`Gestion${gestion - 1}`]);
85
+ value = (porcionCorriente + porcionNoCorriente) * tasa;
86
+ }
87
+ this.prestamo.AmortizacionesInteres[`Gestion${gestion}`] = value;
88
+ }
89
+ }
90
+ setAmortizacionesInteresFija() {
91
+ if (this.prestamo.TipoFacilidad === 'FIJA') {
92
+ const tasa = (0, utils_1.ourParseFloat)(this.prestamo.Tasa) / 100;
93
+ this.prestamo.AmortizacionesInteres[`Gestion1`] =
94
+ (((0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) * tasa) / 12) *
95
+ (0, utils_1.ourParseFloat)(this.prestamo.MesesPorcionPagada);
96
+ const añoProyectadoInicio = (0, utils_1.ourParseFloat)(this.prestamo.AnnoProyectadoInicio);
97
+ if (this.simuladorFijo2 &&
98
+ añoProyectadoInicio &&
99
+ añoProyectadoInicio <= 3) {
100
+ let i = añoProyectadoInicio + 1;
101
+ this.simuladorFijo2.pagosAnuales.forEach((resumen) => {
102
+ this.prestamo.AmortizacionesInteres[`Gestion${i}`] =
103
+ resumen.interesAnual;
104
+ i++;
105
+ });
106
+ }
107
+ }
108
+ }
109
+ setPorcionNoCorriente(gestion) {
110
+ this.prestamo.PorcionesNoCorrientes[`Gestion${gestion}`] =
111
+ (0, utils_1.ourParseFloat)(this.prestamo.CuadroEfectoLinea?.[`Gestion${gestion}`]) +
112
+ (0, utils_1.ourParseFloat)(this.prestamo.CuadroEfectoExposicion?.[`Gestion${gestion}`]) -
113
+ (0, utils_1.ourParseFloat)(this.prestamo.AmortizacionesCapitalCuotaFinal?.[`Gestion${gestion}`]);
114
+ }
115
+ setPorcionCuotasPagadas() {
116
+ if (this.prestamo.FechaDesembolso) {
117
+ const pagado = (0, utils_1.calcularPorcionCorrientePagada)({
118
+ fechaInicial: this.data.InicioProyeccion,
119
+ fechaDesembolso: this.prestamo.FechaDesembolso,
120
+ frecuencia: this.prestamo.TipoPeriodicidadId ?? 'MENSUAL',
121
+ simulador: this.simulador.simulador
122
+ });
123
+ this.prestamo.PorcionPagada = (0, utils_1.ourParseFloat)(pagado.porcionCorrientePagada);
124
+ this.prestamo.CuotasPagadas = pagado.cuotasPagadas;
125
+ if (this.prestamo.TipoFacilidad === 'FIJA') {
126
+ const dif = (0, utils_1.ourParseFloat)(this.prestamo.Gracia) -
127
+ (0, utils_1.ourParseFloat)(this.prestamo.CuotasPagadas);
128
+ const periodoGracia = dif > 0 ? dif : 0;
129
+ this.simuladorFijo2 = (0, utils_1.simuladorCuotas)({
130
+ monto: (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) -
131
+ (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada),
132
+ plazo: (0, utils_1.ourParseFloat)(this.prestamo.Plazo) * 12 -
133
+ (0, utils_1.ourParseFloat)(this.prestamo.CuotasPagadas),
134
+ frecuencia: this.prestamo.TipoPeriodicidadId ?? 'MENSUAL',
135
+ tipoCuota: this.prestamo.TipoFacilidad ?? 'VARIABLE',
136
+ periodoGracia,
137
+ tasaInteres: this.prestamo.Tasa,
138
+ plazoMeses: true
139
+ });
140
+ }
141
+ }
142
+ }
143
+ setAmortizacionesCapital() {
144
+ const añoProyectadoInicio = this.prestamo.AnnoProyectadoInicio;
145
+ const amortizacion = {};
146
+ if (añoProyectadoInicio && añoProyectadoInicio <= 3) {
147
+ let i = añoProyectadoInicio;
148
+ this.simulador.pagosAnuales.forEach((resumen) => {
149
+ amortizacion[`Gestion${i}`] = (0, utils_1.ourParseFloat)(resumen.capitalAnual);
150
+ i++;
151
+ });
152
+ }
153
+ this.prestamo.AmortizacionesCapital = amortizacion;
154
+ }
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);
158
+ }
159
+ setPlazos() {
160
+ this.prestamo.Plazos = (0, utils_1.generatePlazos)({
161
+ cantidadProyeccion: this.data.CantidadProyeccion,
162
+ inicio: this.prestamo.AnnoProyectadoInicio,
163
+ valor: this.prestamo.Plazo
164
+ });
165
+ }
166
+ setAmortizacionesCapitalEfectoCorrienteYCuotaFinal() {
167
+ const amortizacion = {};
168
+ const amortizacionCuotaFinal = {};
169
+ const plazos = this.prestamo.Plazos;
170
+ for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
171
+ const plazo = plazos?.[`Gestion${i}`];
172
+ let valor = 0;
173
+ if (plazo == 1) {
174
+ valor = -(0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada);
175
+ }
176
+ else if ((0, utils_1.ourParseFloat)(this.prestamo.PlazoRemanenteAños) + 1 ==
177
+ plazo) {
178
+ valor = (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada);
179
+ }
180
+ amortizacion[`Gestion${i}`] = valor;
181
+ amortizacionCuotaFinal[`Gestion${i}`] = (0, utils_1.ourParseFloat)(valor +
182
+ (0, utils_1.ourParseFloat)(this.prestamo.AmortizacionesCapital?.[`Gestion${i}`]));
183
+ }
184
+ this.prestamo.AmortizacionesCapitalEfectoCorriente = amortizacion;
185
+ this.prestamo.AmortizacionesCapitalCuotaFinal = amortizacionCuotaFinal;
186
+ }
187
+ setCuadroExposicion() {
188
+ const cuadro = {};
189
+ const plazos = this.prestamo.Plazos;
190
+ const añoProyectadoInicio = (0, utils_1.ourParseFloat)(this.prestamo.AnnoProyectadoInicio);
191
+ if (!this.prestamo.EsBajoLinea && añoProyectadoInicio >= 1) {
192
+ let value;
193
+ for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
194
+ const plazo = (0, utils_1.ourParseFloat)(plazos?.[`Gestion${i}`]);
195
+ if (this.prestamo.TipoFacilidad === 'VARIABLE') {
196
+ if (i === 1) {
197
+ if (plazo && this.prestamo.AnnoProyectadoInicio === 1) {
198
+ if ((0, utils_1.ourParseFloat)(this.prestamo.PlazoRemanenteAños) < plazo) {
199
+ value = 0;
200
+ }
201
+ else {
202
+ value =
203
+ (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) -
204
+ (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada);
205
+ }
206
+ }
207
+ }
208
+ else {
209
+ if (añoProyectadoInicio <= i) {
210
+ if ((0, utils_1.ourParseFloat)(this.prestamo.PlazoRemanenteAños) < (0, utils_1.ourParseFloat)(plazo)) {
211
+ value = this.prestamo.MontoOriginal;
212
+ }
213
+ else {
214
+ const sumaAmortizaciones = (0, utils_1.sumCorrelativeKeys)({
215
+ data: this.prestamo
216
+ .AmortizacionesCapitalCuotaFinal ??
217
+ {},
218
+ baseKey: 'Gestion',
219
+ endIndex: i - 1
220
+ });
221
+ if ((0, utils_1.ourParseFloat)(this.prestamo.Gracia) > 0) {
222
+ value =
223
+ (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) - sumaAmortizaciones;
224
+ }
225
+ else {
226
+ value =
227
+ (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) -
228
+ (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada) -
229
+ sumaAmortizaciones;
230
+ }
231
+ }
232
+ }
233
+ }
234
+ }
235
+ else {
236
+ if (i == 1 && añoProyectadoInicio === 1) {
237
+ value = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal);
238
+ }
239
+ else {
240
+ if (añoProyectadoInicio <= i) {
241
+ const sumaAnteriores = (0, utils_1.sumCorrelativeKeys)({
242
+ data: this.prestamo.AmortizacionesCapital,
243
+ baseKey: 'Gestion',
244
+ endIndex: i - 1
245
+ });
246
+ value =
247
+ (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) -
248
+ sumaAnteriores;
249
+ }
250
+ }
251
+ }
252
+ cuadro[`Gestion${i}`] = (0, utils_1.ourParseFloat)(value);
253
+ }
254
+ }
255
+ this.prestamo.CuadroEfectoExposicion = cuadro;
256
+ }
257
+ setCuadroEfectoLinea() {
258
+ const cuadro = {};
259
+ const plazos = this.prestamo.Plazos;
260
+ if (this.prestamo.EsBajoLinea) {
261
+ let value;
262
+ for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
263
+ const plazo = plazos?.[`Gestion${i}`];
264
+ if (i === 1) {
265
+ if (plazo && this.prestamo.AnnoProyectadoInicio === 1) {
266
+ if ((0, utils_1.ourParseFloat)(this.prestamo.PlazoRemanenteAños) <
267
+ plazo) {
268
+ value = this.prestamo.MontoOriginal;
269
+ }
270
+ else {
271
+ value =
272
+ (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) -
273
+ (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada);
274
+ }
275
+ }
276
+ }
277
+ else {
278
+ if ((0, utils_1.ourParseFloat)(this.prestamo.AnnoProyectadoInicio) <= i) {
279
+ if ((0, utils_1.ourParseFloat)(this.prestamo.PlazoRemanenteAños) <
280
+ (0, utils_1.ourParseFloat)(plazo)) {
281
+ value = this.prestamo.MontoOriginal;
282
+ }
283
+ else {
284
+ const sumaAmortizaciones = (0, utils_1.sumCorrelativeKeys)({
285
+ data: this.prestamo
286
+ .AmortizacionesCapitalCuotaFinal ?? {},
287
+ baseKey: 'Gestion',
288
+ endIndex: i - 1
289
+ });
290
+ if ((0, utils_1.ourParseFloat)(this.prestamo.Gracia) > 0) {
291
+ value =
292
+ (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) -
293
+ sumaAmortizaciones;
294
+ }
295
+ else {
296
+ value =
297
+ (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) -
298
+ (0, utils_1.ourParseFloat)(this.prestamo.PorcionPagada) -
299
+ sumaAmortizaciones;
300
+ }
301
+ }
302
+ }
303
+ }
304
+ cuadro[`Gestion${i}`] = (0, utils_1.ourParseFloat)(value);
305
+ }
306
+ }
307
+ this.prestamo.CuadroEfectoLinea = cuadro;
308
+ }
309
+ }
310
+ exports.PrestamoDirectoHandler = PrestamoDirectoHandler;
@@ -0,0 +1,20 @@
1
+ import { AdministracionFinancieraData, PrestamoLeasing } from "../../../models/eeff/admFinanciera";
2
+ interface HandlerData {
3
+ data: AdministracionFinancieraData;
4
+ prestamo: Partial<PrestamoLeasing>;
5
+ }
6
+ export declare class PrestamoLeasingHandler {
7
+ private data;
8
+ private prestamo;
9
+ constructor({ data, prestamo }: HandlerData);
10
+ handle(): Partial<PrestamoLeasing>;
11
+ private setTasa;
12
+ private setAuxiliares;
13
+ private setPlazo;
14
+ private setPlazoMultiplicado;
15
+ private setAmortizacionCapital;
16
+ private getGeneracionValorResidual;
17
+ private setPorcionesCorrientesNoCorrientes;
18
+ private setActivacionOperacion;
19
+ }
20
+ export {};
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrestamoLeasingHandler = void 0;
4
+ const admFinanciera_1 = require("../../../models/eeff/admFinanciera");
5
+ const utils_1 = require("./utils");
6
+ const frecuencias = {
7
+ MENSUAL: 12,
8
+ BIMENSUAL: 6,
9
+ TRIMESTRAL: 4,
10
+ CUATRIMESTRAL: 3,
11
+ SEMESTRAL: 2,
12
+ ANUAL: 1,
13
+ };
14
+ class PrestamoLeasingHandler {
15
+ data;
16
+ prestamo;
17
+ constructor({ data, prestamo }) {
18
+ this.data = data;
19
+ this.prestamo = prestamo;
20
+ }
21
+ handle() {
22
+ this.setTasa();
23
+ this.setAuxiliares();
24
+ this.setActivacionOperacion();
25
+ this.setPorcionesCorrientesNoCorrientes();
26
+ return this.prestamo;
27
+ }
28
+ setTasa() {
29
+ if (this.prestamo.MontoOriginal && this.prestamo.TipoAmortizacion) {
30
+ const meses = frecuencias[this.prestamo.TipoAmortizacion];
31
+ const tasa = (0, utils_1.calcularTasaInteres)({
32
+ meses: (0, utils_1.ourParseFloat)(this.prestamo.Plazo) * meses,
33
+ montoCuota: -(0, utils_1.ourParseFloat)(this.prestamo.MontoCuotaPeriodo),
34
+ montoOriginal: (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal)
35
+ });
36
+ this.prestamo.Tasa = (0, utils_1.ourParseFloat)(tasa, false) * 100 * meses;
37
+ }
38
+ }
39
+ setAuxiliares() {
40
+ this.prestamo.Plazos = {};
41
+ this.prestamo.PlazosMultiplicados = {};
42
+ this.prestamo.AmortizacionesCapital = {};
43
+ this.prestamo.AmortizacionesCapitalFinal = {};
44
+ this.prestamo.AmortizacionesInteres = {};
45
+ this.prestamo.PorcionesNoCorrientes = {};
46
+ for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
47
+ // plazos
48
+ this.setPlazo(i);
49
+ // plazos multiplicados
50
+ this.setPlazoMultiplicado(i);
51
+ //amortizacion capital
52
+ this.setAmortizacionCapital(i);
53
+ }
54
+ }
55
+ setPlazo(gestion) {
56
+ if (this.prestamo.AnnoProyectadoInicio && this.prestamo.Plazo) {
57
+ if (gestion >= this.prestamo.AnnoProyectadoInicio) {
58
+ if (gestion == this.prestamo.AnnoProyectadoInicio) {
59
+ this.prestamo.Plazos[`Gestion${gestion}`] = this.prestamo.Plazo;
60
+ }
61
+ else {
62
+ const anterior = (0, utils_1.ourParseFloat)(this.prestamo.Plazos?.[`Gestion${gestion - 1}`]);
63
+ if (anterior > 1) {
64
+ this.prestamo.Plazos[`Gestion${gestion}`] = anterior - 1;
65
+ }
66
+ }
67
+ }
68
+ }
69
+ }
70
+ setPlazoMultiplicado(gestion) {
71
+ let value = 0;
72
+ if (this.prestamo.AnnoProyectadoInicio) {
73
+ const frecuencia = frecuencias[this.prestamo.TipoAmortizacion];
74
+ if (this.prestamo.AnnoProyectadoInicio == gestion) {
75
+ value = frecuencia;
76
+ }
77
+ else if (this.prestamo.AnnoProyectadoInicio <= gestion) {
78
+ value = (0, utils_1.ourParseFloat)(this.prestamo.PlazosMultiplicados?.[`Gestion${gestion - 1}`]) + frecuencia;
79
+ }
80
+ }
81
+ this.prestamo.PlazosMultiplicados[`Gestion${gestion}`] = value;
82
+ }
83
+ setAmortizacionCapital(gestion) {
84
+ const plazo = this.prestamo.Plazos[`Gestion${gestion}`];
85
+ let value;
86
+ if (plazo && this.prestamo.TipoAmortizacion) {
87
+ const frecuencia = frecuencias[this.prestamo.TipoAmortizacion];
88
+ const tasaPeriodica = (0, utils_1.ourParseFloat)(this.prestamo.Tasa) / 100 / frecuencia;
89
+ const numeroPagos = (0, utils_1.ourParseFloat)(this.prestamo.Plazo) * frecuencia;
90
+ const montoPrestamo = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal);
91
+ let periodoInicial = 1;
92
+ const periodoFinal = (0, utils_1.ourParseFloat)(this.prestamo.PlazosMultiplicados?.[`Gestion${gestion}`]);
93
+ const añoProyectadoInicio = (0, utils_1.ourParseFloat)(this.prestamo.AnnoProyectadoInicio);
94
+ let valueInteres;
95
+ if (añoProyectadoInicio > gestion) {
96
+ value = 0;
97
+ valueInteres = 0;
98
+ }
99
+ else {
100
+ if (añoProyectadoInicio < gestion) {
101
+ periodoInicial = (0, utils_1.ourParseFloat)(this.prestamo.PlazosMultiplicados?.[`Gestion${gestion - 1}`]) + 1;
102
+ }
103
+ value = (0, utils_1.calcularPagoPrincipalEntre)({
104
+ tasaPeriodica,
105
+ numeroPagos,
106
+ montoPrestamo,
107
+ periodoInicial,
108
+ periodoFinal
109
+ });
110
+ valueInteres = (0, utils_1.calcularPagoInteresEntre)({
111
+ tasaPeriodica,
112
+ numeroPagos,
113
+ montoPrestamo,
114
+ periodoInicial,
115
+ periodoFinal
116
+ });
117
+ }
118
+ this.prestamo.AmortizacionesCapital[`Gestion${gestion}`] = (0, utils_1.ourParseFloat)(value);
119
+ this.prestamo.AmortizacionesInteres[`Gestion${gestion}`] = (0, utils_1.ourParseFloat)(valueInteres);
120
+ }
121
+ this.prestamo.AmortizacionesCapitalFinal[`Gestion${gestion}`] = (0, utils_1.ourParseFloat)(value) + (0, utils_1.ourParseFloat)(this.getGeneracionValorResidual(gestion));
122
+ }
123
+ getGeneracionValorResidual(gestion) {
124
+ if ((0, utils_1.ourParseFloat)(this.prestamo.Plazos[`Gestion${gestion}`]) == 1) {
125
+ return this.prestamo.MontoValorResidual;
126
+ }
127
+ }
128
+ setPorcionesCorrientesNoCorrientes() {
129
+ this.prestamo.PorcionesCorrientes = {};
130
+ this.prestamo.PorcionesNoCorrientes = {};
131
+ for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
132
+ let index = i;
133
+ if (this.prestamo.TipoOperacion2 === admFinanciera_1.TipoOperacionExistencia.Antigua) {
134
+ index++;
135
+ }
136
+ const porcionCorriente = (0, utils_1.ourParseFloat)(this.prestamo.AmortizacionesCapitalFinal?.[`Gestion${index}`]) + (0, utils_1.ourParseFloat)(this.prestamo.AmortizacionesInteres?.[`Gestion${index}`]);
137
+ this.prestamo.PorcionesCorrientes[`Gestion${i}`] = porcionCorriente;
138
+ const plazo = (0, utils_1.ourParseFloat)(this.prestamo.Plazos?.[`Gestion${i}`]);
139
+ if (plazo && this.prestamo.TipoAmortizacion) {
140
+ let value;
141
+ const frecuencia = frecuencias[this.prestamo.TipoAmortizacion];
142
+ const cuotaPeriodo = (0, utils_1.ourParseFloat)(this.prestamo.MontoCuotaPeriodo);
143
+ const valorResidual = (0, utils_1.ourParseFloat)(this.prestamo.MontoValorResidual);
144
+ if (this.prestamo.TipoOperacion2 === admFinanciera_1.TipoOperacionExistencia.Antigua) {
145
+ if (plazo > 1) {
146
+ value = ((plazo - 1) * cuotaPeriodo * frecuencia + valorResidual) - porcionCorriente;
147
+ }
148
+ }
149
+ else {
150
+ value = (plazo * cuotaPeriodo * frecuencia + valorResidual) - porcionCorriente;
151
+ }
152
+ this.prestamo.PorcionesNoCorrientes[`Gestion${i}`] = (0, utils_1.ourParseFloat)(value);
153
+ }
154
+ }
155
+ }
156
+ setActivacionOperacion() {
157
+ if (this.prestamo.TipoOperacion2 === admFinanciera_1.TipoOperacionExistencia.Nueva) {
158
+ this.prestamo.ActivacionOperacion = (0, utils_1.ourParseFloat)(this.prestamo.MontoOriginal) + (0, utils_1.ourParseFloat)(this.prestamo.MontoAporteInicial) + (0, utils_1.ourParseFloat)(this.prestamo.MontoValorResidual);
159
+ }
160
+ }
161
+ }
162
+ exports.PrestamoLeasingHandler = PrestamoLeasingHandler;
@@ -0,0 +1,51 @@
1
+ import { AdministracionFinancieraCalcData, ProyeccionPrestamo } from '../../../models/eeff/admFinanciera';
2
+ interface AplicacionesData {
3
+ data: AdministracionFinancieraCalcData;
4
+ }
5
+ declare const filas: {
6
+ 'KO - Porci\u00F3n CP - BDP SAM': number;
7
+ 'KI - Porci\u00F3n CP - BDP SAM': number;
8
+ 'L/C Mixta - Porci\u00F3n CP - BDP SAM': number;
9
+ 'Porci\u00F3n LP - BDP SAM': number;
10
+ 'KO - Porci\u00F3n CP - Otras EIFs': number;
11
+ 'KI - Porci\u00F3n CP - Otras EIFs': number;
12
+ 'Otros - Porci\u00F3n CP - Otras EIFs': number;
13
+ 'L/C Mixta - Porci\u00F3n CP - Otras EIFs': number;
14
+ 'Porci\u00F3n LP - Otras EIFs': number;
15
+ 'Intereses y Comisiones - Prestamos Directos': number;
16
+ 'Intereses y Comisiones - Linea de Credito 100% KO': number;
17
+ 'Intereses y Comisiones - Linea de Credito Mixta': number;
18
+ 'Interes - MANUAL': number;
19
+ 'Total Intereses (BDP y Otras EIFs)': number;
20
+ 'Leasing CP (Venc.Corriente + Deuda CP) - Otras EIFs': number;
21
+ 'Leasing LP - Otras EIFs': number;
22
+ 'Intereses Leasing': number;
23
+ 'Interes Leasing - MANUAL': number;
24
+ 'TOTAL PORCI\u00D3N CP (Venc.Corriente) - BDP SAM': number;
25
+ 'TOTAL PORCI\u00D3N CP (Venc.Corriente) - Otras EIFs': number;
26
+ 'TOTAL PORCI\u00D3N LP - BDP SAM': number;
27
+ 'TOTAL PORCI\u00D3N LP - Otras EIFs': number;
28
+ };
29
+ export { filas as FILAS_PROYECCION_PRESTAMOS_DIRECTOS };
30
+ export declare class ProyeccionPrestamosDirectosHandler {
31
+ private data;
32
+ private proyeccion;
33
+ constructor({ data }: AplicacionesData);
34
+ handle(): Partial<ProyeccionPrestamo>[];
35
+ private setProyecciones;
36
+ private setKOPorcionCPBDP;
37
+ private setKIPorcionCPBDP;
38
+ private setKOPorcionCPOtras;
39
+ private setKIPorcionCPOtras;
40
+ private setOtrasPorcionCPOtras;
41
+ private setLCMixtaBDP;
42
+ private setLCMixtaOtras;
43
+ private setInteresesLineasMixtas;
44
+ private setPorcionLPBDP;
45
+ private setPorcionLPOtras;
46
+ private setLeasingCP;
47
+ private setLeasingLP;
48
+ private setInteresLeasing;
49
+ private setInteresesPrestamosDirectos;
50
+ private setInteresesLineaKO;
51
+ }