bdpformulas 1.0.56 → 1.0.58

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 (25) hide show
  1. package/build/context.d.ts +1 -1
  2. package/build/index.d.ts +13 -1
  3. package/build/strategies/agriculture/flujoProyAgr.strategy.d.ts +1 -1
  4. package/build/strategies/agriculture/flujoProyAgr.strategy.js +16 -7
  5. package/build/strategies/agriculture/ventas.detail/ventas.calc.js +8 -5
  6. package/build/strategies/analisisFinancieros.strategy.d.ts +1 -1
  7. package/build/strategies/analisisFinancieros.strategy.js +10 -6
  8. package/build/strategies/balance.strategy.d.ts +0 -12
  9. package/build/strategies/common/analisisFinCalculos/analisisDupont.calc.js +35 -17
  10. package/build/strategies/common/analisisFinCalculos/analisisGrafico.calc.d.ts +1 -0
  11. package/build/strategies/common/analisisFinCalculos/analisisGrafico.calc.js +17 -9
  12. package/build/strategies/common/analisisFinCalculos/apalancamiento.calc.js +49 -26
  13. package/build/strategies/common/analisisFinCalculos/puntoEquilibrio.calc.js +25 -12
  14. package/build/strategies/common/analisisFinCalculos/ratios.calc.js +114 -62
  15. package/build/strategies/common/declaracionJurada.calc.js +1 -1
  16. package/build/strategies/common/flujoCalculos/flujoConstructor.d.ts +4 -0
  17. package/build/strategies/common/flujoCalculos/flujoConstructor.js +231 -96
  18. package/build/strategies/common/flujoCalculos/supuestos.calc.js +21 -27
  19. package/build/strategies/common/flujoProyectado.calc.js +4 -1
  20. package/build/strategies/flujoProyectado.strategy.d.ts +1 -1
  21. package/build/strategies/flujoProyectado.strategy.js +2 -1
  22. package/build/strategies/index.js +2645 -7280
  23. package/build/strategies/utils.d.ts +2 -1
  24. package/build/strategies/utils.js +7 -1
  25. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { Strategy } from "./strategy.interface";
1
+ import { Strategy } from './strategy.interface';
2
2
  export default class Context {
3
3
  private strategy;
4
4
  constructor(strategy: Strategy);
package/build/index.d.ts CHANGED
@@ -53,4 +53,16 @@ declare const Actividades: {
53
53
  FlujoProyectado: typeof FlujoProyectado;
54
54
  AnalisisFinancieros: typeof AnalisisFinancieros;
55
55
  };
56
- export { Context, Agricola, Pecuario, Produccion, EEFF, Actividades, General };
56
+ interface CampoCalculadoDefinido {
57
+ RubroId: string;
58
+ Correlativos: '*' | 'ultima' | number[];
59
+ Empresa: boolean;
60
+ Familiar: boolean;
61
+ }
62
+ interface CampoCalculado {
63
+ RubroId: string;
64
+ Correlativo: number;
65
+ Empresa: boolean;
66
+ Familiar: boolean;
67
+ }
68
+ export { Context, Agricola, Pecuario, Produccion, EEFF, Actividades, General, CampoCalculado, CampoCalculadoDefinido };
@@ -1,4 +1,4 @@
1
- import { Strategy } from "../../strategy.interface";
1
+ import { Strategy } from '../../strategy.interface';
2
2
  export default class FlujoProyectadoAgrStrategy implements Strategy {
3
3
  actividades: any[];
4
4
  constructor();
@@ -20,7 +20,7 @@ const calcularFlujoMensual = (data, actividades) => {
20
20
  const gastosOperativos = [];
21
21
  const gastosFamiliares = [];
22
22
  const consolidadoOtrosIngresos = [];
23
- for (let actividad of actividades) {
23
+ for (const actividad of actividades) {
24
24
  (0, ventas_calc_1.addCalculoIngresosVentas)(actividad.Ventas);
25
25
  consolidadoIngresos.push(getIngresoActividad(actividad));
26
26
  consolidadoCostos.push(getCostosActividad(actividad));
@@ -39,7 +39,7 @@ const calcularFlujoMensual = (data, actividades) => {
39
39
  };
40
40
  //@ts-ignore
41
41
  const setValues = (data, consolidado, rubroId, i) => {
42
- let row = data.FlujoProyectadoMensualMap.get(`${rubroId}_0`);
42
+ const row = data.FlujoProyectadoMensualMap.get(`${rubroId}_0`);
43
43
  if (parseFloat(row[`Monto${i}`]) == 0) {
44
44
  consolidado.forEach((item) => {
45
45
  if (item) {
@@ -54,7 +54,10 @@ const getIngresoActividad = (actividad) => {
54
54
  if (!actividad.Ventas.CalculoIngreso)
55
55
  return null;
56
56
  const total = actividad.Ventas.CalculoIngreso.find((item) => item.ActividadProductoId == 0);
57
- let result = { ...total, Descripcion: `Ventas Act:${total.ActividadEconomicaId}` };
57
+ const result = {
58
+ ...total,
59
+ Descripcion: `Ventas Act:${total.ActividadEconomicaId}`
60
+ };
58
61
  return result;
59
62
  };
60
63
  //@ts-ignore
@@ -62,7 +65,10 @@ const getCostosActividad = (actividad) => {
62
65
  if (!actividad.Costos.Meses || actividad.Costos.Meses.length == 0)
63
66
  return null;
64
67
  const total = actividad.Costos.Meses.find((item) => item.ActividadProductoId == 0);
65
- let result = { ...total, Descripcion: `Costos Act:${total.ActividadEconomicaId}` };
68
+ const result = {
69
+ ...total,
70
+ Descripcion: `Costos Act:${total.ActividadEconomicaId}`
71
+ };
66
72
  return result;
67
73
  };
68
74
  //@ts-ignore
@@ -73,7 +79,9 @@ const getGastos = (actividad, tipo) => {
73
79
  acc += Math.round(parseFloat(item.ImporteMensual) * 100) / 100;
74
80
  return acc;
75
81
  }, 0);
76
- let result = { Descripcion: `Gastos ${tipo} Act:${total.ActividadEconomicaId}` };
82
+ const result = {
83
+ Descripcion: `Gastos ${tipo} Act:${total.ActividadEconomicaId}`
84
+ };
77
85
  for (let i = 1; i <= 12; i++) {
78
86
  result[`Monto${i}`] = total;
79
87
  }
@@ -81,9 +89,10 @@ const getGastos = (actividad, tipo) => {
81
89
  };
82
90
  //@ts-ignore
83
91
  const getOtrosIngresos = (actividad) => {
84
- if (!actividad.Ventas.OtrosIngresos || actividad.Ventas.OtrosIngresos.length == 0)
92
+ if (!actividad.Ventas.OtrosIngresos ||
93
+ actividad.Ventas.OtrosIngresos.length == 0)
85
94
  return null;
86
- let result = actividad.Ventas.OtrosIngresos.reduce((acc, item) => {
95
+ const result = actividad.Ventas.OtrosIngresos.reduce((acc, item) => {
87
96
  for (let i = 1; i <= 12; i++) {
88
97
  if (!acc[`Monto${i}`])
89
98
  acc[`Monto${i}`] = 0;
@@ -7,8 +7,11 @@ const addCalculoIngresosVentas = (ventas) => {
7
7
  const calculoIngreso = ventas.Productos.reduce((acc, producto) => {
8
8
  const ingreso = (0, exports.calcularIngreso)(producto);
9
9
  if (!acc.has(0))
10
- acc.set(0, { ...ingreso, ActividadProductoId: 0,
11
- ActividadProductoDesc: 'Total' });
10
+ acc.set(0, {
11
+ ...ingreso,
12
+ ActividadProductoId: 0,
13
+ ActividadProductoDesc: 'Total'
14
+ });
12
15
  else {
13
16
  for (let i = 1; i <= 12; i++) {
14
17
  acc.get(0)[`Monto${i}`] += ingreso[`Monto${i}`];
@@ -21,7 +24,7 @@ const addCalculoIngresosVentas = (ventas) => {
21
24
  };
22
25
  exports.addCalculoIngresosVentas = addCalculoIngresosVentas;
23
26
  const calcularIngreso = (producto) => {
24
- let result = {};
27
+ const result = {};
25
28
  const ingresoTotalCampanna = parseFloat(producto.IngresoTotalCampanna);
26
29
  const estacionalidad = producto.Estacionalidad[0];
27
30
  result.ActividadEconomicaId = estacionalidad.ActividadEconomicaId;
@@ -29,8 +32,8 @@ const calcularIngreso = (producto) => {
29
32
  result.ActividadProductoDesc = estacionalidad.ActividadProductoDesc;
30
33
  let acum = 0;
31
34
  for (let i = 1; i <= 12; i++) {
32
- result[`Monto${i}`] =
33
- Math.round(ingresoTotalCampanna * parseFloat(estacionalidad[`Gestion${i}`]) * 100) / 100;
35
+ result[`Monto${i}`] = Math.round((ingresoTotalCampanna * parseFloat(estacionalidad[`Gestion${i}`])) /
36
+ 100);
34
37
  acum += result[`Monto${i}`];
35
38
  }
36
39
  result.Total = acum;
@@ -1,4 +1,4 @@
1
- import { Strategy } from "../strategy.interface";
1
+ import { Strategy } from '../strategy.interface';
2
2
  export default class AnalisisFinancieros implements Strategy {
3
3
  execute(data: any): any;
4
4
  generarMapBalance: (data: any) => any;
@@ -10,8 +10,8 @@ const analisisDupont_calc_1 = require("./common/analisisFinCalculos/analisisDupo
10
10
  const puntoEquilibrio_calc_1 = require("./common/analisisFinCalculos/puntoEquilibrio.calc");
11
11
  class AnalisisFinancieros {
12
12
  execute(data) {
13
- let analisisGrafico = new analisisGrafico_calc_1.default(data);
14
- let ratios = new ratios_calc_1.default(data);
13
+ const analisisGrafico = new analisisGrafico_calc_1.default(data);
14
+ const ratios = new ratios_calc_1.default(data);
15
15
  data.balanceMap = this.generarMapBalance(data);
16
16
  data.eerrMap = this.generarMapEERR(data);
17
17
  ratios.generarRatios();
@@ -26,8 +26,10 @@ class AnalisisFinancieros {
26
26
  }
27
27
  generarMapBalance = (data) => {
28
28
  return data.balance.balance.reduce((acc, item) => {
29
- let uuid = item.UUID ? item.UUID : '0';
30
- let key = `${item.RubroId}_${item.Clasificador == 'HABM' || item.Clasificador == 'CT' ? uuid : '0'}`;
29
+ const uuid = item.UUID ? item.UUID : '0';
30
+ const key = `${item.RubroId}_${item.Clasificador == 'HABM' || item.Clasificador == 'CT'
31
+ ? uuid
32
+ : '0'}`;
31
33
  if (acc.has(key))
32
34
  throw new Error(`Duplicado en balanceMap: ${key}`);
33
35
  acc.set(key, item);
@@ -36,8 +38,10 @@ class AnalisisFinancieros {
36
38
  };
37
39
  generarMapEERR = (data) => {
38
40
  return data.balance.eerr.reduce((acc, item) => {
39
- let uuid = item.UUID ? item.UUID : '0';
40
- let key = `${item.RubroId}_${item.Clasificador == 'HABM' || item.Clasificador == 'CT' ? uuid : '0'}`;
41
+ const uuid = item.UUID ? item.UUID : '0';
42
+ const key = `${item.RubroId}_${item.Clasificador == 'HABM' || item.Clasificador == 'CT'
43
+ ? uuid
44
+ : '0'}`;
41
45
  if (acc.has(key))
42
46
  throw new Error(`Duplicado en balanceMap: ${key}`);
43
47
  acc.set(key, item);
@@ -1,16 +1,4 @@
1
1
  import { Strategy } from '../strategy.interface';
2
- export interface CampoCalculadoDefinido {
3
- RubroId: string;
4
- Correlativos: '*' | 'ultima' | number[];
5
- Empresa: boolean;
6
- Familiar: boolean;
7
- }
8
- export interface CampoCalculado {
9
- RubroId: string;
10
- Correlativo: number;
11
- Empresa: boolean;
12
- Familiar: boolean;
13
- }
14
2
  export default class Balance implements Strategy {
15
3
  execute(data: any): any;
16
4
  }
@@ -4,25 +4,43 @@ exports.setAnalisisDupont = void 0;
4
4
  const setAnalisisDupont = (data) => {
5
5
  const rango = data.balanceMap.get('ACT_CN_10000_0').Rango;
6
6
  const totalIngresos = data.eerrMap.get('ACT_CN_40003_0');
7
- const totalActivos = data.balanceMap.get('ACT_CN_10000_0');
8
- const totalPatrimonio = data.balanceMap.get('ACT_CN_30000_0');
7
+ const totalActivos = data.balanceMap.get('ACT_CN_19000_0');
8
+ const totalPatrimonio = data.balanceMap.get('ACT_CN_39000_0');
9
9
  const utilidadNeta = data.eerrMap.get('ACT_CN_47000_0');
10
- let margenNeto = { RubroId: '001', Descripcion: 'MARGEN NET0 (Utilidad Neta / Total Ingresos)' };
11
- let rotacion = { RubroId: '002', Descripcion: 'ROTACIÓN (Total Ingresos / Total Activos)' };
12
- let apalancamiento = { RubroId: '003', Descripcion: 'APALANCAMIENTO (Total Activos / Total Patrimonio)' };
13
- let roe = { RubroId: '004', Descripcion: 'ROE' };
10
+ const margenNeto = {
11
+ RubroId: '001',
12
+ Descripcion: 'MARGEN NET0 (Utilidad Neta / Total Ingresos)'
13
+ };
14
+ const rotacion = {
15
+ RubroId: '002',
16
+ Descripcion: 'ROTACIÓN (Total Ingresos / Total Activos)'
17
+ };
18
+ const apalancamiento = {
19
+ RubroId: '003',
20
+ Descripcion: 'APALANCAMIENTO (Total Activos / Total Patrimonio)'
21
+ };
22
+ const roe = { RubroId: '004', Descripcion: 'ROE' };
14
23
  for (let i = 1; i <= rango; i++) {
15
- margenNeto[`Monto${i}`] = totalIngresos[`MontoEmpresa_${i}`] == 0 ? 0 :
16
- parseFloat(utilidadNeta[`MontoEmpresa_${i}`]) / parseFloat(totalIngresos[`MontoEmpresa_${i}`]);
17
- rotacion[`Monto${i}`] = totalActivos[`MontoEmpresa_${i}`] == 0 ? 0 :
18
- parseFloat(totalIngresos[`MontoEmpresa_${i}`]) / parseFloat(totalActivos[`MontoEmpresa_${i}`]);
19
- apalancamiento[`Monto${i}`] = totalPatrimonio[`MontoEmpresa_${i}`] == 0 ? 0 :
20
- parseFloat(totalActivos[`MontoEmpresa_${i}`]) / parseFloat(totalPatrimonio[`MontoEmpresa_${i}`]);
21
- roe[`Monto${i}`] = margenNeto[`Monto${i}`] * rotacion[`Monto${i}`] * apalancamiento[`Monto${i}`];
22
- margenNeto[`Monto${i}`] = Math.round(margenNeto[`Monto${i}`] * 100) / 100;
23
- rotacion[`Monto${i}`] = Math.round(rotacion[`Monto${i}`] * 100) / 100;
24
- apalancamiento[`Monto${i}`] = Math.round(apalancamiento[`Monto${i}`] * 100) / 100;
25
- roe[`Monto${i}`] = Math.round(roe[`Monto${i}`] * 100) / 100;
24
+ margenNeto[`Monto${i}`] =
25
+ totalIngresos[`MontoEmpresa_${i}`] == 0
26
+ ? 0
27
+ : (parseFloat(utilidadNeta[`MontoEmpresa_${i}`]) /
28
+ parseFloat(totalIngresos[`MontoEmpresa_${i}`])) *
29
+ 100;
30
+ rotacion[`Monto${i}`] =
31
+ totalActivos[`MontoEmpresa_${i}`] == 0
32
+ ? 0
33
+ : parseFloat(totalIngresos[`MontoEmpresa_${i}`]) /
34
+ parseFloat(totalActivos[`MontoEmpresa_${i}`]);
35
+ apalancamiento[`Monto${i}`] =
36
+ totalPatrimonio[`MontoEmpresa_${i}`] == 0
37
+ ? 0
38
+ : parseFloat(totalActivos[`MontoEmpresa_${i}`]) /
39
+ parseFloat(totalPatrimonio[`MontoEmpresa_${i}`]);
40
+ roe[`Monto${i}`] =
41
+ margenNeto[`Monto${i}`] *
42
+ rotacion[`Monto${i}`] *
43
+ apalancamiento[`Monto${i}`];
26
44
  }
27
45
  data.AnalisisDupont = [margenNeto, rotacion, apalancamiento, roe];
28
46
  };
@@ -1,5 +1,6 @@
1
1
  export default class AnalisisGrafico {
2
2
  private data;
3
+ private cantidadGestiones;
3
4
  constructor(data: any);
4
5
  generarGraficos(): void;
5
6
  balanceGeneral: () => void;
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lodash_1 = require("lodash");
3
4
  class AnalisisGrafico {
4
5
  //@ts-ignore
5
6
  data;
7
+ cantidadGestiones;
6
8
  constructor(data) {
7
9
  this.data = data;
10
+ this.cantidadGestiones = data.Gestiones.Gestiones.length;
8
11
  }
9
12
  generarGraficos() {
10
13
  this.balanceGeneral();
@@ -15,7 +18,7 @@ class AnalisisGrafico {
15
18
  this.margenesEstadoResultados();
16
19
  }
17
20
  balanceGeneral = () => {
18
- let array = [];
21
+ const array = [];
19
22
  array.push(this.data.balanceMap.get('ACT_CN_11900_0'));
20
23
  array.push(this.data.balanceMap.get('ACT_CN_12900_0'));
21
24
  array.push(this.data.balanceMap.get('ACT_CN_21900_0'));
@@ -24,36 +27,41 @@ class AnalisisGrafico {
24
27
  this.data.estructuraGeneral = array;
25
28
  };
26
29
  evolucionActivos = () => {
27
- let array = [];
30
+ const array = [];
28
31
  array.push(this.data.balanceMap.get('ACT_CN_11900_0'));
29
32
  array.push(this.data.balanceMap.get('ACT_CN_12900_0'));
30
33
  array.push(this.data.balanceMap.get('ACT_CN_19000_0'));
31
34
  this.data.evolucionActivos = array;
32
35
  };
33
36
  comportamientoPasivos = () => {
34
- let array = [];
37
+ const array = [];
35
38
  array.push(this.data.balanceMap.get('ACT_CN_21900_0'));
36
39
  array.push(this.data.balanceMap.get('ACT_CN_22900_0'));
37
40
  array.push(this.data.balanceMap.get('ACT_CN_29000_0'));
38
41
  this.data.comportamientoPasivos = array;
39
42
  };
40
43
  comportamientoPatrimonio = () => {
41
- let array = [];
44
+ const array = [];
42
45
  array.push(this.data.balanceMap.get('ACT_CN_39000_0'));
43
46
  this.data.comportamientoPatrimonio = array;
44
47
  };
45
48
  evolucionEstadoResultados = () => {
46
- let array = [];
49
+ const array = [];
47
50
  array.push(this.data.eerrMap.get('ACT_CN_40003_0'));
48
51
  array.push(this.data.eerrMap.get('ACT_CN_41004_0'));
49
52
  array.push(this.data.eerrMap.get('ACT_CN_43900_0'));
50
53
  this.data.evolucionEstadoResultados = array;
51
54
  };
52
55
  margenesEstadoResultados = () => {
53
- let array = [];
54
- const ratio3 = this.data.Ratios.rentabilidad.find((item) => item.id === 'Ratio3');
55
- const ratio4 = this.data.Ratios.rentabilidad.find((item) => item.id === 'Ratio4');
56
- const ratio5 = this.data.Ratios.rentabilidad.find((item) => item.id === 'Ratio5');
56
+ const array = [];
57
+ const ratio3 = (0, lodash_1.clone)(this.data.Ratios.rentabilidad.find((item) => item.id === 'Ratio3'));
58
+ const ratio4 = (0, lodash_1.clone)(this.data.Ratios.rentabilidad.find((item) => item.id === 'Ratio4'));
59
+ const ratio5 = (0, lodash_1.clone)(this.data.Ratios.rentabilidad.find((item) => item.id === 'Ratio5'));
60
+ for (let i = 1; i <= this.cantidadGestiones; i++) {
61
+ ratio3[`Monto${i}`] = Math.round(ratio3[`Monto${i}`] / 100);
62
+ ratio4[`Monto${i}`] = Math.round(ratio4[`Monto${i}`] / 100);
63
+ ratio5[`Monto${i}`] = Math.round(ratio5[`Monto${i}`] / 100);
64
+ }
57
65
  array.push(ratio3);
58
66
  array.push(ratio4);
59
67
  array.push(ratio5);
@@ -13,35 +13,58 @@ const setApalancamiento = (data) => {
13
13
  sumaMontos = Math.round(sumaMontos * 100) / 100;
14
14
  }
15
15
  const rango = data.balanceMap.get('ACT_CN_10000_0').Rango;
16
- const totalPatrimonio = data.balanceMap.get('ACT_CN_10000_0');
17
- const obligacionesFinancieras = data.balanceMap.get('ACT_CN_10000_0');
18
- const obligacionesFinancierasLP = data.balanceMap.get('ACT_CN_10000_0');
19
- const totalPasivo = data.balanceMap.get('ACT_CN_10000_0');
16
+ const totalPatrimonio = data.balanceMap.get('ACT_CN_39000_0');
17
+ const obligacionesFinancieras = data.balanceMap.get('ACT_CN_21001_0');
18
+ const obligacionesFinancierasLP = data.balanceMap.get('ACT_CN_22001_0');
19
+ const totalPasivo = data.balanceMap.get('ACT_CN_29000_0');
20
20
  data.Apalancamiento = {};
21
21
  data.Apalancamiento.RelacionPatrimonio = {};
22
- data.Apalancamiento.RelacionPatrimonio.Negocio = (totalPatrimonio[`MontoEmpresa_${rango}`] == 0) ? 0 :
23
- sumaMontos / totalPatrimonio[`MontoEmpresa_${rango}`];
24
- data.Apalancamiento.RelacionPatrimonio.FamiEmpresa = (totalPatrimonio[`MontoTotal_${rango}`] == 0) ? 0 :
25
- sumaMontos / totalPatrimonio[`MontoTotal_${rango}`];
22
+ data.Apalancamiento.RelacionPatrimonio.Negocio =
23
+ totalPatrimonio[`MontoEmpresa_${rango}`] == 0
24
+ ? 0
25
+ : sumaMontos / totalPatrimonio[`MontoEmpresa_${rango}`];
26
+ data.Apalancamiento.RelacionPatrimonio.FamiEmpresa =
27
+ totalPatrimonio[`MontoTotal_${rango}`] == 0
28
+ ? 0
29
+ : sumaMontos / totalPatrimonio[`MontoTotal_${rango}`];
26
30
  data.Apalancamiento.PrimerPiso = {};
27
- data.Apalancamiento.PrimerPiso.Negocio = (totalPatrimonio[`MontoEmpresa_${rango}`] == 0) ? 0 :
28
- (obligacionesFinancieras[`MontoEmpresa_${rango}`] +
29
- obligacionesFinancierasLP[`MontoEmpresa_${rango}`] +
30
- sumaMontos) / totalPatrimonio[`MontoEmpresa_${rango}`];
31
- data.Apalancamiento.PrimerPiso.FamiEmpresa = (totalPatrimonio[`MontoTotal_${rango}`] == 0) ? 0 :
32
- (obligacionesFinancieras[`MontoTotal_${rango}`] +
33
- obligacionesFinancierasLP[`MontoTotal_${rango}`] +
34
- sumaMontos) / totalPatrimonio[`MontoTotal_${rango}`];
31
+ data.Apalancamiento.PrimerPiso.Negocio =
32
+ totalPatrimonio[`MontoEmpresa_${rango}`] == 0
33
+ ? 0
34
+ : (obligacionesFinancieras[`MontoEmpresa_${rango}`] +
35
+ obligacionesFinancierasLP[`MontoEmpresa_${rango}`] +
36
+ sumaMontos) /
37
+ totalPatrimonio[`MontoEmpresa_${rango}`];
38
+ data.Apalancamiento.PrimerPiso.FamiEmpresa =
39
+ totalPatrimonio[`MontoTotal_${rango}`] == 0
40
+ ? 0
41
+ : (obligacionesFinancieras[`MontoTotal_${rango}`] +
42
+ obligacionesFinancierasLP[`MontoTotal_${rango}`] +
43
+ sumaMontos) /
44
+ totalPatrimonio[`MontoTotal_${rango}`];
35
45
  data.Apalancamiento.Firedin = {};
36
- data.Apalancamiento.Firedin.Negocio = (totalPatrimonio[`MontoEmpresa_${rango}`] == 0) ? 0 :
37
- (totalPasivo[`MontoEmpresa_${rango}`] + sumaMontos) / totalPatrimonio[`MontoEmpresa_${rango}`];
38
- data.Apalancamiento.Firedin.FamiEmpresa = (totalPatrimonio[`MontoTotal_${rango}`] == 0) ? 0 :
39
- (totalPasivo[`MontoTotal_${rango}`] + sumaMontos) / totalPatrimonio[`MontoTotal_${rango}`];
40
- data.Apalancamiento.RelacionPatrimonio.Negocio = Math.round(data.Apalancamiento.RelacionPatrimonio.Negocio * 100) / 100;
41
- data.Apalancamiento.RelacionPatrimonio.FamiEmpresa = Math.round(data.Apalancamiento.RelacionPatrimonio.FamiEmpresa * 100) / 100;
42
- data.Apalancamiento.PrimerPiso.Negocio = Math.round(data.Apalancamiento.PrimerPiso.Negocio * 100) / 100;
43
- data.Apalancamiento.PrimerPiso.FamiEmpresa = Math.round(data.Apalancamiento.PrimerPiso.FamiEmpresa * 100) / 100;
44
- data.Apalancamiento.Firedin.Negocio = Math.round(data.Apalancamiento.Firedin.Negocio * 100) / 100;
45
- data.Apalancamiento.Firedin.FamiEmpresa = Math.round(data.Apalancamiento.Firedin.FamiEmpresa * 100) / 100;
46
+ data.Apalancamiento.Firedin.Negocio =
47
+ totalPatrimonio[`MontoEmpresa_${rango}`] == 0
48
+ ? 0
49
+ : (totalPasivo[`MontoEmpresa_${rango}`] + sumaMontos) /
50
+ totalPatrimonio[`MontoEmpresa_${rango}`];
51
+ data.Apalancamiento.Firedin.FamiEmpresa =
52
+ totalPatrimonio[`MontoTotal_${rango}`] == 0
53
+ ? 0
54
+ : (totalPasivo[`MontoTotal_${rango}`] + sumaMontos) /
55
+ totalPatrimonio[`MontoTotal_${rango}`];
56
+ data.Apalancamiento.RelacionPatrimonio.Negocio =
57
+ Math.round(data.Apalancamiento.RelacionPatrimonio.Negocio * 100) / 100;
58
+ data.Apalancamiento.RelacionPatrimonio.FamiEmpresa =
59
+ Math.round(data.Apalancamiento.RelacionPatrimonio.FamiEmpresa * 100) /
60
+ 100;
61
+ data.Apalancamiento.PrimerPiso.Negocio =
62
+ Math.round(data.Apalancamiento.PrimerPiso.Negocio * 100) / 100;
63
+ data.Apalancamiento.PrimerPiso.FamiEmpresa =
64
+ Math.round(data.Apalancamiento.PrimerPiso.FamiEmpresa * 100) / 100;
65
+ data.Apalancamiento.Firedin.Negocio =
66
+ Math.round(data.Apalancamiento.Firedin.Negocio * 100) / 100;
67
+ data.Apalancamiento.Firedin.FamiEmpresa =
68
+ Math.round(data.Apalancamiento.Firedin.FamiEmpresa * 100) / 100;
46
69
  };
47
70
  exports.setApalancamiento = setApalancamiento;
@@ -6,34 +6,47 @@ const getPuntoEquilibrio = (data) => {
6
6
  const fecha = data.balanceMap.get('ACT_CN_10000_0')[`Fecha_${rango}`];
7
7
  const totalGastosOperativos = data.eerrMap.get('ACT_CN_43900_0')[`MontoEmpresa_${rango}`];
8
8
  const gastosFinancerosFamiliares = data.eerrMap.get('ACT_CN_45002_0')[`MontoEmpresa_${rango}`];
9
- const gastos = Math.round((totalGastosOperativos + gastosFinancerosFamiliares) * 100) / 100;
9
+ const gastos = Math.round((totalGastosOperativos + gastosFinancerosFamiliares) * 100) /
10
+ 100;
10
11
  const costos = data.eerrMap.get('ACT_CN_41004_0')[`MontoEmpresa_${rango}`];
11
12
  const ingresos = data.eerrMap.get('ACT_CN_40003_0')[`MontoEmpresa_${rango}`];
12
- const margenBruto = ingresos == 0 ? 0 : Math.round((1 - (costos / ingresos)) * 100) / 100;
13
- const ingresoEquilibrio = margenBruto == 0 ? 0 : Math.round(gastos / margenBruto * 100) / 100;
14
- const costoEquilibrio = Math.round((ingresoEquilibrio * (1 - margenBruto) * 100)) / 100;
13
+ const margenBruto = ingresos == 0 ? 0 : Math.round((1 - costos / ingresos) * 100) / 100;
14
+ const ingresoEquilibrio = margenBruto == 0 ? 0 : Math.round((gastos / margenBruto) * 100) / 100;
15
+ const costoEquilibrio = Math.round(ingresoEquilibrio * (1 - margenBruto) * 100) / 100;
15
16
  const gastosEquilibrio = gastos;
16
17
  const invi1 = margenBruto * 2;
17
18
  const invi2 = invi1 / 10;
18
19
  const invi3 = costoEquilibrio / 5;
19
- let puntoEquilibrio = new Map();
20
- puntoEquilibrio.set(0, { id: 0, MargenBruto: 0, Ingresos: 0, GastosCostos: gastos });
20
+ const puntoEquilibrio = new Map();
21
+ puntoEquilibrio.set(0, {
22
+ id: 0,
23
+ MargenBruto: 0,
24
+ Ingresos: 0,
25
+ GastosCostos: gastos
26
+ });
21
27
  for (let i = 1; i <= 10; i++) {
22
- let itemMargenBruto = Math.round((puntoEquilibrio.get(i - 1).MargenBruto + invi2) * 100) / 100;
23
- puntoEquilibrio.set(i, { id: i, MargenBruto: itemMargenBruto,
28
+ const itemMargenBruto = Math.round((puntoEquilibrio.get(i - 1).MargenBruto + invi2) * 100) /
29
+ 100;
30
+ puntoEquilibrio.set(i, {
31
+ id: i,
32
+ MargenBruto: itemMargenBruto,
24
33
  Ingresos: Math.round((itemMargenBruto == 0 ? 0 : gastos / itemMargenBruto) * 100) / 100,
25
- GastosCostos: Math.round((puntoEquilibrio.get(i - 1).GastosCostos + invi3) * 100) / 100 });
34
+ GastosCostos: Math.round((puntoEquilibrio.get(i - 1).GastosCostos + invi3) * 100) / 100
35
+ });
26
36
  }
27
- let result = {};
37
+ const result = {};
28
38
  result.fecha = fecha;
29
39
  result.gastos = gastos;
30
40
  result.costos = costos;
31
41
  result.ingresos = ingresos;
32
- result.margenBruto = margenBruto;
42
+ result.margenBruto = margenBruto * 100;
33
43
  result.ingresoEquilibrio = ingresoEquilibrio;
34
44
  result.costoEquilibrio = costoEquilibrio;
35
45
  result.gastosEquilibrio = gastosEquilibrio;
36
- result.puntoEquilibrio = Array.from(puntoEquilibrio.values());
46
+ result.puntoEquilibrio = Array.from(puntoEquilibrio.values()).map((el) => ({
47
+ ...el,
48
+ MargenBruto: el.MargenBruto * 100
49
+ }));
37
50
  data.PuntoEquilibrio = result;
38
51
  };
39
52
  exports.getPuntoEquilibrio = getPuntoEquilibrio;