bdpformulas 1.0.15 → 1.0.17
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 +2 -0
- package/build/index.js +3 -1
- package/build/models/pecuary/costos.schema.d.ts +776 -0
- package/build/models/pecuary/costos.schema.js +35 -0
- package/build/models/pecuary/sales.schema.d.ts +116 -0
- package/build/models/pecuary/sales.schema.js +11 -0
- package/build/strategies/pecuary/Constantes.d.ts +2 -1
- package/build/strategies/pecuary/Constantes.js +4 -1
- package/build/strategies/pecuary/anexo.strategy.js +20 -1
- package/build/strategies/pecuary/costos.detail/comportamientoCalc.d.ts +2 -0
- package/build/strategies/pecuary/costos.detail/comportamientoCalc.js +75 -0
- package/build/strategies/pecuary/costos.detail/conceptosCalc.d.ts +1 -0
- package/build/strategies/pecuary/costos.detail/conceptosCalc.js +116 -0
- package/build/strategies/pecuary/costos.strategy.d.ts +4 -0
- package/build/strategies/pecuary/costos.strategy.js +48 -0
- package/build/strategies/pecuary/ventas.detail/estacionalidadCalc.js +7 -4
- package/build/strategies/pecuary/ventas.detail/ventasIngresosCalc.js +1 -1
- package/build/strategies/pecuary/ventas.strategy.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CostosPecSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const auxiliar_schema_1 = require("./auxiliar.schema");
|
|
6
|
+
const desarrolloResponse_Schema_1 = require("./desarrolloResponse.Schema");
|
|
7
|
+
const Comportamiento = zod_1.z.object({
|
|
8
|
+
RubroId: zod_1.z.string().max(50),
|
|
9
|
+
Subtipo: zod_1.z.enum(['C', 'A', 'I']),
|
|
10
|
+
IndicadorABM: zod_1.z.enum(['N', 'M']),
|
|
11
|
+
Correlativo: zod_1.z.number(),
|
|
12
|
+
Monto: zod_1.z.number(),
|
|
13
|
+
});
|
|
14
|
+
const Conceptos = zod_1.z.object({
|
|
15
|
+
IndicadorABM: zod_1.z.enum(['N', 'M']),
|
|
16
|
+
RubroId: zod_1.z.string().max(50),
|
|
17
|
+
Subtipo: zod_1.z.enum(['C', 'A', 'I']),
|
|
18
|
+
Descripcion: zod_1.z.string().max(50),
|
|
19
|
+
Unidad: zod_1.z.string().max(50),
|
|
20
|
+
CodigoConcepto: zod_1.z.string().max(30),
|
|
21
|
+
MontoCantidad: zod_1.z.number(),
|
|
22
|
+
MontoPrecio: zod_1.z.number(),
|
|
23
|
+
});
|
|
24
|
+
exports.CostosPecSchema = zod_1.z.object({
|
|
25
|
+
EvaluacionId: zod_1.z.number(),
|
|
26
|
+
ActividadEconomicaId: zod_1.z.number(),
|
|
27
|
+
PID: zod_1.z.number(),
|
|
28
|
+
Conceptos: zod_1.z.array(Conceptos),
|
|
29
|
+
Comportamiento: zod_1.z.array(Comportamiento),
|
|
30
|
+
});
|
|
31
|
+
const CalcCostos = zod_1.z.object({
|
|
32
|
+
Auxiliar: auxiliar_schema_1.AuxiliarSchema,
|
|
33
|
+
Desarrollo: desarrolloResponse_Schema_1.DesarrolloSchema,
|
|
34
|
+
Costos: exports.CostosPecSchema,
|
|
35
|
+
});
|
|
@@ -35,6 +35,37 @@ export declare const VentasPecSchema: z.ZodObject<{
|
|
|
35
35
|
Monto: number;
|
|
36
36
|
Correlativo: number;
|
|
37
37
|
}>, "many">;
|
|
38
|
+
OtrosIngresos: z.ZodArray<z.ZodObject<{
|
|
39
|
+
IndicadorABM: z.ZodEnum<["N", "M", "A", "B"]>;
|
|
40
|
+
Descripcion: z.ZodString;
|
|
41
|
+
Secuencia: z.ZodNumber;
|
|
42
|
+
Montos: z.ZodArray<z.ZodObject<{
|
|
43
|
+
Correlativo: z.ZodNumber;
|
|
44
|
+
Monto: z.ZodNumber;
|
|
45
|
+
}, "strip", z.ZodTypeAny, {
|
|
46
|
+
Monto: number;
|
|
47
|
+
Correlativo: number;
|
|
48
|
+
}, {
|
|
49
|
+
Monto: number;
|
|
50
|
+
Correlativo: number;
|
|
51
|
+
}>, "many">;
|
|
52
|
+
}, "strip", z.ZodTypeAny, {
|
|
53
|
+
IndicadorABM: "A" | "N" | "M" | "B";
|
|
54
|
+
Descripcion: string;
|
|
55
|
+
Secuencia: number;
|
|
56
|
+
Montos: {
|
|
57
|
+
Monto: number;
|
|
58
|
+
Correlativo: number;
|
|
59
|
+
}[];
|
|
60
|
+
}, {
|
|
61
|
+
IndicadorABM: "A" | "N" | "M" | "B";
|
|
62
|
+
Descripcion: string;
|
|
63
|
+
Secuencia: number;
|
|
64
|
+
Montos: {
|
|
65
|
+
Monto: number;
|
|
66
|
+
Correlativo: number;
|
|
67
|
+
}[];
|
|
68
|
+
}>, "many">;
|
|
38
69
|
}, "strip", z.ZodTypeAny, {
|
|
39
70
|
EvaluacionId: number;
|
|
40
71
|
ActividadEconomicaId: number;
|
|
@@ -51,6 +82,15 @@ export declare const VentasPecSchema: z.ZodObject<{
|
|
|
51
82
|
Monto: number;
|
|
52
83
|
Correlativo: number;
|
|
53
84
|
}[];
|
|
85
|
+
OtrosIngresos: {
|
|
86
|
+
IndicadorABM: "A" | "N" | "M" | "B";
|
|
87
|
+
Descripcion: string;
|
|
88
|
+
Secuencia: number;
|
|
89
|
+
Montos: {
|
|
90
|
+
Monto: number;
|
|
91
|
+
Correlativo: number;
|
|
92
|
+
}[];
|
|
93
|
+
}[];
|
|
54
94
|
}, {
|
|
55
95
|
EvaluacionId: number;
|
|
56
96
|
ActividadEconomicaId: number;
|
|
@@ -67,6 +107,15 @@ export declare const VentasPecSchema: z.ZodObject<{
|
|
|
67
107
|
Monto: number;
|
|
68
108
|
Correlativo: number;
|
|
69
109
|
}[];
|
|
110
|
+
OtrosIngresos: {
|
|
111
|
+
IndicadorABM: "A" | "N" | "M" | "B";
|
|
112
|
+
Descripcion: string;
|
|
113
|
+
Secuencia: number;
|
|
114
|
+
Montos: {
|
|
115
|
+
Monto: number;
|
|
116
|
+
Correlativo: number;
|
|
117
|
+
}[];
|
|
118
|
+
}[];
|
|
70
119
|
}>;
|
|
71
120
|
export type VentasPecType = z.infer<typeof VentasPecSchema>;
|
|
72
121
|
declare const CalcVentas: z.ZodObject<{
|
|
@@ -478,6 +527,37 @@ declare const CalcVentas: z.ZodObject<{
|
|
|
478
527
|
Monto: number;
|
|
479
528
|
Correlativo: number;
|
|
480
529
|
}>, "many">;
|
|
530
|
+
OtrosIngresos: z.ZodArray<z.ZodObject<{
|
|
531
|
+
IndicadorABM: z.ZodEnum<["N", "M", "A", "B"]>;
|
|
532
|
+
Descripcion: z.ZodString;
|
|
533
|
+
Secuencia: z.ZodNumber;
|
|
534
|
+
Montos: z.ZodArray<z.ZodObject<{
|
|
535
|
+
Correlativo: z.ZodNumber;
|
|
536
|
+
Monto: z.ZodNumber;
|
|
537
|
+
}, "strip", z.ZodTypeAny, {
|
|
538
|
+
Monto: number;
|
|
539
|
+
Correlativo: number;
|
|
540
|
+
}, {
|
|
541
|
+
Monto: number;
|
|
542
|
+
Correlativo: number;
|
|
543
|
+
}>, "many">;
|
|
544
|
+
}, "strip", z.ZodTypeAny, {
|
|
545
|
+
IndicadorABM: "A" | "N" | "M" | "B";
|
|
546
|
+
Descripcion: string;
|
|
547
|
+
Secuencia: number;
|
|
548
|
+
Montos: {
|
|
549
|
+
Monto: number;
|
|
550
|
+
Correlativo: number;
|
|
551
|
+
}[];
|
|
552
|
+
}, {
|
|
553
|
+
IndicadorABM: "A" | "N" | "M" | "B";
|
|
554
|
+
Descripcion: string;
|
|
555
|
+
Secuencia: number;
|
|
556
|
+
Montos: {
|
|
557
|
+
Monto: number;
|
|
558
|
+
Correlativo: number;
|
|
559
|
+
}[];
|
|
560
|
+
}>, "many">;
|
|
481
561
|
}, "strip", z.ZodTypeAny, {
|
|
482
562
|
EvaluacionId: number;
|
|
483
563
|
ActividadEconomicaId: number;
|
|
@@ -494,6 +574,15 @@ declare const CalcVentas: z.ZodObject<{
|
|
|
494
574
|
Monto: number;
|
|
495
575
|
Correlativo: number;
|
|
496
576
|
}[];
|
|
577
|
+
OtrosIngresos: {
|
|
578
|
+
IndicadorABM: "A" | "N" | "M" | "B";
|
|
579
|
+
Descripcion: string;
|
|
580
|
+
Secuencia: number;
|
|
581
|
+
Montos: {
|
|
582
|
+
Monto: number;
|
|
583
|
+
Correlativo: number;
|
|
584
|
+
}[];
|
|
585
|
+
}[];
|
|
497
586
|
}, {
|
|
498
587
|
EvaluacionId: number;
|
|
499
588
|
ActividadEconomicaId: number;
|
|
@@ -510,6 +599,15 @@ declare const CalcVentas: z.ZodObject<{
|
|
|
510
599
|
Monto: number;
|
|
511
600
|
Correlativo: number;
|
|
512
601
|
}[];
|
|
602
|
+
OtrosIngresos: {
|
|
603
|
+
IndicadorABM: "A" | "N" | "M" | "B";
|
|
604
|
+
Descripcion: string;
|
|
605
|
+
Secuencia: number;
|
|
606
|
+
Montos: {
|
|
607
|
+
Monto: number;
|
|
608
|
+
Correlativo: number;
|
|
609
|
+
}[];
|
|
610
|
+
}[];
|
|
513
611
|
}>;
|
|
514
612
|
}, "strip", z.ZodTypeAny, {
|
|
515
613
|
Desarrollo: {
|
|
@@ -610,6 +708,15 @@ declare const CalcVentas: z.ZodObject<{
|
|
|
610
708
|
Monto: number;
|
|
611
709
|
Correlativo: number;
|
|
612
710
|
}[];
|
|
711
|
+
OtrosIngresos: {
|
|
712
|
+
IndicadorABM: "A" | "N" | "M" | "B";
|
|
713
|
+
Descripcion: string;
|
|
714
|
+
Secuencia: number;
|
|
715
|
+
Montos: {
|
|
716
|
+
Monto: number;
|
|
717
|
+
Correlativo: number;
|
|
718
|
+
}[];
|
|
719
|
+
}[];
|
|
613
720
|
};
|
|
614
721
|
}, {
|
|
615
722
|
Desarrollo: {
|
|
@@ -710,6 +817,15 @@ declare const CalcVentas: z.ZodObject<{
|
|
|
710
817
|
Monto: number;
|
|
711
818
|
Correlativo: number;
|
|
712
819
|
}[];
|
|
820
|
+
OtrosIngresos: {
|
|
821
|
+
IndicadorABM: "A" | "N" | "M" | "B";
|
|
822
|
+
Descripcion: string;
|
|
823
|
+
Secuencia: number;
|
|
824
|
+
Montos: {
|
|
825
|
+
Monto: number;
|
|
826
|
+
Correlativo: number;
|
|
827
|
+
}[];
|
|
828
|
+
}[];
|
|
713
829
|
};
|
|
714
830
|
}>;
|
|
715
831
|
export type CalcVentasType = z.infer<typeof CalcVentas>;
|
|
@@ -16,12 +16,23 @@ const estacionalidad = zod_1.z.object({
|
|
|
16
16
|
Correlativo: zod_1.z.number(),
|
|
17
17
|
Monto: zod_1.z.number(),
|
|
18
18
|
});
|
|
19
|
+
const otroSchema = zod_1.z.object({
|
|
20
|
+
Correlativo: zod_1.z.number(),
|
|
21
|
+
Monto: zod_1.z.number(),
|
|
22
|
+
});
|
|
23
|
+
const otrosIngresosSchema = zod_1.z.object({
|
|
24
|
+
IndicadorABM: zod_1.z.enum(['N', 'M', 'A', 'B']),
|
|
25
|
+
Descripcion: zod_1.z.string().max(250),
|
|
26
|
+
Secuencia: zod_1.z.number(),
|
|
27
|
+
Montos: zod_1.z.array(otroSchema),
|
|
28
|
+
});
|
|
19
29
|
exports.VentasPecSchema = zod_1.z.object({
|
|
20
30
|
EvaluacionId: zod_1.z.number(),
|
|
21
31
|
ActividadEconomicaId: zod_1.z.number(),
|
|
22
32
|
PID: zod_1.z.number(),
|
|
23
33
|
Ventas: zod_1.z.array(ventas),
|
|
24
34
|
Estacionalidad: zod_1.z.array(estacionalidad),
|
|
35
|
+
OtrosIngresos: zod_1.z.array(otrosIngresosSchema),
|
|
25
36
|
});
|
|
26
37
|
const CalcVentas = zod_1.z.object({
|
|
27
38
|
Auxiliar: auxiliar_schema_1.AuxiliarSchema,
|
|
@@ -18,6 +18,7 @@ export declare const RUBROS: {
|
|
|
18
18
|
ACT_PEC_M2536: string;
|
|
19
19
|
ACT_PEC_M36: string;
|
|
20
20
|
ACT_PEC_NOV: string;
|
|
21
|
+
ACT_PEC_SALDO: string;
|
|
21
22
|
};
|
|
22
|
-
export declare const getOrden: (rubro: string) => 3 | 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | undefined;
|
|
23
|
+
export declare const getOrden: (rubro: string) => 3 | 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | undefined;
|
|
23
24
|
export declare const getMap: (array: any[], key: string) => any;
|
|
@@ -37,7 +37,8 @@ exports.RUBROS = {
|
|
|
37
37
|
ACT_PEC_M1324: "ACT_PEC_M1324",
|
|
38
38
|
ACT_PEC_M2536: "ACT_PEC_M2536",
|
|
39
39
|
ACT_PEC_M36: "ACT_PEC_M36",
|
|
40
|
-
ACT_PEC_NOV: "ACT_PEC_NOV"
|
|
40
|
+
ACT_PEC_NOV: "ACT_PEC_NOV",
|
|
41
|
+
ACT_PEC_SALDO: 'ACT_PEC_SALDO'
|
|
41
42
|
};
|
|
42
43
|
const getOrden = (rubro) => {
|
|
43
44
|
if (rubro == exports.RUBROS.ACT_PEC_M36)
|
|
@@ -58,6 +59,8 @@ const getOrden = (rubro) => {
|
|
|
58
59
|
return 8;
|
|
59
60
|
if (rubro == exports.RUBROS.ACT_PEC_NOV)
|
|
60
61
|
return 9;
|
|
62
|
+
if (rubro == exports.RUBROS.ACT_PEC_SALDO)
|
|
63
|
+
return 10;
|
|
61
64
|
};
|
|
62
65
|
exports.getOrden = getOrden;
|
|
63
66
|
const getMap = (array, key) => {
|
|
@@ -12,6 +12,8 @@ const calcularHato = (data) => {
|
|
|
12
12
|
if (Object.keys(acc).length === 0) {
|
|
13
13
|
acc.Gestion = item.Gestion;
|
|
14
14
|
acc.key = 'PRECIOS';
|
|
15
|
+
acc.Descripcion = 'PRECIO EN BS';
|
|
16
|
+
acc.Orden = 1;
|
|
15
17
|
acc.GestionDesc = item.GestionDesc;
|
|
16
18
|
acc.Total = parseFloat('0');
|
|
17
19
|
}
|
|
@@ -25,6 +27,8 @@ const calcularHato = (data) => {
|
|
|
25
27
|
if (Object.keys(acc).length === 0) {
|
|
26
28
|
acc.Gestion = item.Gestion;
|
|
27
29
|
acc.key = 'CANTIDADES';
|
|
30
|
+
acc.Descripcion = 'NRO. CABEZAS';
|
|
31
|
+
acc.Orden = 2;
|
|
28
32
|
acc.GestionDesc = item.GestionDesc;
|
|
29
33
|
acc.Total = 0;
|
|
30
34
|
}
|
|
@@ -34,7 +38,22 @@ const calcularHato = (data) => {
|
|
|
34
38
|
}
|
|
35
39
|
return acc;
|
|
36
40
|
}, {});
|
|
37
|
-
|
|
41
|
+
const totales = rubros.reduce((acc, item) => {
|
|
42
|
+
if (Object.keys(acc).length === 0) {
|
|
43
|
+
acc.Gestion = item.Gestion;
|
|
44
|
+
acc.key = 'TOTALES';
|
|
45
|
+
acc.Descripcion = 'TOTALES';
|
|
46
|
+
acc.Orden = 3;
|
|
47
|
+
acc.GestionDesc = item.GestionDesc;
|
|
48
|
+
acc.Total = 0;
|
|
49
|
+
}
|
|
50
|
+
if (!(item.RubroId in acc)) {
|
|
51
|
+
acc[item.RubroId] = item.CantidadCabezas * item.PrecioCabeza;
|
|
52
|
+
acc.Total = acc.Total + (item.CantidadCabezas * item.PrecioCabeza);
|
|
53
|
+
}
|
|
54
|
+
return acc;
|
|
55
|
+
}, {});
|
|
56
|
+
return [precios, cantidades, totales];
|
|
38
57
|
});
|
|
39
58
|
};
|
|
40
59
|
class Auxiliar {
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calcularCostos = exports.calcularComportamiento = void 0;
|
|
4
|
+
const Constantes_1 = require("../Constantes");
|
|
5
|
+
const calcularComportamiento = (conceptosCalc, comportamiento) => {
|
|
6
|
+
const totales = conceptosCalc.reduce((acc, item) => {
|
|
7
|
+
if (item.CodigoConcepto == 'TOTAL_GRUPO') {
|
|
8
|
+
acc.set(item.Subtipo, item);
|
|
9
|
+
}
|
|
10
|
+
return acc;
|
|
11
|
+
}, new Map());
|
|
12
|
+
const result = comportamiento.reduce((acc, item) => {
|
|
13
|
+
const key = `${item.Subtipo}_${item.RubroId}`;
|
|
14
|
+
if (!acc.has(key)) {
|
|
15
|
+
let totalCostoCampanna = 0;
|
|
16
|
+
if (totales.has(item.Subtipo)) {
|
|
17
|
+
totalCostoCampanna = totales.get(item.Subtipo)[item.RubroId];
|
|
18
|
+
}
|
|
19
|
+
acc.set(key, {
|
|
20
|
+
RubroId: item.RubroId,
|
|
21
|
+
Descripcion: item.Descripcion,
|
|
22
|
+
Total: 0,
|
|
23
|
+
Subtipo: item.Subtipo,
|
|
24
|
+
CostoCampanna: totalCostoCampanna,
|
|
25
|
+
Orden: (0, Constantes_1.getOrden)(item.RubroId)
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
acc.get(key)[`C-${item.Correlativo}`] = parseFloat(item.Monto);
|
|
29
|
+
acc.get(key)[`Desc-${item.Correlativo}`] = item.CorrelativoDesc;
|
|
30
|
+
acc.get(key).Total += parseFloat(item.Monto);
|
|
31
|
+
return acc;
|
|
32
|
+
}, new Map());
|
|
33
|
+
return Array.from(result.values());
|
|
34
|
+
};
|
|
35
|
+
exports.calcularComportamiento = calcularComportamiento;
|
|
36
|
+
const calcularCostos = (comportamientoCalc) => {
|
|
37
|
+
const TOTAL = 'TOT01';
|
|
38
|
+
const result = comportamientoCalc.reduce((acc, item) => {
|
|
39
|
+
if (!acc.has(TOTAL)) {
|
|
40
|
+
acc.set(TOTAL, {
|
|
41
|
+
RubroId: TOTAL,
|
|
42
|
+
Descripcion: 'TOTAL',
|
|
43
|
+
Total: 0,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
if (!acc.has(item.RubroId)) {
|
|
47
|
+
acc.set(item.RubroId, {
|
|
48
|
+
RubroId: item.RubroId,
|
|
49
|
+
Descripcion: item.Descripcion,
|
|
50
|
+
Total: 0,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
for (const key in item) {
|
|
54
|
+
if (key.startsWith('C-')) {
|
|
55
|
+
if (!Object.keys(acc.get(item.RubroId)).includes(key))
|
|
56
|
+
acc.get(item.RubroId)[key] = 0;
|
|
57
|
+
if (!Object.keys(acc.get(TOTAL)).includes(key))
|
|
58
|
+
acc.get(TOTAL)[key] = 0;
|
|
59
|
+
const costo = item[key] * item.CostoCampanna / 100;
|
|
60
|
+
acc.get(item.RubroId).Total += costo;
|
|
61
|
+
acc.get(item.RubroId)[key] += costo;
|
|
62
|
+
acc.get(TOTAL)[key] += costo;
|
|
63
|
+
acc.get(TOTAL).Total += costo;
|
|
64
|
+
}
|
|
65
|
+
if (key.startsWith('Desc-')) {
|
|
66
|
+
acc.get(item.RubroId)[key] = item[key];
|
|
67
|
+
acc.get(TOTAL)[key] = item[key];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// acc[item.RubroId] = item.Total
|
|
71
|
+
return acc;
|
|
72
|
+
}, new Map());
|
|
73
|
+
return Array.from(result.values());
|
|
74
|
+
};
|
|
75
|
+
exports.calcularCostos = calcularCostos;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const calcular: (conceptos: any, configuracion: any, auxiliarPrimitivo: any, desarrolloCalc: any) => any[];
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calcular = void 0;
|
|
4
|
+
const Constantes_1 = require("../Constantes");
|
|
5
|
+
const getPrimeraFila = (configuracion, auxiliarPrimitivo, desarrolloCalc) => {
|
|
6
|
+
const gestionMaxima = Math.max(...auxiliarPrimitivo.HistoricoHato.map((item) => item.Gestion));
|
|
7
|
+
const historicoHato = auxiliarPrimitivo.HistoricoHato.filter((item) => item.Gestion == gestionMaxima);
|
|
8
|
+
const hatoMap = (0, Constantes_1.getMap)(historicoHato, 'RubroId');
|
|
9
|
+
let result = configuracion.reduce((acc, item) => {
|
|
10
|
+
if (!Object.keys(acc).includes('CodigoConcepto')) {
|
|
11
|
+
acc.CodigoConcepto = 'ROOT';
|
|
12
|
+
acc.Descripcion = 'Detalle';
|
|
13
|
+
acc.Subtipo = 'X';
|
|
14
|
+
acc.SubtipoDesc = 'Detalle';
|
|
15
|
+
acc.Unidad = 'Unidad';
|
|
16
|
+
acc.Correlativo = 0;
|
|
17
|
+
acc.CorrelativoDesc = '';
|
|
18
|
+
acc.Total = 0;
|
|
19
|
+
acc.TotalPlusHato = 0;
|
|
20
|
+
}
|
|
21
|
+
let value = 0;
|
|
22
|
+
if (item.RubroId !== 'ACT_PEC_SALDO') {
|
|
23
|
+
value = parseFloat(hatoMap.get(item.RubroId).CantidadCabezas);
|
|
24
|
+
acc.Total += value;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const proyeccion = desarrolloCalc.Proyeccion.find((item) => item.RubroId == 'TOT01');
|
|
28
|
+
if (proyeccion != null)
|
|
29
|
+
value = proyeccion['C-0'];
|
|
30
|
+
}
|
|
31
|
+
acc[item.RubroId] = value;
|
|
32
|
+
acc.TotalPlusHato += value;
|
|
33
|
+
return acc;
|
|
34
|
+
}, {});
|
|
35
|
+
return [result];
|
|
36
|
+
};
|
|
37
|
+
const getFila = (configuracion, correlativo = 0) => {
|
|
38
|
+
return configuracion.reduce((acc, item) => {
|
|
39
|
+
if (!Object.keys(acc).includes('CodigoConcepto')) {
|
|
40
|
+
acc.CodigoConcepto = '';
|
|
41
|
+
acc.Subtipo = '';
|
|
42
|
+
acc.SubtipoDesc = 'Detalle';
|
|
43
|
+
acc.Unidad = 'Unidad';
|
|
44
|
+
acc.Correlativo = correlativo;
|
|
45
|
+
acc.CorrelativoDesc = '';
|
|
46
|
+
acc.Descripcion = '';
|
|
47
|
+
acc.Total = 0;
|
|
48
|
+
acc.TotalPlusHato = 0;
|
|
49
|
+
}
|
|
50
|
+
acc[item.RubroId] = 0;
|
|
51
|
+
return acc;
|
|
52
|
+
}, {});
|
|
53
|
+
};
|
|
54
|
+
const getGrupoCalculado = (grupo, configuracion) => {
|
|
55
|
+
let result = new Map();
|
|
56
|
+
result.set(1, getFila(configuracion, 1));
|
|
57
|
+
result.set(2, getFila(configuracion, 2));
|
|
58
|
+
result.set(3, getFila(configuracion, 3));
|
|
59
|
+
grupo.forEach((item) => {
|
|
60
|
+
const monto = parseFloat(item.Monto);
|
|
61
|
+
result.get(item.Correlativo).CodigoConcepto = item.Grupo;
|
|
62
|
+
result.get(item.Correlativo).Subtipo = item.Subtipo;
|
|
63
|
+
result.get(item.Correlativo).Descripcion = item.Descripcion;
|
|
64
|
+
result.get(item.Correlativo).SubtipoDesc = item.SubtipoDesc;
|
|
65
|
+
result.get(item.Correlativo).Unidad = item.Descripcion2;
|
|
66
|
+
result.get(item.Correlativo).CorrelativoDesc = item.CorrelativoDesc;
|
|
67
|
+
result.get(item.Correlativo)[item.RubroId] = monto;
|
|
68
|
+
if (item.RubroId !== 'ACT_PEC_SALDO') {
|
|
69
|
+
result.get(item.Correlativo).Total += monto;
|
|
70
|
+
}
|
|
71
|
+
result.get(item.Correlativo).TotalPlusHato += monto;
|
|
72
|
+
});
|
|
73
|
+
result.get(3).CodigoConcepto = grupo[0].Grupo;
|
|
74
|
+
result.get(3).Subtipo = grupo[0].Subtipo;
|
|
75
|
+
result.get(3).SubtipoDesc = grupo[0].SubtipoDesc;
|
|
76
|
+
result.get(3).Unidad = '';
|
|
77
|
+
for (const config of configuracion) {
|
|
78
|
+
const subtotal = result.get(1)[config.RubroId] * result.get(2)[config.RubroId];
|
|
79
|
+
result.get(3)[config.RubroId] = subtotal;
|
|
80
|
+
if (config.RubroId != Constantes_1.RUBROS.ACT_PEC_SALDO)
|
|
81
|
+
result.get(3).Total += subtotal;
|
|
82
|
+
result.get(3).TotalPlusHato += subtotal;
|
|
83
|
+
}
|
|
84
|
+
return result;
|
|
85
|
+
};
|
|
86
|
+
const calcular = (conceptos, configuracion, auxiliarPrimitivo, desarrolloCalc) => {
|
|
87
|
+
const root = getPrimeraFila(configuracion, auxiliarPrimitivo, desarrolloCalc);
|
|
88
|
+
const agrupados = conceptos.reduce((acc, item) => {
|
|
89
|
+
if (!acc.has(item.Grupo))
|
|
90
|
+
acc.set(item.Grupo, []);
|
|
91
|
+
acc.get(item.Grupo).push(item);
|
|
92
|
+
return acc;
|
|
93
|
+
}, new Map());
|
|
94
|
+
let result = [];
|
|
95
|
+
let subtipos = new Map();
|
|
96
|
+
//@ts-ignore
|
|
97
|
+
for (const [key, value] of agrupados) {
|
|
98
|
+
const grupoCalc = getGrupoCalculado(agrupados.get(key), configuracion);
|
|
99
|
+
const subtipo = grupoCalc.get(3).Subtipo;
|
|
100
|
+
if (!subtipos.has(subtipo))
|
|
101
|
+
subtipos.set(subtipo, getFila(configuracion, 4));
|
|
102
|
+
subtipos.get(subtipo).CodigoConcepto = 'TOTAL_GRUPO';
|
|
103
|
+
subtipos.get(subtipo).Subtipo = grupoCalc.get(3).Subtipo;
|
|
104
|
+
subtipos.get(subtipo).SubtipoDesc = grupoCalc.get(3).SubtipoDesc;
|
|
105
|
+
subtipos.get(subtipo).Descripcion = grupoCalc.get(3).SubtipoDesc;
|
|
106
|
+
subtipos.get(subtipo).Unidad = grupoCalc.get(3).Unidad;
|
|
107
|
+
configuracion.forEach((item) => {
|
|
108
|
+
subtipos.get(subtipo)[item.RubroId] += grupoCalc.get(3)[item.RubroId];
|
|
109
|
+
});
|
|
110
|
+
subtipos.get(subtipo).Total += grupoCalc.get(3).Total;
|
|
111
|
+
subtipos.get(subtipo).TotalPlusHato += grupoCalc.get(3).TotalPlusHato;
|
|
112
|
+
result = [...result, ...Array.from(grupoCalc.values())];
|
|
113
|
+
}
|
|
114
|
+
return [...root, ...result, ...Array.from(subtipos.values())];
|
|
115
|
+
};
|
|
116
|
+
exports.calcular = calcular;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const desarrollo_strategy_1 = __importDefault(require("./desarrollo.strategy"));
|
|
30
|
+
const conceptosCalc = __importStar(require("./costos.detail/conceptosCalc"));
|
|
31
|
+
//@ts-ignore
|
|
32
|
+
const comportamientoCalc = __importStar(require("./costos.detail/comportamientoCalc"));
|
|
33
|
+
class CostosPec {
|
|
34
|
+
execute(data) {
|
|
35
|
+
let result = {};
|
|
36
|
+
const dataDesarrollo = {
|
|
37
|
+
Desarrollo: data.Desarrollo,
|
|
38
|
+
Auxiliar: data.Auxiliar
|
|
39
|
+
};
|
|
40
|
+
const desarrolloCalc = new desarrollo_strategy_1.default().execute(dataDesarrollo);
|
|
41
|
+
result.Conceptos = conceptosCalc.calcular(data.Costos.Conceptos, data.Costos.Configuracion, data.Auxiliar, desarrolloCalc);
|
|
42
|
+
result.Comportamiento =
|
|
43
|
+
comportamientoCalc.calcularComportamiento(result.Conceptos, data.Costos.Comportamiento);
|
|
44
|
+
result.Calculo = comportamientoCalc.calcularCostos(result.Comportamiento);
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.default = CostosPec;
|
|
@@ -5,7 +5,7 @@ const Constantes_1 = require("../Constantes");
|
|
|
5
5
|
const estacionalidadCalc = (ventasPrimitivo, ventasIngresos) => {
|
|
6
6
|
const ingresosMap = (0, Constantes_1.getMap)(ventasIngresos, 'RubroId');
|
|
7
7
|
const ventasCalc = ventasPrimitivo.Estacionalidad.map((item) => {
|
|
8
|
-
return Object.assign(Object.assign({}, item), { Monto: parseFloat(item.Monto), IngresoTotal: ingresosMap.get(item.RubroId).IngresoTotal, CalculoIngreso: ingresosMap.get(item.RubroId).IngresoTotal * parseFloat(item.Monto) });
|
|
8
|
+
return Object.assign(Object.assign({}, item), { Monto: parseFloat(item.Monto), IngresoTotal: ingresosMap.get(item.RubroId).IngresoTotal, CalculoIngreso: ingresosMap.get(item.RubroId).IngresoTotal * parseFloat(item.Monto), Orden: (0, Constantes_1.getOrden)(item.RubroId) });
|
|
9
9
|
});
|
|
10
10
|
return ventasCalc;
|
|
11
11
|
};
|
|
@@ -17,7 +17,8 @@ const getEstacionalidadPorcentaje = (estacionalidad) => {
|
|
|
17
17
|
RubroId: 'TOT01',
|
|
18
18
|
Descripcion: 'TOTAL',
|
|
19
19
|
IngresoTotal: 0,
|
|
20
|
-
Total: 0
|
|
20
|
+
Total: 0,
|
|
21
|
+
Orden: 10
|
|
21
22
|
});
|
|
22
23
|
}
|
|
23
24
|
if (!acc.has(item.RubroId)) {
|
|
@@ -25,6 +26,7 @@ const getEstacionalidadPorcentaje = (estacionalidad) => {
|
|
|
25
26
|
RubroId: item.RubroId,
|
|
26
27
|
Descripcion: item.Descripcion,
|
|
27
28
|
IngresoTotal: item.IngresoTotal,
|
|
29
|
+
Orden: item.Orden,
|
|
28
30
|
Total: 0
|
|
29
31
|
});
|
|
30
32
|
acc.get('TOT01').IngresoTotal += item.IngresoTotal;
|
|
@@ -44,7 +46,8 @@ const getEstacionalidadCalc = (estacionalidad) => {
|
|
|
44
46
|
acc.set(TOT01, {
|
|
45
47
|
RubroId: TOT01,
|
|
46
48
|
Descripcion: 'TOTAL',
|
|
47
|
-
Total: 0
|
|
49
|
+
Total: 0,
|
|
50
|
+
Orden: 10
|
|
48
51
|
});
|
|
49
52
|
}
|
|
50
53
|
if (!acc.get(TOT01)[`C${item.Correlativo}`]) {
|
|
@@ -55,6 +58,7 @@ const getEstacionalidadCalc = (estacionalidad) => {
|
|
|
55
58
|
acc.set(item.RubroId, {
|
|
56
59
|
RubroId: item.RubroId,
|
|
57
60
|
Descripcion: item.Descripcion,
|
|
61
|
+
Orden: item.Orden,
|
|
58
62
|
Total: 0
|
|
59
63
|
});
|
|
60
64
|
}
|
|
@@ -65,7 +69,6 @@ const getEstacionalidadCalc = (estacionalidad) => {
|
|
|
65
69
|
acc.get(item.RubroId).Total += item.CalculoIngreso;
|
|
66
70
|
return acc;
|
|
67
71
|
}, new Map());
|
|
68
|
-
console.log(result.values());
|
|
69
72
|
return Array.from(result.values());
|
|
70
73
|
};
|
|
71
74
|
exports.getEstacionalidadCalc = getEstacionalidadCalc;
|
|
@@ -10,7 +10,7 @@ const calcular = (ventasPrimitivo, auxiliarPrimitivo, desarrolloCalculado) => {
|
|
|
10
10
|
return ventasPrimitivo.Ingresos.map((item) => {
|
|
11
11
|
const cantidad = parseFloat(hatoMap.get(item.RubroId).CantidadCabezas);
|
|
12
12
|
const precio = parseFloat(avaluoMap.get(item.RubroId).PrecioVenta);
|
|
13
|
-
return Object.assign(Object.assign({}, item), { Animales: cantidad, Precio: precio, IngresoTotal: cantidad * precio });
|
|
13
|
+
return Object.assign(Object.assign({}, item), { Animales: cantidad, Precio: precio, IngresoTotal: cantidad * precio, Orden: (0, Constantes_1.getOrden)(item.RubroId) });
|
|
14
14
|
});
|
|
15
15
|
};
|
|
16
16
|
exports.calcular = calcular;
|
|
@@ -41,6 +41,7 @@ class VentasPec {
|
|
|
41
41
|
const estacionalidad = estacionalidadCalc.estacionalidadCalc(data.Ventas, result.VentasIngreso);
|
|
42
42
|
result.EstacionalidadPorcentaje = estacionalidadCalc.getEstacionalidadPorcentaje(estacionalidad);
|
|
43
43
|
result.EstacionalidadCalc = estacionalidadCalc.getEstacionalidadCalc(estacionalidad);
|
|
44
|
+
result.OtrosIngresos = data.Ventas.OtrosIngresos;
|
|
44
45
|
return result;
|
|
45
46
|
}
|
|
46
47
|
}
|