[et_pb_section fb_built="1" _builder_version="4.0.9" custom_padding="0px|0px|0px|0px" hover_enabled="0" sticky_enabled="0"][et_pb_row _builder_version="4.0.9" custom_padding="0px|0px|0px|0px" hover_enabled="0" sticky_enabled="0"][et_pb_column type="4_4" _builder_version="4.0.9"][et_pb_text _builder_version="4.0.9" hover_enabled="0" sticky_enabled="0"]
<style>
.calculator-container {
max-width: 800px;
margin: 0 auto;
padding: 20px;
background-color: #f5f5f5;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.calculator-title {
text-align: center;
color: #2E7D32;
margin-bottom: 20px;
}
.input-group {
margin-bottom: 15px;
}
.input-group label {
display: block;
font-weight: bold;
margin-bottom: 5px;
}
.input-group input,
.input-group select {
width: 100%;
padding: 10px;
border: 1px solid #ddd;
border-radius: 4px;
}
.btn-calculate {
background-color: #4CAF50;
color: white;
border: none;
padding: 12px 20px;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
display: block;
margin: 20px auto;
}
.btn-calculate:hover {
background-color: #2E7D32;
}
.results-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
display: none;
}
.results-table th,
.results-table td {
border: 1px solid #ddd;
padding: 10px;
text-align: left;
}
.results-table th {
background-color: #C8E6C9;
}
.result-value {
font-weight: bold;
color: #2E7D32;
}
.total-value {
font-weight: bold;
color: #d9534f;
font-size: 1.1em;
}
</style>
<div class="calculator-container">
<h2 class="calculator-title">Calculador de Prima de Servicios USO - 2025</h2>
<div class="input-group">
<label for="fecha_ingreso">Fecha de Ingreso:</label>
<input type="date" id="fecha_ingreso">
</div>
<div class="input-group">
<label for="fecha_calculo">Fecha de Cálculo (2025):</label>
<input type="date" id="fecha_calculo">
</div>
<div class="input-group">
<label for="nivel_cargo">Nivel del Cargo:</label>
<select id="nivel_cargo">
<option value="">Seleccione un nivel...</option>
<option value="A1">A1 - Prima Serv. Día: $11,733</option>
<option value="A2">A2 - Prima Serv. Día: $12,265</option>
<option value="B3">B3 - Prima Serv. Día: $12,993</option>
<option value="B4">B4 - Prima Serv. Día: $13,588</option>
<option value="C5">C5 - Prima Serv. Día: $14,214</option>
<option value="C6">C6 - Prima Serv. Día: $14,871</option>
<option value="D7">D7 - Prima Serv. Día: $15,782</option>
<option value="D8">D8 - Prima Serv. Día: $16,631</option>
<option value="D9">D9 - Prima Serv. Día: $17,738</option>
<option value="E10">E10 - Prima Serv. Día: $18,726</option>
<option value="E11">E11 - Prima Serv. Día: $19,745</option>
</select>
</div>
<button class="btn-calculate" onclick="calculatePrima()">Calcular Prima de Servicios</button>
<table id="results_table" class="results-table">
<tr>
<th>Concepto</th>
<th>Valor</th>
</tr>
<tr>
<td>Nivel y Código del Cargo</td>
<td><span id="resultado_nivel" class="result-value">-</span></td>
</tr>
<tr>
<td>Prima de Servicios (Valor Día)</td>
<td>$ <span id="resultado_valor_dia" class="result-value">-</span></td>
</tr>
<tr>
<td>Semestre de Cálculo</td>
<td><span id="resultado_semestre" class="result-value">-</span></td>
</tr>
<tr>
<td>Días Laborados en el Semestre</td>
<td><span id="resultado_dias" class="result-value">-</span> días</td>
</tr>
<tr>
<td>Prima de Servicios Total a Recibir</td>
<td>$ <span id="resultado_total" class="total-value">-</span></td>
</tr>
</table>
</div>
<script>
function calculatePrima() {
// Obtener valores del formulario
var fechaIngreso = document.getElementById('fecha_ingreso').value;
var fechaCalculo = document.getElementById('fecha_calculo').value;
var nivelCargo = document.getElementById('nivel_cargo').value;
// Validar los campos
if (!fechaIngreso || !fechaCalculo || !nivelCargo) {
alert('Por favor complete todos los campos');
return;
}
// Convertir fechas a objetos Date
var fechaIngresoObj = new Date(fechaIngreso);
var fechaCalculoObj = new Date(fechaCalculo);
// Validar que la fecha de cálculo sea posterior a la de ingreso
if (fechaCalculoObj < fechaIngresoObj) {
alert('La fecha de cálculo debe ser posterior a la fecha de ingreso');
return;
}
// Valores de prima de servicios por día según nivel
var valoresPrima = {
'A1': 11733,
'A2': 12265,
'B3': 12993,
'B4': 13588,
'C5': 14214,
'C6': 14871,
'D7': 15782,
'D8': 16631,
'D9': 17738,
'E10': 18726,
'E11': 19745
};
// Obtener valor diario de prima
var valorDiaPrima = valoresPrima[nivelCargo];
// Determinar semestre
var mes = fechaCalculoObj.getMonth(); // 0-11
var año = fechaCalculoObj.getFullYear();
var semestre = mes < 6 ? 1 : 2;
// Fechas de inicio y fin del semestre
var inicioSemestre = new Date(año, semestre === 1 ? 0 : 6, 1);
var finSemestre = new Date(año, semestre === 1 ? 5 : 11, semestre === 1 ? 30 : 31);
// Ajustar fecha de inicio para el cálculo
var fechaInicioCalculo = fechaIngresoObj > inicioSemestre ? fechaIngresoObj : inicioSemestre;
// Ajustar fecha de fin para el cálculo
var fechaFinCalculo = fechaCalculoObj < finSemestre ? fechaCalculoObj : finSemestre;
// Calcular días laborados
var unDia = 24 * 60 * 60 * 1000;
var diasLaborados = Math.round((fechaFinCalculo - fechaInicioCalculo) / unDia) + 1;
// Calcular prima total
var primaTotal = valorDiaPrima * diasLaborados;
// Formatear números
function formatNumber(num) {
return new Intl.NumberFormat('es-CO', {
minimumFractionDigits: 2,
maximumFractionDigits: 2
}).format(num);
}
// Mostrar resultados
document.getElementById('resultado_nivel').textContent = nivelCargo;
document.getElementById('resultado_valor_dia').textContent = formatNumber(valorDiaPrima);
document.getElementById('resultado_semestre').textContent = semestre + '° Semestre de ' + año;
document.getElementById('resultado_dias').textContent = diasLaborados;
document.getElementById('resultado_total').textContent = formatNumber(primaTotal);
// Mostrar tabla de resultados
document.getElementById('results_table').style.display = 'table';
}
</script>
[/et_pb_text][/et_pb_column][/et_pb_row][/et_pb_section]