bdpformulas 1.0.38 → 1.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/strategies/analisisFinancieros.strategy.js +6 -2
- package/build/strategies/common/analisisFinCalculos/apalancamiento.calc.js +6 -0
- package/build/strategies/common/analisisFinCalculos/puntoEquilibrio.calc.d.ts +1 -0
- package/build/strategies/common/analisisFinCalculos/puntoEquilibrio.calc.js +38 -0
- package/build/strategies/common/flujoCalculos/flujoConstructor.d.ts +1 -0
- package/build/strategies/common/flujoCalculos/flujoConstructor.js +9 -0
- package/build/strategies/flujoProyectado.strategy.js +0 -1
- package/build/strategies/production/costos.strategy.js +0 -1
- package/package.json +1 -1
|
@@ -7,10 +7,11 @@ const analisisGrafico_calc_1 = __importDefault(require("./common/analisisFinCalc
|
|
|
7
7
|
const ratios_calc_1 = __importDefault(require("./common/analisisFinCalculos/ratios.calc"));
|
|
8
8
|
const apalancamiento_calc_1 = require("./common/analisisFinCalculos/apalancamiento.calc");
|
|
9
9
|
const analisisDupont_calc_1 = require("./common/analisisFinCalculos/analisisDupont.calc");
|
|
10
|
+
const puntoEquilibrio_calc_1 = require("./common/analisisFinCalculos/puntoEquilibrio.calc");
|
|
10
11
|
class AnalisisFinancieros {
|
|
11
12
|
constructor() {
|
|
12
13
|
this.generarMapBalance = (data) => {
|
|
13
|
-
return data.balance.reduce((acc, item) => {
|
|
14
|
+
return data.balance.balance.reduce((acc, item) => {
|
|
14
15
|
let uuid = item.UUID ? item.UUID : '0';
|
|
15
16
|
let key = `${item.RubroId}_${item.Clasificador == 'HABM' || item.Clasificador == 'CT' ? uuid : '0'}`;
|
|
16
17
|
if (acc.has(key))
|
|
@@ -20,7 +21,7 @@ class AnalisisFinancieros {
|
|
|
20
21
|
}, new Map());
|
|
21
22
|
};
|
|
22
23
|
this.generarMapEERR = (data) => {
|
|
23
|
-
return data.eerr.reduce((acc, item) => {
|
|
24
|
+
return data.balance.eerr.reduce((acc, item) => {
|
|
24
25
|
let uuid = item.UUID ? item.UUID : '0';
|
|
25
26
|
let key = `${item.RubroId}_${item.Clasificador == 'HABM' || item.Clasificador == 'CT' ? uuid : '0'}`;
|
|
26
27
|
if (acc.has(key))
|
|
@@ -39,7 +40,10 @@ class AnalisisFinancieros {
|
|
|
39
40
|
analisisGrafico.generarGraficos();
|
|
40
41
|
(0, apalancamiento_calc_1.setApalancamiento)(data);
|
|
41
42
|
(0, analisisDupont_calc_1.setAnalisisDupont)(data);
|
|
43
|
+
(0, puntoEquilibrio_calc_1.getPuntoEquilibrio)(data);
|
|
44
|
+
delete data.balance;
|
|
42
45
|
delete data.balanceMap;
|
|
46
|
+
delete data.eerrMap;
|
|
43
47
|
return data;
|
|
44
48
|
}
|
|
45
49
|
}
|
|
@@ -37,5 +37,11 @@ const setApalancamiento = (data) => {
|
|
|
37
37
|
(totalPasivo[`MontoEmpresa_${rango}`] + sumaMontos) / totalPatrimonio[`MontoEmpresa_${rango}`];
|
|
38
38
|
data.Apalancamiento.Firedin.FamiEmpresa = (totalPatrimonio[`MontoTotal_${rango}`] == 0) ? 0 :
|
|
39
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;
|
|
40
46
|
};
|
|
41
47
|
exports.setApalancamiento = setApalancamiento;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getPuntoEquilibrio: (data: any) => void;
|
|
@@ -1 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPuntoEquilibrio = void 0;
|
|
4
|
+
const getPuntoEquilibrio = (data) => {
|
|
5
|
+
const rango = data.balanceMap.get('ACT_CN_10000_0').Rango;
|
|
6
|
+
const fecha = data.balanceMap.get('ACT_CN_10000_0')[`Fecha_${rango}`];
|
|
7
|
+
const totalGastosOperativos = data.eerrMap.get('ACT_CN_43900_0')[`MontoEmpresa_${rango}`];
|
|
8
|
+
const gastosFinancerosFamiliares = data.eerrMap.get('ACT_CN_45002_0')[`MontoEmpresa_${rango}`];
|
|
9
|
+
const gastos = Math.round((totalGastosOperativos + gastosFinancerosFamiliares) * 100) / 100;
|
|
10
|
+
const costos = data.eerrMap.get('ACT_CN_41004_0')[`MontoEmpresa_${rango}`];
|
|
11
|
+
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;
|
|
15
|
+
const gastosEquilibrio = gastos;
|
|
16
|
+
const invi1 = margenBruto * 2;
|
|
17
|
+
const invi2 = invi1 / 10;
|
|
18
|
+
const invi3 = costoEquilibrio / 5;
|
|
19
|
+
let puntoEquilibrio = new Map();
|
|
20
|
+
puntoEquilibrio.set(0, { id: 0, MargenBruto: 0, Ingresos: 0, GastosCostos: gastos });
|
|
21
|
+
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,
|
|
24
|
+
Ingresos: Math.round((itemMargenBruto == 0 ? 0 : gastos / itemMargenBruto) * 100) / 100,
|
|
25
|
+
GastosCostos: Math.round((puntoEquilibrio.get(i - 1).GastosCostos + invi3) * 100) / 100 });
|
|
26
|
+
}
|
|
27
|
+
let result = {};
|
|
28
|
+
result.fecha = fecha;
|
|
29
|
+
result.gastos = gastos;
|
|
30
|
+
result.costos = costos;
|
|
31
|
+
result.ingresos = ingresos;
|
|
32
|
+
result.margenBruto = margenBruto;
|
|
33
|
+
result.ingresoEquilibrio = ingresoEquilibrio;
|
|
34
|
+
result.costoEquilibrio = costoEquilibrio;
|
|
35
|
+
result.gastosEquilibrio = gastosEquilibrio;
|
|
36
|
+
result.puntoEquilibrio = Array.from(puntoEquilibrio.values());
|
|
37
|
+
data.PuntoEquilibrio = result;
|
|
38
|
+
};
|
|
39
|
+
exports.getPuntoEquilibrio = getPuntoEquilibrio;
|
|
@@ -6,6 +6,7 @@ export default class FlujoConstructor {
|
|
|
6
6
|
private data;
|
|
7
7
|
constructor(tipo: string, data: any);
|
|
8
8
|
calcularFlujo: () => void;
|
|
9
|
+
limpiarCamposCalculados: () => void;
|
|
9
10
|
calcularFlujoAcumuladoMensual: (data: any) => void;
|
|
10
11
|
calcularTotal: (sumandosArray: string[], total: string) => void;
|
|
11
12
|
calcularResta: (positivoRubro: string, negativoRubro: string, destinoRubro: string) => void;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
class FlujoConstructor {
|
|
4
4
|
constructor(tipo, data) {
|
|
5
5
|
this.calcularFlujo = () => {
|
|
6
|
+
this.limpiarCamposCalculados();
|
|
6
7
|
if (this.tipo == 'ANUAL') {
|
|
7
8
|
this.proyectarIngreso();
|
|
8
9
|
this.proyectarCosto();
|
|
@@ -49,6 +50,14 @@ class FlujoConstructor {
|
|
|
49
50
|
this.calcularPorcentajeIngresCostos();
|
|
50
51
|
}
|
|
51
52
|
};
|
|
53
|
+
this.limpiarCamposCalculados = () => {
|
|
54
|
+
let filter = this.array.filter(item => item.Clasificador == 'C');
|
|
55
|
+
filter.forEach((item) => {
|
|
56
|
+
for (let i = 1; i <= this.rango; i++) {
|
|
57
|
+
item[`Monto${i}`] = 0;
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
};
|
|
52
61
|
this.calcularFlujoAcumuladoMensual = (data) => {
|
|
53
62
|
let rowTotal = this.mapObject.get(`ACT_CNFL_82200_0`);
|
|
54
63
|
let rowAcumulado = this.mapObject.get(`ACT_CNFL_82300_0`);
|
|
@@ -47,7 +47,6 @@ class FlujoProyectado {
|
|
|
47
47
|
result.Supuestos = supuestosCalc.getSupuestos(data);
|
|
48
48
|
flujoProyectadoCalc.calcularFlujoAnual(data);
|
|
49
49
|
result.HistoricoGrafico = (0, flujoProyectado_calc_1.getHistoricoFlujoCaja)(data);
|
|
50
|
-
//
|
|
51
50
|
//result.FlujoEfectivo = getFlujoEfectivo(data)
|
|
52
51
|
//result.FlujoEfectivoVars = getFlujoEfectivoExtra(data)
|
|
53
52
|
// data.FlujoProyectadoMensual = Array.from(data.FlujoProyectadoMensualMap.values())
|
|
@@ -30,7 +30,6 @@ class CostosPrd {
|
|
|
30
30
|
execute(data) {
|
|
31
31
|
let result = {};
|
|
32
32
|
result.CantidadesProducidas = costosCalc.getValuePivote(data.Ventas);
|
|
33
|
-
console.log('0.1');
|
|
34
33
|
result.Costos = costosCalc.calcular(data.Costos.Costos);
|
|
35
34
|
result.Meses = mesesCalc.calcularMeses(result.Costos, data.Costos.Productos);
|
|
36
35
|
return result;
|