bdpformulas 1.0.49 → 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.
Files changed (48) hide show
  1. package/build/context.js +1 -0
  2. package/build/models/eeff/admFinanciera/index.d.ts +144 -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 +175 -0
  20. package/build/strategies/eeff/admFinanciera/lineasMixtasHandler.d.ts +7 -0
  21. package/build/strategies/eeff/admFinanciera/lineasMixtasHandler.js +40 -0
  22. package/build/strategies/eeff/admFinanciera/prestamoBajoLineaHandler.d.ts +13 -0
  23. package/build/strategies/eeff/admFinanciera/prestamoBajoLineaHandler.js +75 -0
  24. package/build/strategies/eeff/admFinanciera/prestamoDirectoHandler.d.ts +26 -0
  25. package/build/strategies/eeff/admFinanciera/prestamoDirectoHandler.js +267 -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 +27 -0
  29. package/build/strategies/eeff/admFinanciera/proyeccionPrestamosDirectosHandler.js +219 -0
  30. package/build/strategies/eeff/admFinanciera/utils.d.ts +96 -0
  31. package/build/strategies/eeff/admFinanciera/utils.js +209 -0
  32. package/build/strategies/eeff/admFinanciera.strategy.d.ts +10 -6
  33. package/build/strategies/eeff/admFinanciera.strategy.js +126 -86
  34. package/build/strategies/eeff/balanceEEFF.strategy.js +3 -2
  35. package/build/strategies/eeff/flujoProyEEFF.strategy.js +3 -2
  36. package/build/strategies/general/balanceGeneral.strategy.js +2 -1
  37. package/build/strategies/general/flujoProyGeneral.strategy.js +2 -1
  38. package/build/strategies/pecuary/balancePec.strategy.js +7 -6
  39. package/build/strategies/pecuary/desarrollo.detail/desarrolloCalc.js +11 -3
  40. package/build/strategies/pecuary/desarrollo.strategy.js +2 -2
  41. package/build/strategies/pecuary/flujoProyPec.strategy.js +7 -6
  42. package/build/strategies/pecuary/ventas.detail/estacionalidadCalc.js +7 -1
  43. package/build/strategies/pecuary/ventas.detail/ventasIngresosCalc.js +7 -1
  44. package/build/strategies/production/balancePrd.strategy.js +7 -6
  45. package/build/strategies/production/costos.detail/costosCalc.js +1 -1
  46. package/build/strategies/production/flujoProyPrd.strategy.js +7 -6
  47. package/package.json +26 -21
  48. package/tsconfig.json +1 -1
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calcularPagoInteresEntre = exports.calcularPagoPrincipalEntre = exports.generatePlazos = exports.sumCorrelativeKeys = exports.getColumnSum = exports.calcularTasaInteres = exports.ourParseFloat = exports.calcularPorcionCorrientePagada = exports.simuladorCuotas = exports.frecuenciaMeses = void 0;
4
+ const luxon_1 = require("luxon");
5
+ exports.frecuenciaMeses = {
6
+ MENSUAL: 1,
7
+ BIMENSUAL: 2,
8
+ TRIMESTRAL: 3,
9
+ CUATRIMESTRAL: 4,
10
+ SEMESTRAL: 6,
11
+ ANUAL: 12,
12
+ };
13
+ function simuladorCuotas({ monto, plazo, frecuencia, tipoCuota, periodoGracia = 0, tasaInteres = 0, polizaSD = 0, plazoMeses = false }) {
14
+ const mesesPorFrecuencia = exports.frecuenciaMeses[frecuencia];
15
+ const plazoEnMeses = !plazoMeses ? plazo * 12 : plazo;
16
+ const cuotasTotales = Math.ceil(plazoEnMeses / mesesPorFrecuencia);
17
+ const tasaPorPeriodo = tasaInteres / (12 / mesesPorFrecuencia) / 100;
18
+ let saldoCapital = monto;
19
+ const cuotas = [];
20
+ const pagosAnuales = [];
21
+ let capitalAnual = 0;
22
+ let interesAnual = 0;
23
+ let cuotaAnual = 0;
24
+ let anioActual = 1;
25
+ // Calcular cuota fija si aplica
26
+ const cuotaFija = tipoCuota === "FIJA"
27
+ ? (monto * tasaPorPeriodo) / (1 - Math.pow(1 + tasaPorPeriodo, -cuotasTotales))
28
+ : 0;
29
+ for (let i = 1; i <= cuotasTotales; i++) {
30
+ let amortizacion = 0;
31
+ let interes = 0;
32
+ let cuotaCredito = 0;
33
+ let tiempoDias = mesesPorFrecuencia * 30; // Aproximado.
34
+ if (i > Math.ceil(periodoGracia / mesesPorFrecuencia)) {
35
+ interes = saldoCapital * tasaPorPeriodo;
36
+ if (tipoCuota === "FIJA") {
37
+ cuotaCredito = cuotaFija;
38
+ amortizacion = cuotaCredito - interes;
39
+ }
40
+ else {
41
+ amortizacion = monto / (cuotasTotales - Math.ceil(periodoGracia / mesesPorFrecuencia));
42
+ cuotaCredito = amortizacion + interes;
43
+ }
44
+ }
45
+ const cuotaTotal = cuotaCredito + polizaSD;
46
+ cuotas.push({
47
+ nroCuota: i,
48
+ amortizacion,
49
+ interes,
50
+ cuotaCredito,
51
+ poliza: polizaSD,
52
+ cuotaTotal,
53
+ saldoCapital,
54
+ tiempoDias,
55
+ });
56
+ saldoCapital -= amortizacion;
57
+ // Acumular valores anuales
58
+ capitalAnual += amortizacion;
59
+ interesAnual += interes;
60
+ cuotaAnual += cuotaTotal;
61
+ const mesActual = i * mesesPorFrecuencia;
62
+ if (mesActual % 12 === 0 || i === cuotasTotales) {
63
+ pagosAnuales.push({
64
+ anio: anioActual,
65
+ capitalAnual,
66
+ interesAnual,
67
+ cuotaAnual,
68
+ });
69
+ anioActual++;
70
+ capitalAnual = 0;
71
+ interesAnual = 0;
72
+ cuotaAnual = 0;
73
+ }
74
+ }
75
+ return { simulador: cuotas, pagosAnuales };
76
+ }
77
+ exports.simuladorCuotas = simuladorCuotas;
78
+ function calcularPorcionCorrientePagada({ fechaDesembolso, fechaInicial, frecuencia, simulador }) {
79
+ const inicial = luxon_1.DateTime.fromISO(fechaInicial);
80
+ const desembolso = luxon_1.DateTime.fromISO(fechaDesembolso);
81
+ const mesesPorFrecuencia = exports.frecuenciaMeses[frecuencia];
82
+ const mesesTranscurridos = inicial.diff(desembolso, 'months').months;
83
+ const cuotasPagadas = Math.floor(mesesTranscurridos / mesesPorFrecuencia);
84
+ const cuotasPagadasArray = simulador.filter((cuota) => cuota.nroCuota <= cuotasPagadas);
85
+ const porcionCorrientePagada = cuotasPagadasArray.reduce((acumulado, cuota) => acumulado + cuota.amortizacion, 0);
86
+ return {
87
+ cuotasPagadas: cuotasPagadasArray.length,
88
+ porcionCorrientePagada,
89
+ };
90
+ }
91
+ exports.calcularPorcionCorrientePagada = calcularPorcionCorrientePagada;
92
+ function ourParseFloat(num, round = true) {
93
+ let parsed = parseFloat(num);
94
+ if (isNaN(parsed))
95
+ parsed = 0;
96
+ if (round)
97
+ parsed = parseFloat(parsed.toFixed(2));
98
+ return parsed;
99
+ }
100
+ exports.ourParseFloat = ourParseFloat;
101
+ /**
102
+ * Calcula la tasa de interés periódica (similar a la función TASA de Excel).
103
+ *
104
+ * @param params - Objeto con los parámetros necesarios.
105
+ * @param params.meses - Número de períodos (meses).
106
+ * @param params.montoCuota - Monto de la cuota por período (negativo, por ser un flujo de salida).
107
+ * @param params.montoOriginal - Monto original del préstamo.
108
+ * @param params.guess - Estimación inicial de la tasa de interés (por defecto: 0.1 o 10%).
109
+ * @param params.maxIteraciones - Número máximo de iteraciones para el cálculo (por defecto: 100).
110
+ * @param params.tolerancia - Precisión deseada para el resultado (por defecto: 1e-6).
111
+ * @returns La tasa de interés periódica como decimal o undefined si no converge.
112
+ */
113
+ function calcularTasaInteres({ meses, montoCuota, montoOriginal, guess = 0.1, maxIteraciones = 100, tolerancia = 1e-10, }) {
114
+ let tasa = guess;
115
+ for (let i = 0; i < maxIteraciones; i++) {
116
+ let f = 0; // Función objetivo f(x)
117
+ let fDerivada = 0; // Derivada f'(x)
118
+ for (let j = 1; j <= meses; j++) {
119
+ const factor = Math.pow(1 + tasa, -j);
120
+ f += montoCuota * factor;
121
+ fDerivada += -j * montoCuota * factor / (1 + tasa);
122
+ }
123
+ // Sumar flujo inicial (monto original)
124
+ f += montoOriginal;
125
+ // Calcular nueva tasa usando Newton-Raphson
126
+ const nuevoTasa = tasa - f / fDerivada;
127
+ if (Math.abs(nuevoTasa - tasa) < tolerancia) {
128
+ return nuevoTasa;
129
+ }
130
+ tasa = nuevoTasa;
131
+ }
132
+ // Si no converge después de todas las iteraciones
133
+ return undefined;
134
+ }
135
+ exports.calcularTasaInteres = calcularTasaInteres;
136
+ function getColumnSum(data, column) {
137
+ return data.reduce((sum, item) => sum + ourParseFloat(item[column]), 0);
138
+ }
139
+ exports.getColumnSum = getColumnSum;
140
+ function sumCorrelativeKeys(params) {
141
+ const { baseKey, endIndex, startIndex = 1, data } = params;
142
+ if (endIndex < startIndex) {
143
+ throw new Error("El índice final no puede ser menor que el índice inicial.");
144
+ }
145
+ let sum = 0;
146
+ for (let i = startIndex; i <= endIndex; i++) {
147
+ const key = `${baseKey}${i}`;
148
+ if (key in data) {
149
+ sum += ourParseFloat(data[key]);
150
+ }
151
+ }
152
+ return sum;
153
+ }
154
+ exports.sumCorrelativeKeys = sumCorrelativeKeys;
155
+ function generatePlazos({ inicio, cantidadProyeccion, valor }) {
156
+ const plazos = {};
157
+ if (inicio && valor) {
158
+ let valorInicial = valor;
159
+ if (valorInicial) {
160
+ for (let i = inicio; i <= cantidadProyeccion; i++) {
161
+ if (valorInicial > 0) {
162
+ plazos[`Gestion${i}`] = valorInicial;
163
+ valorInicial--;
164
+ }
165
+ else {
166
+ break;
167
+ }
168
+ }
169
+ }
170
+ }
171
+ return plazos;
172
+ }
173
+ exports.generatePlazos = generatePlazos;
174
+ function calcularPagoPrincipalEntre({ tasaPeriodica, numeroPagos, montoPrestamo, periodoInicial = 1, periodoFinal, }) {
175
+ // Cálculo de la cuota fija periódica (PMT)
176
+ const cuota = (tasaPeriodica * montoPrestamo) /
177
+ (1 - Math.pow(1 + tasaPeriodica, -numeroPagos));
178
+ let saldo = montoPrestamo; // Saldo inicial
179
+ let totalCapitalAmortizado = 0;
180
+ for (let periodo = 1; periodo <= periodoFinal; periodo++) {
181
+ const interesPeriodo = saldo * tasaPeriodica; // Intereses del período actual
182
+ const capitalAmortizado = cuota - interesPeriodo; // Parte de capital de la cuota
183
+ if (periodo >= periodoInicial) {
184
+ totalCapitalAmortizado += capitalAmortizado;
185
+ }
186
+ // Reducir el saldo restante para el siguiente período
187
+ saldo -= capitalAmortizado;
188
+ }
189
+ return totalCapitalAmortizado;
190
+ }
191
+ exports.calcularPagoPrincipalEntre = calcularPagoPrincipalEntre;
192
+ function calcularPagoInteresEntre({ tasaPeriodica, numeroPagos, montoPrestamo, periodoInicial = 1, periodoFinal, }) {
193
+ // Cálculo de la cuota fija periódica (PMT)
194
+ const cuota = (tasaPeriodica * montoPrestamo) /
195
+ (1 - Math.pow(1 + tasaPeriodica, -numeroPagos));
196
+ let saldo = montoPrestamo; // Saldo inicial
197
+ let totalInteresesPagados = 0;
198
+ for (let periodo = 1; periodo <= periodoFinal; periodo++) {
199
+ const interesPeriodo = saldo * tasaPeriodica; // Intereses del período actual
200
+ if (periodo >= periodoInicial) {
201
+ totalInteresesPagados += interesPeriodo; // Suma intereses solo en el rango especificado
202
+ }
203
+ // Reducir el saldo restante para el siguiente período
204
+ const capitalAmortizado = cuota - interesPeriodo;
205
+ saldo -= capitalAmortizado;
206
+ }
207
+ return totalInteresesPagados; // Devuelve el valor negativo para igualar el comportamiento de Excel
208
+ }
209
+ exports.calcularPagoInteresEntre = calcularPagoInteresEntre;
@@ -1,10 +1,14 @@
1
+ import { AdministracionFinancieraCalcData, AdministracionFinancieraData } from "../../models/eeff/admFinanciera";
1
2
  import { Strategy } from "../../strategy.interface";
2
3
  export default class AdmFinancieraStrategy implements Strategy {
3
- data: any;
4
+ data: AdministracionFinancieraCalcData | null;
4
5
  constructor();
5
- execute(data: any): any;
6
- proyeccionLineasMixtas(): any[];
7
- proyeccionPrestamoBajoLineas(): any[];
8
- proyeccionPrestamosDirectos(): any[];
9
- proyeccionAplicaciones: () => any[];
6
+ execute(data: AdministracionFinancieraData): AdministracionFinancieraCalcData;
7
+ private formatPrestamosDirectos;
8
+ private formatPrestamosBajoLinea;
9
+ private setProyeccionesBajoLinea;
10
+ private formatPrestamosLeasing;
11
+ private formatLineasMixtas;
12
+ private setProyeccionesPrestamosDirectos;
13
+ private setProyeccionesAplicaciones;
10
14
  }
@@ -1,99 +1,139 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const getProyeccionBase = (cantidadProyeccion, inicioProyeccion) => {
4
- if (!inicioProyeccion)
5
- throw new Error('Inicio Proyeccion no definido');
6
- let result = {};
7
- for (let i = 1; i <= cantidadProyeccion; i++) {
8
- let date = new Date(inicioProyeccion);
9
- let newDate = `${date.getFullYear() + i}-${`0${date.getMonth()}`.slice(-2)}-${`0${date.getDay()}`.slice(-2)}`;
10
- result[`Gestion${i}`] = newDate;
11
- result[`Monto${i}`] = 0;
12
- }
13
- return result;
14
- };
3
+ const utils_1 = require("./admFinanciera/utils");
4
+ const lodash_1 = require("lodash");
5
+ const prestamoDirectoHandler_1 = require("./admFinanciera/prestamoDirectoHandler");
6
+ const prestamoBajoLineaHandler_1 = require("./admFinanciera/prestamoBajoLineaHandler");
7
+ const proyeccionPrestamosDirectosHandler_1 = require("./admFinanciera/proyeccionPrestamosDirectosHandler");
8
+ const lineasMixtasHandler_1 = require("./admFinanciera/lineasMixtasHandler");
9
+ const prestamoLeasingHandler_1 = require("./admFinanciera/prestamoLeasingHandler");
10
+ const aplicacionesHandler_1 = require("./admFinanciera/aplicacionesHandler");
15
11
  class AdmFinancieraStrategy {
12
+ data;
16
13
  constructor() {
17
- this.proyeccionAplicaciones = () => {
18
- let result = [];
19
- const proyeccionBase = getProyeccionBase(this.data.CantidadProyeccion, this.data.InicioProyeccion);
20
- const clasificaciones = [
21
- 'KO - Línea de Crédito 100% KO',
22
- 'KO - Prestamo Directo',
23
- 'KI - Prestamo Directo',
24
- 'MIXTO - Pagares, Bonos, Etc.',
25
- 'KI - Leasing Financiero',
26
- 'KI - KO - Línea de Crédito Mixta'
27
- ];
28
- for (let i = 0; i < clasificaciones.length; i++) {
29
- result.push(Object.assign({ id: i, Descripcion: clasificaciones[i] }, proyeccionBase));
30
- }
31
- return result;
32
- };
33
- this.data = {};
14
+ this.data = null;
34
15
  }
35
16
  execute(data) {
36
- this.data = data;
37
- this.data.ProyeccionPrestamosBajoLineas = this.proyeccionPrestamoBajoLineas();
38
- this.data.ProyeccionPrestamosDirectos = this.proyeccionPrestamosDirectos();
39
- this.data.ProyeccionAplicaciones = this.proyeccionAplicaciones();
40
- return data;
41
- }
42
- proyeccionLineasMixtas() {
43
- let result = [];
44
- const proyeccionBase = getProyeccionBase(this.data.CantidadProyeccion, this.data.InicioProyeccion);
45
- const clasificaciones = [
46
- 'Total Vencimiento Corriente de Deuda de Largo Plazo',
47
- 'Total Deuda financiera de largo plazo',
48
- 'Total Gastos Financieros y Comisiones',
49
- ];
50
- for (let i = 0; i < clasificaciones.length; i++) {
51
- result.push(Object.assign({ id: i, Descripcion: clasificaciones[i] }, proyeccionBase));
17
+ if (!data || !data?.CantidadProyeccion || !data?.InicioProyeccion) {
18
+ throw new Error('La data o Cantidad Proyeccion o Inicio Proyeccion no estan definidos');
52
19
  }
53
- return result;
20
+ const cloned = (0, lodash_1.cloneDeep)(data);
21
+ this.data = {
22
+ ...cloned,
23
+ ProyeccionPrestamosDirectos: cloned.ProyeccionPrestamosDirectos ?? [],
24
+ ProyeccionAplicaciones: [],
25
+ ProyeccionPrestamosBajoLineas: [],
26
+ };
27
+ this.formatPrestamosDirectos();
28
+ this.formatPrestamosBajoLinea();
29
+ this.formatPrestamosLeasing();
30
+ this.formatLineasMixtas();
31
+ //proyecciones
32
+ this.setProyeccionesBajoLinea();
33
+ this.setProyeccionesPrestamosDirectos();
34
+ this.setProyeccionesAplicaciones();
35
+ return this.data;
54
36
  }
55
- proyeccionPrestamoBajoLineas() {
56
- let result = [];
57
- if (this.data.PrestamoBajoLinea && this.data.PrestamoBajoLinea.length > 0) {
58
- const proyeccionBase = getProyeccionBase(this.data.CantidadProyeccion, this.data.InicioProyeccion);
59
- result = this.data.PrestamoBajoLinea.map((item) => {
60
- let proyeccion = Object.assign({ id: item.ActividadDeudaId, Descripcion: item.Descripcion }, proyeccionBase);
61
- return proyeccion;
62
- });
63
- result.push(Object.assign({ id: -1, Descripcion: 'Tasa de interes deuda de corto plazo y sobregiros' }, proyeccionBase));
64
- result.push(Object.assign({ id: -2, Descripcion: 'Pago Costos Financieros Bs.' }, proyeccionBase));
65
- }
66
- return result;
37
+ formatPrestamosDirectos() {
38
+ let totalMontoOriginal = 0;
39
+ let totalPorcionPagada = 0;
40
+ this.data.PrestamoDirecto.forEach(prestamo => {
41
+ const handled = new prestamoDirectoHandler_1.PrestamoDirectoHandler({
42
+ prestamo,
43
+ data: this.data
44
+ }).handle();
45
+ totalMontoOriginal += (0, utils_1.ourParseFloat)(handled.MontoOriginal);
46
+ totalPorcionPagada += (0, utils_1.ourParseFloat)(handled.PorcionPagada);
47
+ });
48
+ this.data?.PrestamoDirecto.push({
49
+ Descripcion: 'TOTAL PRÉSTAMOS AMORTIZABLES BS',
50
+ MontoOriginal: totalMontoOriginal,
51
+ PorcionPagada: totalPorcionPagada,
52
+ Clasificador: 'T'
53
+ });
54
+ }
55
+ formatPrestamosBajoLinea() {
56
+ let totalMonto = this.data.PrestamoBajoLinea.reduce((acc, curr) => acc + (0, utils_1.ourParseFloat)(curr.MontoOriginal), 0);
57
+ let totalMontoUtilizado = 0;
58
+ let totalTasaPonderada = 0;
59
+ let totalSaldoLinea = 0;
60
+ this.data.PrestamoBajoLinea.forEach(prestamo => {
61
+ const handled = new prestamoBajoLineaHandler_1.PrestamoBajoLineaHandler(prestamo, this.data).handle();
62
+ totalMontoUtilizado += (0, utils_1.ourParseFloat)(handled.MontoUtilizado);
63
+ totalTasaPonderada += (0, utils_1.ourParseFloat)(handled.TasaPonderada);
64
+ totalSaldoLinea += (0, utils_1.ourParseFloat)(handled.SaldoLineaAplicar);
65
+ });
66
+ this.data?.PrestamoBajoLinea.push({
67
+ Descripcion: 'TOTAL LÍNEA DE CRÉDITO BS',
68
+ MontoOriginal: totalMonto,
69
+ MontoUtilizado: totalMontoUtilizado,
70
+ TasaPonderada: totalTasaPonderada,
71
+ SaldoLineaAplicar: totalSaldoLinea,
72
+ Clasificador: 'T'
73
+ });
67
74
  }
68
- proyeccionPrestamosDirectos() {
69
- let result = [];
70
- const proyeccionBase = getProyeccionBase(this.data.CantidadProyeccion, this.data.InicioProyeccion);
71
- const clasificaciones = ['KO - Porción CP - BDP SAM',
72
- 'KI - Porción CP - BDP SAM',
73
- 'L/C Mixta - Porción CP - BDP SAM',
74
- 'Porción LP - BDP SAM',
75
- 'KO - Porción CP - Otras EIFs',
76
- 'KI - Porción CP - Otras EIFs',
77
- 'Otros - Porción CP - Otras EIFs',
78
- 'L/C Mixta - Porción CP - Otras EIFs',
79
- 'Porción LP - Otras EIFs',
80
- 'Intereses y Comisiones - Prestamos Directos',
81
- 'Intereses y Comisiones - Linea de Credito 100% KO',
82
- 'Intereses y Comisiones - Linea de Credito Mixta',
83
- 'Interes - MANUAL',
84
- 'Total Intereses (BDP y Otras EIFs)',
85
- 'Leasing CP (Venc.Corriente + Deuda CP) - Otras EIFs',
86
- 'Leasing LP - Otras EIFs',
87
- 'Intereses Leasing',
88
- 'Interes Leasing - MANUAL',
89
- 'TOTAL PORCIÓN CP (Venc.Corriente) - BDP SAM',
90
- 'TOTAL PORCIÓN CP (Venc.Corriente) - Otras EIFs',
91
- 'TOTAL PORCIÓN LP - BDP SAM',
92
- 'TOTAL PORCIÓN LP - Otras EIFs'];
93
- for (let i = 0; i < clasificaciones.length; i++) {
94
- result.push(Object.assign({ id: i, Descripcion: clasificaciones[i] }, proyeccionBase));
75
+ setProyeccionesBajoLinea() {
76
+ const filaTotales = this.data.PrestamoBajoLinea.find(pr => pr.Clasificador == 'T');
77
+ const totalTasaPonderada = (0, utils_1.ourParseFloat)(filaTotales?.TasaPonderada) / 100;
78
+ const proyecciones = this.data.PrestamoBajoLinea.map(pr => ({
79
+ Descripcion: pr.Descripcion,
80
+ ...pr.Proyecciones
81
+ }));
82
+ const pagoCostosFinancieros = {
83
+ id: -1,
84
+ Descripcion: 'Pago de Costos Financieros Bs.',
85
+ Clasificador: 'T'
86
+ };
87
+ for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
88
+ let value;
89
+ if (i == 1) {
90
+ const primeraFila = this.data.PrestamoBajoLinea.at(0);
91
+ value = (0, utils_1.ourParseFloat)(primeraFila?.MontoUtilizado) * totalTasaPonderada;
92
+ }
93
+ else {
94
+ const sumaColumnaAnterior = (0, utils_1.getColumnSum)(proyecciones, `Gestion${i - 1}`);
95
+ value = sumaColumnaAnterior * totalTasaPonderada;
96
+ }
97
+ pagoCostosFinancieros[`Gestion${i}`] = value;
95
98
  }
96
- return result;
99
+ proyecciones.push(pagoCostosFinancieros);
100
+ this.data.ProyeccionPrestamosBajoLineas = proyecciones;
101
+ }
102
+ formatPrestamosLeasing() {
103
+ let totalMonto = 0;
104
+ let totalCuotaPeriodo = 0;
105
+ let totalAporteInicial = 0;
106
+ let totalValorResidual = 0;
107
+ let totalValorBien = 0;
108
+ this.data.PrestamoLeasing.forEach(prestamo => {
109
+ const handled = new prestamoLeasingHandler_1.PrestamoLeasingHandler({ data: this.data, prestamo }).handle();
110
+ totalMonto += (0, utils_1.ourParseFloat)(handled.MontoOriginal);
111
+ totalCuotaPeriodo += (0, utils_1.ourParseFloat)(handled.MontoCuotaPeriodo);
112
+ totalAporteInicial += (0, utils_1.ourParseFloat)(handled.MontoAporteInicial);
113
+ totalValorResidual += (0, utils_1.ourParseFloat)(handled.MontoValorResidual);
114
+ totalValorBien += (0, utils_1.ourParseFloat)(handled.MontoValorBien);
115
+ });
116
+ this.data?.PrestamoLeasing.push({
117
+ Descripcion: 'TOTAL LEASING BS',
118
+ MontoOriginal: totalMonto,
119
+ MontoCuotaPeriodo: totalCuotaPeriodo,
120
+ MontoAporteInicial: totalAporteInicial,
121
+ MontoValorResidual: totalValorResidual,
122
+ MontoValorBien: totalValorBien,
123
+ Clasificador: 'T'
124
+ });
125
+ }
126
+ formatLineasMixtas() {
127
+ new lineasMixtasHandler_1.LineasMixtasHandler(this.data).handle();
128
+ }
129
+ setProyeccionesPrestamosDirectos() {
130
+ const handler = new proyeccionPrestamosDirectosHandler_1.ProyeccionPrestamosDirectosHandler({
131
+ data: this.data
132
+ });
133
+ this.data.ProyeccionPrestamosDirectos = handler.handle();
134
+ }
135
+ setProyeccionesAplicaciones() {
136
+ new aplicacionesHandler_1.AplicacionesHandler({ data: this.data }).handle();
97
137
  }
98
138
  }
99
139
  exports.default = AdmFinancieraStrategy;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  class BalanceEEFFStrategy {
4
+ actividades;
4
5
  constructor() {
5
6
  this.actividades = [];
6
7
  }
@@ -81,7 +82,7 @@ const anadirGrupoBalance = (actividad, rubros, grupoActividad, rubroDestino, dat
81
82
  }, null);
82
83
  for (let i = 1; i <= rango; i++) {
83
84
  const cuenta = data.find((item) => item.RubroId == rubroDestino);
84
- let copy = Object.assign({}, cuenta);
85
+ let copy = { ...cuenta };
85
86
  copy.RubroId = (esDetalle ? `${rubroDestino}` : `${rubroDestino}.1`);
86
87
  copy.Descripcion = `${cuenta.Descripcion} ${actividad.ActividadEconomicaId} ${actividad.Descripcion}`;
87
88
  copy.UUID = `${rubroDestino}_${actividad.ActividadEconomicaId}_${i}`;
@@ -124,7 +125,7 @@ const getCuentasCopy = (data, rubroId, map) => {
124
125
  let cuentaIngreso = map.get(`${rubroId}_${i}`);
125
126
  cuentaIngreso.MontoEmpresa = Math.round(parseFloat(cuentaIngreso.MontoEmpresa) * 100) / 100;
126
127
  cuentaIngreso.MontoFamiliar = Math.round(parseFloat(cuentaIngreso.MontoFamiliar) * 100) / 100;
127
- originalData.set(`${rubroId}_${i}`, Object.assign({}, cuentaIngreso));
128
+ originalData.set(`${rubroId}_${i}`, { ...cuentaIngreso });
128
129
  }
129
130
  return originalData;
130
131
  };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  class FlujoProyectadoEEFFStrategy {
4
+ actividades;
4
5
  constructor() {
5
6
  this.actividades = [];
6
7
  }
@@ -53,7 +54,7 @@ const agregarGrupo = (rubros, actividad, grupoActividad, rubroDestino, data) =>
53
54
  return acc;
54
55
  }, null);
55
56
  const rubro = data.FlujoProyectadoAnual[0];
56
- let row = Object.assign({}, rubro);
57
+ let row = { ...rubro };
57
58
  row.RubroId = rubroDestino;
58
59
  row.Clasificador = 'CT';
59
60
  row.Descripcion = `Actividad: ${actividad.Descripcion}`;
@@ -79,5 +80,5 @@ const sumarizarCuenta = (rubroId, data) => {
79
80
  };
80
81
  const getCuentaCopy = (rubroId, data) => {
81
82
  const cuenta = data.FlujoProyectadoAnualMap.get(`${rubroId}_0`);
82
- return Object.assign({}, cuenta);
83
+ return { ...cuenta };
83
84
  };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  class BalanceGeneralStrategy {
4
+ actividades;
4
5
  constructor() {
5
6
  this.actividades = {};
6
7
  }
@@ -25,7 +26,7 @@ const procesarConsolidado = (consolidado, data, tipoConsolidado) => {
25
26
  for (const rubro of rubros) {
26
27
  for (let i = 1; i <= rango; i++) {
27
28
  const cuenta = data.find((item) => item.RubroId == rubro.RubroId);
28
- let copy = Object.assign({}, cuenta);
29
+ let copy = { ...cuenta };
29
30
  copy.RubroId = (rubro.Clasificador == 'HABM' ? `${rubro.RubroId}` : `${rubro.RubroId}.1`);
30
31
  copy.Descripcion = `${cuenta.Descripcion} - Consolidado ${tipoConsolidado} `;
31
32
  copy.UUID = `${rubro.RubroId}_${tipoConsolidado}_${i}`;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  class FlujoProyectadoBalanceStrategy {
4
+ actividades;
4
5
  constructor() {
5
6
  this.actividades = {};
6
7
  }
@@ -21,7 +22,7 @@ const procesarAnual = (consolidado, data, tipoConsolidado) => {
21
22
  if (rubros.length == 0) {
22
23
  for (const rubroItem of rubros) {
23
24
  const rubro = data.FlujoProyectadoAnual[0];
24
- let row = Object.assign({}, rubro);
25
+ let row = { ...rubro };
25
26
  row.Clasificador = 'CT';
26
27
  row.Descripcion = `${rubroItem.Descripcion} - ${tipoConsolidado}`;
27
28
  row.Editable = false;
@@ -5,6 +5,7 @@ const gCuentaCosto = 'ACT_CN_41002';
5
5
  const gCuentaGasto = 'ACT_CN_43002';
6
6
  const gCuentaOtrosIngresosDet = 'ACT_CN_45001';
7
7
  class BalancePecStrategy {
8
+ actividades;
8
9
  constructor() {
9
10
  this.actividades = [];
10
11
  }
@@ -37,7 +38,7 @@ const getCuentasCopy = (data, rubroId) => {
37
38
  let cuentaIngreso = data.eerrMap.get(`${rubroId}_${i}`);
38
39
  cuentaIngreso.MontoEmpresa = Math.round(parseFloat(cuentaIngreso.MontoEmpresa) * 100) / 100;
39
40
  cuentaIngreso.MontoFamiliar = Math.round(parseFloat(cuentaIngreso.MontoFamiliar) * 100) / 100;
40
- originalData.set(`${rubroId}_${i}`, Object.assign({}, cuentaIngreso));
41
+ originalData.set(`${rubroId}_${i}`, { ...cuentaIngreso });
41
42
  }
42
43
  return originalData;
43
44
  };
@@ -45,7 +46,7 @@ const anadirIngresosAuxPec = (actividad, data) => {
45
46
  const rango = data.eerr[0].Rango;
46
47
  for (let i = 1; i <= rango - 1; i++) {
47
48
  const cuentaIngreso = data.eerrMap.get(`${gCuentaIngreso}_${i}`);
48
- let copy = Object.assign({}, cuentaIngreso);
49
+ let copy = { ...cuentaIngreso };
49
50
  copy.RubroId = `${gCuentaIngreso}.1`;
50
51
  copy.Descripcion = `Ingresos por Ventas ${actividad.Desarrollo.ActividadGanadera}`;
51
52
  copy.UUID = `${gCuentaIngreso}_${actividad.AuxPec.ActividadEconomicaId}_${i}`;
@@ -64,7 +65,7 @@ const anadirIngresosAuxPec = (actividad, data) => {
64
65
  const anadirIngresoVenta = (actividad, data) => {
65
66
  const rango = data.eerr[0].Rango;
66
67
  const cuentaIngreso = data.eerrMap.get(`${gCuentaIngreso}${rango}`);
67
- let copy = Object.assign({}, cuentaIngreso);
68
+ let copy = { ...cuentaIngreso };
68
69
  copy.RubroId = `${gCuentaIngreso}.1`;
69
70
  copy.Descripcion = `Ingresos por Ventas ${actividad.Desarrollo.ActividadGanadera}`;
70
71
  copy.UUID = `${gCuentaIngreso}_${actividad.AuxPec.ActividadEconomicaId}_${rango}`;
@@ -84,7 +85,7 @@ const anadirCosto = (actividad, data) => {
84
85
  const rango = data.eerr[0].Rango;
85
86
  const cuentaCosto = data.eerrMap.get(`${gCuentaCosto}_${rango}`);
86
87
  for (let i = 1; i <= rango; i++) {
87
- let copy = Object.assign({}, cuentaCosto);
88
+ let copy = { ...cuentaCosto };
88
89
  copy.RubroId = `${gCuentaCosto}.1`;
89
90
  copy.Descripcion = `Costos de Ventas ${actividad.Desarrollo.ActividadGanadera}`;
90
91
  copy.UUID = `${gCuentaCosto}_${actividad.AuxPec.ActividadEconomicaId}_${i}`;
@@ -105,7 +106,7 @@ const anadirGasto = (actividad, data) => {
105
106
  const rango = data.eerr[0].Rango;
106
107
  const cuentaGasto = data.eerrMap.get(`${gCuentaGasto}_${rango}`);
107
108
  for (let i = 1; i <= rango; i++) {
108
- let copy = Object.assign({}, cuentaGasto);
109
+ let copy = { ...cuentaGasto };
109
110
  copy.RubroId = `${gCuentaGasto}.1`;
110
111
  copy.UUID = `${gCuentaGasto}_${actividad.AuxPec.ActividadEconomicaId}_${i}`;
111
112
  copy.Descripcion = `Gastos Administrativos Operativos ${actividad.Desarrollo.ActividadGanadera}`;
@@ -138,7 +139,7 @@ const anadirOtrosIngresos = (actividad, data) => {
138
139
  const rango = data.eerr[0].Rango;
139
140
  const cuentaOtrosIngresos = data.eerr.find((item) => item.RubroId == gCuentaOtrosIngresosDet);
140
141
  for (let i = 1; i <= rango; i++) {
141
- let copy = Object.assign({}, cuentaOtrosIngresos);
142
+ let copy = { ...cuentaOtrosIngresos };
142
143
  copy.UUID = `${gCuentaOtrosIngresosDet}_${actividad.AuxPec.ActividadEconomicaId}_${rango}`;
143
144
  copy.Descripcion = `Otros Ingresos ${actividad.Desarrollo.ActividadGanadera}`;
144
145
  copy.MontoEmpresa = 0;
@@ -17,7 +17,10 @@ const getAvaluo = (avaluo, propiedades) => {
17
17
  return acc;
18
18
  }, new Map()).values());
19
19
  sumatoria = sumatoria.map((item) => {
20
- return Object.assign(Object.assign({}, item), { Cantidad: Math.round(item.Cantidad * 100) / 100, PrecioVenta: Math.round(item.Precio / cantidad * 100) / 100 });
20
+ return { ...item,
21
+ Cantidad: Math.round(item.Cantidad * 100) / 100,
22
+ PrecioVenta: Math.round(item.Precio / cantidad * 100) / 100
23
+ };
21
24
  });
22
25
  avaluo = avaluo.map((item) => {
23
26
  item.HatoInicial = 0;
@@ -63,10 +66,15 @@ const getProyectado = (avaluo, CantidadProy, init = 1) => {
63
66
  for (let i = init; i <= CantidadProy; i++) {
64
67
  data[`C-${i}`] = 0;
65
68
  }
66
- return Object.assign({ RubroId: item.RubroId, Descripcion: item.Descripcion, Orden: (0, Constantes_1.getOrden)(item.RubroId) }, data);
69
+ return {
70
+ RubroId: item.RubroId,
71
+ Descripcion: item.Descripcion,
72
+ Orden: (0, Constantes_1.getOrden)(item.RubroId),
73
+ ...data
74
+ };
67
75
  });
68
76
  result = result.reduce((acc, item) => {
69
- acc.set(item.RubroId, Object.assign({}, item));
77
+ acc.set(item.RubroId, { ...item });
70
78
  return acc;
71
79
  }, new Map());
72
80
  return result;
@@ -41,11 +41,11 @@ const getProyDesarrollo = (avaluos, parametros, CantidadProy, CantidadHectareas)
41
41
  let ventasCantidad = desarrolloCalc.getProyectado(avaluos, CantidadProy);
42
42
  let ventasAnuales = desarrolloCalc.getProyectado(avaluos, CantidadProy);
43
43
  const paramsMap = parametros.reduce((acc, item) => {
44
- acc.set(item.RubroId, Object.assign({}, item));
44
+ acc.set(item.RubroId, { ...item });
45
45
  return acc;
46
46
  }, new Map());
47
47
  const avaluosMap = avaluos.reduce((acc, item) => {
48
- acc.set(item.RubroId, Object.assign({}, item));
48
+ acc.set(item.RubroId, { ...item });
49
49
  return acc;
50
50
  }, new Map());
51
51
  for (let i = 0; i <= CantidadProy; i++) {