bdpformulas 1.0.58 → 1.0.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- export declare const getSupuestosEmpty: (data: any) => any[];
2
- export declare const getSupuestos: (data: any) => any[];
1
+ export declare const getSupuestosEmpty: (data: any) => any;
2
+ export declare const getSupuestos: (data: any) => any;
@@ -20,5 +20,5 @@ export declare const RUBROS: {
20
20
  ACT_PEC_NOV: string;
21
21
  ACT_PEC_SALDO: string;
22
22
  };
23
- export declare const getOrden: (rubro: string) => 3 | 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | undefined;
23
+ export declare const getOrden: (rubro: string) => 3 | 1 | 2 | 4 | 6 | 5 | 7 | 8 | 9 | 10 | undefined;
24
24
  export declare const getMap: (array: any[], key: string) => any;
@@ -1,5 +1,5 @@
1
- import { Strategy } from "../../strategy.interface";
2
- import { AuxiliarSchemaType } from "../../models/pecuary/auxiliar.schema";
1
+ import { Strategy } from '../../strategy.interface';
2
+ import { AuxiliarSchemaType } from '../../models/pecuary/auxiliar.schema';
3
3
  export default class Auxiliar implements Strategy {
4
4
  execute(data: AuxiliarSchemaType): any;
5
5
  }
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("../eeff/admFinanciera/utils");
3
4
  //@ts-ignore
4
5
  const calcularHato = (data) => {
5
6
  const gestiones = data.reduce((acc, item) => {
@@ -50,7 +51,7 @@ const calcularHato = (data) => {
50
51
  }
51
52
  if (!(item.RubroId in acc)) {
52
53
  acc[item.RubroId] = item.CantidadCabezas * item.PrecioCabeza;
53
- acc.Total = acc.Total + (item.CantidadCabezas * item.PrecioCabeza);
54
+ acc.Total = acc.Total + item.CantidadCabezas * item.PrecioCabeza;
54
55
  }
55
56
  return acc;
56
57
  }, {});
@@ -62,11 +63,15 @@ class Auxiliar {
62
63
  data.PropiedadesGanaderas.forEach((item) => {
63
64
  item.Total = 0;
64
65
  item.Rubros.forEach((rubro) => {
65
- if (rubro.PrecioCabezaBalance > 0)
66
- rubro.Total = parseFloat(rubro.CantidadCabezas) * parseFloat(rubro.PrecioCabezaBalance);
66
+ const precioCabezaBalance = (0, utils_1.ourParseFloat)(rubro.PrecioCabezaBalance);
67
+ if (precioCabezaBalance)
68
+ rubro.Total =
69
+ parseFloat(rubro.CantidadCabezas) * precioCabezaBalance;
67
70
  else
68
- rubro.Total = parseFloat(rubro.CantidadCabezas) * parseFloat(rubro.CantidadCabezas);
69
- item.Total = item.Total + rubro.Total;
71
+ rubro.Total =
72
+ parseFloat(rubro.CantidadCabezas) *
73
+ parseFloat(rubro.PrecioCabeza);
74
+ item.Total += rubro.Total;
70
75
  });
71
76
  });
72
77
  data.HistoricoHato = calcularHato(data.HistoricoHato);
@@ -1,6 +1,7 @@
1
- import { Strategy } from "../../strategy.interface";
1
+ import { Strategy } from '../../strategy.interface';
2
2
  export default class BalancePecStrategy implements Strategy {
3
3
  actividades: any[];
4
+ private camposCalculadosDefinidos;
4
5
  constructor();
5
6
  execute(data: any): any;
6
7
  }
@@ -1,13 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lodash_1 = require("lodash");
4
+ const utils_1 = require("../eeff/admFinanciera/utils");
3
5
  const gCuentaIngreso = 'ACT_CN_40001';
4
6
  const gCuentaCosto = 'ACT_CN_41002';
5
7
  const gCuentaGasto = 'ACT_CN_43002';
6
8
  const gCuentaOtrosIngresosDet = 'ACT_CN_45001';
7
9
  class BalancePecStrategy {
8
10
  actividades;
11
+ camposCalculadosDefinidos;
9
12
  constructor() {
10
13
  this.actividades = [];
14
+ this.camposCalculadosDefinidos = [
15
+ {
16
+ RubroId: 'ACT_CN_41002',
17
+ Correlativos: '*',
18
+ Familiar: false,
19
+ Empresa: true
20
+ }
21
+ ];
11
22
  }
12
23
  execute(data) {
13
24
  if (!this.actividades || this.actividades.length == 0)
@@ -15,9 +26,10 @@ class BalancePecStrategy {
15
26
  const cuentasIngresosCopy = getCuentasCopy(data, gCuentaIngreso);
16
27
  const cuentasCostoCopy = getCuentasCopy(data, gCuentaCosto);
17
28
  const cuentaGastoCopy = getCuentasCopy(data, gCuentaGasto);
18
- for (let actividad of this.actividades) {
29
+ const cuentaOtrosIngresosCopy = getCuentasCopy(data, gCuentaOtrosIngresosDet, true);
30
+ for (const actividad of this.actividades) {
19
31
  anadirIngresosAuxPec(actividad, data);
20
- anadirIngresoVenta(actividad, data);
32
+ //anadirIngresoVenta(actividad, data)
21
33
  anadirCosto(actividad, data);
22
34
  anadirGasto(actividad, data);
23
35
  anadirOtrosIngresos(actividad, data);
@@ -25,100 +37,125 @@ class BalancePecStrategy {
25
37
  sumarizarCuentas(`${gCuentaIngreso}.1`, gCuentaIngreso, data, cuentasIngresosCopy);
26
38
  sumarizarCuentas(`${gCuentaCosto}.1`, gCuentaCosto, data, cuentasCostoCopy);
27
39
  sumarizarCuentas(`${gCuentaGasto}.1`, gCuentaGasto, data, cuentaGastoCopy);
40
+ sumarizarCuentas(`${gCuentaOtrosIngresosDet}.1`, gCuentaOtrosIngresosDet, data, cuentaOtrosIngresosCopy, true);
41
+ data.camposCalculadosDefinidos = this.camposCalculadosDefinidos;
42
+ console.log((0, lodash_1.cloneDeep)(data));
28
43
  return data;
29
44
  }
30
45
  }
31
46
  exports.default = BalancePecStrategy;
32
- const getCuentasCopy = (data, rubroId) => {
47
+ const getCuentasCopy = (data, rubroId, withZero = false) => {
33
48
  if (!data.eerr || data.eerr.length == 0)
34
49
  throw new Error('Debe ingresar cuentas EERR');
35
- let originalData = new Map();
50
+ const originalData = new Map();
36
51
  const rango = data.eerr[0].Rango;
37
52
  for (let i = 1; i <= rango; i++) {
38
- let cuentaIngreso = data.eerrMap.get(`${rubroId}_${i}`);
39
- cuentaIngreso.MontoEmpresa = Math.round(parseFloat(cuentaIngreso.MontoEmpresa) * 100) / 100;
40
- cuentaIngreso.MontoFamiliar = Math.round(parseFloat(cuentaIngreso.MontoFamiliar) * 100) / 100;
41
- originalData.set(`${rubroId}_${i}`, { ...cuentaIngreso });
53
+ const key = withZero ? `${rubroId}_0_${i}` : `${rubroId}_${i}`;
54
+ const cuentaIngreso = data.eerrMap.get(key);
55
+ cuentaIngreso.MontoEmpresa =
56
+ Math.round(parseFloat(cuentaIngreso.MontoEmpresa) * 100) / 100;
57
+ cuentaIngreso.MontoFamiliar =
58
+ Math.round(parseFloat(cuentaIngreso.MontoFamiliar) * 100) / 100;
59
+ originalData.set(key, { ...cuentaIngreso });
42
60
  }
43
61
  return originalData;
44
62
  };
45
63
  const anadirIngresosAuxPec = (actividad, data) => {
46
64
  const rango = data.eerr[0].Rango;
47
- for (let i = 1; i <= rango - 1; i++) {
65
+ for (let i = 1; i <= rango; i++) {
48
66
  const cuentaIngreso = data.eerrMap.get(`${gCuentaIngreso}_${i}`);
49
- let copy = { ...cuentaIngreso };
67
+ const copy = { ...cuentaIngreso };
50
68
  copy.RubroId = `${gCuentaIngreso}.1`;
51
69
  copy.Descripcion = `Ingresos por Ventas ${actividad.Desarrollo.ActividadGanadera}`;
52
- copy.UUID = `${gCuentaIngreso}_${actividad.AuxPec.ActividadEconomicaId}_${i}`;
70
+ copy.UUID = `${gCuentaIngreso}_${actividad.AuxPec.ActividadEconomicaId}`;
53
71
  copy.MontoEmpresa = 0;
54
72
  copy.MontoFamiliar = 0;
55
73
  copy.Correlativo = i;
56
- copy.Clasificador = 'CT';
57
- if (actividad.AuxPec && actividad.AuxPec.HistoricoHato && actividad.AuxPec.HistoricoHato.length > 0) {
58
- const historico = actividad.AuxPec.HistoricoHato.find((value) => value.Gestion === i && value.key == 'TOTALES');
59
- if (historico)
60
- copy.MontoEmpresa = Math.round(parseFloat(historico.Total) * 100) / 100;
74
+ copy.Clasificador = 'SBCT';
75
+ copy.Subcuenta = true;
76
+ const historicoHato = actividad.AuxPec?.HistoricoHato;
77
+ if (historicoHato) {
78
+ const historico = historicoHato.at(i - 1);
79
+ const filaTotales = historico?.find((h) => h.key === 'TOTALES');
80
+ if (filaTotales)
81
+ copy.MontoEmpresa = parseFloat(filaTotales.Total);
61
82
  }
62
83
  data.eerr.push(copy);
84
+ data.eerrMap.set(`${copy.UUID}_${i}`, copy);
63
85
  }
64
86
  };
65
- const anadirIngresoVenta = (actividad, data) => {
66
- const rango = data.eerr[0].Rango;
67
- const cuentaIngreso = data.eerrMap.get(`${gCuentaIngreso}${rango}`);
68
- let copy = { ...cuentaIngreso };
69
- copy.RubroId = `${gCuentaIngreso}.1`;
70
- copy.Descripcion = `Ingresos por Ventas ${actividad.Desarrollo.ActividadGanadera}`;
71
- copy.UUID = `${gCuentaIngreso}_${actividad.AuxPec.ActividadEconomicaId}_${rango}`;
72
- copy.MontoEmpresa = 0;
73
- copy.MontoFamiliar = 0;
74
- copy.Correlativo = rango;
75
- copy.Clasificador = 'CT';
87
+ /* const anadirIngresoVenta = (actividad: any, data: any) => {
88
+ const rango = data.eerr[0].Rango
89
+ const cuentaIngreso = data.eerrMap.get(`${gCuentaIngreso}${rango}`)
90
+ const copy = { ...cuentaIngreso }
91
+ copy.RubroId = `${gCuentaIngreso}.1`
92
+ copy.Descripcion = `Ingresos por Ventas ${actividad.Desarrollo.ActividadGanadera}`
93
+ copy.UUID = `${gCuentaIngreso}_${actividad.AuxPec.ActividadEconomicaId}_${rango}`
94
+ copy.MontoEmpresa = 0
95
+ copy.MontoFamiliar = 0
96
+ copy.Correlativo = rango
97
+ copy.Clasificador = 'CT'
98
+
76
99
  if (actividad.Ventas.Ventas && actividad.Ventas.Ventas.length > 0) {
77
- copy.MontoEmpresa = actividad.Ventas.Ventas.reduce((acc, item) => {
78
- acc += parseFloat(item.IngresoTotal);
79
- return acc;
80
- }, 0);
100
+ copy.MontoEmpresa = actividad.Ventas.Ventas.reduce(
101
+ (acc: any, item: any) => {
102
+ acc += parseFloat(item.IngresoTotal)
103
+ return acc
104
+ },
105
+ 0
106
+ )
81
107
  }
82
- data.eerr.push(copy);
83
- };
108
+
109
+ data.eerr.push(copy)
110
+ } */
84
111
  const anadirCosto = (actividad, data) => {
85
112
  const rango = data.eerr[0].Rango;
86
113
  const cuentaCosto = data.eerrMap.get(`${gCuentaCosto}_${rango}`);
87
114
  for (let i = 1; i <= rango; i++) {
88
- let copy = { ...cuentaCosto };
115
+ const copy = { ...cuentaCosto };
89
116
  copy.RubroId = `${gCuentaCosto}.1`;
90
117
  copy.Descripcion = `Costos de Ventas ${actividad.Desarrollo.ActividadGanadera}`;
91
- copy.UUID = `${gCuentaCosto}_${actividad.AuxPec.ActividadEconomicaId}_${i}`;
118
+ copy.UUID = `${gCuentaCosto}_${actividad.AuxPec.ActividadEconomicaId}`;
92
119
  copy.MontoEmpresa = 0;
93
120
  copy.MontoFamiliar = 0;
94
121
  copy.Correlativo = i;
95
- copy.Clasificador = 'CT';
96
- if (rango == i && actividad.Costos.Calculo && actividad.Costos.Calculo.length > 0) {
97
- const monto = actividad.Costos.Calculo.find((value) => value.RubroId === 'TOT01');
98
- if (!monto)
99
- throw new Error('No existe el rubro TOT01 en los costos');
100
- copy.MontoEmpresa = Math.round(parseFloat(monto.Total) * 100) / 100;
122
+ copy.Clasificador = 'SBCT';
123
+ copy.Subcuenta = true;
124
+ if (i < rango) {
125
+ const porcentaje = data.eerrMap.get(`ACT_CN_41001_${i}`);
126
+ const ingreso = data.eerrMap.get(`ACT_CN_40001_${actividad.AuxPec.ActividadEconomicaId}_${i}`);
127
+ copy.MontoEmpresa =
128
+ ((0, utils_1.ourParseFloat)(ingreso?.MontoEmpresa) *
129
+ (0, utils_1.ourParseFloat)(porcentaje?.MontoEmpresa)) /
130
+ 100;
131
+ }
132
+ if (i === rango && actividad.Costos.Calculo) {
133
+ const filaTotal = actividad.Costos.Calculo.find((value) => value.RubroId === 'TOT01');
134
+ if (filaTotal) {
135
+ copy.MontoEmpresa = (0, utils_1.ourParseFloat)(filaTotal.Total);
136
+ }
101
137
  }
102
138
  data.eerr.push(copy);
139
+ data.eerrMap.set(`${copy.UUID}_${i}`, copy);
103
140
  }
104
141
  };
105
142
  const anadirGasto = (actividad, data) => {
106
143
  const rango = data.eerr[0].Rango;
107
144
  const cuentaGasto = data.eerrMap.get(`${gCuentaGasto}_${rango}`);
145
+ const otrosGastos = calcularOtrosGastos(actividad.OtrosGastos);
108
146
  for (let i = 1; i <= rango; i++) {
109
- let copy = { ...cuentaGasto };
147
+ const copy = { ...cuentaGasto };
110
148
  copy.RubroId = `${gCuentaGasto}.1`;
111
- copy.UUID = `${gCuentaGasto}_${actividad.AuxPec.ActividadEconomicaId}_${i}`;
149
+ copy.UUID = `${gCuentaGasto}_${actividad.AuxPec.ActividadEconomicaId}`;
112
150
  copy.Descripcion = `Gastos Administrativos Operativos ${actividad.Desarrollo.ActividadGanadera}`;
113
151
  copy.MontoEmpresa = 0;
114
152
  copy.MontoFamiliar = 0;
115
153
  copy.Correlativo = i;
116
- copy.Clasificador = 'CT';
117
- if (rango == i) {
118
- const otrosGastos = calcularOtrosGastos(actividad.OtrosGastos);
119
- copy.MontoEmpresa = Math.round(parseFloat(otrosGastos.GastosOperativos) * 100) / 100;
120
- }
154
+ copy.Clasificador = 'SBCT';
155
+ copy.MontoEmpresa = (0, utils_1.ourParseFloat)(otrosGastos.GastosOperativos);
156
+ copy.Subcuenta = true;
121
157
  data.eerr.push(copy);
158
+ data.eerrMap.set(`${copy.UUID}_${i}`, copy);
122
159
  }
123
160
  };
124
161
  const calcularOtrosGastos = (gastos) => {
@@ -139,39 +176,54 @@ const anadirOtrosIngresos = (actividad, data) => {
139
176
  const rango = data.eerr[0].Rango;
140
177
  const cuentaOtrosIngresos = data.eerr.find((item) => item.RubroId == gCuentaOtrosIngresosDet);
141
178
  for (let i = 1; i <= rango; i++) {
142
- let copy = { ...cuentaOtrosIngresos };
143
- copy.UUID = `${gCuentaOtrosIngresosDet}_${actividad.AuxPec.ActividadEconomicaId}_${rango}`;
179
+ const copy = { ...cuentaOtrosIngresos };
180
+ copy.RubroId = `${gCuentaOtrosIngresosDet}.1`;
181
+ copy.UUID = `${gCuentaOtrosIngresosDet}_${actividad.AuxPec.ActividadEconomicaId}`;
144
182
  copy.Descripcion = `Otros Ingresos ${actividad.Desarrollo.ActividadGanadera}`;
145
183
  copy.MontoEmpresa = 0;
146
184
  copy.MontoFamiliar = 0;
147
185
  copy.Correlativo = i;
148
- copy.Clasificador = 'CT';
149
- if (rango == i && actividad.Ventas && actividad.Ventas.OtrosIngresos &&
150
- actividad.Ventas.OtrosIngresos.length > 0) {
151
- copy.MontoFamiliar = actividad.Ventas.OtrosIngresos.reduce((acc, item) => {
152
- acc += parseFloat(item.Monto);
153
- return acc;
154
- }, 0);
155
- copy.MontoFamiliar = Math.round(copy.MontoFamiliar * 100) / 100;
186
+ copy.Clasificador = 'SBCT';
187
+ copy.Subcuenta = true;
188
+ if (rango == i && actividad.Ventas?.OtrosIngresos) {
189
+ copy.MontoFamiliar = calcularOtrosIngresos(actividad.Ventas.OtrosIngresos, data.cantidadProyeccion);
156
190
  }
157
191
  data.eerr.push(copy);
192
+ data.eerrMap.set(`${copy.UUID}_${i}`, copy);
158
193
  }
159
194
  };
160
- const sumarizarCuentas = (rubroOrigen, rubroDestino, data, dataOriginal) => {
195
+ function calcularOtrosIngresos(otrosIngresos, cantidadProyeccion) {
196
+ return otrosIngresos.reduce((acc, curr) => {
197
+ let suma = 0;
198
+ for (let j = 1; j <= cantidadProyeccion; j++) {
199
+ suma += (0, utils_1.ourParseFloat)(curr[`Gestion${j}`]);
200
+ }
201
+ return acc + suma;
202
+ }, 0);
203
+ }
204
+ const sumarizarCuentas = (rubroOrigen, rubroDestino, data, dataOriginal, withZero = false) => {
161
205
  const rango = data.eerr[0].Rango;
162
206
  for (let i = 1; i <= rango; i++) {
163
- const cuentaOrigen = data.eerr.find((item) => item.RubroId == rubroOrigen && item.Correlativo == i);
164
- if (!cuentaOrigen)
165
- throw new Error(`No existe el rubro Calculado ${rubroOrigen}_${i} en el EERR`);
166
- const original = dataOriginal.get(`${rubroDestino}_${i}`);
167
- if (original.MontoEmpresa == 0 || original.MontoFamiliar == 0) {
168
- const cuentaDestino = data.eerrMap.get(`${rubroDestino}_${i}`);
169
- if (original.MontoEmpresa == 0)
170
- cuentaDestino.MontoEmpresa += cuentaOrigen.MontoEmpresa;
171
- if (original.MontoFamiliar == 0)
172
- cuentaDestino.MontoFamiliar += cuentaOrigen.MontoFamiliar;
173
- cuentaDestino.MontoEmpresa = Math.round(cuentaDestino.MontoEmpresa * 100) / 100;
174
- cuentaDestino.MontoFamiliar = Math.round(cuentaDestino.MontoFamiliar * 100) / 100;
175
- }
207
+ const cuentaOrigen = data.eerr.filter((item) => item.RubroId == rubroOrigen && item.Correlativo == i);
208
+ if (!cuentaOrigen || cuentaOrigen.length == 0)
209
+ throw new Error('No existe el rubro Calculado ${rubroOrigen}_${i} en el EERR');
210
+ cuentaOrigen.forEach((itemCuentaOrigen) => {
211
+ const key = withZero
212
+ ? `${rubroDestino}_0_${i}`
213
+ : `${rubroDestino}_${i}`;
214
+ const original = dataOriginal.get(key);
215
+ if (original.MontoEmpresa == 0 || original.MontoFamiliar == 0) {
216
+ const cuentaDestino = data.eerrMap.get(key);
217
+ if (original.MontoEmpresa == 0)
218
+ cuentaDestino.MontoEmpresa += itemCuentaOrigen.MontoEmpresa;
219
+ if (original.MontoFamiliar == 0)
220
+ cuentaDestino.MontoFamiliar +=
221
+ itemCuentaOrigen.MontoFamiliar;
222
+ cuentaDestino.MontoEmpresa =
223
+ Math.round(cuentaDestino.MontoEmpresa * 100) / 100;
224
+ cuentaDestino.MontoFamiliar =
225
+ Math.round(cuentaDestino.MontoFamiliar * 100) / 100;
226
+ }
227
+ });
176
228
  }
177
229
  };
@@ -1,6 +1,14 @@
1
- import { Strategy } from "../../strategy.interface";
1
+ import { Strategy } from '../../strategy.interface';
2
2
  export default class FlujoProyectadoPecStrategy implements Strategy {
3
3
  actividades: any[];
4
4
  constructor();
5
5
  execute(data: any): any;
6
+ private setParametrosEngorde;
7
+ private addIngresoAnual;
8
+ private addCostoAnual;
9
+ private getPorcentaje;
10
+ private addGastoAnual;
11
+ private addOtroIngresoFamiliarAnual;
12
+ private getGastosFamiliares;
13
+ private setGastosFamiliares;
6
14
  }