bdpformulas 1.0.74 → 1.0.78

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/index.d.ts CHANGED
@@ -64,11 +64,13 @@ interface CampoCalculadoDefinido {
64
64
  Correlativos: '*' | 'ultima' | number[];
65
65
  Empresa: boolean;
66
66
  Familiar: boolean;
67
+ esPorcentaje?: boolean;
67
68
  }
68
69
  interface CampoCalculado {
69
70
  RubroId: string;
70
71
  Correlativo: number;
71
72
  Empresa: boolean;
72
73
  Familiar: boolean;
74
+ esPorcentaje?: boolean;
73
75
  }
74
76
  export { Context, Agricola, Pecuario, Produccion, EEFF, Actividades, General, CampoCalculado, CampoCalculadoDefinido };
@@ -17,16 +17,22 @@ export declare enum EEFFConsolidadoRubroEnum {
17
17
  TotalPasivoNoCorriente = "ACT_CN_22900",
18
18
  TotalPasivo = "ACT_CN_29000",
19
19
  Patrimonio = "ACT_CN_30000",
20
+ Resultados_de_la_Gestión = "ACT_CN_30001_a",
20
21
  OtrosPatrimonio = "ACT_CN_30002",
21
22
  TotalPatrimonio = "ACT_CN_39000",
22
23
  TotalPasivoPatrimonio = "ACT_CN_39900",
23
24
  Ingresos = "ACT_CN_40000",
25
+ IngresoPorVentas = "ACT_CN_40001",
24
26
  OtrosIngresos = "ACT_CN_40002",
25
27
  TotalIngresos = "ACT_CN_40003",
26
28
  Costos = "ACT_CN_41000",
29
+ 'CostosDeVentas%' = "ACT_CN_41001",
30
+ CostosDeVentas = "ACT_CN_41002",
27
31
  OtrosCostos = "ACT_CN_41003",
28
32
  TotalCostos = "ACT_CN_41004",
29
33
  Gastos = "ACT_CN_43000",
34
+ 'GastosAdministrativos/Operativos%' = "ACT_CN_43001",
35
+ 'GastosAdministrativos/Operativos' = "ACT_CN_43002",
30
36
  OtrosGastos = "ACT_CN_43004",
31
37
  TotalGastosOperativos = "ACT_CN_43900",
32
38
  OtrosIngresosEgresos = "ACT_CN_45000",
@@ -38,3 +44,8 @@ export declare enum EEFFConsolidadoRubroEnum {
38
44
  ImpuestoUtilidades = "ACT_CN_46001",
39
45
  UtilidadNetaEjercicio = "ACT_CN_47000"
40
46
  }
47
+ export interface BalanceConsolidadoCalc {
48
+ balance: any[];
49
+ eerr: any[];
50
+ camposCalculados: any[];
51
+ }
@@ -21,17 +21,23 @@ var EEFFConsolidadoRubroEnum;
21
21
  EEFFConsolidadoRubroEnum["TotalPasivoNoCorriente"] = "ACT_CN_22900";
22
22
  EEFFConsolidadoRubroEnum["TotalPasivo"] = "ACT_CN_29000";
23
23
  EEFFConsolidadoRubroEnum["Patrimonio"] = "ACT_CN_30000";
24
+ EEFFConsolidadoRubroEnum["Resultados_de_la_Gesti\u00F3n"] = "ACT_CN_30001_a";
24
25
  EEFFConsolidadoRubroEnum["OtrosPatrimonio"] = "ACT_CN_30002";
25
26
  EEFFConsolidadoRubroEnum["TotalPatrimonio"] = "ACT_CN_39000";
26
27
  EEFFConsolidadoRubroEnum["TotalPasivoPatrimonio"] = "ACT_CN_39900";
27
28
  //eerr
28
29
  EEFFConsolidadoRubroEnum["Ingresos"] = "ACT_CN_40000";
30
+ EEFFConsolidadoRubroEnum["IngresoPorVentas"] = "ACT_CN_40001";
29
31
  EEFFConsolidadoRubroEnum["OtrosIngresos"] = "ACT_CN_40002";
30
32
  EEFFConsolidadoRubroEnum["TotalIngresos"] = "ACT_CN_40003";
31
33
  EEFFConsolidadoRubroEnum["Costos"] = "ACT_CN_41000";
34
+ EEFFConsolidadoRubroEnum["CostosDeVentas%"] = "ACT_CN_41001";
35
+ EEFFConsolidadoRubroEnum["CostosDeVentas"] = "ACT_CN_41002";
32
36
  EEFFConsolidadoRubroEnum["OtrosCostos"] = "ACT_CN_41003";
33
37
  EEFFConsolidadoRubroEnum["TotalCostos"] = "ACT_CN_41004";
34
38
  EEFFConsolidadoRubroEnum["Gastos"] = "ACT_CN_43000";
39
+ EEFFConsolidadoRubroEnum["GastosAdministrativos/Operativos%"] = "ACT_CN_43001";
40
+ EEFFConsolidadoRubroEnum["GastosAdministrativos/Operativos"] = "ACT_CN_43002";
35
41
  EEFFConsolidadoRubroEnum["OtrosGastos"] = "ACT_CN_43004";
36
42
  EEFFConsolidadoRubroEnum["TotalGastosOperativos"] = "ACT_CN_43900";
37
43
  EEFFConsolidadoRubroEnum["OtrosIngresosEgresos"] = "ACT_CN_45000";
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const balance_1 = require("../../models/consolidado/balance");
3
4
  const balanceAux_calc_1 = require("../common/balanceCalculos/balanceAux.calc");
4
5
  class BalanceAgrStrategy {
5
6
  actividades;
@@ -9,22 +10,23 @@ class BalanceAgrStrategy {
9
10
  this.camposCalculadosDefinidos = [
10
11
  {
11
12
  RubroId: 'ACT_CN_41002',
12
- Correlativos: '*',
13
+ Correlativos: 'ultima',
13
14
  Familiar: true,
14
15
  Empresa: true
15
16
  },
16
17
  {
17
- RubroId: 'ACT_CN_43001',
18
- Correlativos: 'ultima',
18
+ RubroId: balance_1.EEFFConsolidadoRubroEnum['GastosAdministrativos/Operativos%'],
19
+ Correlativos: '*',
19
20
  Familiar: false,
20
- Empresa: true
21
- },
22
- {
21
+ Empresa: true,
22
+ esPorcentaje: true
23
+ }
24
+ /* {
23
25
  RubroId: 'ACT_CN_45003',
24
26
  Correlativos: 'ultima',
25
27
  Familiar: true,
26
28
  Empresa: false
27
- }
29
+ } */
28
30
  ];
29
31
  }
30
32
  execute(data) {
@@ -84,7 +86,13 @@ const calcularEERR = (eerrMap, eerr, consolidado) => {
84
86
  }
85
87
  setValueInOtros('ACT_CN_41002', eerrMap, eerr, { MontoEmpresa: consolidado.costoTotal }, 'Costos de Ventas COSTOS AGR Costo Total');
86
88
  setValueInOtros('ACT_CN_43002', eerrMap, eerr, { MontoEmpresa: consolidado.otrosGastos.GastosOperativos }, 'Gastos Administrativos/Operativos Gastos AGR Total Gastos Operativos');
87
- setValueInOtros('ACT_CN_45003', eerrMap, eerr, { MontoFamiliar: consolidado.otrosGastos.GastosFamiliares }, 'Gastos Familiares Gastos AGR Total Gastos Familiares');
89
+ /* setValueInOtros(
90
+ 'ACT_CN_45003',
91
+ eerrMap,
92
+ eerr,
93
+ { MontoFamiliar: consolidado.otrosGastos.GastosFamiliares },
94
+ 'Gastos Familiares Gastos AGR Total Gastos Familiares'
95
+ ) */
88
96
  setValueInOtros('ACT_CN_45001', eerrMap, eerr, { MontoFamiliar: consolidado.otrosIngresos }, 'Otros Ingresos Ventas AGR');
89
97
  }
90
98
  return eerrMap;
@@ -1,6 +1,7 @@
1
1
  import { Strategy } from '../strategy.interface';
2
2
  export default class Balance implements Strategy {
3
3
  private camposCalculadosDefinidos;
4
+ private rubrosPorcentaje;
4
5
  constructor();
5
6
  execute(data: any): any;
6
7
  }
@@ -24,14 +24,17 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  const balanceCalc = __importStar(require("./common/balance.calc"));
27
+ const eerrCalc = __importStar(require("./common/eerr.calc"));
27
28
  const commmon = __importStar(require("./common/balance.calc"));
28
29
  const declaracionJurada_calc_1 = require("./common/declaracionJurada.calc");
29
30
  //import { setFlujoInEERR } from './common/balanceCalculos/flujoAux.calc'
30
31
  const utils_1 = require("./eeff/admFinanciera/utils");
31
32
  const utils_2 = require("./utils");
32
33
  const analisisHorizontal_1 = require("./eeff/balanceConsolidado/analisisHorizontal");
34
+ const balance_1 = require("../models/consolidado/balance");
33
35
  class Balance {
34
36
  camposCalculadosDefinidos;
37
+ rubrosPorcentaje;
35
38
  constructor() {
36
39
  this.camposCalculadosDefinidos = [
37
40
  {
@@ -102,26 +105,33 @@ class Balance {
102
105
  },
103
106
  {
104
107
  RubroId: 'ACT_CN_30001',
105
- Correlativos: '*',
108
+ Correlativos: 'ultima',
106
109
  Familiar: true,
107
110
  Empresa: true
108
111
  },
109
- //eeff
110
112
  {
111
- RubroId: 'ACT_CN_40001',
113
+ RubroId: 'ACT_CN_30001_a',
112
114
  Correlativos: '*',
113
- Familiar: false,
115
+ Familiar: true,
114
116
  Empresa: true
115
117
  },
118
+ //eerr
116
119
  {
117
- RubroId: 'ACT_CN_41001',
118
- Correlativos: 'ultima',
120
+ RubroId: 'ACT_CN_40001',
121
+ Correlativos: '*',
119
122
  Familiar: false,
120
123
  Empresa: true
121
124
  },
122
125
  {
123
- RubroId: 'ACT_CN_43002',
126
+ RubroId: balance_1.EEFFConsolidadoRubroEnum['CostosDeVentas%'],
124
127
  Correlativos: '*',
128
+ Familiar: true,
129
+ Empresa: true,
130
+ esPorcentaje: true
131
+ },
132
+ {
133
+ RubroId: balance_1.EEFFConsolidadoRubroEnum['GastosAdministrativos/Operativos'],
134
+ Correlativos: 'ultima',
125
135
  Familiar: false,
126
136
  Empresa: true
127
137
  },
@@ -132,6 +142,10 @@ class Balance {
132
142
  Empresa: false
133
143
  }
134
144
  ];
145
+ this.rubrosPorcentaje = [
146
+ balance_1.EEFFConsolidadoRubroEnum['CostosDeVentas%'],
147
+ balance_1.EEFFConsolidadoRubroEnum['GastosAdministrativos/Operativos%']
148
+ ];
135
149
  }
136
150
  execute(data) {
137
151
  const result = {};
@@ -155,11 +169,13 @@ class Balance {
155
169
  delete data.eerrMap;
156
170
  data.balance = Array.from(balanceMap.values());
157
171
  data.eerr = Array.from(eerrMap.values());
158
- result.balance = calcularBalance(data.balance, data.cantidadGestiones);
172
+ result.balance = calcularBalance(data.balance);
159
173
  result.eerr = calcularEERR(data.eerr, data.cantidadGestiones, data.tipoConsolidado);
174
+ balanceCalc.setResultadosGestion(result, data.cantidadGestiones);
160
175
  (0, analisisHorizontal_1.calcularPorcentajesYAnalisisHorizontal)({
161
176
  data: result,
162
- cantidadGestiones: data.cantidadGestiones
177
+ cantidadGestiones: data.cantidadGestiones,
178
+ rubrosExcluidos: this.rubrosPorcentaje
163
179
  });
164
180
  result.DataOriginal = {
165
181
  balance: balanceClone,
@@ -169,7 +185,7 @@ class Balance {
169
185
  }
170
186
  }
171
187
  exports.default = Balance;
172
- const calcularBalance = (balance, cantidadGestiones) => {
188
+ const calcularBalance = (balance) => {
173
189
  let i = 0;
174
190
  let result = balance.map((item) => {
175
191
  i++;
@@ -184,7 +200,7 @@ const calcularBalance = (balance, cantidadGestiones) => {
184
200
  IdVirtual: i
185
201
  };
186
202
  });
187
- calcularCapital(result, cantidadGestiones);
203
+ //calcularCapital(result, cantidadGestiones)
188
204
  result = sumarizarCuenta([
189
205
  'ACT_CN_11000',
190
206
  'ACT_CN_12000',
@@ -205,76 +221,123 @@ const calcularBalance = (balance, cantidadGestiones) => {
205
221
  result = balanceCalc.trasponer(result);
206
222
  return result;
207
223
  };
208
- function calcularCapital(datos, cantidadGestiones) {
224
+ /* function calcularCapital(datos: any[], cantidadGestiones: number) {
209
225
  const totalActivos = getTotalByRubrosPadre({
210
226
  data: datos,
211
227
  rubrosPadre: ['ACT_CN_11000', 'ACT_CN_12000']
212
- });
228
+ })
213
229
  const totalPasivos = getTotalByRubrosPadre({
214
230
  data: datos,
215
231
  rubrosPadre: ['ACT_CN_21000', 'ACT_CN_22000']
216
- });
217
- const capitales = datos.filter((el) => el.RubroId === 'ACT_CN_30001' &&
218
- el.Correlativo <= cantidadGestiones - 1);
232
+ })
233
+ const capitales = datos.filter(
234
+ (el) =>
235
+ el.RubroId === 'ACT_CN_30001' &&
236
+ el.Correlativo <= cantidadGestiones - 1
237
+ )
219
238
  capitales.forEach((cap) => {
220
- const activo = totalActivos.get(cap.Correlativo);
221
- const pasivo = totalPasivos.get(cap.Correlativo);
239
+ const activo = totalActivos.get(cap.Correlativo)
240
+ const pasivo = totalPasivos.get(cap.Correlativo)
222
241
  cap.MontoEmpresa =
223
- (0, utils_1.ourParseFloat)(activo?.MontoEmpresa) -
224
- (0, utils_1.ourParseFloat)(pasivo?.MontoEmpresa);
242
+ ourParseFloat(activo?.MontoEmpresa) -
243
+ ourParseFloat(pasivo?.MontoEmpresa)
225
244
  cap.MontoFamiliar =
226
- (0, utils_1.ourParseFloat)(activo?.MontoFamiliar) -
227
- (0, utils_1.ourParseFloat)(pasivo?.MontoFamiliar);
228
- cap.MontoTotal = cap.MontoEmpresa + cap.MontoFamiliar;
229
- });
245
+ ourParseFloat(activo?.MontoFamiliar) -
246
+ ourParseFloat(pasivo?.MontoFamiliar)
247
+ cap.MontoTotal = cap.MontoEmpresa + cap.MontoFamiliar
248
+ })
249
+ }
250
+
251
+ interface GetTotalParams {
252
+ data: any[]
253
+ rubrosPadre: string[]
230
254
  }
231
- function getTotalByRubrosPadre({ data, rubrosPadre }) {
232
- const clasificadoresExcluidos = ['C', 'CT', 'SBCT'];
255
+ function getTotalByRubrosPadre({
256
+ data,
257
+ rubrosPadre
258
+ }: GetTotalParams): Map<number, any> {
259
+ const clasificadoresExcluidos = ['C', 'CT', 'SBCT']
233
260
  return data
234
- .filter((el) => rubrosPadre.includes(el.RubroPadreId) &&
235
- el.IndicadorABM !== 'B' &&
236
- !clasificadoresExcluidos.includes(el.Clasificador))
237
- .reduce((acc, el) => {
238
- if (!acc.has(el.Correlativo)) {
239
- acc.set(el.Correlativo, {
240
- MontoEmpresa: 0,
241
- MontoFamiliar: 0
242
- });
243
- }
244
- acc.get(el.Correlativo).MontoEmpresa += (0, utils_1.ourParseFloat)(el.MontoEmpresa);
245
- acc.get(el.Correlativo).MontoFamiliar += (0, utils_1.ourParseFloat)(el.MontoFamiliar);
246
- return acc;
247
- }, new Map());
261
+ .filter(
262
+ (el) =>
263
+ rubrosPadre.includes(el.RubroPadreId) &&
264
+ el.IndicadorABM !== 'B' &&
265
+ !clasificadoresExcluidos.includes(el.Clasificador)
266
+ )
267
+ .reduce<Map<number, any>>((acc, el) => {
268
+ if (!acc.has(el.Correlativo)) {
269
+ acc.set(el.Correlativo, {
270
+ MontoEmpresa: 0,
271
+ MontoFamiliar: 0
272
+ })
273
+ }
274
+ acc.get(el.Correlativo).MontoEmpresa += ourParseFloat(
275
+ el.MontoEmpresa
276
+ )
277
+ acc.get(el.Correlativo).MontoFamiliar += ourParseFloat(
278
+ el.MontoFamiliar
279
+ )
280
+ return acc
281
+ }, new Map())
248
282
  }
283
+ */
249
284
  const calcularEERR = (eerr, cantidadGestiones, tipoConsolidado) => {
250
285
  let i = 0;
251
286
  if (tipoConsolidado !== 'GANADERIA') {
252
287
  //calcular porcentajes
253
- calcularPorcentajes({
254
- rubroDatos: 'ACT_CN_40001',
255
- rubroPorcentajes: 'ACT_CN_41001',
256
- rubroDestino: 'ACT_CN_41002',
257
- cantidadGestiones,
288
+ eerrCalc.calcularPorcentajes({
289
+ rubroDestino: balance_1.EEFFConsolidadoRubroEnum['CostosDeVentas%'],
290
+ rubroDividendo: balance_1.EEFFConsolidadoRubroEnum.CostosDeVentas,
291
+ rubroDivisor: balance_1.EEFFConsolidadoRubroEnum.IngresoPorVentas,
258
292
  datos: eerr
259
293
  });
260
- calcularPorcentajes({
261
- rubroDatos: 'ACT_CN_40001',
262
- rubroPorcentajes: 'ACT_CN_43001',
263
- rubroDestino: 'ACT_CN_43002',
264
- cantidadGestiones,
265
- datos: eerr
294
+ eerrCalc.calcularPorcentajes({
295
+ rubroDestino: balance_1.EEFFConsolidadoRubroEnum['GastosAdministrativos/Operativos%'],
296
+ rubroDividendo: balance_1.EEFFConsolidadoRubroEnum['GastosAdministrativos/Operativos'],
297
+ rubroDivisor: balance_1.EEFFConsolidadoRubroEnum.IngresoPorVentas,
298
+ datos: eerr,
299
+ soloEmpresa: true
266
300
  });
267
301
  }
268
302
  let result = eerr.map((item) => {
269
303
  i++;
270
304
  const esGrupo = item.Clasificador == 'P' || item.Clasificador == 'C';
305
+ let MontoTotal = !esGrupo
306
+ ? parseFloat(item.MontoEmpresa) + parseFloat(item.MontoFamiliar)
307
+ : 0;
308
+ if (item.RubroId === balance_1.EEFFConsolidadoRubroEnum['CostosDeVentas%']) {
309
+ MontoTotal = item.MontoEmpresa;
310
+ }
311
+ else if (item.RubroId ===
312
+ balance_1.EEFFConsolidadoRubroEnum['GastosAdministrativos/Operativos%']) {
313
+ if (item.Correlativo === cantidadGestiones) {
314
+ const ingresoPorVentas = eerr.find((el) => el.RubroId ==
315
+ balance_1.EEFFConsolidadoRubroEnum.IngresoPorVentas &&
316
+ el.Correlativo === item.Correlativo);
317
+ const gastosAdm = eerr.find((el) => el.RubroId ==
318
+ balance_1.EEFFConsolidadoRubroEnum['GastosAdministrativos/Operativos'] && el.Correlativo === item.Correlativo);
319
+ const ingresoPorVentasTotal = (0, utils_1.ourParseFloat)(ingresoPorVentas?.MontoEmpresa) +
320
+ (0, utils_1.ourParseFloat)(ingresoPorVentas?.MontoFamiliar);
321
+ if (ingresoPorVentasTotal) {
322
+ MontoTotal =
323
+ (((0, utils_1.ourParseFloat)(gastosAdm?.MontoEmpresa) +
324
+ (0, utils_1.ourParseFloat)(gastosAdm?.MontoFamiliar)) /
325
+ ingresoPorVentasTotal) *
326
+ 100;
327
+ }
328
+ else {
329
+ MontoTotal = 0;
330
+ }
331
+ }
332
+ else {
333
+ MontoTotal = 0;
334
+ }
335
+ }
271
336
  return {
272
337
  ...item,
273
338
  MontoEmpresa: !esGrupo ? parseFloat(item.MontoEmpresa) : 0,
274
339
  MontoFamiliar: !esGrupo ? parseFloat(item.MontoFamiliar) : 0,
275
- MontoTotal: !esGrupo
276
- ? parseFloat(item.MontoEmpresa) + parseFloat(item.MontoFamiliar)
277
- : 0,
340
+ MontoTotal,
278
341
  IdVirtual: i
279
342
  };
280
343
  });
@@ -296,8 +359,8 @@ const calcularEERR = (eerr, cantidadGestiones, tipoConsolidado) => {
296
359
  //Total gastos
297
360
  result = adicionarCuenta('ACT_CN_43000', 'ACT_CN_43900', result);
298
361
  //Utilidad operativa
299
- result = adicionarCuenta('ACT_CN_42000', 'ACT_CN_44000', result);
300
- result = adicionarCuenta('ACT_CN_43000', 'ACT_CN_44000', result, true);
362
+ result = adicionarCuenta(balance_1.EEFFConsolidadoRubroEnum.UtilidadBruta, balance_1.EEFFConsolidadoRubroEnum.UtilidadOperacional, result);
363
+ result = adicionarCuenta(balance_1.EEFFConsolidadoRubroEnum.TotalGastosOperativos, balance_1.EEFFConsolidadoRubroEnum.UtilidadOperacional, result, true);
301
364
  //Otros Ingresos Egresos
302
365
  result = adicionarCuenta('ACT_CN_45001', 'ACT_CN_45000', result);
303
366
  result = adicionarCuenta('ACT_CN_45002', 'ACT_CN_45000', result, true);
@@ -334,38 +397,52 @@ function calcularCostoVentasPecuario(datos, cantidadGestiones) {
334
397
  }
335
398
  }
336
399
  }
337
- function calcularPorcentajes({ rubroDatos, rubroPorcentajes, datos, cantidadGestiones, rubroDestino }) {
338
- const porcentajes = datos.filter((el) => el.RubroId === rubroPorcentajes);
339
- const montos = datos.filter((el) => el.RubroId === rubroDatos);
340
- const destinos = datos.filter((el) => el.RubroId === rubroDestino);
400
+ /* interface CalculaPorcentajeParams {
401
+ rubroDatos: string
402
+ rubroPorcentajes: string
403
+ rubroDestino: string
404
+ cantidadGestiones: number
405
+ datos: any[]
406
+ }
407
+ function calcularPorcentajes({
408
+ rubroDatos,
409
+ rubroPorcentajes,
410
+ datos,
411
+ cantidadGestiones,
412
+ rubroDestino
413
+ }: CalculaPorcentajeParams) {
414
+ const porcentajes = datos.filter((el) => el.RubroId === rubroPorcentajes)
415
+ const montos = datos.filter((el) => el.RubroId === rubroDatos)
416
+ const destinos = datos.filter((el) => el.RubroId === rubroDestino)
417
+
341
418
  destinos.forEach((item) => {
342
- const porcentaje = porcentajes.find((el) => el.Correlativo === item.Correlativo);
343
- const monto = montos.find((el) => el.Correlativo === item.Correlativo);
419
+ const porcentaje = porcentajes.find(
420
+ (el) => el.Correlativo === item.Correlativo
421
+ )
422
+ const monto = montos.find((el) => el.Correlativo === item.Correlativo)
344
423
  if (item.Correlativo === cantidadGestiones) {
345
424
  if (porcentaje) {
346
- const divisor = (0, utils_1.ourParseFloat)(monto?.MontoEmpresa);
425
+ const divisor = ourParseFloat(monto?.MontoEmpresa)
347
426
  if (divisor) {
348
427
  porcentaje.MontoEmpresa =
349
- ((0, utils_1.ourParseFloat)(item.MontoEmpresa) / divisor) * 100;
350
- }
351
- else {
352
- porcentaje.MontoEmpresa = 0;
428
+ (ourParseFloat(item.MontoEmpresa) / divisor) * 100
429
+ } else {
430
+ porcentaje.MontoEmpresa = 0
353
431
  }
354
432
  }
355
- }
356
- else {
433
+ } else {
357
434
  item.MontoEmpresa =
358
- ((0, utils_1.ourParseFloat)(monto.MontoEmpresa) *
359
- (0, utils_1.ourParseFloat)(porcentaje.MontoEmpresa)) /
360
- 100;
435
+ (ourParseFloat(monto.MontoEmpresa) *
436
+ ourParseFloat(porcentaje.MontoEmpresa)) /
437
+ 100
361
438
  }
362
439
  item.MontoFamiliar =
363
- ((0, utils_1.ourParseFloat)(monto.MontoFamiliar) *
364
- (0, utils_1.ourParseFloat)(porcentaje.MontoFamiliar)) /
365
- 100;
366
- });
367
- }
368
- const adicionarCuenta = (origen, destino, datos, isNegative = false) => {
440
+ (ourParseFloat(monto.MontoFamiliar) *
441
+ ourParseFloat(porcentaje.MontoFamiliar)) /
442
+ 100
443
+ })
444
+ } */
445
+ const adicionarCuenta = (origen, destino, datos, isNegative = false, setZero) => {
369
446
  const origenVector = datos
370
447
  .filter((item) => {
371
448
  const activo = item.IndicadorABM !== 'B';
@@ -390,6 +467,11 @@ const adicionarCuenta = (origen, destino, datos, isNegative = false) => {
390
467
  }, new Map());
391
468
  const destinoVector = datos.filter((item) => item.RubroId == destino);
392
469
  destinoVector.forEach((item) => {
470
+ if (setZero) {
471
+ item.MontoEmpresa = 0;
472
+ item.MontoFamiliar = 0;
473
+ item.MontoTotal = 0;
474
+ }
393
475
  if (isNegative) {
394
476
  item.MontoEmpresa -= origenVector.get(item.Correlativo).MontoEmpresa;
395
477
  item.MontoFamiliar -= origenVector.get(item.Correlativo).MontoFamiliar;
@@ -1,3 +1,7 @@
1
+ import { BalanceConsolidadoCalc } from '../../models/consolidado/balance';
1
2
  export declare const clone: (data: any) => any;
2
3
  export declare const getBalanceHashMap: (balance: any) => any;
3
4
  export declare const trasponer: (data: any) => any;
5
+ export declare function setResultadosGestion(data: BalanceConsolidadoCalc, cantidadGestiones: number): void;
6
+ export declare function copiarValoresFila(origen: Record<string, any>, destino: Record<string, any>, cantidadGestiones: number): void;
7
+ export declare function sumarFilaEnFila(origen: Record<string, any>, destino: Record<string, any>, cantidadGestiones: number): void;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.trasponer = exports.getBalanceHashMap = exports.clone = void 0;
3
+ exports.sumarFilaEnFila = exports.copiarValoresFila = exports.setResultadosGestion = exports.trasponer = exports.getBalanceHashMap = exports.clone = void 0;
4
+ const balance_1 = require("../../models/consolidado/balance");
5
+ const utils_1 = require("../eeff/admFinanciera/utils");
4
6
  const clone = (data) => {
5
7
  return JSON.parse(JSON.stringify(data));
6
8
  };
@@ -60,3 +62,35 @@ const trasponer = (data) => {
60
62
  return result;
61
63
  };
62
64
  exports.trasponer = trasponer;
65
+ function setResultadosGestion(data, cantidadGestiones) {
66
+ copiarValoresFila(data.eerr.find((el) => el.RubroId === balance_1.EEFFConsolidadoRubroEnum.UtilidadNetaEjercicio), data.balance.find((el) => el.RubroId === balance_1.EEFFConsolidadoRubroEnum.Resultados_de_la_Gestión), cantidadGestiones);
67
+ const resultados = data.balance.find((el) => el.RubroId === balance_1.EEFFConsolidadoRubroEnum.Resultados_de_la_Gestión);
68
+ const totalPatrimonio = data.balance.find((el) => el.RubroId === balance_1.EEFFConsolidadoRubroEnum.TotalPatrimonio);
69
+ const totalPasivoPatrimonio = data.balance.find((el) => el.RubroId === balance_1.EEFFConsolidadoRubroEnum.TotalPasivoPatrimonio);
70
+ sumarFilaEnFila(resultados, totalPatrimonio, cantidadGestiones);
71
+ sumarFilaEnFila(resultados, totalPasivoPatrimonio, cantidadGestiones);
72
+ }
73
+ exports.setResultadosGestion = setResultadosGestion;
74
+ function copiarValoresFila(origen, destino, cantidadGestiones) {
75
+ if (origen && destino)
76
+ for (let i = 1; i <= cantidadGestiones; i++) {
77
+ destino[`MontoEmpresa_${i}`] = origen[`MontoEmpresa_${i}`];
78
+ destino[`MontoFamiliar_${i}`] = origen[`MontoFamiliar_${i}`];
79
+ destino[`MontoTotal_${i}`] = origen[`MontoTotal_${i}`];
80
+ }
81
+ }
82
+ exports.copiarValoresFila = copiarValoresFila;
83
+ function sumarFilaEnFila(origen, destino, cantidadGestiones) {
84
+ if (origen && destino)
85
+ for (let i = 1; i <= cantidadGestiones; i++) {
86
+ if (!destino[`MontoEmpresa_${i}`])
87
+ destino[`MontoEmpresa_${i}`] = 0;
88
+ if (!destino[`MontoFamiliar_${i}`])
89
+ destino[`MontoFamiliar_${i}`] = 0;
90
+ destino[`MontoEmpresa_${i}`] += (0, utils_1.ourParseFloat)(origen[`MontoEmpresa_${i}`]);
91
+ destino[`MontoFamiliar_${i}`] += (0, utils_1.ourParseFloat)(origen[`MontoFamiliar_${i}`]);
92
+ destino[`MontoTotal_${i}`] =
93
+ destino[`MontoEmpresa_${i}`] + destino[`MontoFamiliar_${i}`];
94
+ }
95
+ }
96
+ exports.sumarFilaEnFila = sumarFilaEnFila;
@@ -0,0 +1,9 @@
1
+ interface CalcularPorcentajesParams {
2
+ rubroDivisor: string;
3
+ rubroDividendo: string;
4
+ rubroDestino: string;
5
+ datos: any[];
6
+ soloEmpresa?: boolean;
7
+ }
8
+ export declare function calcularPorcentajes({ datos, rubroDestino, rubroDividendo, rubroDivisor, soloEmpresa }: CalcularPorcentajesParams): void;
9
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calcularPorcentajes = void 0;
4
+ const utils_1 = require("../eeff/admFinanciera/utils");
5
+ function calcularPorcentajes({ datos, rubroDestino, rubroDividendo, rubroDivisor, soloEmpresa }) {
6
+ const dividendos = datos.filter((el) => el.RubroId === rubroDividendo);
7
+ const divisores = datos.filter((el) => el.RubroId === rubroDivisor);
8
+ const destinos = datos.filter((el) => el.RubroId === rubroDestino);
9
+ destinos.forEach((item) => {
10
+ const dividendo = dividendos.find((el) => el.Correlativo === item.Correlativo);
11
+ const divisor = divisores.find((el) => el.Correlativo === item.Correlativo);
12
+ item.MontoEmpresa =
13
+ ((0, utils_1.ourParseFloat)(dividendo?.MontoEmpresa) /
14
+ (0, utils_1.ourParseFloat)(divisor?.MontoEmpresa)) *
15
+ 100;
16
+ if (!soloEmpresa)
17
+ item.MontoFamiliar =
18
+ ((0, utils_1.ourParseFloat)(dividendo?.MontoFamiliar) /
19
+ (0, utils_1.ourParseFloat)(divisor?.MontoFamiliar)) *
20
+ 100;
21
+ });
22
+ }
23
+ exports.calcularPorcentajes = calcularPorcentajes;
@@ -1,6 +1,7 @@
1
1
  interface Params {
2
2
  data: any;
3
3
  cantidadGestiones: number;
4
+ rubrosExcluidos: string[];
4
5
  }
5
- export declare function calcularPorcentajesYAnalisisHorizontal({ data, cantidadGestiones }: Params): void;
6
+ export declare function calcularPorcentajesYAnalisisHorizontal({ data, cantidadGestiones, rubrosExcluidos }: Params): void;
6
7
  export {};
@@ -3,12 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.calcularPorcentajesYAnalisisHorizontal = void 0;
4
4
  const balance_1 = require("../../../models/consolidado/balance");
5
5
  const utils_1 = require("../admFinanciera/utils");
6
- function calcularPorcentajesYAnalisisHorizontal({ data, cantidadGestiones }) {
6
+ function calcularPorcentajesYAnalisisHorizontal({ data, cantidadGestiones, rubrosExcluidos }) {
7
7
  const allData = [...data.balance, ...data.eerr];
8
8
  allData.forEach((row) => {
9
- for (let i = 1; i <= cantidadGestiones; i++) {
10
- calcularAnalisisHorizontalGestion(row, i);
11
- calcularPorcentajeGestion(allData, row, i);
9
+ if (!rubrosExcluidos.includes(row.RubroId)) {
10
+ for (let i = 1; i <= cantidadGestiones; i++) {
11
+ calcularAnalisisHorizontalGestion(row, i);
12
+ calcularPorcentajeGestion(allData, row, i);
13
+ }
12
14
  }
13
15
  });
14
16
  }
@@ -27,8 +29,10 @@ function calcularAnalisisHorizontalGestion(row, gestion) {
27
29
  };
28
30
  }
29
31
  }
32
+ const RubrosExtra = [balance_1.EEFFConsolidadoRubroEnum.Resultados_de_la_Gestión];
30
33
  function calcularPorcentajeGestion(data, row, gestion) {
31
- if (['H', 'HABM', 'C'].includes(row.Clasificador)) {
34
+ if (['H', 'HABM', 'C'].includes(row.Clasificador) ||
35
+ RubrosExtra.includes(row.RubroId)) {
32
36
  const rubroIdValorPadre = getRubroIdValorPadre(row.RubroPadreId, row.RubroId);
33
37
  const valorPadre = (0, utils_1.ourParseFloat)(data.find((el) => el.RubroId === rubroIdValorPadre)?.[`MontoTotal_${gestion}`]);
34
38
  if (valorPadre) {
@@ -18,8 +18,10 @@ class DeudasStrategy {
18
18
  let row2 = this.data.Deudas.find((item) => item.RubroId == params.rubro2 && item.Secuencia == i);
19
19
  let row3 = this.data.Deudas.find((item) => item.RubroId == params.rubro3 && item.Secuencia == i);
20
20
  for (let j = 1; j <= this.data.CantidadProyeccion; j++) {
21
- row3[`Monto${j}`] = (this.cleanNumber(row1[`Monto${j}`]) + this.cleanNumber(row2[`Monto${j}`])) * this.cleanNumber(row3.Variable) / 100;
22
- row3[`Monto${j}`] = Math.round(row3[`Monto${j}`] * 100) / 100;
21
+ if (row3[`Monto${j}`] == 0) {
22
+ row3[`Monto${j}`] = (this.cleanNumber(row1[`Monto${j}`]) + this.cleanNumber(row2[`Monto${j}`])) * this.cleanNumber(row3.Variable) / 100;
23
+ row3[`Monto${j}`] = Math.round(row3[`Monto${j}`] * 100) / 100;
24
+ }
23
25
  }
24
26
  i++;
25
27
  } while (this.data.Deudas.find((item) => item.RubroId == params.rubro1 && item.Secuencia == i));
@@ -31,8 +33,10 @@ class DeudasStrategy {
31
33
  let row2 = this.data.Deudas.find((item) => item.RubroId == params.rubro2 && item.Secuencia == i);
32
34
  let row3 = this.data.Deudas.find((item) => item.RubroId == params.rubro3 && item.Secuencia == i);
33
35
  for (let j = 1; j <= this.data.CantidadProyeccion; j++) {
34
- row3[`Monto${j}`] = (this.cleanNumber(row1[`Monto${j}`]) * this.cleanNumber(row2[`Monto${j}`]) / 100);
35
- row3[`Monto${j}`] = Math.round(row3[`Monto${j}`] * 100) / 100;
36
+ if (row3[`Monto${j}`] == 0) {
37
+ row3[`Monto${j}`] = (this.cleanNumber(row1[`Monto${j}`]) * this.cleanNumber(row2[`Monto${j}`]) / 100);
38
+ row3[`Monto${j}`] = Math.round(row3[`Monto${j}`] * 100) / 100;
39
+ }
36
40
  }
37
41
  i++;
38
42
  } while (this.data.Deudas.find((item) => item.RubroId == params.rubro1 && item.Secuencia == i));
@@ -26,8 +26,11 @@ class SupuestosStrategy {
26
26
  cleanNumber = (data) => {
27
27
  if (!data)
28
28
  return 0;
29
- else
29
+ else {
30
+ if (data.toString().includes(','))
31
+ data = data.toString().replace(/,/g, '');
30
32
  return Math.round(parseFloat(data) * 100) / 100;
33
+ }
31
34
  };
32
35
  execute(data) {
33
36
  this.data = data.Supuestos;
@@ -13,7 +13,7 @@ class BalancePecStrategy {
13
13
  this.camposCalculadosDefinidos = [
14
14
  {
15
15
  RubroId: 'ACT_CN_41002',
16
- Correlativos: '*',
16
+ Correlativos: 'ultima',
17
17
  Familiar: false,
18
18
  Empresa: true
19
19
  }
@@ -13,7 +13,7 @@ class BalancePrdStrategy {
13
13
  this.camposCalculadosDefinidos = [
14
14
  {
15
15
  RubroId: 'ACT_CN_41002',
16
- Correlativos: '*',
16
+ Correlativos: 'ultima',
17
17
  Familiar: true,
18
18
  Empresa: true
19
19
  },
@@ -8,21 +8,31 @@ function formatCamposCalculados({ definidos, cantidadGestiones }) {
8
8
  if (el.Correlativos === '*') {
9
9
  for (let i = 1; i <= cantidadGestiones; i++) {
10
10
  campos.push({
11
- ...(0, lodash_1.pick)(el, ['RubroId', 'Empresa', 'Familiar']),
11
+ ...(0, lodash_1.pick)(el, [
12
+ 'RubroId',
13
+ 'Empresa',
14
+ 'Familiar',
15
+ 'esPorcentaje'
16
+ ]),
12
17
  Correlativo: i
13
18
  });
14
19
  }
15
20
  }
16
21
  else if (el.Correlativos === 'ultima') {
17
22
  campos.push({
18
- ...(0, lodash_1.pick)(el, ['RubroId', 'Empresa', 'Familiar']),
23
+ ...(0, lodash_1.pick)(el, ['RubroId', 'Empresa', 'Familiar', 'esPorcentaje']),
19
24
  Correlativo: cantidadGestiones
20
25
  });
21
26
  }
22
27
  else {
23
28
  el.Correlativos.forEach((corr) => {
24
29
  campos.push({
25
- ...(0, lodash_1.pick)(el, ['RubroId', 'Empresa', 'Familiar']),
30
+ ...(0, lodash_1.pick)(el, [
31
+ 'RubroId',
32
+ 'Empresa',
33
+ 'Familiar',
34
+ 'esPorcentaje'
35
+ ]),
26
36
  Correlativo: corr
27
37
  });
28
38
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bdpformulas",
3
- "version": "1.0.74",
3
+ "version": "1.0.78",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",