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.
- package/build/strategies/eeff/deudas/administracionLinea.d.ts +10 -0
- package/build/strategies/eeff/deudas/administracionLinea.js +101 -0
- package/build/strategies/eeff/deudas/administracionLineaManuales.d.ts +5 -0
- package/build/strategies/eeff/deudas/administracionLineaManuales.js +19 -0
- package/build/strategies/eeff/deudas/aplicactionesCuadro.d.ts +20 -0
- package/build/strategies/eeff/deudas/aplicactionesCuadro.js +136 -0
- package/build/strategies/eeff/deudas/deudas.strategy.d.ts +13 -0
- package/build/strategies/eeff/deudas/deudas.strategy.js +118 -0
- package/build/strategies/eeff/deudas/resumenFinanciamiento.d.ts +31 -0
- package/build/strategies/eeff/deudas/resumenFinanciamiento.js +190 -0
- package/build/strategies/eeff/supuestos.strategy.js +2 -3
- package/package.json +1 -1
|
@@ -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,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
|
|
31
|
+
return (0, utils_1.ourParseFloat)(data);
|
|
33
32
|
}
|
|
34
33
|
};
|
|
35
34
|
execute(data) {
|