bdpformulas 1.0.65 → 1.0.68

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
@@ -21,6 +21,8 @@ import BalanceGeneralStrategy from './strategies/general/balanceGeneral.strategy
21
21
  import FlujoProyectadoGeneralStrategy from './strategies/general/flujoProyGeneral.strategy';
22
22
  import AdmFinancieraStrategy from './strategies/eeff/admFinanciera.strategy';
23
23
  import SupuestosStrategy from './strategies/eeff/supuestos.strategy';
24
+ import DeudasStrategy from './strategies/eeff/deudas.strategy';
25
+ import ItapStrategy from './strategies/general/itap.stretegy';
24
26
  declare const Pecuario: {
25
27
  Auxiliar: typeof Auxiliar;
26
28
  Desarrollo: typeof Desarrollo;
@@ -45,10 +47,12 @@ declare const EEFF: {
45
47
  FlujoProyectadoEEFFStrategy: typeof FlujoProyectadoEEFFStrategy;
46
48
  AdmFinancieraStrategy: typeof AdmFinancieraStrategy;
47
49
  SupuestosStrategy: typeof SupuestosStrategy;
50
+ DeudasStrategy: typeof DeudasStrategy;
48
51
  };
49
52
  declare const General: {
50
53
  BalanceGeneralStrategy: typeof BalanceGeneralStrategy;
51
54
  FlujoProyectadoGeneralStrategy: typeof FlujoProyectadoGeneralStrategy;
55
+ ItapStrategy: typeof ItapStrategy;
52
56
  };
53
57
  declare const Actividades: {
54
58
  Balance: typeof Balance;
package/build/index.js CHANGED
@@ -28,6 +28,8 @@ const balanceGeneral_strategy_1 = __importDefault(require("./strategies/general/
28
28
  const flujoProyGeneral_strategy_1 = __importDefault(require("./strategies/general/flujoProyGeneral.strategy"));
29
29
  const admFinanciera_strategy_1 = __importDefault(require("./strategies/eeff/admFinanciera.strategy"));
30
30
  const supuestos_strategy_1 = __importDefault(require("./strategies/eeff/supuestos.strategy"));
31
+ const deudas_strategy_1 = __importDefault(require("./strategies/eeff/deudas.strategy"));
32
+ const itap_stretegy_1 = __importDefault(require("./strategies/general/itap.stretegy"));
31
33
  const Pecuario = {
32
34
  Auxiliar: anexo_strategy_1.default,
33
35
  Desarrollo: desarrollo_strategy_1.default,
@@ -54,12 +56,14 @@ const EEFF = {
54
56
  BalanceEEFFStrategy: balanceEEFF_strategy_1.default,
55
57
  FlujoProyectadoEEFFStrategy: flujoProyEEFF_strategy_1.default,
56
58
  AdmFinancieraStrategy: admFinanciera_strategy_1.default,
57
- SupuestosStrategy: supuestos_strategy_1.default
59
+ SupuestosStrategy: supuestos_strategy_1.default,
60
+ DeudasStrategy: deudas_strategy_1.default
58
61
  };
59
62
  exports.EEFF = EEFF;
60
63
  const General = {
61
64
  BalanceGeneralStrategy: balanceGeneral_strategy_1.default,
62
- FlujoProyectadoGeneralStrategy: flujoProyGeneral_strategy_1.default
65
+ FlujoProyectadoGeneralStrategy: flujoProyGeneral_strategy_1.default,
66
+ ItapStrategy: itap_stretegy_1.default
63
67
  };
64
68
  exports.General = General;
65
69
  const Actividades = {
@@ -259,8 +259,12 @@ class FlujoConstructor {
259
259
  }
260
260
  };
261
261
  agregarQuitarClones = () => {
262
- const filter = this.data.FlujoProyectadoMensual.filter((item) => item.IndicadorABM !== 'B' &&
263
- (item.Clasificador == 'DETL' || item.Clasificador == 'HABM'));
262
+ const borrados = this.data.FlujoProyectadoMensual.filter((item) => item.IndicadorABM === 'B' &&
263
+ (item.Clasificador == 'DETL' || item.Clasificador == 'HABM')).map((item) => { return `CLONE_${item.UUID}`; });
264
+ this.data.FlujoProyectadoMensual = this.data.FlujoProyectadoMensual.filter((item) => item.IndicadorABM !== 'B');
265
+ this.array = this.array.filter((item) => !borrados.includes(item.UUID));
266
+ this.data.FlujoProyectadoAnual = this.data.FlujoProyectadoAnual.filter((item) => !borrados.includes(item.UUID));
267
+ const filter = this.data.FlujoProyectadoMensual.filter((item) => (item.Clasificador == 'DETL' || item.Clasificador == 'HABM'));
264
268
  filter.map((item) => {
265
269
  const key = `${item.RubroId}_CLONE_${item.UUID}`;
266
270
  const UUID = `CLONE_${item.UUID}`;
@@ -0,0 +1,10 @@
1
+ import { Strategy } from "../../strategy.interface";
2
+ export default class DeudasStrategy implements Strategy {
3
+ data: any;
4
+ constructor();
5
+ cleanNumber: (data: any) => number;
6
+ calcularDeuda(params: any): void;
7
+ calcularDeudaFilaPorcentaje(params: any): void;
8
+ sumarizador(params: any): any;
9
+ execute(data: any): any;
10
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class DeudasStrategy {
4
+ data;
5
+ constructor() {
6
+ this.data = {};
7
+ }
8
+ cleanNumber = (data) => {
9
+ if (!data)
10
+ return 0;
11
+ else
12
+ return Math.round(parseFloat(data) * 100) / 100;
13
+ };
14
+ calcularDeuda(params) {
15
+ let i = 1;
16
+ do {
17
+ let row1 = this.data.Deudas.find((item) => item.RubroId == params.rubro1 && item.Secuencia == i);
18
+ let row2 = this.data.Deudas.find((item) => item.RubroId == params.rubro2 && item.Secuencia == i);
19
+ let row3 = this.data.Deudas.find((item) => item.RubroId == params.rubro3 && item.Secuencia == i);
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;
23
+ }
24
+ i++;
25
+ } while (this.data.Deudas.find((item) => item.RubroId == params.rubro1 && item.Secuencia == i));
26
+ }
27
+ calcularDeudaFilaPorcentaje(params) {
28
+ let i = 1;
29
+ do {
30
+ let row1 = this.data.Deudas.find((item) => item.RubroId == params.rubro1 && item.Secuencia == i);
31
+ let row2 = this.data.Deudas.find((item) => item.RubroId == params.rubro2 && item.Secuencia == i);
32
+ let row3 = this.data.Deudas.find((item) => item.RubroId == params.rubro3 && item.Secuencia == i);
33
+ 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
+ }
37
+ i++;
38
+ } while (this.data.Deudas.find((item) => item.RubroId == params.rubro1 && item.Secuencia == i));
39
+ }
40
+ sumarizador(params) {
41
+ let destino = this.data.Deudas.find((item) => item.RubroId == params.rubro2);
42
+ this.data.Deudas.filter((item) => item.RubroId == params.rubro1).reduce((sum, item) => {
43
+ if (!sum)
44
+ sum = item;
45
+ else {
46
+ for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
47
+ sum[`Monto${i}`] = this.cleanNumber(sum[`Monto${i}`]) + this.cleanNumber(item[`Monto${i}`]);
48
+ destino[`Monto${i}`] = sum[`Monto${i}`];
49
+ }
50
+ }
51
+ return sum;
52
+ }, null);
53
+ return destino;
54
+ }
55
+ execute(data) {
56
+ this.data = data;
57
+ this.calcularDeuda({ rubro1: 'ACT_DEU_10001', rubro2: 'ACT_DEU_10002', rubro3: 'ACT_DEU_10003' });
58
+ this.sumarizador({ rubro1: 'ACT_DEU_10001', rubro2: 'ACT_DEU_10100' });
59
+ this.sumarizador({ rubro1: 'ACT_DEU_10002', rubro2: 'ACT_DEU_10200' });
60
+ this.sumarizador({ rubro1: 'ACT_DEU_10003', rubro2: 'ACT_DEU_10300' });
61
+ this.calcularDeuda({ rubro1: 'ACT_DEU_20001', rubro2: 'ACT_DEU_20002', rubro3: 'ACT_DEU_20003' });
62
+ this.calcularDeuda({ rubro1: 'ACT_DEU_30001', rubro2: 'ACT_DEU_30002', rubro3: 'ACT_DEU_30003' });
63
+ this.sumarizador({ rubro1: 'ACT_DEU_30001', rubro2: 'ACT_DEU_30100' });
64
+ this.sumarizador({ rubro1: 'ACT_DEU_30002', rubro2: 'ACT_DEU_30200' });
65
+ this.sumarizador({ rubro1: 'ACT_DEU_30003', rubro2: 'ACT_DEU_30300' });
66
+ this.calcularDeuda({ rubro1: 'ACT_DEU_40001', rubro2: 'ACT_DEU_40002', rubro3: 'ACT_DEU_40003' });
67
+ this.sumarizador({ rubro1: 'ACT_DEU_40001', rubro2: 'ACT_DEU_40100' });
68
+ this.sumarizador({ rubro1: 'ACT_DEU_40002', rubro2: 'ACT_DEU_40200' });
69
+ this.sumarizador({ rubro1: 'ACT_DEU_40003', rubro2: 'ACT_DEU_40300' });
70
+ this.calcularDeudaFilaPorcentaje({ rubro1: 'ACT_DEU_50001', rubro2: 'ACT_DEU_50002', rubro3: 'ACT_DEU_50003' });
71
+ this.calcularDeudaFilaPorcentaje({ rubro1: 'ACT_DEU_60001', rubro2: 'ACT_DEU_60002', rubro3: 'ACT_DEU_60003' });
72
+ return this.data.Deudas;
73
+ }
74
+ }
75
+ exports.default = DeudasStrategy;
@@ -1,5 +1,9 @@
1
- import { Strategy } from "../../strategy.interface";
1
+ import { Strategy } from '../../strategy.interface';
2
2
  export default class SupuestosStrategy implements Strategy {
3
+ cantidadGestiones: number;
4
+ data: any;
3
5
  constructor();
6
+ private anadirPrecalculo;
7
+ private cleanNumber;
4
8
  execute(data: any): any;
5
9
  }
@@ -1,28 +1,60 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  class SupuestosStrategy {
4
+ cantidadGestiones;
5
+ data;
4
6
  constructor() {
7
+ this.cantidadGestiones = 0;
8
+ this.data = {};
5
9
  }
10
+ //@ts-ignore
11
+ anadirPrecalculo(origen, rubroOrigen, rubroDestino, percent = false) {
12
+ if (this.cantidadGestiones != 0) {
13
+ //@ts-ignore
14
+ const origenRow = origen.find((item) => item.RubroId == rubroOrigen);
15
+ //@ts-ignore
16
+ const destinoRow = this.data.find((item) => item.RubroId == rubroDestino);
17
+ if (!percent)
18
+ destinoRow.Gestion1 = this.cleanNumber(origenRow[`Gestion${this.cantidadGestiones}`]);
19
+ else {
20
+ destinoRow.Gestion1 = this.cleanNumber(origenRow[`Gestion${this.cantidadGestiones}%`] / 100);
21
+ destinoRow.Gestion1 =
22
+ Math.round(destinoRow.Gestion1 * 100) / 100;
23
+ }
24
+ }
25
+ }
26
+ cleanNumber = (data) => {
27
+ if (!data)
28
+ return 0;
29
+ else
30
+ return Math.round(parseFloat(data) * 100) / 100;
31
+ };
6
32
  execute(data) {
7
- let rowDeprecCoef = data.Supuestos.find((item) => item.RubroId == 'ACT_SUP_10402');
8
- let rowDeprecValue = data.Supuestos.find((item) => item.RubroId == 'ACT_SUP_10403');
9
- let rowDeprecCoefLeasing = data.Supuestos.find((item) => item.RubroId == 'ACT_SUP_10404');
10
- let rowDeprecValueLeasing = data.Supuestos.find((item) => item.RubroId == 'ACT_SUP_10405');
11
- const cleanNumber = (data) => {
12
- if (!data)
13
- return 0;
14
- else
15
- return Math.round(parseFloat(data) * 100) / 100;
16
- };
33
+ this.data = data.Supuestos;
34
+ this.cantidadGestiones = data.CantidadGestiones;
35
+ const rowDeprecCoef = data.Supuestos.find((item) => item.RubroId == 'ACT_SUP_10402');
36
+ const rowDeprecValue = data.Supuestos.find((item) => item.RubroId == 'ACT_SUP_10403');
37
+ const rowDeprecCoefLeasing = data.Supuestos.find((item) => item.RubroId == 'ACT_SUP_10404');
38
+ const rowDeprecValueLeasing = data.Supuestos.find((item) => item.RubroId == 'ACT_SUP_10405');
17
39
  for (let i = 1; i <= data.CantidadProyeccion; i++) {
18
40
  const activosFijosNetos = data.BalanceProyectado.find((item) => item.Correlativo == i && item.RubroId == 'BP_ACT_EF_12003');
19
41
  const activosPorArrendamiento = data.BalanceProyectado.find((item) => item.Correlativo == i && item.RubroId == 'BP_ACT_EF_12004');
20
42
  if (rowDeprecValue != null)
21
- rowDeprecValue[`Gestion${i}`] = cleanNumber(rowDeprecCoef[`Gestion${i}`]) * cleanNumber(activosFijosNetos.Monto);
43
+ rowDeprecValue[`Gestion${i}`] =
44
+ this.cleanNumber(rowDeprecCoef[`Gestion${i}`]) *
45
+ this.cleanNumber(activosFijosNetos.Monto);
22
46
  if (rowDeprecValueLeasing != null)
23
- rowDeprecValueLeasing[`Gestion${i}`] = cleanNumber(rowDeprecCoefLeasing[`Gestion${i}`]) * cleanNumber(activosPorArrendamiento.Monto);
47
+ rowDeprecValueLeasing[`Gestion${i}`] =
48
+ this.cleanNumber(rowDeprecCoefLeasing[`Gestion${i}`]) *
49
+ this.cleanNumber(activosPorArrendamiento.Monto);
24
50
  }
25
- return data.Supuestos;
51
+ this.anadirPrecalculo(data.EEFF.eerr, 'ACT_EF_42000', 'ACT_SUP_10101');
52
+ this.anadirPrecalculo(data.EEFF.eerr, 'ACT_EF_44003', 'ACT_SUP_10104');
53
+ this.anadirPrecalculo(data.EEFF.eerr, 'ACT_EF_42001', 'ACT_SUP_10201', true);
54
+ this.anadirPrecalculo(data.EEFF.eerr, 'ACT_EF_43001', 'ACT_SUP_10202', true);
55
+ this.anadirPrecalculo(data.EEFF.eerr, 'ACT_EF_44004', 'ACT_SUP_10203');
56
+ this.anadirPrecalculo(data.EEFF.balance, 'ACT_EF_11008', 'ACT_SUP_20102');
57
+ return this.data;
26
58
  }
27
59
  }
28
60
  exports.default = SupuestosStrategy;
@@ -0,0 +1,19 @@
1
+ import { Strategy } from '../../strategy.interface';
2
+ type parametros = {
3
+ patrimonio: number;
4
+ ingresos: number;
5
+ personal: number;
6
+ };
7
+ export default class ItapStrategy implements Strategy {
8
+ constructor();
9
+ extraerDelConsolidado: (consolidado: any, personalOcupado: number) => parametros;
10
+ execute(data: any): {
11
+ Indice: number;
12
+ Ingresos: number;
13
+ Patrimonio: number;
14
+ Tamano: any;
15
+ Calculado: number;
16
+ Message: string;
17
+ };
18
+ }
19
+ export {};
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class ItapStrategy {
4
+ constructor() { }
5
+ extraerDelConsolidado = (consolidado, personalOcupado) => {
6
+ let result = {
7
+ patrimonio: 0,
8
+ ingresos: 0,
9
+ personal: personalOcupado
10
+ };
11
+ const rango = consolidado.balance[0].Rango;
12
+ result.patrimonio = consolidado.eerr.find((item) => item.RubroId == 'ACT_CN_40001')[`MontoTotal_${rango}`];
13
+ result.ingresos = consolidado.balance.find((item) => item.RubroId == 'ACT_CN_30000')[`MontoTotal_${rango}`];
14
+ return result;
15
+ };
16
+ execute(data) {
17
+ let indice = 0;
18
+ let tamano = 0;
19
+ const constanteComercios = data.Constantes.comercios;
20
+ const constanteServicios = data.Constantes.servicios;
21
+ const extracto = this.extraerDelConsolidado(data.Consolidado, data.PersonalOcupado);
22
+ const elegido = (data.Tipo == 'PRODUCCION') ? constanteComercios : constanteServicios;
23
+ if (elegido.ingresos > 0 && elegido.patrimonio > 0 && elegido.personal > 0) {
24
+ indice = Math.pow((extracto.ingresos / elegido.ingresos) *
25
+ (extracto.patrimonio / elegido.patrimonio) *
26
+ (extracto.personal / elegido.personal), (1 / 3));
27
+ }
28
+ if (indice <= 0.035)
29
+ tamano = 'Microempresa';
30
+ else if (indice <= 0.115)
31
+ tamano = 'Pequeña Empresa';
32
+ else if (indice <= 1)
33
+ tamano = 'Mediana Empresa';
34
+ else
35
+ tamano = 'Gran Empresa';
36
+ return { Indice: indice, Ingresos: extracto.ingresos, Patrimonio: extracto.patrimonio, Tamano: tamano, Calculado: 1, Message: '' };
37
+ }
38
+ }
39
+ exports.default = ItapStrategy;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bdpformulas",
3
- "version": "1.0.65",
3
+ "version": "1.0.68",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",