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.
- package/build/strategies/agriculture/balanceAgr.strategy.js +1 -102
- package/build/strategies/balance.strategy.d.ts +2 -0
- package/build/strategies/balance.strategy.js +159 -23
- package/build/strategies/common/balance.calc.d.ts +0 -1
- package/build/strategies/common/balance.calc.js +1 -3
- package/build/strategies/common/flujoCalculos/flujoConstructor.d.ts +2 -2
- package/build/strategies/common/flujoCalculos/flujoConstructor.js +90 -83
- package/build/strategies/common/flujoCalculos/supuestos.calc.d.ts +2 -2
- package/build/strategies/pecuary/Constantes.d.ts +1 -1
- package/build/strategies/pecuary/anexo.strategy.d.ts +2 -2
- package/build/strategies/pecuary/anexo.strategy.js +10 -5
- package/build/strategies/pecuary/balancePec.strategy.d.ts +2 -1
- package/build/strategies/pecuary/balancePec.strategy.js +124 -72
- package/build/strategies/pecuary/flujoProyPec.strategy.d.ts +9 -1
- package/build/strategies/pecuary/flujoProyPec.strategy.js +285 -87
- package/build/strategies/production/balancePrd.strategy.d.ts +2 -1
- package/build/strategies/production/balancePrd.strategy.js +66 -32
- package/package.json +1 -1
- package/tsconfig.json +1 -1
|
@@ -1,5 +1,7 @@
|
|
|
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 RUBRO_INGRESO = 'ACT_CNFL_40001';
|
|
4
6
|
const RUBRO_COSTOS = 'ACT_CNFL_50001';
|
|
5
7
|
const RUBRO_GASTOS = 'ACT_CNFL_60001';
|
|
@@ -18,187 +20,383 @@ class FlujoProyectadoPecStrategy {
|
|
|
18
20
|
const copiaGastos = getCuentaCopy(RUBRO_GASTOS, data);
|
|
19
21
|
const copiaOtrosIngresos = getCuentaCopy(RUBRO_OTROS_INGRESOS, data);
|
|
20
22
|
const copiaGastosFamiliares = getCuentaCopy(RUBRO_GASTOS_FAMILIARES, data);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
23
|
+
const copiaIngresoAnual = getCuentaCopy(RUBRO_INGRESO, data, false);
|
|
24
|
+
const copiaCostosAnual = getCuentaCopy(RUBRO_INGRESO, data, false);
|
|
25
|
+
const copiaGastosAnual = getCuentaCopy(RUBRO_INGRESO, data, false);
|
|
26
|
+
const copiaOtrosIngresosAnual = getCuentaCopy(RUBRO_OTROS_INGRESOS, data, false);
|
|
27
|
+
if (!Array.isArray(data.ParametrosEngorde)) {
|
|
28
|
+
data.ParametrosEngorde = [];
|
|
29
|
+
}
|
|
30
|
+
let sumaGastosFamiliares = 0;
|
|
31
|
+
for (const actividad of this.actividades) {
|
|
25
32
|
addIngresosM(actividad, data);
|
|
26
33
|
addCostosM(actividad, data);
|
|
27
34
|
addGastosM(actividad, data);
|
|
28
35
|
otrosIngresoM(actividad, data);
|
|
29
36
|
gastosFamiliaresM(actividad, data);
|
|
30
|
-
|
|
31
|
-
|
|
37
|
+
this.setParametrosEngorde(actividad, data);
|
|
38
|
+
this.addIngresoAnual(actividad, data);
|
|
39
|
+
this.addCostoAnual(actividad, data);
|
|
40
|
+
this.addGastoAnual(actividad, data);
|
|
41
|
+
this.addOtroIngresoFamiliarAnual(actividad, data);
|
|
42
|
+
sumaGastosFamiliares += this.getGastosFamiliares(actividad);
|
|
32
43
|
}
|
|
44
|
+
this.setGastosFamiliares(sumaGastosFamiliares, data);
|
|
33
45
|
sumarizarCuenta(RUBRO_INGRESO, data, copiaIngreso);
|
|
34
46
|
sumarizarCuenta(RUBRO_COSTOS, data, copiaCostos);
|
|
35
47
|
sumarizarCuenta(RUBRO_GASTOS, data, copiaGastos);
|
|
36
48
|
sumarizarCuenta(RUBRO_OTROS_INGRESOS, data, copiaOtrosIngresos);
|
|
37
49
|
sumarizarCuenta(RUBRO_GASTOS_FAMILIARES, data, copiaGastosFamiliares);
|
|
38
|
-
|
|
50
|
+
sumarizarCuenta(RUBRO_INGRESO, data, copiaIngresoAnual, false);
|
|
51
|
+
sumarizarCuenta(RUBRO_COSTOS, data, copiaCostosAnual, false);
|
|
52
|
+
sumarizarCuenta(RUBRO_GASTOS, data, copiaGastosAnual, false);
|
|
53
|
+
sumarizarCuenta(RUBRO_OTROS_INGRESOS, data, copiaOtrosIngresosAnual, false);
|
|
54
|
+
console.log((0, lodash_1.cloneDeep)(data));
|
|
39
55
|
return data;
|
|
40
56
|
}
|
|
57
|
+
setParametrosEngorde(actividad, data) {
|
|
58
|
+
const totalEstacionalidad = actividad.Ventas.EstacionalidadCalc.find((el) => el.RubroId === 'TOT01');
|
|
59
|
+
const sumaAnnoBase = (0, utils_1.ourParseFloat)(totalEstacionalidad?.Total) * 10;
|
|
60
|
+
const proyeccionVentasTotales = actividad.Desarrollo.VentasCantidad.find((el) => el.RubroId === 'TOT01');
|
|
61
|
+
let sumaHato = 0;
|
|
62
|
+
for (let i = 1; i <= 10; i++) {
|
|
63
|
+
sumaHato += (0, utils_1.ourParseFloat)(proyeccionVentasTotales?.[`C-${i}`]);
|
|
64
|
+
}
|
|
65
|
+
const parametroEngorde = data.Parametros.ParametrosActividad.find((el) => el.ActividadId == actividad.ActividadEconomicaId);
|
|
66
|
+
let existe = data.ParametrosEngorde.find((p) => p.ActividadEconomicaId == actividad.ActividadEconomicaId);
|
|
67
|
+
if (!existe) {
|
|
68
|
+
existe = {
|
|
69
|
+
ActividadEconomicaId: actividad.ActividadEconomicaId,
|
|
70
|
+
Descripcion: actividad.Descripcion
|
|
71
|
+
};
|
|
72
|
+
data.ParametrosEngorde.push(existe);
|
|
73
|
+
}
|
|
74
|
+
existe.SumaAnnoBase = sumaAnnoBase;
|
|
75
|
+
existe.SumaHato = sumaHato;
|
|
76
|
+
existe.EsEngorde = parametroEngorde?.EsEngorde ?? 'NO';
|
|
77
|
+
let conclusion = '';
|
|
78
|
+
if (sumaAnnoBase < sumaHato || existe.EsEngorde === 'SI') {
|
|
79
|
+
conclusion = 'FLUJO HISTORICO';
|
|
80
|
+
}
|
|
81
|
+
else if (sumaHato < sumaAnnoBase) {
|
|
82
|
+
conclusion = 'DESARROLLO DE HATO';
|
|
83
|
+
}
|
|
84
|
+
existe.Conclusion = conclusion;
|
|
85
|
+
}
|
|
86
|
+
addIngresoAnual(actividad, data) {
|
|
87
|
+
const rubro = data.FlujoProyectadoAnualMap.get(`${RUBRO_INGRESO}_0`);
|
|
88
|
+
const row = { ...rubro };
|
|
89
|
+
row.Descripcion = `Ingresos ${actividad.Desarrollo.ActividadGanadera}`;
|
|
90
|
+
row.Clasificador = 'SBCT';
|
|
91
|
+
row.Editable = false;
|
|
92
|
+
row.UUID = `${RUBRO_INGRESO}_${actividad.Desarrollo.ActividadEconomicaId}`;
|
|
93
|
+
row.RubroId = `${RUBRO_INGRESO}.1`;
|
|
94
|
+
const totalesCalculoIngresos = actividad.Ventas.EstacionalidadCalc.find((el) => el.RubroId === 'TOT01');
|
|
95
|
+
const totalesCantidad = actividad.Desarrollo.VentasCantidad.find((el) => el.RubroId === 'TOT01');
|
|
96
|
+
const I10 = 0;
|
|
97
|
+
const parametroEngorde = data.ParametrosEngorde.find((el) => el.ActividadEconomicaId === actividad.ActividadEconomicaId);
|
|
98
|
+
const variaciones = data.FlujoProyectadoAnualMap.get('ACT_CNFL_30001_0');
|
|
99
|
+
for (let i = 1; i <= data.DatosEvaluacion.CantidadProyeccion; i++) {
|
|
100
|
+
if (i == 1) {
|
|
101
|
+
row[`Monto${i}`] = (0, utils_1.ourParseFloat)(totalesCalculoIngresos?.Total);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
const variacion = (0, utils_1.ourParseFloat)(variaciones?.[`Monto${i}`]) / 100;
|
|
105
|
+
if (parametroEngorde?.Conclusion === 'DESARROLLO DE HATO') {
|
|
106
|
+
row[`Monto${i}`] =
|
|
107
|
+
(0, utils_1.ourParseFloat)(totalesCantidad?.[`C-${i - 1}`]) *
|
|
108
|
+
(1 + variacion + I10);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
row[`Monto${i}`] =
|
|
112
|
+
(0, utils_1.ourParseFloat)(row[`Monto${i - 1}`]) *
|
|
113
|
+
(1 + variacion + I10);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const existente = data.FlujoProyectadoAnual.findIndex((el) => el.UUID === row.UUID);
|
|
118
|
+
if (existente >= 0) {
|
|
119
|
+
data.FlujoProyectadoAnual[existente] = row;
|
|
120
|
+
}
|
|
121
|
+
else {
|
|
122
|
+
data.FlujoProyectadoAnual.push(row);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
addCostoAnual(actividad, data) {
|
|
126
|
+
const rubro = data.FlujoProyectadoAnualMap.get(`${RUBRO_COSTOS}_0`);
|
|
127
|
+
const row = { ...rubro };
|
|
128
|
+
row.Descripcion = `(-) Costos de Ventas ${actividad.Desarrollo.ActividadGanadera}`;
|
|
129
|
+
row.Clasificador = 'SBCT';
|
|
130
|
+
row.Editable = false;
|
|
131
|
+
row.UUID = `${RUBRO_COSTOS}_${actividad.Desarrollo.ActividadEconomicaId}`;
|
|
132
|
+
row.RubroId = `${RUBRO_COSTOS}.1`;
|
|
133
|
+
const filaIngresos = data.FlujoProyectadoAnual.find((el) => el.UUID === `${RUBRO_INGRESO}_${actividad.ActividadEconomicaId}`);
|
|
134
|
+
const porcentaje = this.getPorcentaje(actividad, data);
|
|
135
|
+
const parametroEngorde = data.ParametrosEngorde.find((el) => el.ActividadEconomicaId === actividad.ActividadEconomicaId);
|
|
136
|
+
const variaciones = data.FlujoProyectadoAnualMap.get('ACT_CNFL_30001_0');
|
|
137
|
+
for (let i = 1; i <= data.DatosEvaluacion.CantidadProyeccion; i++) {
|
|
138
|
+
if (i == 1) {
|
|
139
|
+
row[`Monto${i}`] =
|
|
140
|
+
(0, utils_1.ourParseFloat)(filaIngresos?.[`Monto${i}`]) * porcentaje;
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
const variacion = (0, utils_1.ourParseFloat)(variaciones?.[`Monto${i}`]) / 100;
|
|
144
|
+
if (parametroEngorde?.Conclusion === 'DESARROLLO DE HATO') {
|
|
145
|
+
row[`Monto${i}`] =
|
|
146
|
+
(0, utils_1.ourParseFloat)(filaIngresos?.[`Monto${i}`]) *
|
|
147
|
+
porcentaje *
|
|
148
|
+
(1 + variacion);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
row[`Monto${i}`] =
|
|
152
|
+
(0, utils_1.ourParseFloat)(row[`Monto${i - 1}`]) * (1 + variacion);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const existente = data.FlujoProyectadoAnual.findIndex((el) => el.UUID === row.UUID);
|
|
157
|
+
if (existente >= 0) {
|
|
158
|
+
data.FlujoProyectadoAnual[existente] = row;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
data.FlujoProyectadoAnual.push(row);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
getPorcentaje(actividad, data) {
|
|
165
|
+
const filaIngresosMensual = data.FlujoProyectadoMensual.find((el) => el.UUID === `${RUBRO_INGRESO}_${actividad.ActividadEconomicaId}`);
|
|
166
|
+
const filaCostosMensual = data.FlujoProyectadoMensual.find((el) => el.UUID === `${RUBRO_COSTOS}_${actividad.ActividadEconomicaId}`);
|
|
167
|
+
let totalIngresos = 0;
|
|
168
|
+
let totalMensual = 0;
|
|
169
|
+
for (let i = 1; i <= data.DatosEvaluacion.CantidadProyeccion; i++) {
|
|
170
|
+
totalIngresos += (0, utils_1.ourParseFloat)(filaIngresosMensual?.[`Monto${i}`]);
|
|
171
|
+
totalMensual += (0, utils_1.ourParseFloat)(filaCostosMensual?.[`Monto${i}`]);
|
|
172
|
+
}
|
|
173
|
+
return totalIngresos > 0 ? totalMensual / totalIngresos : 0;
|
|
174
|
+
}
|
|
175
|
+
addGastoAnual(actividad, data) {
|
|
176
|
+
const rubro = data.FlujoProyectadoAnualMap.get(`${RUBRO_GASTOS}_0`);
|
|
177
|
+
const row = { ...rubro };
|
|
178
|
+
row.Descripcion = `(-) Costos de Ventas ${actividad.Desarrollo.ActividadGanadera}`;
|
|
179
|
+
row.Clasificador = 'SBCT';
|
|
180
|
+
row.Editable = false;
|
|
181
|
+
row.UUID = `${RUBRO_GASTOS}_${actividad.Desarrollo.ActividadEconomicaId}`;
|
|
182
|
+
row.RubroId = `${RUBRO_GASTOS}.1`;
|
|
183
|
+
const variaciones = data.FlujoProyectadoAnualMap.get('ACT_CNFL_30003_0');
|
|
184
|
+
const gastos = calcularOtrosGastos(actividad.OtrosGastos, 'Anual');
|
|
185
|
+
for (let i = 1; i <= data.DatosEvaluacion.CantidadProyeccion; i++) {
|
|
186
|
+
const variacion = (0, utils_1.ourParseFloat)(variaciones?.[`Monto${i}`]) / 100;
|
|
187
|
+
if (i == 1) {
|
|
188
|
+
row[`Monto${i}`] = (0, utils_1.ourParseFloat)(gastos.GastosOperativos);
|
|
189
|
+
}
|
|
190
|
+
else if (i == 2) {
|
|
191
|
+
row[`Monto${i}`] =
|
|
192
|
+
(0, utils_1.ourParseFloat)(gastos.GastosOperativos) * (1 + variacion);
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
row[`Monto${i}`] =
|
|
196
|
+
(0, utils_1.ourParseFloat)(row[`Monto${i - 1}`]) * (1 + variacion);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const existente = data.FlujoProyectadoAnual.findIndex((el) => el.UUID === row.UUID);
|
|
200
|
+
if (existente >= 0) {
|
|
201
|
+
data.FlujoProyectadoAnual[existente] = row;
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
data.FlujoProyectadoAnual.push(row);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
addOtroIngresoFamiliarAnual(actividad, data) {
|
|
208
|
+
const rubro = data.FlujoProyectadoAnualMap.get(`${RUBRO_OTROS_INGRESOS}_0`);
|
|
209
|
+
const row = { ...rubro };
|
|
210
|
+
row.Descripcion = `Otros Ingresos Familiares ${actividad.Desarrollo.ActividadGanadera}`;
|
|
211
|
+
row.Clasificador = 'SBCT';
|
|
212
|
+
row.Editable = false;
|
|
213
|
+
row.UUID = `${RUBRO_OTROS_INGRESOS}_${actividad.Desarrollo.ActividadEconomicaId}`;
|
|
214
|
+
row.RubroId = `${RUBRO_OTROS_INGRESOS}.1`;
|
|
215
|
+
const filaOtrosIngresosMensual = data.FlujoProyectadoMensual.find((el) => el.UUID ===
|
|
216
|
+
`${RUBRO_OTROS_INGRESOS}_${actividad.Desarrollo.ActividadEconomicaId}`);
|
|
217
|
+
let total = 0;
|
|
218
|
+
for (let i = 1; i <= data.DatosEvaluacion.CantidadProyeccion; i++) {
|
|
219
|
+
total += (0, utils_1.ourParseFloat)(filaOtrosIngresosMensual?.[`Monto${i}`]);
|
|
220
|
+
}
|
|
221
|
+
for (let i = 1; i <= data.DatosEvaluacion.CantidadProyeccion; i++) {
|
|
222
|
+
row[`Monto${i}`] = total;
|
|
223
|
+
}
|
|
224
|
+
const existente = data.FlujoProyectadoAnual.findIndex((el) => el.UUID === row.UUID);
|
|
225
|
+
if (existente >= 0) {
|
|
226
|
+
data.FlujoProyectadoAnual[existente] = row;
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
data.FlujoProyectadoAnual.push(row);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
getGastosFamiliares(actividad) {
|
|
233
|
+
return calcularOtrosGastos(actividad.OtrosGastos, 'Anual')
|
|
234
|
+
.GastosFamiliares;
|
|
235
|
+
}
|
|
236
|
+
setGastosFamiliares(totalGastos, data) {
|
|
237
|
+
const filaGastos = data.FlujoProyectadoAnual.find((el) => el.RubroId === RUBRO_GASTOS_FAMILIARES);
|
|
238
|
+
if (filaGastos) {
|
|
239
|
+
const porcentaje = (0, utils_1.ourParseFloat)(filaGastos.MontoCajaPercent) / 100;
|
|
240
|
+
for (let i = 1; i <= data.DatosEvaluacion.CantidadProyeccion; i++) {
|
|
241
|
+
if (i == 1) {
|
|
242
|
+
filaGastos[`Monto${i}`] = totalGastos;
|
|
243
|
+
}
|
|
244
|
+
else if (i == 2) {
|
|
245
|
+
filaGastos[`Monto${i}`] = totalGastos * (1 + porcentaje);
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
filaGastos[`Monto${i}`] =
|
|
249
|
+
(0, utils_1.ourParseFloat)(filaGastos[`Monto${i - 1}`]) *
|
|
250
|
+
(1 + porcentaje);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
41
255
|
}
|
|
42
256
|
exports.default = FlujoProyectadoPecStrategy;
|
|
43
|
-
const getCuentaCopy = (rubroId, data) => {
|
|
44
|
-
const
|
|
257
|
+
const getCuentaCopy = (rubroId, data, mensual = true) => {
|
|
258
|
+
const fuente = mensual
|
|
259
|
+
? data.FlujoProyectadoMensualMap
|
|
260
|
+
: data.FlujoProyectadoAnualMap;
|
|
261
|
+
const cuenta = fuente.get(`${rubroId}_0`);
|
|
45
262
|
return { ...cuenta };
|
|
46
263
|
};
|
|
47
|
-
const sumarizarCuenta = (rubroId, data, copia) => {
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
264
|
+
const sumarizarCuenta = (rubroId, data, copia, mensual = true) => {
|
|
265
|
+
const fuenteMap = mensual
|
|
266
|
+
? data.FlujoProyectadoMensualMap
|
|
267
|
+
: data.FlujoProyectadoAnualMap;
|
|
268
|
+
const fuenteArray = mensual
|
|
269
|
+
? data.FlujoProyectadoMensual
|
|
270
|
+
: data.FlujoProyectadoAnual;
|
|
271
|
+
const cuenta = fuenteMap.get(`${rubroId}_0`);
|
|
272
|
+
const detalles = fuenteArray.filter((item) => item.RubroId == `${rubroId}.1`);
|
|
273
|
+
for (const detalle of detalles) {
|
|
51
274
|
for (let i = 1; i <= 12; i++) {
|
|
52
275
|
if (copia[`Monto${i}`] == 0)
|
|
53
276
|
cuenta[`Monto${i}`] += parseFloat(detalle[`Monto${i}`]);
|
|
54
277
|
}
|
|
55
278
|
}
|
|
56
279
|
};
|
|
57
|
-
const getSumaDesarrolloAnualByAnno = (actividad, data, suma) => {
|
|
58
|
-
const CantidadProyeccion = data.DatosEvaluacion.CantidadProyeccion;
|
|
59
|
-
const ventasCantidad = actividad.Desarrollo.VentasCantidad.find((item) => item.RubroId == 'TOT01');
|
|
60
|
-
if (!suma) {
|
|
61
|
-
suma = {};
|
|
62
|
-
for (let i = 1; i <= CantidadProyeccion; i++) {
|
|
63
|
-
suma[`C-${i}`] = ventasCantidad[`C-${i}`];
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
return suma;
|
|
67
|
-
};
|
|
68
|
-
const getDesarrolloSuma = (actividad) => {
|
|
69
|
-
const ventasCantidad = actividad.Desarrollo.VentasCantidad.find((item) => item.RubroId == 'TOT01');
|
|
70
|
-
if (!ventasCantidad)
|
|
71
|
-
throw new Error('No se econtró el Monto de desarrollo');
|
|
72
|
-
let result = 0;
|
|
73
|
-
for (let i = 1; i <= actividad.Desarrollo.CantidadProyeccion; i++) {
|
|
74
|
-
result += parseFloat(ventasCantidad[`C-${i}`]);
|
|
75
|
-
}
|
|
76
|
-
return result;
|
|
77
|
-
};
|
|
78
280
|
const addIngresosM = (actividad, data) => {
|
|
79
281
|
const rubro = data.FlujoProyectadoMensualMap.get(`${RUBRO_INGRESO}_0`);
|
|
80
282
|
const ingresos = actividad.Ventas.EstacionalidadCalc.find((item) => item.RubroId == 'TOT01');
|
|
81
283
|
if (!ingresos)
|
|
82
284
|
throw new Error('No se encontro la estacionalidad Calc de la actividad');
|
|
83
|
-
|
|
285
|
+
const row = { ...rubro };
|
|
84
286
|
row.Descripcion = `Ingresos ${actividad.Desarrollo.ActividadGanadera}`;
|
|
85
|
-
row.Clasificador = '
|
|
287
|
+
row.Clasificador = 'SBCT';
|
|
86
288
|
row.Editable = false;
|
|
87
289
|
row.UUID = `${RUBRO_INGRESO}_${actividad.Desarrollo.ActividadEconomicaId}`;
|
|
88
290
|
row.RubroId = `${RUBRO_INGRESO}.1`;
|
|
89
291
|
for (let i = 1; i <= 12; i++) {
|
|
90
292
|
row[`Monto${i}`] = Math.round(parseFloat(ingresos[`C${i}`]) * 100) / 100;
|
|
91
293
|
}
|
|
92
|
-
data.FlujoProyectadoMensual.
|
|
294
|
+
const existente = data.FlujoProyectadoMensual.findIndex((el) => el.UUID === row.UUID);
|
|
295
|
+
if (existente >= 0) {
|
|
296
|
+
data.FlujoProyectadoMensual[existente] = row;
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
data.FlujoProyectadoMensual.push(row);
|
|
300
|
+
}
|
|
93
301
|
};
|
|
94
302
|
const addCostosM = (actividad, data) => {
|
|
95
303
|
const rubro = data.FlujoProyectadoMensualMap.get(`${RUBRO_COSTOS}_0`);
|
|
96
304
|
const costos = actividad.Costos.Calculo.find((item) => item.RubroId == 'TOT01');
|
|
97
305
|
if (!costos)
|
|
98
306
|
throw new Error('No se encontro el costo cálculo de la actividad');
|
|
99
|
-
|
|
307
|
+
const row = { ...rubro };
|
|
100
308
|
row.Descripcion = `(-) Costos de Ventas ${actividad.Desarrollo.ActividadGanadera}`;
|
|
101
|
-
row.Clasificador = '
|
|
309
|
+
row.Clasificador = 'SBCT';
|
|
102
310
|
row.Editable = false;
|
|
103
311
|
row.UUID = `${RUBRO_COSTOS}_${actividad.Desarrollo.ActividadEconomicaId}`;
|
|
104
312
|
row.RubroId = `${RUBRO_COSTOS}.1`;
|
|
105
313
|
for (let i = 1; i <= 12; i++) {
|
|
106
314
|
row[`Monto${i}`] = Math.round(parseFloat(costos[`C-${i}`]) * 100) / 100;
|
|
107
315
|
}
|
|
108
|
-
data.FlujoProyectadoMensual.
|
|
316
|
+
const existente = data.FlujoProyectadoMensual.findIndex((el) => el.UUID === row.UUID);
|
|
317
|
+
if (existente >= 0) {
|
|
318
|
+
data.FlujoProyectadoMensual[existente] = row;
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
data.FlujoProyectadoMensual.push(row);
|
|
322
|
+
}
|
|
109
323
|
};
|
|
110
324
|
const addGastosM = (actividad, data) => {
|
|
111
325
|
const rubro = data.FlujoProyectadoMensualMap.get(`${RUBRO_GASTOS}_0`);
|
|
112
326
|
const otrosGastos = calcularOtrosGastos(actividad.OtrosGastos);
|
|
113
327
|
if (!otrosGastos)
|
|
114
328
|
throw new Error('No se encontro los gastos de la actividad');
|
|
115
|
-
|
|
329
|
+
const row = { ...rubro };
|
|
116
330
|
row.Descripcion = `(-) Gastos Operativo ${actividad.Desarrollo.ActividadGanadera}`;
|
|
117
|
-
row.Clasificador = '
|
|
331
|
+
row.Clasificador = 'SBCT';
|
|
118
332
|
row.Editable = false;
|
|
119
333
|
row.UUID = `${RUBRO_GASTOS}_${actividad.Desarrollo.ActividadEconomicaId}`;
|
|
120
334
|
row.RubroId = `${RUBRO_GASTOS}.1`;
|
|
121
335
|
for (let i = 1; i <= 12; i++) {
|
|
122
|
-
row[`Monto${i}`] =
|
|
336
|
+
row[`Monto${i}`] =
|
|
337
|
+
Math.round(parseFloat(otrosGastos.GastosOperativos) * 100) / 100;
|
|
338
|
+
}
|
|
339
|
+
const existente = data.FlujoProyectadoMensual.findIndex((el) => el.UUID === row.UUID);
|
|
340
|
+
if (existente >= 0) {
|
|
341
|
+
data.FlujoProyectadoMensual[existente] = row;
|
|
342
|
+
}
|
|
343
|
+
else {
|
|
344
|
+
data.FlujoProyectadoMensual.push(row);
|
|
123
345
|
}
|
|
124
|
-
data.FlujoProyectadoMensual.push(row);
|
|
125
346
|
};
|
|
126
347
|
const otrosIngresoM = (actividad, data) => {
|
|
127
348
|
const rubro = data.FlujoProyectadoMensualMap.get(`${RUBRO_OTROS_INGRESOS}_0`);
|
|
128
349
|
const otrosIngresos = actividad.Ventas.OtrosIngresos;
|
|
129
350
|
if (!otrosIngresos)
|
|
130
351
|
throw new Error('No se encontro la estacionalidad Calc de la actividad');
|
|
131
|
-
|
|
352
|
+
const row = { ...rubro };
|
|
132
353
|
row.Descripcion = `Otros Ingresos Familiares ${actividad.Desarrollo.ActividadGanadera}`;
|
|
133
|
-
row.Clasificador = '
|
|
354
|
+
row.Clasificador = 'SBCT';
|
|
134
355
|
row.Editable = false;
|
|
135
356
|
row.UUID = `${RUBRO_OTROS_INGRESOS}_${actividad.Desarrollo.ActividadEconomicaId}`;
|
|
136
357
|
row.RubroId = `${RUBRO_OTROS_INGRESOS}.1`;
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
acc
|
|
140
|
-
return acc;
|
|
358
|
+
for (let i = 1; i <= 12; i++) {
|
|
359
|
+
row[`Monto${i}`] = otrosIngresos.reduce((acc, row) => {
|
|
360
|
+
return acc + (0, utils_1.ourParseFloat)(row[`Gestion${i}`]);
|
|
141
361
|
}, 0);
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
362
|
+
}
|
|
363
|
+
const existente = data.FlujoProyectadoMensual.findIndex((el) => el.UUID === row.UUID);
|
|
364
|
+
if (existente >= 0) {
|
|
365
|
+
data.FlujoProyectadoMensual[existente] = row;
|
|
145
366
|
}
|
|
146
367
|
else {
|
|
147
|
-
|
|
148
|
-
row[`Monto${i}`] = Math.round(parseFloat(otrosIngresos[`C${i}`]) * 100) / 100;
|
|
149
|
-
}
|
|
368
|
+
data.FlujoProyectadoMensual.push(row);
|
|
150
369
|
}
|
|
151
|
-
data.FlujoProyectadoMensual.push(row);
|
|
152
370
|
};
|
|
153
371
|
const gastosFamiliaresM = (actividad, data) => {
|
|
154
372
|
const rubro = data.FlujoProyectadoMensualMap.get(`$${RUBRO_GASTOS_FAMILIARES}_0`);
|
|
155
373
|
const otrosGastos = calcularOtrosGastos(actividad.OtrosGastos);
|
|
156
374
|
if (!otrosGastos)
|
|
157
375
|
throw new Error('No se encontro los gastos de la actividad');
|
|
158
|
-
|
|
376
|
+
const row = { ...rubro };
|
|
159
377
|
row.Descripcion = `(-) Gastos Familiares ${actividad.Desarrollo.ActividadGanadera}`;
|
|
160
|
-
row.Clasificador = '
|
|
378
|
+
row.Clasificador = 'SBCT';
|
|
161
379
|
row.Editable = false;
|
|
162
380
|
row.UUID = `${RUBRO_GASTOS_FAMILIARES}_${actividad.Desarrollo.ActividadEconomicaId}`;
|
|
163
381
|
row.RubroId = `${RUBRO_GASTOS_FAMILIARES}.1`;
|
|
164
382
|
for (let i = 1; i <= 12; i++) {
|
|
165
|
-
row[`Monto${i}`] =
|
|
383
|
+
row[`Monto${i}`] = (0, utils_1.ourParseFloat)(otrosGastos.GastosFamiliares);
|
|
166
384
|
}
|
|
167
|
-
data.FlujoProyectadoMensual.
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
const ingresos = data.FlujoProyectadoMensualMap.get(`${RUBRO_INGRESO}_0`);
|
|
171
|
-
let sumaIngresos = 0;
|
|
172
|
-
for (let i = 1; i <= 12; i++) {
|
|
173
|
-
sumaIngresos += parseFloat(ingresos[`Monto${i}`]);
|
|
385
|
+
const existente = data.FlujoProyectadoMensual.findIndex((el) => el.UUID === row.UUID);
|
|
386
|
+
if (existente >= 0) {
|
|
387
|
+
data.FlujoProyectadoMensual[existente] = row;
|
|
174
388
|
}
|
|
175
|
-
let sumaHato = sumaDesarrollo.reduce((acc, item) => {
|
|
176
|
-
acc += item;
|
|
177
|
-
return acc;
|
|
178
|
-
}, 0);
|
|
179
|
-
const sumaProyectada = Math.round((sumaIngresos * data.DatosEvaluacion.CantidadProyeccion) * 100) / 100;
|
|
180
|
-
let result = {
|
|
181
|
-
EsEngorde: data.Parametros.EsEngorde,
|
|
182
|
-
SumaAnnoBase: sumaProyectada,
|
|
183
|
-
SumaHato: sumaHato,
|
|
184
|
-
Conclusion: 'NA'
|
|
185
|
-
};
|
|
186
|
-
result.SumaDesarrolloAnual = sumaDesarrolloAnual;
|
|
187
|
-
if (result.EsEngorde == 'SI' || result.SumaAnnoBase < result.SumaHato)
|
|
188
|
-
result.Conclusion = 'FLUJO_HISTORICO';
|
|
189
389
|
else {
|
|
190
|
-
|
|
191
|
-
result.Conclusion = 'DESARROLLO_HATO';
|
|
390
|
+
data.FlujoProyectadoMensual.push(row);
|
|
192
391
|
}
|
|
193
|
-
data.ParametrosEngorde = result;
|
|
194
392
|
};
|
|
195
|
-
const calcularOtrosGastos = (gastos) => {
|
|
393
|
+
const calcularOtrosGastos = (gastos, tipoImporte = 'Mensual') => {
|
|
196
394
|
const gastosOperativos = gastos.Operativos.reduce((acc, item) => {
|
|
197
|
-
acc += parseFloat(item
|
|
395
|
+
acc += parseFloat(item[`Importe${tipoImporte}`]);
|
|
198
396
|
return acc;
|
|
199
397
|
}, 0);
|
|
200
398
|
const gastosFamiliares = gastos.Familiares.reduce((acc, item) => {
|
|
201
|
-
acc += parseFloat(item
|
|
399
|
+
acc += parseFloat(item[`Importe${tipoImporte}`]);
|
|
202
400
|
return acc;
|
|
203
401
|
}, 0);
|
|
204
402
|
return {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Strategy } from
|
|
1
|
+
import { Strategy } from '../../strategy.interface';
|
|
2
2
|
export default class BalancePrdStrategy implements Strategy {
|
|
3
3
|
actividades: any[];
|
|
4
|
+
private camposCalculadosDefinidos;
|
|
4
5
|
constructor();
|
|
5
6
|
execute(data: any): any;
|
|
6
7
|
}
|