bdpformulas 1.0.55 → 1.0.57

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 (26) hide show
  1. package/build/context.d.ts +1 -1
  2. package/build/index.d.ts +32 -20
  3. package/build/strategies/agriculture/balanceAgr.strategy.d.ts +2 -1
  4. package/build/strategies/agriculture/balanceAgr.strategy.js +153 -16
  5. package/build/strategies/agriculture/flujoProyAgr.strategy.d.ts +1 -1
  6. package/build/strategies/agriculture/flujoProyAgr.strategy.js +16 -7
  7. package/build/strategies/agriculture/ventas.detail/ventas.calc.js +8 -5
  8. package/build/strategies/balance.strategy.d.ts +1 -1
  9. package/build/strategies/balance.strategy.js +117 -24
  10. package/build/strategies/common/balance.calc.js +3 -4
  11. package/build/strategies/common/balanceCalculos/balanceAux.calc.js +2 -2
  12. package/build/strategies/common/balanceCalculos/flujoAux.calc.js +6 -5
  13. package/build/strategies/common/declaracionJurada.calc.js +26 -10
  14. package/build/strategies/common/flujoCalculos/flujoConstructor.d.ts +4 -0
  15. package/build/strategies/common/flujoCalculos/flujoConstructor.js +231 -96
  16. package/build/strategies/common/flujoCalculos/supuestos.calc.js +21 -27
  17. package/build/strategies/common/flujoProyectado.calc.js +4 -1
  18. package/build/strategies/flujoProyectado.strategy.d.ts +1 -1
  19. package/build/strategies/flujoProyectado.strategy.js +2 -1
  20. package/build/strategies/general/balanceGeneral.strategy.d.ts +1 -1
  21. package/build/strategies/general/balanceGeneral.strategy.js +19 -9
  22. package/build/strategies/index.d.ts +1 -0
  23. package/build/strategies/index.js +7446 -0
  24. package/build/strategies/utils.d.ts +8 -0
  25. package/build/strategies/utils.js +39 -0
  26. 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
@@ -1,24 +1,24 @@
1
1
  import Auxiliar from './strategies/pecuary/anexo.strategy';
2
2
  import Desarrollo from './strategies/pecuary/desarrollo.strategy';
3
- import VentasPec from "./strategies/pecuary/ventas.strategy";
4
- import Context from "./context";
5
- import CostosPec from "./strategies/pecuary/costos.strategy";
6
- import VentasPrd from "./strategies/production/ventas.strategy";
7
- import CostosPrd from "./strategies/production/costos.strategy";
8
- import CostosAgr from "./strategies/agriculture/costos.strategy";
9
- import BalanceAgrStrategy from "./strategies/agriculture/balanceAgr.strategy";
10
- import FlujoProyectadoAgrStrategy from "./strategies/agriculture/flujoProyAgr.strategy";
11
- import BalancePecStrategy from "./strategies/pecuary/balancePec.strategy";
12
- import FlujoProyectadoPecStrategy from "./strategies/pecuary/flujoProyPec.strategy";
13
- import BalancePrdStrategy from "./strategies/production/balancePrd.strategy";
14
- import FlujoProyectadoPrdStrategy from "./strategies/production/flujoProyPrd.strategy";
15
- import BalanceEEFFStrategy from "./strategies/eeff/balanceEEFF.strategy";
16
- import FlujoProyectadoEEFFStrategy from "./strategies/eeff/flujoProyEEFF.strategy";
17
- import Balance from "./strategies/balance.strategy";
18
- import FlujoProyectado from "./strategies/flujoProyectado.strategy";
19
- import AnalisisFinancieros from "./strategies/analisisFinancieros.strategy";
20
- import BalanceGeneralStrategy from "./strategies/general/balanceGeneral.strategy";
21
- import FlujoProyectadoGeneralStrategy from "./strategies/general/flujoProyGeneral.strategy";
3
+ import VentasPec from './strategies/pecuary/ventas.strategy';
4
+ import Context from './context';
5
+ import CostosPec from './strategies/pecuary/costos.strategy';
6
+ import VentasPrd from './strategies/production/ventas.strategy';
7
+ import CostosPrd from './strategies/production/costos.strategy';
8
+ import CostosAgr from './strategies/agriculture/costos.strategy';
9
+ import BalanceAgrStrategy from './strategies/agriculture/balanceAgr.strategy';
10
+ import FlujoProyectadoAgrStrategy from './strategies/agriculture/flujoProyAgr.strategy';
11
+ import BalancePecStrategy from './strategies/pecuary/balancePec.strategy';
12
+ import FlujoProyectadoPecStrategy from './strategies/pecuary/flujoProyPec.strategy';
13
+ import BalancePrdStrategy from './strategies/production/balancePrd.strategy';
14
+ import FlujoProyectadoPrdStrategy from './strategies/production/flujoProyPrd.strategy';
15
+ import BalanceEEFFStrategy from './strategies/eeff/balanceEEFF.strategy';
16
+ import FlujoProyectadoEEFFStrategy from './strategies/eeff/flujoProyEEFF.strategy';
17
+ import Balance from './strategies/balance.strategy';
18
+ import FlujoProyectado from './strategies/flujoProyectado.strategy';
19
+ import AnalisisFinancieros from './strategies/analisisFinancieros.strategy';
20
+ import BalanceGeneralStrategy from './strategies/general/balanceGeneral.strategy';
21
+ import FlujoProyectadoGeneralStrategy from './strategies/general/flujoProyGeneral.strategy';
22
22
  import AdmFinancieraStrategy from './strategies/eeff/admFinanciera.strategy';
23
23
  declare const Pecuario: {
24
24
  Auxiliar: typeof Auxiliar;
@@ -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,6 +1,7 @@
1
- import { Strategy } from "../../strategy.interface";
1
+ import { Strategy } from '../../strategy.interface';
2
2
  export default class BalanceAgrStrategy implements Strategy {
3
3
  actividades: any[];
4
+ private camposCalculadosDefinidos;
4
5
  constructor();
5
6
  execute(data: any): any;
6
7
  }
@@ -1,20 +1,143 @@
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");
4
5
  class BalanceAgrStrategy {
5
6
  actividades;
7
+ camposCalculadosDefinidos;
6
8
  constructor() {
7
9
  this.actividades = [];
10
+ 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
+ {
97
+ RubroId: 'ACT_CN_41002',
98
+ Correlativos: '*',
99
+ Familiar: true,
100
+ Empresa: true
101
+ },
102
+ {
103
+ RubroId: 'ACT_CN_43001',
104
+ Correlativos: 'ultima',
105
+ Familiar: false,
106
+ Empresa: true
107
+ },
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
+ {
121
+ RubroId: 'ACT_CN_45003',
122
+ Correlativos: 'ultima',
123
+ Familiar: true,
124
+ Empresa: false
125
+ }
126
+ ];
8
127
  }
9
128
  execute(data) {
10
129
  if (!this.actividades || this.actividades.length == 0)
11
130
  return data;
12
131
  let acumuladoActividades = null;
13
- for (let actividad of this.actividades) {
14
- let actividadCalculada = calcularActividad(actividad);
132
+ for (const actividad of this.actividades) {
133
+ const actividadCalculada = calcularActividad(actividad);
15
134
  acumuladoActividades = addAcumulado(acumuladoActividades, actividadCalculada);
16
135
  }
17
136
  data.eerrMap = calcularEERR(data.eerrMap, data.eerr, acumuladoActividades);
137
+ data.camposCalculados = (0, utils_1.formatCamposCalculados)({
138
+ cantidadGestiones: data.cantidadGestiones,
139
+ definidos: this.camposCalculadosDefinidos
140
+ });
18
141
  return data;
19
142
  }
20
143
  }
@@ -23,7 +146,7 @@ const addAcumulado = (acumuladoActividades, actividadCalculada) => {
23
146
  if (acumuladoActividades == null)
24
147
  return actividadCalculada;
25
148
  else {
26
- for (let [key, value] of actividadCalculada.ventas) {
149
+ for (const [key, value] of actividadCalculada.ventas) {
27
150
  if (acumuladoActividades.ventas.has(key)) {
28
151
  let acumulado = acumuladoActividades.ventas.get(key);
29
152
  acumulado += value;
@@ -32,8 +155,10 @@ const addAcumulado = (acumuladoActividades, actividadCalculada) => {
32
155
  }
33
156
  acumuladoActividades.otrosIngresos += actividadCalculada.otrosIngresos;
34
157
  acumuladoActividades.costoTotal += actividadCalculada.costoTotal;
35
- acumuladoActividades.otrosGastos.GastosOperativos += actividadCalculada.otrosGastos.GastosOperativos;
36
- acumuladoActividades.otrosGastos.GastosFamiliares += actividadCalculada.otrosGastos.GastosFamiliares;
158
+ acumuladoActividades.otrosGastos.GastosOperativos +=
159
+ actividadCalculada.otrosGastos.GastosOperativos;
160
+ acumuladoActividades.otrosGastos.GastosFamiliares +=
161
+ actividadCalculada.otrosGastos.GastosFamiliares;
37
162
  return acumuladoActividades;
38
163
  }
39
164
  };
@@ -42,14 +167,16 @@ const calcularActividad = (actividades) => {
42
167
  const otrosIngresos = getOtrosIngresos(actividades.Ventas);
43
168
  const costoTotal = calcularCostoTotal(actividades.Costos);
44
169
  const otrosGastos = calcularOtrosGastos(actividades.OtrosGastos);
45
- return { ventas: ventas,
170
+ return {
171
+ ventas: ventas,
46
172
  otrosIngresos: otrosIngresos,
47
173
  costoTotal: costoTotal,
48
- otrosGastos: otrosGastos };
174
+ otrosGastos: otrosGastos
175
+ };
49
176
  };
50
177
  const calcularEERR = (eerrMap, eerr, consolidado) => {
51
178
  if (consolidado) {
52
- for (let [key, value] of consolidado.ventas) {
179
+ for (const [key, value] of consolidado.ventas) {
53
180
  const rubroKey = `ACT_CN_40001_${key}`;
54
181
  if (!eerrMap.has(rubroKey))
55
182
  throw new Error(`No existe el rubro llave ${rubroKey}`);
@@ -58,7 +185,7 @@ const calcularEERR = (eerrMap, eerr, consolidado) => {
58
185
  }
59
186
  setValueInOtros('ACT_CN_41002', eerrMap, eerr, { MontoEmpresa: consolidado.costoTotal }, 'Costos de Ventas COSTOS AGR Costo Total');
60
187
  setValueInOtros('ACT_CN_43002', eerrMap, eerr, { MontoEmpresa: consolidado.otrosGastos.GastosOperativos }, 'Gastos Administrativos/Operativos Gastos AGR Total Gastos Operativos');
61
- setValueInOtros('ACT_CN_43004', eerrMap, eerr, { MontoFamiliar: consolidado.otrosGastos.GastosFamiliares }, 'Gastos Familiares Gastos AGR Total Gastos Familiares');
188
+ setValueInOtros('ACT_CN_45003', eerrMap, eerr, { MontoFamiliar: consolidado.otrosGastos.GastosFamiliares }, 'Gastos Familiares Gastos AGR Total Gastos Familiares');
62
189
  setValueInOtros('ACT_CN_45001', eerrMap, eerr, { MontoFamiliar: consolidado.otrosIngresos }, 'Otros Ingresos Ventas AGR');
63
190
  }
64
191
  return eerrMap;
@@ -67,14 +194,23 @@ const setValueInOtros = (rubroKey, eerrMap, eerr, values, descripcion) => {
67
194
  const muestra = eerr.find((item) => item.RubroId === rubroKey);
68
195
  if (!muestra)
69
196
  throw new Error(`No existe el rubro ${rubroKey}`);
70
- if (!eerrMap.has(`${rubroKey}_${muestra.Rango}`)) {
197
+ let key = rubroKey;
198
+ if (muestra.Clasificador !== 'H') {
199
+ key = `${rubroKey}_${!muestra.UUID ? '0' : muestra.UUID}`;
200
+ }
201
+ key += `_${muestra.Rango}`;
202
+ if (!eerrMap.has(key)) {
71
203
  (0, balanceAux_calc_1.anadirNuevoRubro)(muestra, eerrMap, values, descripcion);
72
204
  }
73
205
  else {
74
- let column = eerrMap.get(`${rubroKey}_${muestra.Rango}`);
75
- if (values.MontoEmpresa && values.MontoEmpresa > 0 && column.MontoEmpresa == 0)
206
+ const column = eerrMap.get(key);
207
+ if (values.MontoEmpresa &&
208
+ values.MontoEmpresa > 0 &&
209
+ column.MontoEmpresa == 0)
76
210
  column.MontoEmpresa = values.MontoEmpresa;
77
- if (values.MontoFamiliar && values.MontoFamiliar > 0 && column.MontoFamiliar == 0)
211
+ if (values.MontoFamiliar &&
212
+ values.MontoFamiliar > 0 &&
213
+ column.MontoFamiliar == 0)
78
214
  column.MontoFamiliar = values.MontoFamiliar;
79
215
  }
80
216
  };
@@ -91,9 +227,10 @@ const getOtrosIngresos = (ventas) => {
91
227
  };
92
228
  //@ts-ignore
93
229
  const getVentasXGestion = (ventas) => {
94
- const ingresosTotales = ventas.Productos.map((item) => item.Ingresos).flat().
95
- filter((item) => item.RubroId === 'ACT_AGR_ING_TO');
96
- let result = ingresosTotales.reduce((acc, item) => {
230
+ const ingresosTotales = ventas.Productos.map((item) => item.Ingresos)
231
+ .flat()
232
+ .filter((item) => item.RubroId === 'ACT_AGR_ING_TO');
233
+ const result = ingresosTotales.reduce((acc, item) => {
97
234
  const rango = item.Rango;
98
235
  for (let i = 1; i <= rango; i++) {
99
236
  if (!acc.has(i)) {
@@ -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 Balance implements Strategy {
3
3
  execute(data: any): any;
4
4
  }
@@ -26,25 +26,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  const balanceCalc = __importStar(require("./common/balance.calc"));
27
27
  const commmon = __importStar(require("./common/balance.calc"));
28
28
  const declaracionJurada_calc_1 = require("./common/declaracionJurada.calc");
29
- const flujoAux_calc_1 = require("./common/balanceCalculos/flujoAux.calc");
29
+ //import { setFlujoInEERR } from './common/balanceCalculos/flujoAux.calc'
30
+ const utils_1 = require("./eeff/admFinanciera/utils");
30
31
  class Balance {
31
32
  execute(data) {
32
- let result = {};
33
+ const result = {};
33
34
  const balanceClone = balanceCalc.trasponer(commmon.clone(data.balance));
34
35
  const eerrClone = balanceCalc.trasponer(commmon.clone(data.eerr));
35
- let balanceMap = balanceCalc.getBalanceHashMap(data.balance);
36
- let eerrMap = balanceCalc.getBalanceHashMap(data.eerr);
36
+ const balanceMap = balanceCalc.getBalanceHashMap(data.balance);
37
+ const eerrMap = balanceCalc.getBalanceHashMap(data.eerr);
37
38
  (0, declaracionJurada_calc_1.anadirDeclaracionJurada)(balanceMap, data.balance, data.declaracionJurada.Balance);
38
39
  data.balanceMap = balanceMap;
39
40
  data.eerrMap = eerrMap;
40
- (0, flujoAux_calc_1.setFlujoInEERR)(data);
41
+ //setFlujoInEERR(data)
41
42
  if (data.strategy != null)
42
43
  data = data.strategy.execute(data);
44
+ result.camposCalculados = data.camposCalculados;
43
45
  delete data.eerrMap;
44
46
  data.balance = Array.from(balanceMap.values());
45
47
  data.eerr = Array.from(eerrMap.values());
46
- result.balance = calcularBalance(data.balance);
47
- result.eerr = calcularEERR(data.eerr);
48
+ result.balance = calcularBalance(data.balance, data.cantidadGestiones);
49
+ result.eerr = calcularEERR(data.eerr, data.cantidadGestiones);
48
50
  result.DataOriginal = {
49
51
  balance: balanceClone,
50
52
  eerr: eerrClone
@@ -53,21 +55,28 @@ class Balance {
53
55
  }
54
56
  }
55
57
  exports.default = Balance;
56
- const calcularBalance = (balance) => {
58
+ const calcularBalance = (balance, cantidadGestiones) => {
57
59
  let i = 0;
58
60
  let result = balance.map((item) => {
59
61
  i++;
60
62
  const esGrupo = item.Clasificador == 'P' || item.Clasificador == 'C';
61
63
  return {
62
64
  ...item,
63
- MontoEmpresa: (!esGrupo ? parseFloat(item.MontoEmpresa) : 0),
64
- MontoFamiliar: (!esGrupo ? parseFloat(item.MontoFamiliar) : 0),
65
- MontoTotal: (!esGrupo ? parseFloat(item.MontoEmpresa) + parseFloat(item.MontoFamiliar) : 0),
65
+ MontoEmpresa: !esGrupo ? parseFloat(item.MontoEmpresa) : 0,
66
+ MontoFamiliar: !esGrupo ? parseFloat(item.MontoFamiliar) : 0,
67
+ MontoTotal: !esGrupo
68
+ ? parseFloat(item.MontoEmpresa) + parseFloat(item.MontoFamiliar)
69
+ : 0,
66
70
  IdVirtual: i
67
71
  };
68
72
  });
69
- result = sumarizarCuenta(['ACT_CN_11000', 'ACT_CN_12000',
70
- 'ACT_CN_21000', 'ACT_CN_22000', 'ACT_CN_30000'], result);
73
+ result = sumarizarCuenta([
74
+ 'ACT_CN_11000',
75
+ 'ACT_CN_12000',
76
+ 'ACT_CN_21000',
77
+ 'ACT_CN_22000',
78
+ 'ACT_CN_30000'
79
+ ], result);
71
80
  result = sumarizarCuenta(['ACT_CN_10000', 'ACT_CN_20000'], result);
72
81
  result = adicionarCuenta('ACT_CN_11000', 'ACT_CN_11900', result);
73
82
  result = adicionarCuenta('ACT_CN_12000', 'ACT_CN_12900', result);
@@ -78,19 +87,70 @@ const calcularBalance = (balance) => {
78
87
  result = adicionarCuenta('ACT_CN_30000', 'ACT_CN_39000', result);
79
88
  result = adicionarCuenta('ACT_CN_20000', 'ACT_CN_39900', result);
80
89
  result = adicionarCuenta('ACT_CN_30000', 'ACT_CN_39900', result);
90
+ calcularCapital(result, cantidadGestiones);
81
91
  result = balanceCalc.trasponer(result);
82
92
  return result;
83
93
  };
84
- const calcularEERR = (eerr) => {
94
+ function calcularCapital(datos, cantidadGestiones) {
95
+ const totalActivos = datos.filter((el) => el.RubroId === 'ACT_CN_19000');
96
+ const totalPasivos = datos.filter((el) => el.RubroId === 'ACT_CN_29000');
97
+ const capitales = datos.filter((el) => el.RubroId === 'ACT_CN_30001' &&
98
+ el.Correlativo <= cantidadGestiones - 1);
99
+ capitales.forEach((cap) => {
100
+ const activo = totalActivos.find((el) => el.Correlativo === cap.Correlativo);
101
+ const pasivo = totalPasivos.find((el) => el.Correlativo === cap.Correlativo);
102
+ cap.MontoEmpresa =
103
+ (0, utils_1.ourParseFloat)(activo?.MontoEmpresa) -
104
+ (0, utils_1.ourParseFloat)(pasivo?.MontoEmpresa);
105
+ cap.MontoFamiliar =
106
+ (0, utils_1.ourParseFloat)(activo?.MontoFamiliar) -
107
+ (0, utils_1.ourParseFloat)(pasivo?.MontoFamiliar);
108
+ cap.MontoTotal = cap.MontoEmpresa + cap.MontoFamiliar;
109
+ });
110
+ const totalesPatrimonio = datos.filter((el) => el.RubroId === 'ACT_CN_39000' &&
111
+ el.Correlativo <= cantidadGestiones - 1);
112
+ totalesPatrimonio.forEach((el) => {
113
+ const capital = capitales.find((cap) => el.Correlativo === cap.Correlativo);
114
+ el.MontoEmpresa += (0, utils_1.ourParseFloat)(capital?.MontoEmpresa);
115
+ el.MontoFamiliar += (0, utils_1.ourParseFloat)(capital?.MontoFamiliar);
116
+ el.MontoTotal = el.MontoEmpresa + el.MontoFamiliar;
117
+ });
118
+ const totalesPasivoPatrimonio = datos.filter((el) => el.RubroId === 'ACT_CN_39900' &&
119
+ el.Correlativo <= cantidadGestiones - 1);
120
+ totalesPasivoPatrimonio.forEach((el) => {
121
+ const capital = capitales.find((cap) => el.Correlativo === cap.Correlativo);
122
+ el.MontoEmpresa += (0, utils_1.ourParseFloat)(capital?.MontoEmpresa);
123
+ el.MontoFamiliar += (0, utils_1.ourParseFloat)(capital?.MontoFamiliar);
124
+ el.MontoTotal = el.MontoEmpresa + el.MontoFamiliar;
125
+ });
126
+ }
127
+ const calcularEERR = (eerr, cantidadGestiones) => {
85
128
  let i = 0;
129
+ //calcular porcentajes
130
+ calcularPorcentajes({
131
+ rubroDatos: 'ACT_CN_40001',
132
+ rubroPorcentajes: 'ACT_CN_41001',
133
+ rubroDestino: 'ACT_CN_41002',
134
+ cantidadGestiones,
135
+ datos: eerr
136
+ });
137
+ calcularPorcentajes({
138
+ rubroDatos: 'ACT_CN_40001',
139
+ rubroPorcentajes: 'ACT_CN_43001',
140
+ rubroDestino: 'ACT_CN_43002',
141
+ cantidadGestiones,
142
+ datos: eerr
143
+ });
86
144
  let result = eerr.map((item) => {
87
145
  i++;
88
146
  const esGrupo = item.Clasificador == 'P' || item.Clasificador == 'C';
89
147
  return {
90
148
  ...item,
91
- MontoEmpresa: (!esGrupo ? parseFloat(item.MontoEmpresa) : 0),
92
- MontoFamiliar: (!esGrupo ? parseFloat(item.MontoFamiliar) : 0),
93
- MontoTotal: (!esGrupo ? parseFloat(item.MontoEmpresa) + parseFloat(item.MontoFamiliar) : 0),
149
+ MontoEmpresa: !esGrupo ? parseFloat(item.MontoEmpresa) : 0,
150
+ MontoFamiliar: !esGrupo ? parseFloat(item.MontoFamiliar) : 0,
151
+ MontoTotal: !esGrupo
152
+ ? parseFloat(item.MontoEmpresa) + parseFloat(item.MontoFamiliar)
153
+ : 0,
94
154
  IdVirtual: i
95
155
  };
96
156
  });
@@ -106,8 +166,8 @@ const calcularEERR = (eerr) => {
106
166
  result = adicionarCuenta('ACT_CN_40000', 'ACT_CN_42000', result);
107
167
  result = adicionarCuenta('ACT_CN_41000', 'ACT_CN_42000', result, true);
108
168
  //Gastos
109
- result = adicionarCuenta('ACT_CN_43003', 'ACT_CN_43000', result);
110
169
  result = adicionarCuenta('ACT_CN_43002', 'ACT_CN_43000', result);
170
+ result = adicionarCuenta('ACT_CN_43003', 'ACT_CN_43000', result);
111
171
  result = adicionarCuenta('ACT_CN_43004', 'ACT_CN_43000', result);
112
172
  //Total gastos
113
173
  result = adicionarCuenta('ACT_CN_43000', 'ACT_CN_43900', result);
@@ -128,30 +188,63 @@ const calcularEERR = (eerr) => {
128
188
  result = balanceCalc.trasponer(result);
129
189
  return result;
130
190
  };
191
+ function calcularPorcentajes({ rubroDatos, rubroPorcentajes, datos, cantidadGestiones, rubroDestino }) {
192
+ const porcentajes = datos.filter((el) => el.RubroId === rubroPorcentajes);
193
+ const montos = datos.filter((el) => el.RubroId === rubroDatos);
194
+ const destinos = datos.filter((el) => el.RubroId === rubroDestino);
195
+ destinos.forEach((item) => {
196
+ const porcentaje = porcentajes.find((el) => el.Correlativo === item.Correlativo);
197
+ const monto = montos.find((el) => el.Correlativo === item.Correlativo);
198
+ if (item.Correlativo === cantidadGestiones) {
199
+ if (porcentaje) {
200
+ porcentaje.MontoEmpresa =
201
+ ((0, utils_1.ourParseFloat)(item.MontoEmpresa) /
202
+ (0, utils_1.ourParseFloat)(monto?.MontoEmpresa)) *
203
+ 100;
204
+ }
205
+ }
206
+ else {
207
+ item.MontoEmpresa =
208
+ ((0, utils_1.ourParseFloat)(monto.MontoEmpresa) *
209
+ (0, utils_1.ourParseFloat)(porcentaje.MontoEmpresa)) /
210
+ 100;
211
+ }
212
+ item.MontoFamiliar =
213
+ ((0, utils_1.ourParseFloat)(monto.MontoFamiliar) *
214
+ (0, utils_1.ourParseFloat)(porcentaje.MontoFamiliar)) /
215
+ 100;
216
+ });
217
+ }
131
218
  const adicionarCuenta = (origen, destino, datos, isNegative = false) => {
132
- const origenVector = datos.filter((item) => item.RubroId == origen).reduce((acc, valor) => {
219
+ const origenVector = datos
220
+ .filter((item) => item.RubroId == origen)
221
+ .reduce((acc, valor) => {
133
222
  if (!acc.has(valor.Correlativo))
134
223
  acc.set(valor.Correlativo, valor);
135
224
  return acc;
136
225
  }, new Map());
137
- let destinoVector = datos.filter((item) => item.RubroId == destino);
226
+ const destinoVector = datos.filter((item) => item.RubroId == destino);
138
227
  destinoVector.forEach((item) => {
139
228
  if (isNegative) {
140
229
  item.MontoEmpresa -= origenVector.get(item.Correlativo).MontoEmpresa;
141
230
  item.MontoFamiliar -= origenVector.get(item.Correlativo).MontoFamiliar;
142
- item.MontoTotal -= origenVector.get(item.Correlativo).MontoEmpresa;
231
+ item.MontoTotal -=
232
+ origenVector.get(item.Correlativo).MontoEmpresa +
233
+ origenVector.get(item.Correlativo).MontoFamiliar;
143
234
  }
144
235
  else {
145
236
  item.MontoEmpresa += origenVector.get(item.Correlativo).MontoEmpresa;
146
237
  item.MontoFamiliar += origenVector.get(item.Correlativo).MontoFamiliar;
147
- item.MontoTotal += origenVector.get(item.Correlativo).MontoEmpresa;
238
+ item.MontoTotal +=
239
+ origenVector.get(item.Correlativo).MontoEmpresa +
240
+ origenVector.get(item.Correlativo).MontoFamiliar;
148
241
  }
149
242
  });
150
243
  return datos;
151
244
  };
152
245
  const sumarizarCuenta = (rubros, datos) => {
153
- let filtrados = datos.filter((item) => rubros.includes(item.RubroPadreId));
154
- let grupos = datos.filter((item) => rubros.includes(item.RubroId));
246
+ const filtrados = datos.filter((item) => rubros.includes(item.RubroPadreId));
247
+ const grupos = datos.filter((item) => rubros.includes(item.RubroId));
155
248
  const suma = filtrados.reduce((acc, item) => {
156
249
  const key = `${item.RubroPadreId}_${item.Correlativo}`;
157
250
  if (!acc.has(key)) {