bdpformulas 1.0.57 → 1.0.59

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.
@@ -1,98 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const balanceAux_calc_1 = require("../common/balanceCalculos/balanceAux.calc");
4
- const utils_1 = require("../utils");
5
4
  class BalanceAgrStrategy {
6
5
  actividades;
7
6
  camposCalculadosDefinidos;
8
7
  constructor() {
9
8
  this.actividades = [];
10
9
  this.camposCalculadosDefinidos = [
11
- {
12
- RubroId: 'ACT_CN_11001',
13
- Correlativos: 'ultima',
14
- Familiar: true,
15
- Empresa: true
16
- },
17
- {
18
- RubroId: 'ACT_CN_11002',
19
- Correlativos: 'ultima',
20
- Familiar: true,
21
- Empresa: true
22
- },
23
- {
24
- RubroId: 'ACT_CN_11003',
25
- Correlativos: 'ultima',
26
- Familiar: true,
27
- Empresa: true
28
- },
29
- {
30
- RubroId: 'ACT_CN_12001',
31
- Correlativos: 'ultima',
32
- Familiar: true,
33
- Empresa: true
34
- },
35
- {
36
- RubroId: 'ACT_CN_12002',
37
- Correlativos: 'ultima',
38
- Familiar: true,
39
- Empresa: true
40
- },
41
- {
42
- RubroId: 'ACT_CN_12003',
43
- Correlativos: 'ultima',
44
- Familiar: true,
45
- Empresa: true
46
- },
47
- {
48
- RubroId: 'ACT_CN_12004',
49
- Correlativos: 'ultima',
50
- Familiar: true,
51
- Empresa: true
52
- },
53
- {
54
- RubroId: 'ACT_CN_12005',
55
- Correlativos: 'ultima',
56
- Familiar: true,
57
- Empresa: true
58
- },
59
- {
60
- RubroId: 'ACT_CN_21001',
61
- Correlativos: 'ultima',
62
- Familiar: true,
63
- Empresa: true
64
- },
65
- {
66
- RubroId: 'ACT_CN_21002',
67
- Correlativos: 'ultima',
68
- Familiar: true,
69
- Empresa: true
70
- },
71
- {
72
- RubroId: 'ACT_CN_22001',
73
- Correlativos: 'ultima',
74
- Familiar: true,
75
- Empresa: true
76
- },
77
- {
78
- RubroId: 'ACT_CN_30001',
79
- Correlativos: '*',
80
- Familiar: true,
81
- Empresa: true
82
- },
83
- //eeff
84
- {
85
- RubroId: 'ACT_CN_40001',
86
- Correlativos: '*',
87
- Familiar: false,
88
- Empresa: true
89
- },
90
- {
91
- RubroId: 'ACT_CN_41001',
92
- Correlativos: 'ultima',
93
- Familiar: false,
94
- Empresa: true
95
- },
96
10
  {
97
11
  RubroId: 'ACT_CN_41002',
98
12
  Correlativos: '*',
@@ -105,18 +19,6 @@ class BalanceAgrStrategy {
105
19
  Familiar: false,
106
20
  Empresa: true
107
21
  },
108
- {
109
- RubroId: 'ACT_CN_43002',
110
- Correlativos: '*',
111
- Familiar: false,
112
- Empresa: true
113
- },
114
- {
115
- RubroId: 'ACT_CN_45001',
116
- Correlativos: 'ultima',
117
- Familiar: true,
118
- Empresa: false
119
- },
120
22
  {
121
23
  RubroId: 'ACT_CN_45003',
122
24
  Correlativos: 'ultima',
@@ -134,10 +36,7 @@ class BalanceAgrStrategy {
134
36
  acumuladoActividades = addAcumulado(acumuladoActividades, actividadCalculada);
135
37
  }
136
38
  data.eerrMap = calcularEERR(data.eerrMap, data.eerr, acumuladoActividades);
137
- data.camposCalculados = (0, utils_1.formatCamposCalculados)({
138
- cantidadGestiones: data.cantidadGestiones,
139
- definidos: this.camposCalculadosDefinidos
140
- });
39
+ data.camposCalculadosDefinidos = this.camposCalculadosDefinidos;
141
40
  return data;
142
41
  }
143
42
  }
@@ -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,4 +1,6 @@
1
1
  import { Strategy } from '../strategy.interface';
2
2
  export default class Balance implements Strategy {
3
+ private camposCalculadosDefinidos;
4
+ constructor();
3
5
  execute(data: any): any;
4
6
  }
@@ -28,7 +28,104 @@ const commmon = __importStar(require("./common/balance.calc"));
28
28
  const declaracionJurada_calc_1 = require("./common/declaracionJurada.calc");
29
29
  //import { setFlujoInEERR } from './common/balanceCalculos/flujoAux.calc'
30
30
  const utils_1 = require("./eeff/admFinanciera/utils");
31
+ const utils_2 = require("./utils");
31
32
  class Balance {
33
+ camposCalculadosDefinidos;
34
+ constructor() {
35
+ this.camposCalculadosDefinidos = [
36
+ {
37
+ RubroId: 'ACT_CN_11001',
38
+ Correlativos: 'ultima',
39
+ Familiar: true,
40
+ Empresa: true
41
+ },
42
+ {
43
+ RubroId: 'ACT_CN_11002',
44
+ Correlativos: 'ultima',
45
+ Familiar: true,
46
+ Empresa: true
47
+ },
48
+ {
49
+ RubroId: 'ACT_CN_11003',
50
+ Correlativos: 'ultima',
51
+ Familiar: true,
52
+ Empresa: true
53
+ },
54
+ {
55
+ RubroId: 'ACT_CN_12001',
56
+ Correlativos: 'ultima',
57
+ Familiar: true,
58
+ Empresa: true
59
+ },
60
+ {
61
+ RubroId: 'ACT_CN_12002',
62
+ Correlativos: 'ultima',
63
+ Familiar: true,
64
+ Empresa: true
65
+ },
66
+ {
67
+ RubroId: 'ACT_CN_12003',
68
+ Correlativos: 'ultima',
69
+ Familiar: true,
70
+ Empresa: true
71
+ },
72
+ {
73
+ RubroId: 'ACT_CN_21001',
74
+ Correlativos: 'ultima',
75
+ Familiar: true,
76
+ Empresa: true
77
+ },
78
+ {
79
+ RubroId: 'ACT_CN_21002',
80
+ Correlativos: 'ultima',
81
+ Familiar: true,
82
+ Empresa: true
83
+ },
84
+ {
85
+ RubroId: 'ACT_CN_22001',
86
+ Correlativos: 'ultima',
87
+ Familiar: true,
88
+ Empresa: true
89
+ },
90
+ {
91
+ RubroId: 'ACT_CN_22002',
92
+ Correlativos: 'ultima',
93
+ Familiar: true,
94
+ Empresa: true
95
+ },
96
+ {
97
+ RubroId: 'ACT_CN_30001',
98
+ Correlativos: '*',
99
+ Familiar: true,
100
+ Empresa: true
101
+ },
102
+ //eeff
103
+ {
104
+ RubroId: 'ACT_CN_40001',
105
+ Correlativos: '*',
106
+ Familiar: false,
107
+ Empresa: true
108
+ },
109
+ {
110
+ RubroId: 'ACT_CN_41001',
111
+ Correlativos: 'ultima',
112
+ Familiar: false,
113
+ Empresa: true
114
+ },
115
+ {
116
+ RubroId: 'ACT_CN_43002',
117
+ Correlativos: '*',
118
+ Familiar: false,
119
+ Empresa: true
120
+ },
121
+ {
122
+ RubroId: 'ACT_CN_45001',
123
+ Correlativos: 'ultima',
124
+ Familiar: true,
125
+ Empresa: false
126
+ }
127
+ ];
128
+ }
32
129
  execute(data) {
33
130
  const result = {};
34
131
  const balanceClone = balanceCalc.trasponer(commmon.clone(data.balance));
@@ -41,7 +138,13 @@ class Balance {
41
138
  //setFlujoInEERR(data)
42
139
  if (data.strategy != null)
43
140
  data = data.strategy.execute(data);
44
- result.camposCalculados = data.camposCalculados;
141
+ result.camposCalculados = (0, utils_2.formatCamposCalculados)({
142
+ cantidadGestiones: data.cantidadGestiones,
143
+ definidos: [
144
+ ...this.camposCalculadosDefinidos,
145
+ ...data.camposCalculadosDefinidos
146
+ ]
147
+ });
45
148
  delete data.eerrMap;
46
149
  data.balance = Array.from(balanceMap.values());
47
150
  data.eerr = Array.from(eerrMap.values());
@@ -197,10 +300,14 @@ function calcularPorcentajes({ rubroDatos, rubroPorcentajes, datos, cantidadGest
197
300
  const monto = montos.find((el) => el.Correlativo === item.Correlativo);
198
301
  if (item.Correlativo === cantidadGestiones) {
199
302
  if (porcentaje) {
200
- porcentaje.MontoEmpresa =
201
- ((0, utils_1.ourParseFloat)(item.MontoEmpresa) /
202
- (0, utils_1.ourParseFloat)(monto?.MontoEmpresa)) *
203
- 100;
303
+ const divisor = (0, utils_1.ourParseFloat)(monto?.MontoEmpresa);
304
+ if (divisor) {
305
+ porcentaje.MontoEmpresa =
306
+ ((0, utils_1.ourParseFloat)(item.MontoEmpresa) / divisor) * 100;
307
+ }
308
+ else {
309
+ porcentaje.MontoEmpresa = 0;
310
+ }
204
311
  }
205
312
  }
206
313
  else {
@@ -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;