tributos-co 1.0.0

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 John Edwin Torres MartĂ­nez
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,202 @@
1
+ # Tributos-CO 🇨🇴
2
+
3
+ Paquete npm para calcular recargos salariales, horas extras y otros tributos aplicables en Colombia (Actualizado a normativa 2026).
4
+
5
+ ## CaracterĂ­sticas
6
+ - ✅ **Cálculo de Recargos:** Horas extras diurnas, nocturnas, recargos nocturnos, dominicales y festivos.
7
+ - ✅ **Jornada Flexible:** Ajuste automático de horas mensuales según la Ley 2101 de 2021 (Reducción de jornada a partir del 15 de julio 2026).
8
+ - âś… **Todas las combinaciones:** Extra diurna, extra nocturna, dominical, extra diurna dominical, extra nocturna dominical.
9
+ - ✅ **TypeScript:** Tipado fuerte para evitar errores en cálculos financieros.
10
+ - âś… **Normativa actualizada 2026:** Recargo dominical/festivo del 80%.
11
+
12
+ ## InstalaciĂłn
13
+ ```bash
14
+ npm install tributos-co
15
+ ```
16
+
17
+ ## Uso Rápido
18
+
19
+ ### Calcular Hora Ordinaria
20
+
21
+ ```typescript
22
+ import { calcularHoraOrdinaria } from 'tributos-co';
23
+
24
+ const salario = 1750905; // SMLMV 2026
25
+ const valorHora = calcularHoraOrdinaria(salario);
26
+ console.log(valorHora); // 7958.66
27
+ ```
28
+
29
+ ### Calcular Horas con Recargos
30
+
31
+ ```typescript
32
+ import {
33
+ calcularHoraExtraDiurna,
34
+ calcularHoraExtraNocturna,
35
+ calcularHoraOrdinariaNocturna,
36
+ calcularHoraDominicalFestiva,
37
+ calcularHoraExtraDiurnaDominical,
38
+ calcularHoraExtraNocturnaDominical
39
+ } from 'tributos-co';
40
+
41
+ const salario = 2000000;
42
+
43
+ // Hora extra diurna (6am - 9pm): +25%
44
+ const horaExtraDiurna = calcularHoraExtraDiurna(salario);
45
+
46
+ // Hora extra nocturna (9pm - 6am): +75%
47
+ const horaExtraNocturna = calcularHoraExtraNocturna(salario);
48
+
49
+ // Hora ordinaria nocturna: +35%
50
+ const horaOrdinariaNocturna = calcularHoraOrdinariaNocturna(salario);
51
+
52
+ // Hora dominical/festiva: +80%
53
+ const horaDominical = calcularHoraDominicalFestiva(salario);
54
+
55
+ // Hora extra diurna dominical: +105%
56
+ const horaExtraDiurnaDominical = calcularHoraExtraDiurnaDominical(salario);
57
+
58
+ // Hora extra nocturna dominical: +155%
59
+ const horaExtraNocturnaDominical = calcularHoraExtraNocturnaDominical(salario);
60
+ ```
61
+
62
+ ### Calcular Recargos Totales
63
+
64
+ ```typescript
65
+ import { calcularRecargosSalariales } from 'tributos-co';
66
+
67
+ const resultado = calcularRecargosSalariales(2000000, {
68
+ extrasDiurnas: 5, // 5 horas extras diurnas
69
+ extrasNocturnas: 3, // 3 horas extras nocturnas
70
+ recargoNocturno: 4, // 4 horas ordinarias nocturnas
71
+ festivasDiurnas: 8, // 8 horas ordinarias en domingo
72
+ extrasDiurnasDominicales: 2, // 2 horas extras diurnas en domingo
73
+ extrasNocturnasDominicales: 1 // 1 hora extra nocturna en domingo
74
+ });
75
+
76
+ console.log(resultado);
77
+ /*
78
+ {
79
+ vho: 9090.91, // Valor hora ordinaria
80
+ detalle: {
81
+ extrasDiurnas: 11363.64,
82
+ extrasNocturnas: 20454.55,
83
+ recargoNocturno: 12727.27,
84
+ festivasDiurnas: 58181.82,
85
+ extrasDiurnasDominicales: 37272.73,
86
+ extrasNocturnasDominicales: 23181.82
87
+ },
88
+ totalRecargos: 163181.83,
89
+ totalNomina: 2163181.83
90
+ }
91
+ */
92
+ ```
93
+
94
+ ### Constantes Disponibles
95
+
96
+ ```typescript
97
+ import { CONSTANTES, TASAS_RECARGO } from 'tributos-co';
98
+
99
+ console.log(CONSTANTES.SMLMV); // 1750905
100
+ console.log(CONSTANTES.AUX_TRANSPORTE); // 249095
101
+ console.log(CONSTANTES.UVT); // 52374
102
+
103
+ console.log(TASAS_RECARGO.EXTRA_DIURNA); // 0.25
104
+ console.log(TASAS_RECARGO.EXTRA_NOCTURNA); // 0.75
105
+ console.log(TASAS_RECARGO.RECARGO_NOCTURNO); // 0.35
106
+ console.log(TASAS_RECARGO.DOMINICAL_FESTIVO); // 0.8
107
+ console.log(TASAS_RECARGO.EXTRA_DIURNA_DOMINICAL); // 2.05
108
+ console.log(TASAS_RECARGO.EXTRA_NOCTURNA_DOMINICAL); // 2.55
109
+ ```
110
+
111
+ ## Reforma Laboral 2026
112
+
113
+ El paquete tiene en cuenta la reforma laboral que entra en vigencia el 15 de julio de 2026, la cual reduce la jornada laboral de 48 a 42 horas semanales:
114
+
115
+ - Antes del 15 de julio de 2026: 220 horas mensuales
116
+ - Desde el 15 de julio de 2026: 210 horas mensuales
117
+
118
+ ```typescript
119
+ const fechaAntes = new Date('2026-07-10');
120
+ const fechaDespues = new Date('2026-07-20');
121
+
122
+ const horaAntes = calcularHoraOrdinaria(2000000, fechaAntes); // 9090.91
123
+ const horaDespues = calcularHoraOrdinaria(2000000, fechaDespues); // 9523.81
124
+ ```
125
+
126
+ ## Tipos de Recargos segĂşn Normativa Colombiana
127
+
128
+ | Tipo de Hora | Horario | Recargo | FunciĂłn |
129
+ |--------------|---------|---------|---------|
130
+ | Extra Diurna | 6am - 9pm | +25% | `calcularHoraExtraDiurna` |
131
+ | Extra Nocturna | 9pm - 6am | +75% | `calcularHoraExtraNocturna` |
132
+ | Ordinaria Nocturna | 9pm - 6am | +35% | `calcularHoraOrdinariaNocturna` |
133
+ | Dominical/Festiva | Domingo/Festivo | +80% | `calcularHoraDominicalFestiva` |
134
+ | Extra Diurna Dominical | Domingo/Festivo 6am-9pm | +105% | `calcularHoraExtraDiurnaDominical` |
135
+ | Extra Nocturna Dominical | Domingo/Festivo 9pm-6am | +155% | `calcularHoraExtraNocturnaDominical` |
136
+
137
+ ## API Completa
138
+
139
+ ### Funciones
140
+
141
+ #### `calcularHoraOrdinaria(salario, fecha?)`
142
+ Calcula el valor de la hora ordinaria.
143
+
144
+ **Parámetros:**
145
+ - `salario`: Salario mensual del trabajador
146
+ - `fecha`: (Opcional) Fecha de referencia (default: hoy)
147
+
148
+ **Retorna:** `number` - Valor de la hora ordinaria
149
+
150
+ #### `calcularHoraExtraDiurna(salario, fecha?)`
151
+ Calcula el valor de la hora extra diurna (+25%).
152
+
153
+ #### `calcularHoraExtraNocturna(salario, fecha?)`
154
+ Calcula el valor de la hora extra nocturna (+75%).
155
+
156
+ #### `calcularHoraOrdinariaNocturna(salario, fecha?)`
157
+ Calcula el valor de la hora ordinaria nocturna (+35%).
158
+
159
+ #### `calcularHoraDominicalFestiva(salario, fecha?)`
160
+ Calcula el valor de la hora dominical/festiva (+80%).
161
+
162
+ #### `calcularHoraExtraDiurnaDominical(salario, fecha?)`
163
+ Calcula el valor de la hora extra diurna dominical (+105%).
164
+
165
+ #### `calcularHoraExtraNocturnaDominical(salario, fecha?)`
166
+ Calcula el valor de la hora extra nocturna dominical (+155%).
167
+
168
+ #### `calcularRecargosSalariales(salario, items, fecha?)`
169
+ Calcula todos los recargos salariales.
170
+
171
+ **Parámetros:**
172
+ - `salario`: Salario mensual base
173
+ - `items`: Objeto `RecargosInput` con las horas trabajadas
174
+ - `fecha`: (Opcional) Fecha de referencia
175
+
176
+ **Retorna:** Objeto con:
177
+ - `vho`: Valor hora ordinaria
178
+ - `detalle`: Desglose de cada recargo
179
+ - `totalRecargos`: Suma de todos los recargos
180
+ - `totalNomina`: Salario + recargos
181
+
182
+ ### Tipos
183
+
184
+ #### `RecargosInput`
185
+ ```typescript
186
+ interface RecargosInput {
187
+ extrasDiurnas?: number; // Horas extras diurnas
188
+ extrasNocturnas?: number; // Horas extras nocturnas
189
+ recargoNocturno?: number; // Horas ordinarias nocturnas
190
+ festivasDiurnas?: number; // Horas ordinarias dominicales/festivas
191
+ extrasDiurnasDominicales?: number; // Horas extras diurnas dominicales
192
+ extrasNocturnasDominicales?: number; // Horas extras nocturnas dominicales
193
+ }
194
+ ```
195
+
196
+ ## Licencia
197
+
198
+ ISC
199
+
200
+ ## Contribuciones
201
+
202
+ Las contribuciones son bienvenidas. Por favor, abre un issue o pull request en el repositorio.
@@ -0,0 +1,16 @@
1
+ export declare const CONSTANTES: {
2
+ UVT: number;
3
+ IVA_GENERAL: number;
4
+ SMLMV: number;
5
+ AUX_TRANSPORTE: number;
6
+ HORAS_MES_ANTES_JULIO: number;
7
+ HORAS_MES_DESPUES_JULIO: number;
8
+ };
9
+ export declare const TASAS_RECARGO: {
10
+ EXTRA_DIURNA: number;
11
+ EXTRA_NOCTURNA: number;
12
+ RECARGO_NOCTURNO: number;
13
+ DOMINICAL_FESTIVO: number;
14
+ EXTRA_DIURNA_DOMINICAL: number;
15
+ EXTRA_NOCTURNA_DOMINICAL: number;
16
+ };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TASAS_RECARGO = exports.CONSTANTES = void 0;
4
+ exports.CONSTANTES = {
5
+ UVT: 52374,
6
+ IVA_GENERAL: 0.19,
7
+ SMLMV: 1750905, // Valor para 2026
8
+ AUX_TRANSPORTE: 249095, // Valor para 2026
9
+ // Jornada laboral: 15 julio 2026 baja a 42h semanales
10
+ HORAS_MES_ANTES_JULIO: 220,
11
+ HORAS_MES_DESPUES_JULIO: 210,
12
+ };
13
+ exports.TASAS_RECARGO = {
14
+ EXTRA_DIURNA: 0.25,
15
+ EXTRA_NOCTURNA: 0.75,
16
+ RECARGO_NOCTURNO: 0.35,
17
+ DOMINICAL_FESTIVO: 0.8, // Aumentado por ley para 2026
18
+ EXTRA_DIURNA_DOMINICAL: 2.05,
19
+ EXTRA_NOCTURNA_DOMINICAL: 2.55,
20
+ };
@@ -0,0 +1,2 @@
1
+ export { CONSTANTES, TASAS_RECARGO } from './contants';
2
+ export { calcularHoraOrdinaria, calcularHoraExtraDiurna, calcularHoraExtraNocturna, calcularHoraOrdinariaNocturna, calcularHoraDominicalFestiva, calcularHoraExtraDiurnaDominical, calcularHoraExtraNocturnaDominical, calcularRecargosSalariales, type RecargosInput, } from './modules/labor';
package/dist/index.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calcularRecargosSalariales = exports.calcularHoraExtraNocturnaDominical = exports.calcularHoraExtraDiurnaDominical = exports.calcularHoraDominicalFestiva = exports.calcularHoraOrdinariaNocturna = exports.calcularHoraExtraNocturna = exports.calcularHoraExtraDiurna = exports.calcularHoraOrdinaria = exports.TASAS_RECARGO = exports.CONSTANTES = void 0;
4
+ // Exportar constantes
5
+ var contants_1 = require("./contants");
6
+ Object.defineProperty(exports, "CONSTANTES", { enumerable: true, get: function () { return contants_1.CONSTANTES; } });
7
+ Object.defineProperty(exports, "TASAS_RECARGO", { enumerable: true, get: function () { return contants_1.TASAS_RECARGO; } });
8
+ // Exportar funciones de cálculo laboral
9
+ var labor_1 = require("./modules/labor");
10
+ Object.defineProperty(exports, "calcularHoraOrdinaria", { enumerable: true, get: function () { return labor_1.calcularHoraOrdinaria; } });
11
+ Object.defineProperty(exports, "calcularHoraExtraDiurna", { enumerable: true, get: function () { return labor_1.calcularHoraExtraDiurna; } });
12
+ Object.defineProperty(exports, "calcularHoraExtraNocturna", { enumerable: true, get: function () { return labor_1.calcularHoraExtraNocturna; } });
13
+ Object.defineProperty(exports, "calcularHoraOrdinariaNocturna", { enumerable: true, get: function () { return labor_1.calcularHoraOrdinariaNocturna; } });
14
+ Object.defineProperty(exports, "calcularHoraDominicalFestiva", { enumerable: true, get: function () { return labor_1.calcularHoraDominicalFestiva; } });
15
+ Object.defineProperty(exports, "calcularHoraExtraDiurnaDominical", { enumerable: true, get: function () { return labor_1.calcularHoraExtraDiurnaDominical; } });
16
+ Object.defineProperty(exports, "calcularHoraExtraNocturnaDominical", { enumerable: true, get: function () { return labor_1.calcularHoraExtraNocturnaDominical; } });
17
+ Object.defineProperty(exports, "calcularRecargosSalariales", { enumerable: true, get: function () { return labor_1.calcularRecargosSalariales; } });
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Calcula el valor de la hora ordinaria de trabajo
3
+ * @param salario - Salario mensual del trabajador
4
+ * @param fecha - Fecha para la cual se calcula (afecta las horas mensuales por reforma)
5
+ * @returns Valor de la hora ordinaria
6
+ */
7
+ export declare const calcularHoraOrdinaria: (salario: number, fecha?: Date) => number;
8
+ /**
9
+ * Calcula el valor de la hora extra diurna (6am - 9pm)
10
+ * Recargo del 25% sobre la hora ordinaria
11
+ * @param salario - Salario mensual del trabajador
12
+ * @param fecha - Fecha de referencia
13
+ * @returns Valor de la hora extra diurna
14
+ */
15
+ export declare const calcularHoraExtraDiurna: (salario: number, fecha?: Date) => number;
16
+ /**
17
+ * Calcula el valor de la hora extra nocturna (9pm - 6am)
18
+ * Recargo del 75% sobre la hora ordinaria
19
+ * @param salario - Salario mensual del trabajador
20
+ * @param fecha - Fecha de referencia
21
+ * @returns Valor de la hora extra nocturna
22
+ */
23
+ export declare const calcularHoraExtraNocturna: (salario: number, fecha?: Date) => number;
24
+ /**
25
+ * Calcula el valor de la hora ordinaria nocturna (9pm - 6am)
26
+ * Recargo del 35% sobre la hora ordinaria
27
+ * @param salario - Salario mensual del trabajador
28
+ * @param fecha - Fecha de referencia
29
+ * @returns Valor de la hora ordinaria nocturna
30
+ */
31
+ export declare const calcularHoraOrdinariaNocturna: (salario: number, fecha?: Date) => number;
32
+ /**
33
+ * Calcula el valor de la hora ordinaria en domingo o festivo
34
+ * Recargo del 80% sobre la hora ordinaria (actualizado 2026)
35
+ * @param salario - Salario mensual del trabajador
36
+ * @param fecha - Fecha de referencia
37
+ * @returns Valor de la hora dominical/festiva
38
+ */
39
+ export declare const calcularHoraDominicalFestiva: (salario: number, fecha?: Date) => number;
40
+ /**
41
+ * Calcula el valor de la hora extra diurna en domingo o festivo
42
+ * Recargo del 105% sobre la hora ordinaria (25% extra + 80% dominical)
43
+ * @param salario - Salario mensual del trabajador
44
+ * @param fecha - Fecha de referencia
45
+ * @returns Valor de la hora extra diurna dominical/festiva
46
+ */
47
+ export declare const calcularHoraExtraDiurnaDominical: (salario: number, fecha?: Date) => number;
48
+ /**
49
+ * Calcula el valor de la hora extra nocturna en domingo o festivo
50
+ * Recargo del 155% sobre la hora ordinaria (75% extra + 80% dominical)
51
+ * @param salario - Salario mensual del trabajador
52
+ * @param fecha - Fecha de referencia
53
+ * @returns Valor de la hora extra nocturna dominical/festiva
54
+ */
55
+ export declare const calcularHoraExtraNocturnaDominical: (salario: number, fecha?: Date) => number;
56
+ export interface RecargosInput {
57
+ /** Horas extras diurnas (6am - 9pm) */
58
+ extrasDiurnas?: number;
59
+ /** Horas extras nocturnas (9pm - 6am) */
60
+ extrasNocturnas?: number;
61
+ /** Horas ordinarias nocturnas (9pm - 6am) */
62
+ recargoNocturno?: number;
63
+ /** Horas ordinarias en domingo/festivo diurnas */
64
+ festivasDiurnas?: number;
65
+ /** Horas extras diurnas en domingo/festivo */
66
+ extrasDiurnasDominicales?: number;
67
+ /** Horas extras nocturnas en domingo/festivo */
68
+ extrasNocturnasDominicales?: number;
69
+ }
70
+ /**
71
+ * Calcula todos los recargos salariales de un trabajador
72
+ * @param salario - Salario mensual base
73
+ * @param items - Objeto con las horas trabajadas por tipo
74
+ * @param fecha - Fecha de referencia para el cálculo
75
+ * @returns Objeto con detalle de recargos y total
76
+ */
77
+ export declare const calcularRecargosSalariales: (salario: number, items: RecargosInput, fecha?: Date) => {
78
+ vho: number;
79
+ detalle: {
80
+ extrasDiurnas: number;
81
+ extrasNocturnas: number;
82
+ recargoNocturno: number;
83
+ festivasDiurnas: number;
84
+ extrasDiurnasDominicales: number;
85
+ extrasNocturnasDominicales: number;
86
+ };
87
+ totalRecargos: number;
88
+ totalNomina: number;
89
+ };
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calcularRecargosSalariales = exports.calcularHoraExtraNocturnaDominical = exports.calcularHoraExtraDiurnaDominical = exports.calcularHoraDominicalFestiva = exports.calcularHoraOrdinariaNocturna = exports.calcularHoraExtraNocturna = exports.calcularHoraExtraDiurna = exports.calcularHoraOrdinaria = void 0;
4
+ const contants_1 = require("../contants");
5
+ /**
6
+ * Calcula el valor de la hora ordinaria de trabajo
7
+ * @param salario - Salario mensual del trabajador
8
+ * @param fecha - Fecha para la cual se calcula (afecta las horas mensuales por reforma)
9
+ * @returns Valor de la hora ordinaria
10
+ */
11
+ const calcularHoraOrdinaria = (salario, fecha = new Date()) => {
12
+ const limiteLey = new Date('2026-07-15');
13
+ const horasMes = fecha >= limiteLey
14
+ ? contants_1.CONSTANTES.HORAS_MES_DESPUES_JULIO
15
+ : contants_1.CONSTANTES.HORAS_MES_ANTES_JULIO;
16
+ return salario / horasMes;
17
+ };
18
+ exports.calcularHoraOrdinaria = calcularHoraOrdinaria;
19
+ /**
20
+ * Calcula el valor de la hora extra diurna (6am - 9pm)
21
+ * Recargo del 25% sobre la hora ordinaria
22
+ * @param salario - Salario mensual del trabajador
23
+ * @param fecha - Fecha de referencia
24
+ * @returns Valor de la hora extra diurna
25
+ */
26
+ const calcularHoraExtraDiurna = (salario, fecha = new Date()) => {
27
+ const vho = (0, exports.calcularHoraOrdinaria)(salario, fecha);
28
+ return vho * (1 + contants_1.TASAS_RECARGO.EXTRA_DIURNA);
29
+ };
30
+ exports.calcularHoraExtraDiurna = calcularHoraExtraDiurna;
31
+ /**
32
+ * Calcula el valor de la hora extra nocturna (9pm - 6am)
33
+ * Recargo del 75% sobre la hora ordinaria
34
+ * @param salario - Salario mensual del trabajador
35
+ * @param fecha - Fecha de referencia
36
+ * @returns Valor de la hora extra nocturna
37
+ */
38
+ const calcularHoraExtraNocturna = (salario, fecha = new Date()) => {
39
+ const vho = (0, exports.calcularHoraOrdinaria)(salario, fecha);
40
+ return vho * (1 + contants_1.TASAS_RECARGO.EXTRA_NOCTURNA);
41
+ };
42
+ exports.calcularHoraExtraNocturna = calcularHoraExtraNocturna;
43
+ /**
44
+ * Calcula el valor de la hora ordinaria nocturna (9pm - 6am)
45
+ * Recargo del 35% sobre la hora ordinaria
46
+ * @param salario - Salario mensual del trabajador
47
+ * @param fecha - Fecha de referencia
48
+ * @returns Valor de la hora ordinaria nocturna
49
+ */
50
+ const calcularHoraOrdinariaNocturna = (salario, fecha = new Date()) => {
51
+ const vho = (0, exports.calcularHoraOrdinaria)(salario, fecha);
52
+ return vho * (1 + contants_1.TASAS_RECARGO.RECARGO_NOCTURNO);
53
+ };
54
+ exports.calcularHoraOrdinariaNocturna = calcularHoraOrdinariaNocturna;
55
+ /**
56
+ * Calcula el valor de la hora ordinaria en domingo o festivo
57
+ * Recargo del 80% sobre la hora ordinaria (actualizado 2026)
58
+ * @param salario - Salario mensual del trabajador
59
+ * @param fecha - Fecha de referencia
60
+ * @returns Valor de la hora dominical/festiva
61
+ */
62
+ const calcularHoraDominicalFestiva = (salario, fecha = new Date()) => {
63
+ const vho = (0, exports.calcularHoraOrdinaria)(salario, fecha);
64
+ return vho * (1 + contants_1.TASAS_RECARGO.DOMINICAL_FESTIVO);
65
+ };
66
+ exports.calcularHoraDominicalFestiva = calcularHoraDominicalFestiva;
67
+ /**
68
+ * Calcula el valor de la hora extra diurna en domingo o festivo
69
+ * Recargo del 105% sobre la hora ordinaria (25% extra + 80% dominical)
70
+ * @param salario - Salario mensual del trabajador
71
+ * @param fecha - Fecha de referencia
72
+ * @returns Valor de la hora extra diurna dominical/festiva
73
+ */
74
+ const calcularHoraExtraDiurnaDominical = (salario, fecha = new Date()) => {
75
+ const vho = (0, exports.calcularHoraOrdinaria)(salario, fecha);
76
+ return vho * contants_1.TASAS_RECARGO.EXTRA_DIURNA_DOMINICAL;
77
+ };
78
+ exports.calcularHoraExtraDiurnaDominical = calcularHoraExtraDiurnaDominical;
79
+ /**
80
+ * Calcula el valor de la hora extra nocturna en domingo o festivo
81
+ * Recargo del 155% sobre la hora ordinaria (75% extra + 80% dominical)
82
+ * @param salario - Salario mensual del trabajador
83
+ * @param fecha - Fecha de referencia
84
+ * @returns Valor de la hora extra nocturna dominical/festiva
85
+ */
86
+ const calcularHoraExtraNocturnaDominical = (salario, fecha = new Date()) => {
87
+ const vho = (0, exports.calcularHoraOrdinaria)(salario, fecha);
88
+ return vho * contants_1.TASAS_RECARGO.EXTRA_NOCTURNA_DOMINICAL;
89
+ };
90
+ exports.calcularHoraExtraNocturnaDominical = calcularHoraExtraNocturnaDominical;
91
+ /**
92
+ * Calcula todos los recargos salariales de un trabajador
93
+ * @param salario - Salario mensual base
94
+ * @param items - Objeto con las horas trabajadas por tipo
95
+ * @param fecha - Fecha de referencia para el cálculo
96
+ * @returns Objeto con detalle de recargos y total
97
+ */
98
+ const calcularRecargosSalariales = (salario, items, fecha = new Date()) => {
99
+ const vho = (0, exports.calcularHoraOrdinaria)(salario, fecha);
100
+ const detalle = {
101
+ extrasDiurnas: (items.extrasDiurnas || 0) * vho * contants_1.TASAS_RECARGO.EXTRA_DIURNA,
102
+ extrasNocturnas: (items.extrasNocturnas || 0) * vho * contants_1.TASAS_RECARGO.EXTRA_NOCTURNA,
103
+ recargoNocturno: (items.recargoNocturno || 0) * vho * contants_1.TASAS_RECARGO.RECARGO_NOCTURNO,
104
+ festivasDiurnas: (items.festivasDiurnas || 0) * vho * contants_1.TASAS_RECARGO.DOMINICAL_FESTIVO,
105
+ extrasDiurnasDominicales: (items.extrasDiurnasDominicales || 0) * vho * contants_1.TASAS_RECARGO.EXTRA_DIURNA_DOMINICAL,
106
+ extrasNocturnasDominicales: (items.extrasNocturnasDominicales || 0) * vho * contants_1.TASAS_RECARGO.EXTRA_NOCTURNA_DOMINICAL,
107
+ };
108
+ const totalRecargos = Object.values(detalle).reduce((a, b) => a + b, 0);
109
+ return {
110
+ vho,
111
+ detalle,
112
+ totalRecargos,
113
+ totalNomina: salario + totalRecargos
114
+ };
115
+ };
116
+ exports.calcularRecargosSalariales = calcularRecargosSalariales;
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "tributos-co",
3
+ "version": "1.0.0",
4
+ "description": "Cálculos de salario, recargos de salarios e impuestos (IVA, ICA, renta) en Colombia",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "prepublishOnly": "npm run build",
10
+ "test": "jest",
11
+ "test:watch": "jest --watch",
12
+ "test:coverage": "jest --coverage"
13
+ },
14
+ "keywords": ["colombia", "tributos", "impuestos", "salario", "nomina", "recargos", "horas-extras", "iva", "ica", "renta"],
15
+ "author": "",
16
+ "license": "ISC",
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "devDependencies": {
21
+ "@types/jest": "^29.5.12",
22
+ "jest": "^29.7.0",
23
+ "ts-jest": "^29.1.2",
24
+ "typescript": "^5.9.3"
25
+ }
26
+ }