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 +21 -0
- package/README.md +202 -0
- package/dist/contants/index.d.ts +16 -0
- package/dist/contants/index.js +20 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +17 -0
- package/dist/modules/labor.d.ts +89 -0
- package/dist/modules/labor.js +116 -0
- package/package.json +26 -0
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
|
+
};
|
package/dist/index.d.ts
ADDED
|
@@ -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
|
+
}
|