bdpformulas 1.0.35 → 1.0.37
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/agriculture/balanceAgr.strategy.js +83 -26
- package/build/strategies/agriculture/flujoProyAgr.strategy.js +81 -2
- package/build/strategies/agriculture/ventas.detail/ventas.calc.d.ts +2 -0
- package/build/strategies/agriculture/ventas.detail/ventas.calc.js +38 -0
- package/build/strategies/balance.strategy.js +19 -49
- package/build/strategies/common/balance.calc.d.ts +2 -0
- package/build/strategies/common/balance.calc.js +54 -1
- package/build/strategies/common/balanceCalculos/balanceAux.calc.d.ts +1 -0
- package/build/strategies/common/balanceCalculos/balanceAux.calc.js +16 -0
- package/build/strategies/common/balanceCalculos/declaracionJurada.calc.d.ts +1 -0
- package/build/strategies/common/balanceCalculos/declaracionJurada.calc.js +74 -0
- package/build/strategies/common/balanceCalculos/flujoAux.calc.d.ts +1 -0
- package/build/strategies/common/balanceCalculos/flujoAux.calc.js +27 -0
- package/build/strategies/common/declaracionJurada.calc.d.ts +2 -0
- package/build/strategies/common/declaracionJurada.calc.js +83 -0
- package/build/strategies/common/flujoCalculos/flujoConstructor.d.ts +24 -0
- package/build/strategies/common/flujoCalculos/flujoConstructor.js +305 -0
- package/build/strategies/common/flujoCalculos/supuestos.calc.d.ts +2 -0
- package/build/strategies/common/flujoCalculos/supuestos.calc.js +123 -0
- package/build/strategies/common/flujoProyectado.calc.d.ts +3 -11
- package/build/strategies/common/flujoProyectado.calc.js +29 -63
- package/build/strategies/flujoProyectado.strategy.js +53 -7
- package/package.json +1 -1
|
@@ -1,35 +1,90 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const balanceAux_calc_1 = require("../common/balanceCalculos/balanceAux.calc");
|
|
3
4
|
class BalanceAgrStrategy {
|
|
4
5
|
constructor() {
|
|
5
6
|
this.actividades = [];
|
|
6
7
|
}
|
|
7
8
|
execute(data) {
|
|
8
|
-
|
|
9
|
+
if (!this.actividades || this.actividades.length == 0)
|
|
10
|
+
throw new Error('Debe ingresar actividades Agrícolas');
|
|
11
|
+
let acumuladoActividades = null;
|
|
12
|
+
for (let actividad of this.actividades) {
|
|
13
|
+
let actividadCalculada = calcularActividad(actividad);
|
|
14
|
+
acumuladoActividades = addAcumulado(acumuladoActividades, actividadCalculada);
|
|
15
|
+
}
|
|
16
|
+
data.eerrMap = calcularEERR(data.eerrMap, data.eerr, acumuladoActividades);
|
|
9
17
|
return data;
|
|
10
18
|
}
|
|
11
19
|
}
|
|
12
20
|
exports.default = BalanceAgrStrategy;
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
const addAcumulado = (acumuladoActividades, actividadCalculada) => {
|
|
22
|
+
if (acumuladoActividades == null)
|
|
23
|
+
return actividadCalculada;
|
|
24
|
+
else {
|
|
25
|
+
for (let [key, value] of actividadCalculada.ventas) {
|
|
26
|
+
if (acumuladoActividades.ventas.has(key)) {
|
|
27
|
+
let acumulado = acumuladoActividades.ventas.get(key);
|
|
28
|
+
acumulado += value;
|
|
29
|
+
acumuladoActividades.ventas.set(key, acumulado);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
acumuladoActividades.otrosIngresos += actividadCalculada.otrosIngresos;
|
|
33
|
+
acumuladoActividades.costoTotal += actividadCalculada.costoTotal;
|
|
34
|
+
acumuladoActividades.otrosGastos.GastosOperativos += actividadCalculada.otrosGastos.GastosOperativos;
|
|
35
|
+
acumuladoActividades.otrosGastos.GastosFamiliares += actividadCalculada.otrosGastos.GastosFamiliares;
|
|
36
|
+
return acumuladoActividades;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
const calcularActividad = (actividades) => {
|
|
40
|
+
const ventas = getVentasXGestion(actividades.Ventas);
|
|
41
|
+
const otrosIngresos = getOtrosIngresos(actividades.Ventas);
|
|
42
|
+
const costoTotal = calcularCostoTotal(actividades.Costos);
|
|
43
|
+
const otrosGastos = calcularOtrosGastos(actividades.OtrosGastos);
|
|
44
|
+
return { ventas: ventas,
|
|
45
|
+
otrosIngresos: otrosIngresos,
|
|
46
|
+
costoTotal: costoTotal,
|
|
47
|
+
otrosGastos: otrosGastos };
|
|
48
|
+
};
|
|
49
|
+
const calcularEERR = (eerrMap, eerr, consolidado) => {
|
|
50
|
+
if (consolidado) {
|
|
51
|
+
for (let [key, value] of consolidado.ventas) {
|
|
52
|
+
const rubroKey = `ACT_CN_40001_${key}`;
|
|
53
|
+
if (!eerrMap.has(rubroKey))
|
|
54
|
+
throw new Error(`No existe el rubro llave ${rubroKey}`);
|
|
55
|
+
if (eerrMap.get(rubroKey).MontoEmpresa == 0)
|
|
56
|
+
eerrMap.get(rubroKey).MontoEmpresa = value;
|
|
57
|
+
}
|
|
58
|
+
setValueInOtros('ACT_CN_41002', eerrMap, eerr, { MontoEmpresa: consolidado.costoTotal }, 'COSTOS AGR Costo Total');
|
|
59
|
+
setValueInOtros('ACT_CN_43002', eerrMap, eerr, { MontoEmpresa: consolidado.otrosGastos.GastosOperativos }, 'Gastos AGR Total Gastos Operativos');
|
|
60
|
+
setValueInOtros('ACT_CN_43004', eerrMap, eerr, { MontoFamiliar: consolidado.otrosGastos.GastosFamiliares }, 'Gastos AGR Total Gastos Familiares');
|
|
61
|
+
setValueInOtros('ACT_CN_45001', eerrMap, eerr, { MontoFamiliar: consolidado.otrosIngresos }, 'Ventas AGR Otros Ingresos');
|
|
62
|
+
}
|
|
63
|
+
return eerrMap;
|
|
64
|
+
};
|
|
65
|
+
const setValueInOtros = (rubroKey, eerrMap, eerr, values, descripcion) => {
|
|
66
|
+
const muestra = eerr.find((item) => item.RubroId === rubroKey);
|
|
67
|
+
if (!muestra)
|
|
68
|
+
throw new Error(`No existe el rubro ${rubroKey}`);
|
|
69
|
+
if (!eerrMap.has(rubroKey)) {
|
|
70
|
+
(0, balanceAux_calc_1.anadirNuevoRubro)(muestra, eerrMap, values, descripcion);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
if (values.MontoEmpresa && values.MontoEmpresa > 0)
|
|
74
|
+
eerrMap.get(`${rubroKey}_${muestra.Rango}`).MontoEmpresa = values.MontoEmpresa;
|
|
75
|
+
if (values.MontoFamiliar && values.MontoFamiliar > 0)
|
|
76
|
+
eerrMap.get(`${rubroKey}_${muestra.Rango}`).MontoFamiliar = values.MontoFamiliar;
|
|
77
|
+
}
|
|
24
78
|
};
|
|
25
79
|
//@ts-ignore
|
|
26
80
|
const getOtrosIngresos = (ventas) => {
|
|
27
|
-
|
|
81
|
+
let ingresosTotales = ventas.OtrosIngresos.reduce((acc, item) => {
|
|
28
82
|
for (let i = 1; i <= 12; i++) {
|
|
29
|
-
acc += item[`Gestion${i}`];
|
|
83
|
+
acc += parseFloat(item[`Gestion${i}`]);
|
|
30
84
|
}
|
|
31
85
|
return acc;
|
|
32
86
|
}, 0);
|
|
87
|
+
ingresosTotales = Math.round(ingresosTotales * 100) / 100;
|
|
33
88
|
return ingresosTotales;
|
|
34
89
|
};
|
|
35
90
|
//@ts-ignore
|
|
@@ -42,36 +97,38 @@ const getVentasXGestion = (ventas) => {
|
|
|
42
97
|
if (!acc.has(i)) {
|
|
43
98
|
acc.set(i, 0);
|
|
44
99
|
}
|
|
45
|
-
let value = acc.get(i);
|
|
46
|
-
value += item[`Gestion${i}`];
|
|
47
|
-
acc.set(i, value);
|
|
100
|
+
let value = parseFloat(acc.get(i));
|
|
101
|
+
value += parseFloat(item[`Gestion${i}`]);
|
|
102
|
+
acc.set(i, Math.round(value * 100) / 100);
|
|
48
103
|
}
|
|
49
104
|
return acc;
|
|
50
105
|
}, new Map());
|
|
51
|
-
return
|
|
106
|
+
return result;
|
|
52
107
|
};
|
|
53
108
|
//@ts-ignore
|
|
54
109
|
const calcularCostoTotal = (costos) => {
|
|
55
110
|
let numero = 0;
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
111
|
+
if (costos && costos.Meses) {
|
|
112
|
+
const filter = costos.Meses.filter((item) => item.ActividadProductoId == 0);
|
|
113
|
+
if (filter.length > 0) {
|
|
114
|
+
numero = parseFloat(filter[0].Total);
|
|
115
|
+
}
|
|
116
|
+
numero = Math.round(numero * 100) / 100;
|
|
59
117
|
}
|
|
60
|
-
numero = Math.round(numero * 100) / 100;
|
|
61
118
|
return numero;
|
|
62
119
|
};
|
|
63
120
|
//@ts-ignore
|
|
64
121
|
const calcularOtrosGastos = (gastos) => {
|
|
65
122
|
const gastosOperativos = gastos.Operativos.reduce((acc, item) => {
|
|
66
|
-
acc += item.ImporteAnual;
|
|
123
|
+
acc += parseFloat(item.ImporteAnual);
|
|
67
124
|
return acc;
|
|
68
125
|
}, 0);
|
|
69
126
|
const gastosFamiliares = gastos.Familiares.reduce((acc, item) => {
|
|
70
|
-
acc += item.ImporteAnual;
|
|
127
|
+
acc += parseFloat(item.ImporteAnual);
|
|
71
128
|
return acc;
|
|
72
129
|
}, 0);
|
|
73
130
|
return {
|
|
74
|
-
GastosOperativos: gastosOperativos,
|
|
75
|
-
GastosFamiliares: gastosFamiliares
|
|
131
|
+
GastosOperativos: Math.round(gastosOperativos * 100) / 100,
|
|
132
|
+
GastosFamiliares: Math.round(gastosFamiliares * 100) / 100
|
|
76
133
|
};
|
|
77
134
|
};
|
|
@@ -1,15 +1,94 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const ventas_calc_1 = require("./ventas.detail/ventas.calc");
|
|
3
4
|
class FlujoProyectadoAgrStrategy {
|
|
4
5
|
constructor() {
|
|
5
6
|
this.actividades = [];
|
|
6
7
|
}
|
|
7
8
|
execute(data) {
|
|
8
|
-
|
|
9
|
+
if (!this.actividades || this.actividades.length == 0)
|
|
10
|
+
throw new Error('Debe ingresar actividades Agrícolas');
|
|
11
|
+
calcularFlujoMensual(data, this.actividades);
|
|
9
12
|
return data;
|
|
10
13
|
}
|
|
11
14
|
}
|
|
12
15
|
exports.default = FlujoProyectadoAgrStrategy;
|
|
13
|
-
const
|
|
16
|
+
const calcularFlujoMensual = (data, actividades) => {
|
|
17
|
+
const consolidadoIngresos = [];
|
|
18
|
+
const consolidadoCostos = [];
|
|
19
|
+
const gastosOperativos = [];
|
|
20
|
+
const gastosFamiliares = [];
|
|
21
|
+
const consolidadoOtrosIngresos = [];
|
|
22
|
+
for (let actividad of actividades) {
|
|
23
|
+
(0, ventas_calc_1.addCalculoIngresosVentas)(actividad.Ventas);
|
|
24
|
+
consolidadoIngresos.push(getIngresoActividad(actividad));
|
|
25
|
+
consolidadoCostos.push(getCostosActividad(actividad));
|
|
26
|
+
gastosOperativos.push(getGastos(actividad, 'Operativos'));
|
|
27
|
+
gastosFamiliares.push(getGastos(actividad, 'Familiares'));
|
|
28
|
+
consolidadoOtrosIngresos.push(getOtrosIngresos(actividad));
|
|
29
|
+
}
|
|
30
|
+
for (let i = 1; i <= 12; i++) {
|
|
31
|
+
setValues(data, consolidadoIngresos, 'ACT_CNFL_40001', i);
|
|
32
|
+
setValues(data, consolidadoCostos, 'ACT_CNFL_50001', i);
|
|
33
|
+
setValues(data, gastosOperativos, 'ACT_CNFL_60001', i);
|
|
34
|
+
setValues(data, gastosFamiliares, 'ACT_CNFL_70002', i);
|
|
35
|
+
setValues(data, consolidadoOtrosIngresos, 'ACT_CNFL_70001', i);
|
|
36
|
+
}
|
|
14
37
|
return data;
|
|
15
38
|
};
|
|
39
|
+
//@ts-ignore
|
|
40
|
+
const setValues = (data, consolidado, rubroId, i) => {
|
|
41
|
+
let row = data.FlujoProyectadoMensualMap.get(`${rubroId}_0`);
|
|
42
|
+
if (parseFloat(row[`Monto${i}`]) == 0) {
|
|
43
|
+
consolidado.forEach((item) => {
|
|
44
|
+
if (item) {
|
|
45
|
+
row[`Monto${i}`] += item[`Monto${i}`];
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
row[`Monto${i}`] = Math.round(parseFloat(row[`Monto${i}`]) * 100) / 100;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
//@ts-ignore
|
|
52
|
+
const getIngresoActividad = (actividad) => {
|
|
53
|
+
if (!actividad.Ventas.CalculoIngreso)
|
|
54
|
+
return null;
|
|
55
|
+
const total = actividad.Ventas.CalculoIngreso.find((item) => item.ActividadProductoId == 0);
|
|
56
|
+
let result = Object.assign(Object.assign({}, total), { Descripcion: `Ventas Act:${total.ActividadEconomicaId}` });
|
|
57
|
+
return result;
|
|
58
|
+
};
|
|
59
|
+
//@ts-ignore
|
|
60
|
+
const getCostosActividad = (actividad) => {
|
|
61
|
+
if (!actividad.Costos.Meses || actividad.Costos.Meses.length == 0)
|
|
62
|
+
return null;
|
|
63
|
+
const total = actividad.Costos.Meses.find((item) => item.ActividadProductoId == 0);
|
|
64
|
+
let result = Object.assign(Object.assign({}, total), { Descripcion: `Costos Act:${total.ActividadEconomicaId}` });
|
|
65
|
+
return result;
|
|
66
|
+
};
|
|
67
|
+
//@ts-ignore
|
|
68
|
+
const getGastos = (actividad, tipo) => {
|
|
69
|
+
if (!actividad.OtrosGastos[tipo] || actividad.OtrosGastos[tipo].length == 0)
|
|
70
|
+
return null;
|
|
71
|
+
const total = actividad.OtrosGastos[tipo].reduce((acc, item) => {
|
|
72
|
+
acc += Math.round(parseFloat(item.ImporteMensual) * 100) / 100;
|
|
73
|
+
return acc;
|
|
74
|
+
}, 0);
|
|
75
|
+
let result = { Descripcion: `Gastos ${tipo} Act:${total.ActividadEconomicaId}` };
|
|
76
|
+
for (let i = 1; i <= 12; i++) {
|
|
77
|
+
result[`Monto${i}`] = total;
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
};
|
|
81
|
+
//@ts-ignore
|
|
82
|
+
const getOtrosIngresos = (actividad) => {
|
|
83
|
+
if (!actividad.Ventas.OtrosIngresos || actividad.Ventas.OtrosIngresos.length == 0)
|
|
84
|
+
return null;
|
|
85
|
+
let result = actividad.Ventas.OtrosIngresos.reduce((acc, item) => {
|
|
86
|
+
for (let i = 1; i <= 12; i++) {
|
|
87
|
+
if (!acc[`Monto${i}`])
|
|
88
|
+
acc[`Monto${i}`] = 0;
|
|
89
|
+
acc[`Monto${i}`] += parseFloat(item[`Gestion${i}`]);
|
|
90
|
+
}
|
|
91
|
+
return acc;
|
|
92
|
+
}, { Descripcion: `` });
|
|
93
|
+
return result;
|
|
94
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calcularIngreso = exports.addCalculoIngresosVentas = void 0;
|
|
4
|
+
const addCalculoIngresosVentas = (ventas) => {
|
|
5
|
+
if (!ventas || !ventas.Productos || ventas.Productos.length == 0)
|
|
6
|
+
return;
|
|
7
|
+
const calculoIngreso = ventas.Productos.reduce((acc, producto) => {
|
|
8
|
+
const ingreso = (0, exports.calcularIngreso)(producto);
|
|
9
|
+
if (!acc.has(0))
|
|
10
|
+
acc.set(0, Object.assign(Object.assign({}, ingreso), { ActividadProductoId: 0, ActividadProductoDesc: 'Total' }));
|
|
11
|
+
else {
|
|
12
|
+
for (let i = 1; i <= 12; i++) {
|
|
13
|
+
acc.get(0)[`Monto${i}`] += ingreso[`Monto${i}`];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
acc.set(ingreso.ActividadProductoId, ingreso);
|
|
17
|
+
return acc;
|
|
18
|
+
}, new Map());
|
|
19
|
+
ventas.CalculoIngreso = Array.from(calculoIngreso.values());
|
|
20
|
+
};
|
|
21
|
+
exports.addCalculoIngresosVentas = addCalculoIngresosVentas;
|
|
22
|
+
const calcularIngreso = (producto) => {
|
|
23
|
+
let result = {};
|
|
24
|
+
const ingresoTotalCampanna = parseFloat(producto.IngresoTotalCampanna);
|
|
25
|
+
const estacionalidad = producto.Estacionalidad[0];
|
|
26
|
+
result.ActividadEconomicaId = estacionalidad.ActividadEconomicaId;
|
|
27
|
+
result.ActividadProductoId = estacionalidad.ActividadProductoId;
|
|
28
|
+
result.ActividadProductoDesc = estacionalidad.ActividadProductoDesc;
|
|
29
|
+
let acum = 0;
|
|
30
|
+
for (let i = 1; i <= 12; i++) {
|
|
31
|
+
result[`Monto${i}`] =
|
|
32
|
+
Math.round(ingresoTotalCampanna * parseFloat(estacionalidad[`Gestion${i}`]) * 100) / 100;
|
|
33
|
+
acum += result[`Monto${i}`];
|
|
34
|
+
}
|
|
35
|
+
result.Total = acum;
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
exports.calcularIngreso = calcularIngreso;
|
|
@@ -23,14 +23,25 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const balanceCalc = __importStar(require("./common/balance.calc"));
|
|
26
27
|
const commmon = __importStar(require("./common/balance.calc"));
|
|
28
|
+
const declaracionJurada_calc_1 = require("./common/declaracionJurada.calc");
|
|
29
|
+
const flujoAux_calc_1 = require("./common/balanceCalculos/flujoAux.calc");
|
|
27
30
|
class Balance {
|
|
28
31
|
execute(data) {
|
|
29
32
|
let result = {};
|
|
30
|
-
const balanceClone = trasponer(commmon.clone(data.balance));
|
|
31
|
-
const eerrClone = trasponer(commmon.clone(data.eerr));
|
|
33
|
+
const balanceClone = balanceCalc.trasponer(commmon.clone(data.balance));
|
|
34
|
+
const eerrClone = balanceCalc.trasponer(commmon.clone(data.eerr));
|
|
35
|
+
let balanceMap = balanceCalc.getBalanceHashMap(data.balance);
|
|
36
|
+
let eerrMap = balanceCalc.getBalanceHashMap(data.eerr);
|
|
37
|
+
(0, declaracionJurada_calc_1.anadirDeclaracionJurada)(balanceMap, data.balance, data.declaracionJurada.Balance);
|
|
38
|
+
data.eerrMap = eerrMap;
|
|
39
|
+
(0, flujoAux_calc_1.setFlujoInEERR)(data);
|
|
32
40
|
if (data.strategy != null)
|
|
33
41
|
data = data.strategy.execute(data);
|
|
42
|
+
delete data.eerrMap;
|
|
43
|
+
data.balance = Array.from(balanceMap.values());
|
|
44
|
+
data.eerr = Array.from(eerrMap.values());
|
|
34
45
|
result.balance = calcularBalance(data.balance);
|
|
35
46
|
result.eerr = calcularEERR(data.eerr);
|
|
36
47
|
result.DataOriginal = {
|
|
@@ -45,7 +56,8 @@ const calcularBalance = (balance) => {
|
|
|
45
56
|
let i = 0;
|
|
46
57
|
let result = balance.map((item) => {
|
|
47
58
|
i++;
|
|
48
|
-
|
|
59
|
+
const esGrupo = item.Clasificador == 'P' || item.Clasificador == 'C';
|
|
60
|
+
return Object.assign(Object.assign({}, item), { MontoEmpresa: (!esGrupo ? parseFloat(item.MontoEmpresa) : 0), MontoFamiliar: (!esGrupo ? parseFloat(item.MontoFamiliar) : 0), MontoTotal: (!esGrupo ? parseFloat(item.MontoEmpresa) + parseFloat(item.MontoFamiliar) : 0), IdVirtual: i });
|
|
49
61
|
});
|
|
50
62
|
result = sumarizarCuenta(['ACT_CN_11000', 'ACT_CN_12000',
|
|
51
63
|
'ACT_CN_21000', 'ACT_CN_22000', 'ACT_CN_30000'], result);
|
|
@@ -59,14 +71,15 @@ const calcularBalance = (balance) => {
|
|
|
59
71
|
result = adicionarCuenta('ACT_CN_30000', 'ACT_CN_39000', result);
|
|
60
72
|
result = adicionarCuenta('ACT_CN_20000', 'ACT_CN_39900', result);
|
|
61
73
|
result = adicionarCuenta('ACT_CN_30000', 'ACT_CN_39900', result);
|
|
62
|
-
result = trasponer(result);
|
|
74
|
+
result = balanceCalc.trasponer(result);
|
|
63
75
|
return result;
|
|
64
76
|
};
|
|
65
77
|
const calcularEERR = (eerr) => {
|
|
66
78
|
let i = 0;
|
|
67
79
|
let result = eerr.map((item) => {
|
|
68
80
|
i++;
|
|
69
|
-
|
|
81
|
+
const esGrupo = item.Clasificador == 'P' || item.Clasificador == 'C';
|
|
82
|
+
return Object.assign(Object.assign({}, item), { MontoEmpresa: (!esGrupo ? parseFloat(item.MontoEmpresa) : 0), MontoFamiliar: (!esGrupo ? parseFloat(item.MontoFamiliar) : 0), MontoTotal: (!esGrupo ? parseFloat(item.MontoEmpresa) + parseFloat(item.MontoFamiliar) : 0), IdVirtual: i });
|
|
70
83
|
});
|
|
71
84
|
//Ingresos
|
|
72
85
|
result = sumarizarCuenta(['ACT_CN_40000'], result);
|
|
@@ -99,7 +112,7 @@ const calcularEERR = (eerr) => {
|
|
|
99
112
|
//Utilidad neta
|
|
100
113
|
result = adicionarCuenta('ACT_CN_46000', 'ACT_CN_47000', result);
|
|
101
114
|
result = adicionarCuenta('ACT_CN_46001', 'ACT_CN_47000', result, true);
|
|
102
|
-
result = trasponer(result);
|
|
115
|
+
result = balanceCalc.trasponer(result);
|
|
103
116
|
return result;
|
|
104
117
|
};
|
|
105
118
|
const adicionarCuenta = (origen, destino, datos, isNegative = false) => {
|
|
@@ -151,46 +164,3 @@ const sumarizarCuenta = (rubros, datos) => {
|
|
|
151
164
|
});
|
|
152
165
|
return datos;
|
|
153
166
|
};
|
|
154
|
-
//@ts-ignore
|
|
155
|
-
const trasponer = (data) => {
|
|
156
|
-
let result = data.reduce((acc, item) => {
|
|
157
|
-
const uuid = item.UUID != null ? item.UUID : '0';
|
|
158
|
-
const key = `${item.RubroId}_${uuid}`;
|
|
159
|
-
if (!acc.has(key)) {
|
|
160
|
-
acc.set(key, {
|
|
161
|
-
RubroId: item.RubroId,
|
|
162
|
-
RubroPadreId: item.RubroPadreId,
|
|
163
|
-
Descripcion: item.Descripcion,
|
|
164
|
-
IndicadorABM: item.IndicadorABM,
|
|
165
|
-
Clasificador: item.Clasificador,
|
|
166
|
-
Borrable: (item.Clasificador == 'HABM'),
|
|
167
|
-
Editable: item.Editable,
|
|
168
|
-
Secuencia: item.Secuencia,
|
|
169
|
-
UUID: item.UUID,
|
|
170
|
-
Rango: item.Rango,
|
|
171
|
-
});
|
|
172
|
-
for (let i = 1; i <= item.Rango; i++) {
|
|
173
|
-
acc.get(key)[`MontoEmpresa_${i}`] = 0;
|
|
174
|
-
acc.get(key)[`MontoFamiliar_${i}`] = 0;
|
|
175
|
-
acc.get(key)[`MontoTotal_${i}`] = 0;
|
|
176
|
-
acc.get(key)[`Fecha_${i}`] = null;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
acc.get(key)[`MontoEmpresa_${item.Correlativo}`] = item.MontoEmpresa;
|
|
180
|
-
acc.get(key)[`MontoFamiliar_${item.Correlativo}`] = item.MontoFamiliar;
|
|
181
|
-
acc.get(key)[`MontoTotal_${item.Correlativo}`] = item.MontoTotal;
|
|
182
|
-
acc.get(key)[`Fecha_${item.Correlativo}`] = item.Fecha;
|
|
183
|
-
return acc;
|
|
184
|
-
}, new Map());
|
|
185
|
-
result = Array.from(result.values());
|
|
186
|
-
result = result.sort((a, b) => a.RubroId.localeCompare(b.RubroId));
|
|
187
|
-
return result;
|
|
188
|
-
};
|
|
189
|
-
// const esBorrable=(rubroId: string )=>{
|
|
190
|
-
//
|
|
191
|
-
// // const rubrosBorrables = ['ACT_CN_11004','ACT_CN_12005',
|
|
192
|
-
// // 'ACT_CN_21003','ACT_CN_22003','ACT_CN_30002',
|
|
193
|
-
// // 'ACT_CN_40002','ACT_CN_41003','ACT_CN_43004','ACT_CN_45001']
|
|
194
|
-
// return (rubrosBorrables.includes(rubroId))
|
|
195
|
-
// }
|
|
196
|
-
//
|
|
@@ -1,10 +1,63 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.calcularPorcentaje = exports.clone = void 0;
|
|
3
|
+
exports.calcularPorcentaje = exports.trasponer = exports.getBalanceHashMap = exports.clone = void 0;
|
|
4
4
|
const clone = (data) => {
|
|
5
5
|
return JSON.parse(JSON.stringify(data));
|
|
6
6
|
};
|
|
7
7
|
exports.clone = clone;
|
|
8
|
+
const getBalanceHashMap = (balance) => {
|
|
9
|
+
if (!balance || balance.length == 0)
|
|
10
|
+
throw new Error('Debe ingresar un balance válido');
|
|
11
|
+
const result = balance.reduce((acc, item) => {
|
|
12
|
+
if (item.Clasificador !== 'CT') {
|
|
13
|
+
let key = `${item.RubroId}_${item.Correlativo}`;
|
|
14
|
+
if (item.Clasificador !== 'H') {
|
|
15
|
+
key = `${item.RubroId}_${!item.UUID ? '0' : item.UUID}_${item.Correlativo}`;
|
|
16
|
+
}
|
|
17
|
+
if (!acc.has(key)) {
|
|
18
|
+
acc.set(key, Object.assign({}, item));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return acc;
|
|
22
|
+
}, new Map());
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
exports.getBalanceHashMap = getBalanceHashMap;
|
|
26
|
+
const trasponer = (data) => {
|
|
27
|
+
let result = data.reduce((acc, item) => {
|
|
28
|
+
const uuid = item.UUID != null ? item.UUID : '0';
|
|
29
|
+
const key = `${item.RubroId}_${uuid}`;
|
|
30
|
+
if (!acc.has(key)) {
|
|
31
|
+
acc.set(key, {
|
|
32
|
+
RubroId: item.RubroId,
|
|
33
|
+
RubroPadreId: item.RubroPadreId,
|
|
34
|
+
Descripcion: item.Descripcion,
|
|
35
|
+
IndicadorABM: item.IndicadorABM,
|
|
36
|
+
Clasificador: item.Clasificador,
|
|
37
|
+
Borrable: (item.Clasificador == 'HABM'),
|
|
38
|
+
Editable: item.Editable,
|
|
39
|
+
Secuencia: item.Secuencia,
|
|
40
|
+
UUID: item.UUID,
|
|
41
|
+
Rango: item.Rango,
|
|
42
|
+
});
|
|
43
|
+
for (let i = 1; i <= item.Rango; i++) {
|
|
44
|
+
acc.get(key)[`MontoEmpresa_${i}`] = 0;
|
|
45
|
+
acc.get(key)[`MontoFamiliar_${i}`] = 0;
|
|
46
|
+
acc.get(key)[`MontoTotal_${i}`] = 0;
|
|
47
|
+
acc.get(key)[`Fecha_${i}`] = null;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
acc.get(key)[`MontoEmpresa_${item.Correlativo}`] = item.MontoEmpresa;
|
|
51
|
+
acc.get(key)[`MontoFamiliar_${item.Correlativo}`] = item.MontoFamiliar;
|
|
52
|
+
acc.get(key)[`MontoTotal_${item.Correlativo}`] = item.MontoTotal;
|
|
53
|
+
acc.get(key)[`Fecha_${item.Correlativo}`] = item.Fecha;
|
|
54
|
+
return acc;
|
|
55
|
+
}, new Map());
|
|
56
|
+
result = Array.from(result.values());
|
|
57
|
+
result = result.sort((a, b) => a.RubroId.localeCompare(b.RubroId));
|
|
58
|
+
return result;
|
|
59
|
+
};
|
|
60
|
+
exports.trasponer = trasponer;
|
|
8
61
|
const calcularPorcentaje = (balance) => {
|
|
9
62
|
};
|
|
10
63
|
exports.calcularPorcentaje = calcularPorcentaje;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const anadirNuevoRubro: (muestra: any, balanceMap: any, values: any, descripcion: string) => void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.anadirNuevoRubro = void 0;
|
|
4
|
+
const anadirNuevoRubro = (muestra, balanceMap, values, descripcion) => {
|
|
5
|
+
for (let i = 1; i <= muestra.Rango; i++) {
|
|
6
|
+
let newData = Object.assign(Object.assign({}, muestra), { Descripcion: `${muestra.Descripcion} ${descripcion}`, Fecha: null, Correlativo: i, MontoFamiliar: 0, MontoEmpresa: 0, IndicadorABM: 'N', Editable: false, Clasificador: 'CT' });
|
|
7
|
+
if (i == muestra.Rango) {
|
|
8
|
+
if (values.MontoEmpresa && values.MontoEmpresa > 0)
|
|
9
|
+
newData.MontoEmpresa = values.MontoEmpresa;
|
|
10
|
+
if (values.MontoFamiliar && values.MontoFamiliar > 0)
|
|
11
|
+
newData.MontoFamiliar = values.MontoFamiliar;
|
|
12
|
+
}
|
|
13
|
+
balanceMap.set(`${muestra.RubroId}_${i}`, newData);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
exports.anadirNuevoRubro = anadirNuevoRubro;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const anadirDeclaracionJurada: (balanceMap: any, balanceArray: any, declaracionJurada: any) => void;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.anadirDeclaracionJurada = void 0;
|
|
4
|
+
const balanceAux_calc_1 = require("./balanceAux.calc");
|
|
5
|
+
const anadirDeclaracionJurada = (balanceMap, balanceArray, declaracionJurada) => {
|
|
6
|
+
const rango = balanceArray[0].Rango;
|
|
7
|
+
if (!declaracionJurada || declaracionJurada.length == 0)
|
|
8
|
+
throw new Error('Debe ingresar un Declaración Jurada válida');
|
|
9
|
+
const declaracionMap = declaracionJurada.reduce((acc, item) => {
|
|
10
|
+
acc.set(item.RubroId, item);
|
|
11
|
+
if (!acc.has('Total')) {
|
|
12
|
+
acc.set('Total', { TotalActivosE: 0, TotalPasivosE: 0, TotalActivosF: 0, TotalPasivosF: 0 });
|
|
13
|
+
}
|
|
14
|
+
if (item.TipoRubroId === 'ACTIVOS') {
|
|
15
|
+
acc.get('Total').TotalActivosE += parseFloat(item.MontoEmpresa);
|
|
16
|
+
acc.get('Total').TotalActivosF += parseFloat(item.MontoFamiliar);
|
|
17
|
+
}
|
|
18
|
+
if (item.TipoRubroId === 'PASIVOS') {
|
|
19
|
+
acc.get('Total').TotalPasivosE += parseFloat(item.MontoEmpresa);
|
|
20
|
+
acc.get('Total').TotalPasivosF += parseFloat(item.MontoFamiliar);
|
|
21
|
+
}
|
|
22
|
+
return acc;
|
|
23
|
+
}, new Map());
|
|
24
|
+
let referencia = [];
|
|
25
|
+
referencia.push(arrayValue(['SOL_ACT_001'], 'ACT_CN_11001'));
|
|
26
|
+
referencia.push(arrayValue(['SOL_ACT_002'], 'ACT_CN_11002'));
|
|
27
|
+
referencia.push(arrayValue(['SOL_ACT_011'], 'ACT_CN_11003'));
|
|
28
|
+
referencia.push(arrayValue(['SOL_ACT_003'], 'ACT_CN_12001'));
|
|
29
|
+
referencia.push(arrayValue(['SOL_ACT_005', 'SOL_ACT_007', 'SOL_ACT_008', 'SOL_ACT_009', 'SOL_ACT_010'], 'ACT_CN_12002'));
|
|
30
|
+
referencia.push(arrayValue(['SOL_ACT_004'], 'ACT_CN_12003'));
|
|
31
|
+
referencia.push(arrayValue(['SOL_ACT_006', 'SOL_ACT_012'], 'ACT_CN_12004'));
|
|
32
|
+
referencia.push(arrayValue(['SOL_PAS_001'], 'ACT_CN_21001'));
|
|
33
|
+
referencia.push(arrayValue(['SOL_PAS_002'], 'ACT_CN_21002'));
|
|
34
|
+
referencia.push(arrayValue(['SOL_PAS_003'], 'ACT_CN_22001'));
|
|
35
|
+
referencia.push(arrayValue(['SOL_PAS_004'], 'ACT_CN_22002'));
|
|
36
|
+
for (const item of referencia) {
|
|
37
|
+
const key = `${item.key}_${rango}`;
|
|
38
|
+
if (balanceMap.has(key)) {
|
|
39
|
+
if (balanceMap.get(key).MontoEmpresa == 0 || balanceMap.get(key).MontoFamiliar == 0) {
|
|
40
|
+
const values = getValuesFromDj(item.array, declaracionMap);
|
|
41
|
+
if (balanceMap.get(key).MontoEmpresa == 0)
|
|
42
|
+
balanceMap.get(key).MontoEmpresa = values.montoEmpresa;
|
|
43
|
+
if (balanceMap.get(key).MontoFamiliar == 0)
|
|
44
|
+
balanceMap.get(key).MontoFamiliar = values.montoFamiliar;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
const some = balanceArray.find((value) => value.RubroId === item.ley);
|
|
49
|
+
const values = getValuesFromDj(item.array, declaracionMap);
|
|
50
|
+
(0, balanceAux_calc_1.anadirNuevoRubro)(some, balanceMap, values, '(Declaración Jurada)');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const keyCapital = `ACT_CN_30001_${rango}`;
|
|
54
|
+
balanceMap.get(keyCapital).MontoEmpresa = declaracionMap.get('Total').TotalActivosE -
|
|
55
|
+
declaracionMap.get('Total').TotalPasivosE;
|
|
56
|
+
balanceMap.get(keyCapital).MontoFamiliar = declaracionMap.get('Total').TotalActivosF -
|
|
57
|
+
declaracionMap.get('Total').TotalPasivosF;
|
|
58
|
+
};
|
|
59
|
+
exports.anadirDeclaracionJurada = anadirDeclaracionJurada;
|
|
60
|
+
const arrayValue = (array, key) => {
|
|
61
|
+
return {
|
|
62
|
+
array: array,
|
|
63
|
+
key: key
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
const getValuesFromDj = (arrayDj, declaracionMap) => {
|
|
67
|
+
let montoFamiliar = 0;
|
|
68
|
+
let montoEmpresa = 0;
|
|
69
|
+
for (const djItem of arrayDj) {
|
|
70
|
+
montoEmpresa += parseFloat(declaracionMap.get(djItem).MontoEmpresa);
|
|
71
|
+
montoFamiliar += parseFloat(declaracionMap.get(djItem).MontoFamiliar);
|
|
72
|
+
}
|
|
73
|
+
return { montoFamiliar, montoEmpresa };
|
|
74
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const setFlujoInEERR: (data: any) => Promise<void>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.setFlujoInEERR = void 0;
|
|
13
|
+
const setFlujoInEERR = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
|
+
if (data.flujoProyectado && data.flujoProyectado.FlujoProyectadoMensual
|
|
15
|
+
&& data.flujoProyectado.FlujoProyectadoMensual.length > 0) {
|
|
16
|
+
let gastosFinancierosEmp = data.flujoProyectado.FlujoProyectadoMensual.
|
|
17
|
+
filter((value) => value.RubroId == 'ACT_CNFL_61001').reduce((acc, item) => {
|
|
18
|
+
for (let i = 1; i <= 12; i++) {
|
|
19
|
+
acc += parseFloat(item[`Monto${i}`]);
|
|
20
|
+
}
|
|
21
|
+
return acc;
|
|
22
|
+
}, 0);
|
|
23
|
+
const rango = data.eerrMap.get('ACT_CN_43003_1').Rango;
|
|
24
|
+
data.eerrMap.get(`ACT_CN_43003_${rango}`).MontoEmpresa = gastosFinancierosEmp;
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
exports.setFlujoInEERR = setFlujoInEERR;
|