bdpformulas 1.0.84 → 1.0.85

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.
@@ -0,0 +1,10 @@
1
+ export default class AdministacionLineas {
2
+ private deudas;
3
+ private lineas;
4
+ constructor(deudas: any, lineas: any);
5
+ getNewDeudas(): any;
6
+ private getLineasXRubro;
7
+ private getLineasXRubro2;
8
+ private mapDataToLineas;
9
+ private getInitLinea;
10
+ }
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class AdministacionLineas {
4
+ deudas;
5
+ lineas;
6
+ constructor(deudas, lineas) {
7
+ this.deudas = deudas;
8
+ this.lineas = lineas || [];
9
+ }
10
+ getNewDeudas() {
11
+ let result = [];
12
+ result.push(...this.getLineasXRubro('ACT_DEU_71001', 'ACT_DEU_41000', 'ACT_DEU_41001', 'ACT_DEU_41002', 'ACT_DEU_41003'));
13
+ result.push(...this.getLineasXRubro('ACT_DEU_71002', 'ACT_DEU_20000', 'ACT_DEU_20001', 'ACT_DEU_20002', 'ACT_DEU_20003'));
14
+ result.push(...this.getLineasXRubro2('ACT_DEU_71003', 'ACT_DEU_50001'));
15
+ return result;
16
+ }
17
+ //@ts-ignore
18
+ getLineasXRubro(definition, rubroId, rubroId2, rubroId3, rubroId4) {
19
+ const secuencias = this.deudas.filter((item) => (item.RubroId === rubroId ||
20
+ item.RubroId === rubroId2 ||
21
+ item.RubroId === rubroId3 ||
22
+ item.RubroId === rubroId4)).
23
+ reduce((acc, item) => {
24
+ if (!acc.has(`${item.Secuencia}`))
25
+ acc.set(`${item.Secuencia}`, [item]);
26
+ else
27
+ acc.get(`${item.Secuencia}`).push(item);
28
+ return acc;
29
+ }, new Map());
30
+ let result = [];
31
+ for (const [key, items] of secuencias) {
32
+ let linea = this.getInitLinea();
33
+ linea.uuid = `${definition}_${key}`;
34
+ linea.rubroId = definition;
35
+ linea.entidad = items.find((item) => item.RubroId === rubroId)?.Descripcion || '';
36
+ const monto1 = items.find((item) => item.RubroId === rubroId2)?.Monto1 || 0;
37
+ const monto2 = items.find((item) => item.RubroId === rubroId3)?.Monto1 || 0;
38
+ linea.monto = Math.round(parseFloat(monto1) + parseFloat(monto2) * 100) / 100;
39
+ linea = this.mapDataToLineas(linea);
40
+ linea.saldo = linea.monto - linea.usado;
41
+ result.push(linea);
42
+ }
43
+ return result;
44
+ }
45
+ //@ts-ignore
46
+ getLineasXRubro2(definition, rubroId) {
47
+ const secuencias = this.deudas.filter((item) => (item.RubroId === rubroId)).
48
+ reduce((acc, item) => {
49
+ if (!acc.has(`${item.Secuencia}`))
50
+ acc.set(`${item.Secuencia}`, [item]);
51
+ else
52
+ acc.get(`${item.Secuencia}`).push(item);
53
+ return acc;
54
+ }, new Map());
55
+ let result = [];
56
+ for (const [key, items] of secuencias) {
57
+ let linea = this.getInitLinea();
58
+ linea.uuid = `${definition}_${key}`;
59
+ linea.rubroId = definition;
60
+ linea.entidad = items.find((item) => item.RubroId === rubroId)?.Descripcion || '';
61
+ const monto1 = items.find((item) => item.RubroId === rubroId)?.Monto1 || 0;
62
+ const monto2 = items.find((item) => item.RubroId === rubroId)?.Monto1 || 0;
63
+ linea.monto = Math.round(parseFloat(monto1) + parseFloat(monto2) * 100) / 100;
64
+ linea = this.mapDataToLineas(linea);
65
+ linea.saldo = linea.monto - linea.usado;
66
+ linea.interes = Math.round(linea.montoConVenc * linea.interes / 100 * 100) / 100;
67
+ result.push(linea);
68
+ }
69
+ return result;
70
+ }
71
+ mapDataToLineas(linea) {
72
+ linea.estado = this.lineas.find((item) => item.uuid === linea.uuid)?.estado || null;
73
+ linea.destino = this.lineas.find((item) => item.uuid === linea.uuid)?.destino || null;
74
+ linea.usado = this.lineas.find((item) => item.uuid === linea.uuid)?.usado || null;
75
+ linea.fechaVenc = this.lineas.find((item) => item.uuid === linea.uuid)?.fechaVenc || null;
76
+ linea.montoConVenc = this.lineas.find((item) => item.uuid === linea.uuid)?.montoConVenc || null;
77
+ linea.tasa = this.lineas.find((item) => item.uuid === linea.uuid)?.tasa || null;
78
+ linea.interes = this.lineas.find((item) => item.uuid === linea.uuid)?.interes || null;
79
+ linea.montoConVenc = Math.round(parseFloat(linea.montoConVenc) * 100) / 100;
80
+ linea.tasa = Math.round(parseFloat(linea.tasa) * 100) / 100;
81
+ linea.interes = Math.round(parseFloat(linea.interes) * 100) / 100;
82
+ return linea;
83
+ }
84
+ getInitLinea() {
85
+ return {
86
+ uuid: '',
87
+ entidad: null,
88
+ destino: null,
89
+ estado: '',
90
+ monto: 0,
91
+ usado: 0,
92
+ saldo: 0,
93
+ fechaVenc: '',
94
+ detalle: 0,
95
+ montoConVenc: 0,
96
+ tasa: 0,
97
+ interes: 0
98
+ };
99
+ }
100
+ }
101
+ exports.default = AdministacionLineas;
@@ -0,0 +1,5 @@
1
+ export default class AdministracionLineasManuales {
2
+ private lineas;
3
+ constructor(lineas: any);
4
+ getLineasManuales(): any;
5
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class AdministracionLineasManuales {
4
+ lineas;
5
+ constructor(lineas) {
6
+ this.lineas = lineas || [];
7
+ }
8
+ getLineasManuales() {
9
+ if (this.lineas && this.lineas.length > 0) {
10
+ for (let linea of this.lineas) {
11
+ linea.monto = Math.round(parseFloat(linea.monto) * 100) / 100;
12
+ linea.usado = Math.round(parseFloat(linea.usado) * 100) / 100;
13
+ linea.saldo = linea.monto - linea.usado;
14
+ }
15
+ }
16
+ return this.lineas;
17
+ }
18
+ }
19
+ exports.default = AdministracionLineasManuales;
@@ -0,0 +1,20 @@
1
+ export default class AplicacionesCuadroAlternativo {
2
+ private deudas;
3
+ private proyecta;
4
+ private calculoAuxiliar1;
5
+ private calculoAuxiliar2;
6
+ private result;
7
+ private admLineas;
8
+ private resumenFinanciamiento;
9
+ private cantidadProyeccion;
10
+ constructor(deudas: any, cantidadProyeccion: number, proyecta: boolean, admLineas: any, resumenFinanciamiento: any, calculoAuxiliar1: number, calculoAuxiliar2: number);
11
+ getCalculation(): void;
12
+ private addMontos;
13
+ caculate001(row: any): void;
14
+ private calculateCustom;
15
+ private caculate002;
16
+ private caculate003;
17
+ private caculate004;
18
+ private caculate005;
19
+ private caculate006;
20
+ }
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class AplicacionesCuadroAlternativo {
4
+ ///@ts-ignore
5
+ deudas;
6
+ proyecta;
7
+ calculoAuxiliar1;
8
+ calculoAuxiliar2;
9
+ result;
10
+ admLineas;
11
+ resumenFinanciamiento;
12
+ cantidadProyeccion;
13
+ constructor(deudas, cantidadProyeccion, proyecta, admLineas, resumenFinanciamiento, calculoAuxiliar1, calculoAuxiliar2) {
14
+ this.deudas = deudas;
15
+ this.proyecta = proyecta;
16
+ this.calculoAuxiliar1 = calculoAuxiliar1;
17
+ this.calculoAuxiliar2 = calculoAuxiliar2;
18
+ this.admLineas = admLineas;
19
+ this.cantidadProyeccion = cantidadProyeccion;
20
+ this.resumenFinanciamiento = resumenFinanciamiento;
21
+ this.result = [];
22
+ }
23
+ getCalculation() {
24
+ this.result.push({ id: 'ACT_DEU_76001', grupo: 'TOTAL', descripction: 'KO - Línea de Crédito 100% KO' });
25
+ this.result.push({ id: 'ACT_DEU_76002', grupo: 'TOTAL', descripction: 'KO - Prestamo Directo' });
26
+ this.result.push({ id: 'ACT_DEU_76003', grupo: 'TOTAL', descripction: 'KI - Prestamo Directo' });
27
+ this.result.push({ id: 'ACT_DEU_76004', grupo: 'TOTAL', descripction: 'OTROS - Pagares, Bonos, Etc.' });
28
+ this.result.push({ id: 'ACT_DEU_76005', grupo: 'TOTAL', descripction: 'KI - Leasing Financiero' });
29
+ this.result.push({ id: 'ACT_DEU_76006', grupo: 'TOTAL', descripction: 'KI - KO - Línea de Crédito Mixta' });
30
+ for (const row in this.result) {
31
+ this.caculate001(row);
32
+ this.caculate002(row);
33
+ this.caculate003(row);
34
+ this.caculate004(row);
35
+ this.caculate005(row);
36
+ this.caculate006(row);
37
+ }
38
+ }
39
+ addMontos(row) {
40
+ for (let i = 1; i <= this.cantidadProyeccion; i++) {
41
+ row[`Monto${i}`] = 0;
42
+ }
43
+ }
44
+ caculate001(row) {
45
+ this.addMontos(row);
46
+ const filterLineas = this.admLineas.filter((item) => item.rubroId = 'ACT_DEU_71003');
47
+ for (let item of filterLineas) {
48
+ let nuevo = {};
49
+ nuevo.id = row.id;
50
+ nuevo.grupo = item.uuid;
51
+ nuevo.descripction = item.entidad;
52
+ if (item.estado == 'EXISTENTE')
53
+ nuevo.Monto1 = parseFloat(item.saldo);
54
+ else
55
+ nuevo.Monto1 = parseFloat(item.monto);
56
+ row.Monto1 += nuevo.Monto1;
57
+ for (let i = 2; i <= this.cantidadProyeccion; i++) {
58
+ const codes = item.uuid.split('_');
59
+ const deudaLinea = this.deudas.find((item) => (item.RubroId == 'ACT_DEU_50001'
60
+ && item.Secuencia == parseInt(codes[1])));
61
+ nuevo[`Monto${i}`] = deudaLinea[`Monto${i}`] - deudaLinea[`Monto${i - 1}`];
62
+ nuevo[`Monto${i}`] = Math.round(parseFloat(nuevo[`Monto${i}`]) * 100) / 100;
63
+ this.result.push(nuevo);
64
+ row[`Monto${i}`] += nuevo[`Monto${i}`];
65
+ }
66
+ }
67
+ }
68
+ calculateCustom(row, rubros, destino) {
69
+ this.addMontos(row);
70
+ for (let rubro in rubros) {
71
+ const filtered = this.deudas.filter((item) => (item.RubroId == rubro[0] && item.Destino == destino));
72
+ for (const debt of filtered) {
73
+ const companion = this.deudas.find((item) => (item.RubroId == rubro[1] && item.Secuencia == debt.Secuencia
74
+ && item.Operacion == 'NUEVA'));
75
+ let nuevo = {};
76
+ nuevo.id = row.id;
77
+ nuevo.grupo = debt.UUID;
78
+ nuevo.descripction = debt.Descripcion;
79
+ for (let i = 1; i <= this.cantidadProyeccion; i++) {
80
+ if (i == 1 || (i > 1 && parseFloat(debt[`Monto${i - 1}`]) + parseFloat(companion[`Monto${i - 1}`]) == 0)) {
81
+ nuevo[`Monto${i}`] = parseFloat(debt[`Monto${i}`]) + parseFloat(companion[`Monto${i}`]);
82
+ nuevo[`Monto${i}`] = Math.round(parseFloat(nuevo[`Monto${i}`]) * 100) / 100;
83
+ }
84
+ row[`Monto${i}`] += nuevo[`Monto${i}`];
85
+ }
86
+ }
87
+ }
88
+ }
89
+ caculate002(row) {
90
+ this.calculateCustom(row, [['ACT_DEU_10001', 'ACT_DEU_10002'], ['ACT_DEU_40001', 'ACT_DEU_40002']], 'KO');
91
+ if (this.proyecta)
92
+ row.Monto1 = row.Monto1 - this.calculoAuxiliar1;
93
+ const koPorcionBDP = this.resumenFinanciamiento.find((item) => item.id == 'ACT_DEU_75001');
94
+ const kiPorcionBDP = this.resumenFinanciamiento.find((item) => item.id == 'ACT_DEU_75002');
95
+ for (let i = 2; i <= this.cantidadProyeccion; i++) {
96
+ row[`Monto${i}`] = row[`Monto${i}`] - (koPorcionBDP[`Monto${i}`] + kiPorcionBDP[`Monto${i}`]);
97
+ }
98
+ }
99
+ caculate003(row) {
100
+ this.calculateCustom(row, [['ACT_DEU_10001', 'ACT_DEU_10002'], ['ACT_DEU_40001', 'ACT_DEU_40002']], 'KI');
101
+ }
102
+ caculate004(row) {
103
+ this.calculateCustom(row, [['ACT_DEU_10001', 'ACT_DEU_10002']], 'OTROS');
104
+ }
105
+ caculate005(row) {
106
+ this.calculateCustom(row, [['ACT_DEU_30001', 'ACT_DEU_30002']], 'KI');
107
+ }
108
+ caculate006(row) {
109
+ this.addMontos(row);
110
+ const rubros = [['ACT_DEU_41001', 'ACT_DEU_41002'], ['ACT_DEU_20001', 'ACT_DEU_20002']];
111
+ for (let rubro in rubros) {
112
+ const filtered = this.deudas.filter((item) => (item.RubroId == rubro[0]));
113
+ for (const debt of filtered) {
114
+ const companion = this.deudas.find((item) => (item.RubroId == rubro[1] && item.Secuencia == debt.Secuencia
115
+ && item.Operacion == 'NUEVA'));
116
+ let nuevo = {};
117
+ nuevo.id = row.id;
118
+ nuevo.grupo = debt.UUID;
119
+ nuevo.descripction = debt.Descripcion;
120
+ for (let i = 1; i <= this.cantidadProyeccion; i++) {
121
+ if (i == 1) {
122
+ nuevo[`Monto${i}`] = parseFloat(debt[`Monto${i}`]) + parseFloat(companion[`Monto${i}`]);
123
+ }
124
+ if (i > 1) {
125
+ nuevo[`Monto${i}`] = (parseFloat(companion[`Monto${i}`]) - parseFloat(companion[`Monto${i - 1}`])) + parseFloat(debt[`Monto${i}`]);
126
+ }
127
+ nuevo[`Monto${i}`] = Math.round(parseFloat(nuevo[`Monto${i}`]) * 100) / 100;
128
+ row[`Monto${i}`] += nuevo[`Monto${i}`];
129
+ }
130
+ }
131
+ }
132
+ if (this.proyecta)
133
+ row.Monto1 = row.Monto1 - this.calculoAuxiliar2;
134
+ }
135
+ }
136
+ exports.default = AplicacionesCuadroAlternativo;
@@ -0,0 +1,13 @@
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
+ calcularDeudaGridLinea(params: any): void;
9
+ sumarizador(params: any): any;
10
+ execute(data: any): any;
11
+ getAdministracionLineas(admLineas: any): any;
12
+ getAdministracionLineasManuales(lineasManuales: any): any;
13
+ }
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const administracionLinea_1 = __importDefault(require("./administracionLinea"));
7
+ const administracionLineaManuales_1 = __importDefault(require("./administracionLineaManuales"));
8
+ class DeudasStrategy {
9
+ data;
10
+ constructor() {
11
+ this.data = {};
12
+ }
13
+ cleanNumber = (data) => {
14
+ if (!data)
15
+ return 0;
16
+ else
17
+ return Math.round(parseFloat(data) * 100) / 100;
18
+ };
19
+ calcularDeuda(params) {
20
+ let i = 1;
21
+ do {
22
+ let row1 = this.data.Deudas.find((item) => item.RubroId == params.rubro1 && item.Secuencia == i);
23
+ let row2 = this.data.Deudas.find((item) => item.RubroId == params.rubro2 && item.Secuencia == i);
24
+ let row3 = this.data.Deudas.find((item) => item.RubroId == params.rubro3 && item.Secuencia == i);
25
+ for (let j = 1; j <= this.data.CantidadProyeccion; j++) {
26
+ if (row3[`Monto${j}`] == 0) {
27
+ row3[`Monto${j}`] = (this.cleanNumber(row1[`Monto${j}`]) + this.cleanNumber(row2[`Monto${j}`])) * this.cleanNumber(row3.Variable) / 100;
28
+ row3[`Monto${j}`] = Math.round(row3[`Monto${j}`] * 100) / 100;
29
+ }
30
+ }
31
+ i++;
32
+ } while (this.data.Deudas.find((item) => item.RubroId == params.rubro1 && item.Secuencia == i));
33
+ }
34
+ calcularDeudaFilaPorcentaje(params) {
35
+ let i = 1;
36
+ do {
37
+ let row1 = this.data.Deudas.find((item) => item.RubroId == params.rubro1 && item.Secuencia == i);
38
+ let row2 = this.data.Deudas.find((item) => item.RubroId == params.rubro2 && item.Secuencia == i);
39
+ let row3 = this.data.Deudas.find((item) => item.RubroId == params.rubro3 && item.Secuencia == i);
40
+ for (let j = 1; j <= this.data.CantidadProyeccion; j++) {
41
+ if (row3[`Monto${j}`] == 0) {
42
+ row3[`Monto${j}`] = (this.cleanNumber(row1[`Monto${j}`]) * this.cleanNumber(row2[`Monto${j}`]) / 100);
43
+ row3[`Monto${j}`] = Math.round(row3[`Monto${j}`] * 100) / 100;
44
+ }
45
+ }
46
+ i++;
47
+ } while (this.data.Deudas.find((item) => item.RubroId == params.rubro1 && item.Secuencia == i));
48
+ }
49
+ calcularDeudaGridLinea(params) {
50
+ let rows1 = this.data.Deudas.filter((item) => item.RubroId == params.rubro1);
51
+ let row2 = this.data.Deudas.find((item) => item.RubroId == params.rubro2 && item.Secuencia == 1);
52
+ let row3 = this.data.Deudas.find((item) => item.RubroId == params.rubro3 && item.Secuencia == 1);
53
+ //sumarizando
54
+ let row1 = rows1.reduce((sum, item) => {
55
+ if (!sum)
56
+ sum = { ...item };
57
+ else {
58
+ for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
59
+ sum[`Monto${i}`] = this.cleanNumber(sum[`Monto${i}`]) + this.cleanNumber(item[`Monto${i}`]);
60
+ }
61
+ }
62
+ return sum;
63
+ }, null);
64
+ for (let j = 2; j <= this.data.CantidadProyeccion; j++) {
65
+ if (row3[`Monto${j}`] == 0) {
66
+ row3[`Monto${j}`] = (this.cleanNumber(row1[`Monto${j - 1}`]) * this.cleanNumber(row2[`Monto${j - 1}`]) / 100);
67
+ row3[`Monto${j}`] = Math.round(row3[`Monto${j}`] * 100) / 100;
68
+ }
69
+ }
70
+ }
71
+ sumarizador(params) {
72
+ let destino = this.data.Deudas.find((item) => item.RubroId == params.rubro2);
73
+ this.data.Deudas.filter((item) => item.RubroId == params.rubro1).reduce((sum, item) => {
74
+ if (!sum)
75
+ sum = { ...item };
76
+ else {
77
+ for (let i = 1; i <= this.data.CantidadProyeccion; i++) {
78
+ sum[`Monto${i}`] = this.cleanNumber(sum[`Monto${i}`]) + this.cleanNumber(item[`Monto${i}`]);
79
+ destino[`Monto${i}`] = sum[`Monto${i}`];
80
+ }
81
+ }
82
+ return sum;
83
+ }, null);
84
+ return destino;
85
+ }
86
+ execute(data) {
87
+ this.data = data;
88
+ this.calcularDeuda({ rubro1: 'ACT_DEU_10001', rubro2: 'ACT_DEU_10002', rubro3: 'ACT_DEU_10003' });
89
+ this.sumarizador({ rubro1: 'ACT_DEU_10001', rubro2: 'ACT_DEU_10100' });
90
+ this.sumarizador({ rubro1: 'ACT_DEU_10002', rubro2: 'ACT_DEU_10200' });
91
+ this.sumarizador({ rubro1: 'ACT_DEU_10003', rubro2: 'ACT_DEU_10300' });
92
+ this.calcularDeuda({ rubro1: 'ACT_DEU_20001', rubro2: 'ACT_DEU_20002', rubro3: 'ACT_DEU_20003' });
93
+ this.sumarizador({ rubro1: 'ACT_DEU_20001', rubro2: 'ACT_DEU_20100' });
94
+ this.sumarizador({ rubro1: 'ACT_DEU_20002', rubro2: 'ACT_DEU_20200' });
95
+ this.sumarizador({ rubro1: 'ACT_DEU_20003', rubro2: 'ACT_DEU_20300' });
96
+ this.calcularDeuda({ rubro1: 'ACT_DEU_30001', rubro2: 'ACT_DEU_30002', rubro3: 'ACT_DEU_30003' });
97
+ this.sumarizador({ rubro1: 'ACT_DEU_30001', rubro2: 'ACT_DEU_30100' });
98
+ this.sumarizador({ rubro1: 'ACT_DEU_30002', rubro2: 'ACT_DEU_30200' });
99
+ this.sumarizador({ rubro1: 'ACT_DEU_30003', rubro2: 'ACT_DEU_30300' });
100
+ this.calcularDeuda({ rubro1: 'ACT_DEU_40001', rubro2: 'ACT_DEU_40002', rubro3: 'ACT_DEU_40003' });
101
+ this.sumarizador({ rubro1: 'ACT_DEU_40001', rubro2: 'ACT_DEU_40100' });
102
+ this.sumarizador({ rubro1: 'ACT_DEU_40002', rubro2: 'ACT_DEU_40200' });
103
+ this.sumarizador({ rubro1: 'ACT_DEU_40003', rubro2: 'ACT_DEU_40300' });
104
+ this.calcularDeuda({ rubro1: 'ACT_DEU_41001', rubro2: 'ACT_DEU_41002', rubro3: 'ACT_DEU_41003' });
105
+ this.calcularDeudaGridLinea({ rubro1: 'ACT_DEU_50001', rubro2: 'ACT_DEU_50002', rubro3: 'ACT_DEU_50003' });
106
+ this.calcularDeudaFilaPorcentaje({ rubro1: 'ACT_DEU_60001', rubro2: 'ACT_DEU_60002', rubro3: 'ACT_DEU_60003' });
107
+ return this.data.Deudas;
108
+ }
109
+ getAdministracionLineas(admLineas) {
110
+ const calculator = new administracionLinea_1.default(this.data.Deudas, admLineas);
111
+ return calculator.getNewDeudas();
112
+ }
113
+ getAdministracionLineasManuales(lineasManuales) {
114
+ const calculator = new administracionLineaManuales_1.default(lineasManuales);
115
+ return calculator.getLineasManuales();
116
+ }
117
+ }
118
+ exports.default = DeudasStrategy;
@@ -0,0 +1,31 @@
1
+ export default class resumenFinanciamiento {
2
+ private deudas;
3
+ private cantidadProyeccion;
4
+ private result;
5
+ constructor(deudas: any, cantidadProyeccion: number);
6
+ generateResumen(): void;
7
+ private addRubros;
8
+ private generateFilter;
9
+ private generateKOBDP;
10
+ private generateKIBDP;
11
+ private lineaMixtaBDPSam;
12
+ private porcionLPBdSam;
13
+ private generateKOOtrasEFs;
14
+ private generateKIOtrasEFs;
15
+ private generateOtrosOtrasEFs;
16
+ private lineaMixtaOtrosEIfs;
17
+ private porcioLpOtrasEIFs;
18
+ generateIntComPrestamosDirectos(row: any): void;
19
+ generateIntComLinea100KO(row: any): void;
20
+ generateIntComLineaMixta(row: any): void;
21
+ generateIntComInteresManual(row: any): void;
22
+ generateTotalInteresBdpOtras(row: any): void;
23
+ generateLeasingCP(row: any): void;
24
+ generateLeasingLP(row: any): void;
25
+ generateInteresLeasing(row: any): void;
26
+ generateInteresLeasingManual(row: any): void;
27
+ totalPorcionCPBDP(row: any): void;
28
+ totalPorcionCPOtas(row: any): void;
29
+ totalPorcionLPBdp(row: any): void;
30
+ totalPorcionLPOtras(row: any): void;
31
+ }
@@ -0,0 +1,190 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class resumenFinanciamiento {
4
+ deudas;
5
+ cantidadProyeccion;
6
+ result;
7
+ constructor(deudas, cantidadProyeccion) {
8
+ this.deudas = deudas;
9
+ this.cantidadProyeccion = cantidadProyeccion;
10
+ this.result = [];
11
+ }
12
+ generateResumen() {
13
+ this.addRubros();
14
+ for (let item of this.result) {
15
+ if (item.id == 'ACT_DEU_75001')
16
+ this.generateKOBDP(item);
17
+ if (item.id == 'ACT_DEU_75002')
18
+ this.generateKIBDP(item);
19
+ if (item.id == 'ACT_DEU_75003')
20
+ this.lineaMixtaBDPSam(item);
21
+ if (item.id == 'ACT_DEU_75004')
22
+ this.porcionLPBdSam(item);
23
+ if (item.id == 'ACT_DEU_75101')
24
+ this.generateKOOtrasEFs(item);
25
+ if (item.id == 'ACT_DEU_75102')
26
+ this.generateKIOtrasEFs(item);
27
+ if (item.id == 'ACT_DEU_75103')
28
+ this.generateOtrosOtrasEFs(item);
29
+ if (item.id == 'ACT_DEU_75104')
30
+ this.lineaMixtaOtrosEIfs(item);
31
+ if (item.id == 'ACT_DEU_75105')
32
+ this.porcioLpOtrasEIFs(item);
33
+ if (item.id == 'ACT_DEU_75201')
34
+ this.generateIntComPrestamosDirectos(item);
35
+ if (item.id == 'ACT_DEU_75202')
36
+ this.generateIntComLinea100KO(item);
37
+ if (item.id == 'ACT_DEU_75203')
38
+ this.generateIntComLineaMixta(item);
39
+ if (item.id == 'ACT_DEU_75204')
40
+ this.generateIntComInteresManual(item);
41
+ if (item.id == 'ACT_DEU_75205')
42
+ this.generateTotalInteresBdpOtras(item);
43
+ if (item.id == 'ACT_DEU_75301')
44
+ this.generateLeasingCP(item);
45
+ if (item.id == 'ACT_DEU_75302')
46
+ this.generateLeasingLP(item);
47
+ if (item.id == 'ACT_DEU_75303')
48
+ this.generateInteresLeasing(item);
49
+ if (item.id == 'ACT_DEU_75304')
50
+ this.generateInteresLeasingManual(item);
51
+ if (item.id == 'ACT_DEU_75401')
52
+ this.totalPorcionCPBDP(item);
53
+ if (item.id == 'ACT_DEU_75402')
54
+ this.totalPorcionCPOtas(item);
55
+ if (item.id == 'ACT_DEU_75403')
56
+ this.totalPorcionLPBdp(item);
57
+ if (item.id == 'ACT_DEU_75404')
58
+ this.totalPorcionLPOtras(item);
59
+ }
60
+ }
61
+ addRubros() {
62
+ this.result.push({ id: 'ACT_DEU_75001', descripction: 'K0 - Porción CP - BDP SAM' });
63
+ this.result.push({ id: 'ACT_DEU_75002', descripction: 'KI - Porción CP - BDP SAM' });
64
+ this.result.push({ id: 'ACT_DEU_75003', descripction: 'L/C Mixta - Porción CP - BDP SAM' });
65
+ this.result.push({ id: 'ACT_DEU_75004', descripction: 'Porción LP - BDP SAM' });
66
+ this.result.push({ id: 'ACT_DEU_75101', descripction: 'K0 - Porción CP - Otras EIFs' });
67
+ this.result.push({ id: 'ACT_DEU_75102', descripction: 'KI - Porción CP - Otras EIFs' });
68
+ this.result.push({ id: 'ACT_DEU_75103', descripction: 'Otros - Porción CP - Otras EIFs' });
69
+ this.result.push({ id: 'ACT_DEU_75104', descripction: 'L/C Mixta - Porción CP - Otras EIFs' });
70
+ this.result.push({ id: 'ACT_DEU_75105', descripction: 'Porción LP - Otras EIFs' });
71
+ this.result.push({ id: 'ACT_DEU_75201', descripction: 'Intereses y Comisiones - Préstamos Directos' });
72
+ this.result.push({ id: 'ACT_DEU_75202', descripction: 'Intereses y Comisiones - Línea de Crédito 100% KO' });
73
+ this.result.push({ id: 'ACT_DEU_75203', descripction: 'Intereses y Comisiones - Línea de Crédito Mixta' });
74
+ this.result.push({ id: 'ACT_DEU_75204', descripction: 'Interés - Manual' });
75
+ this.result.push({ id: 'ACT_DEU_75205', descripction: 'Total Intereses (BDP y Otras EIFs)' });
76
+ this.result.push({ id: 'ACT_DEU_75301', descripction: 'Leasing CP (Venc. Corriente + Deuda CP) - Otras EIFs' });
77
+ this.result.push({ id: 'ACT_DEU_75302', descripction: 'Leasing LP - Otras EIFs' });
78
+ this.result.push({ id: 'ACT_DEU_75303', descripction: 'Intereses Leasing' });
79
+ this.result.push({ id: 'ACT_DEU_75304', descripction: 'Interés Leasing - Manual' });
80
+ this.result.push({ id: 'ACT_DEU_75401', descripction: 'TOTAL PORCIÓN CP (Venc. Corriente) - BDP SAM' });
81
+ this.result.push({ id: 'ACT_DEU_75402', descripction: 'TOTAL PORCIÓN CP (Venc. Corriente) - Otras EIFs' });
82
+ this.result.push({ id: 'ACT_DEU_75403', descripction: 'TOTAL PORCIÓN LP - BDP SAM' });
83
+ this.result.push({ id: 'ACT_DEU_75404', descripction: 'TOTAL PORCIÓN LP - Otras EIFs' });
84
+ }
85
+ generateFilter(row, deudasFilter) {
86
+ for (let i = 1; i <= this.cantidadProyeccion; i++) {
87
+ row[`Monto${i}`] = deudasFilter.reduce((acc, item) => {
88
+ acc += Math.round(parseFloat(item[`Monto${i}`]) * 100) / 100;
89
+ return acc;
90
+ }, 0);
91
+ }
92
+ }
93
+ generateKOBDP(row) {
94
+ const deudasFilter = this.deudas.filter((item) => item.RubroId == 'ACT_DEU_40001' && item.Destino == 'KO');
95
+ this.generateFilter(row, deudasFilter);
96
+ }
97
+ generateKIBDP(row) {
98
+ const deudasFilter = this.deudas.filter((item) => item.RubroId == 'ACT_DEU_40001'
99
+ && (item.Destino == 'KI' || item.Destino == 'B/L-KI'));
100
+ this.generateFilter(row, deudasFilter);
101
+ }
102
+ lineaMixtaBDPSam(row) {
103
+ const deudasFilter = this.deudas.filter((item) => item.RubroId == 'ACT_DEU_41001');
104
+ this.generateFilter(row, deudasFilter);
105
+ }
106
+ porcionLPBdSam(row) {
107
+ const deudasFilter = this.deudas.filter((item) => (item.RubroId == 'ACT_DEU_40200' || item.RubroId == 'ACT_DEU_41002'));
108
+ this.generateFilter(row, deudasFilter);
109
+ }
110
+ generateKOOtrasEFs(row) {
111
+ const deudasFilter = this.deudas.filter((item) => item.RubroId == 'ACT_DEU_10001' && item.Destino == 'KO');
112
+ this.generateFilter(row, deudasFilter);
113
+ }
114
+ generateKIOtrasEFs(row) {
115
+ const deudasFilter = this.deudas.filter((item) => item.RubroId == 'ACT_DEU_10001'
116
+ && (item.Destino == 'KI' || item.Destino == 'B/L-KI'));
117
+ this.generateFilter(row, deudasFilter);
118
+ }
119
+ generateOtrosOtrasEFs(row) {
120
+ const deudasFilter = this.deudas.filter((item) => item.RubroId == 'ACT_DEU_10001' && item.Destino == 'OTROS');
121
+ this.generateFilter(row, deudasFilter);
122
+ }
123
+ lineaMixtaOtrosEIfs(row) {
124
+ const deudasFilter = this.deudas.filter((item) => item.RubroId == 'ACT_DEU_20100');
125
+ this.generateFilter(row, deudasFilter);
126
+ }
127
+ porcioLpOtrasEIFs(row) {
128
+ const deudasFilter = this.deudas.filter((item) => (item.RubroId == 'ACT_DEU_20200' ||
129
+ item.RubroId == 'ACT_DEU_10200'));
130
+ this.generateFilter(row, deudasFilter);
131
+ }
132
+ generateIntComPrestamosDirectos(row) {
133
+ const deudasFilter = this.deudas.filter((item) => (item.RubroId == 'ACT_DEU_10300' ||
134
+ item.RubroId == 'ACT_DEU_40300'));
135
+ this.generateFilter(row, deudasFilter);
136
+ }
137
+ generateIntComLinea100KO(row) {
138
+ const deudasFilter = this.deudas.filter((item) => item.RubroId == 'ACT_DEU_50003');
139
+ this.generateFilter(row, deudasFilter);
140
+ }
141
+ generateIntComLineaMixta(row) {
142
+ const deudasFilter = this.deudas.filter((item) => (item.RubroId == 'ACT_DEU_41003' ||
143
+ item.RubroId == 'ACT_DEU_20003'));
144
+ this.generateFilter(row, deudasFilter);
145
+ }
146
+ generateIntComInteresManual(row) {
147
+ const deudasFilter = this.deudas.filter((item) => (item.RubroId == 'ACT_DEU_72001'));
148
+ this.generateFilter(row, deudasFilter);
149
+ }
150
+ generateTotalInteresBdpOtras(row) {
151
+ const filter = this.result.filter((item) => ['ACT_DEU_75201', 'ACT_DEU_75202',
152
+ 'ACT_DEU_75203', 'ACT_DEU_75204'].includes(item.RubroId));
153
+ this.generateFilter(row, filter);
154
+ }
155
+ generateLeasingCP(row) {
156
+ const deudasFilter = this.deudas.filter((item) => (item.RubroId == 'ACT_DEU_30100'));
157
+ this.generateFilter(row, deudasFilter);
158
+ }
159
+ generateLeasingLP(row) {
160
+ const deudasFilter = this.deudas.filter((item) => (item.RubroId == 'ACT_DEU_30200'));
161
+ this.generateFilter(row, deudasFilter);
162
+ }
163
+ generateInteresLeasing(row) {
164
+ const deudasFilter = this.deudas.filter((item) => (item.RubroId == 'ACT_DEU_30300'));
165
+ this.generateFilter(row, deudasFilter);
166
+ }
167
+ generateInteresLeasingManual(row) {
168
+ const deudasFilter = this.deudas.filter((item) => (item.RubroId == 'ACT_DEU_72002'));
169
+ this.generateFilter(row, deudasFilter);
170
+ }
171
+ totalPorcionCPBDP(row) {
172
+ const filter = this.result.filter((item) => ['ACT_DEU_75001', 'ACT_DEU_75002',
173
+ 'ACT_DEU_75003'].includes(item.RubroId));
174
+ this.generateFilter(row, filter);
175
+ }
176
+ totalPorcionCPOtas(row) {
177
+ const filter = this.result.filter((item) => ['ACT_DEU_75101', 'ACT_DEU_75102',
178
+ 'ACT_DEU_75103', 'ACT_DEU_75104'].includes(item.RubroId));
179
+ this.generateFilter(row, filter);
180
+ }
181
+ totalPorcionLPBdp(row) {
182
+ const filter = this.result.filter((item) => ['ACT_DEU_75004'].includes(item.RubroId));
183
+ this.generateFilter(row, filter);
184
+ }
185
+ totalPorcionLPOtras(row) {
186
+ const filter = this.result.filter((item) => ['ACT_DEU_75404', 'ACT_DEU_75105'].includes(item.RubroId));
187
+ this.generateFilter(row, filter);
188
+ }
189
+ }
190
+ exports.default = resumenFinanciamiento;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("./admFinanciera/utils");
3
4
  class SupuestosStrategy {
4
5
  cantidadGestiones;
5
6
  data;
@@ -18,8 +19,6 @@ class SupuestosStrategy {
18
19
  destinoRow.Gestion1 = this.cleanNumber(origenRow[`Gestion${this.cantidadGestiones}`]);
19
20
  else {
20
21
  destinoRow.Gestion1 = this.cleanNumber(origenRow[`Gestion${this.cantidadGestiones}%`] / 100);
21
- destinoRow.Gestion1 =
22
- Math.round(destinoRow.Gestion1 * 100) / 100;
23
22
  }
24
23
  }
25
24
  }
@@ -29,7 +28,7 @@ class SupuestosStrategy {
29
28
  else {
30
29
  if (data.toString().includes(','))
31
30
  data = data.toString().replace(/,/g, '');
32
- return Math.round(parseFloat(data) * 100) / 100;
31
+ return (0, utils_1.ourParseFloat)(data);
33
32
  }
34
33
  };
35
34
  execute(data) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bdpformulas",
3
- "version": "1.0.84",
3
+ "version": "1.0.85",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",