{% extends "master_modal.html.twig" %}
{% block tituloModal %} (APY-FR-130) {% if referencia %} {{ referencia}} {% endif %} {% endblock %}
{% block contenidoModal %}
<div class="row">
{{ form_start(form) }}
<div class="col-md-12 col-lg-12 col-xl-12 mx-auto d-block" id="wizard2">
<h3>Inf. Perfil Cargo</h3>
<section>
<div class="card card-body pd-20 pd-md-40 border shadow-none">
<div class="row row-sm mb-20">
{#columna 1#}
<div class="col-lg-4">
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.ParProceso) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group" id="div_{{ form.subprocesoId.vars.id }}">
{{ form_row(form.subprocesoId) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group" id="div_{{ form.cargo.vars.id }}">
{{ form_row(form.cargo) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group" id="div_{{ form.jefeInmediatoCargo.vars.id }}">
{{ form_row(form.jefeInmediatoCargo) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.empresaFilial) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group" id="div_{{ form.cargoAprueba.vars.id }}">
{{ form_row(form.cargoAprueba) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group" id="div_{{ form.sede.vars.id }}">
{{ form_row(form.sede) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.empresaServicios) }}
</div>
</div>
</div>
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group" id="div_{{ form.personalCargo.vars.id }}">
{{ form_row(form.personalCargo) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.ParNivelAutoridad) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{# {{ form_row(form.ParCriticidad) }}#}
{{ form_row(form.ParTipoPerfil) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.ParNivelEducativo) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.tipoContrato) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.vinculacion) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.sistemaInformacion) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.recursos) }}
</div>
</div>
<div>
<div class="custom-control custom-switch">
{{ form_widget(form.pruebaTecnica) }}{{ form_label(form.pruebaTecnica) }}
</div>
<div class="form-group">
{% if entity.archivo %}
<a href="{{ asset('Repository/GHPerfilCargo/'~entity.archivo) }}" class="btn btn-info btn-block" target="_blank"><i class="fas fa-file-upload"></i> Ver Prueba Tecnica</a>
{% endif %}
{{ form_row(form.file) }}
</div>
</div>
<div class="form-group">
{{ form_row(form.rangoSalarial) }}
</div>
<br>
<b>Calificar Criticidad</b><hr>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.accesoInfoConf) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.constratacionAsociados) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.tomaDecisiones) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.programasInfoSensible) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
{{ form_row(form.contactoCarga) }}
</div>
</div>
<div class="col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="form-label d-block">Resultado Criticidad</label>
<div id="resultadoCriticidad">
<p style="color:gray; font-size: 16px">Sin calcular</p>
</div>
</div>
</div>
</div>
</div>
{#columna 2#}
<div class="col-lg-4">
<div class="form-group">
{{ form_row(form.educacion) }}
</div>
<div class="form-group">
{{ form_row(form.habilidades) }}
</div>
<div class="form-group">
{{ form_row(form.resumenCargo) }}
</div>
<div class="form-group">
{{ form_row(form.responsabilidades) }}
</div>
<div class="form-group">
{{ form_row(form.competenciasOrganizacionales) }}
</div>
<div class="form-group">
{{ form_row(form.competenciasFuncionales) }}
</div>
</div>
{#columna 3#}
<div class="col-lg-4">
<div class="form-group">
{{ form_row(form.formacionExperiencia) }}
</div>
<div class="form-group">
{{ form_row(form.experiencia) }}
</div>
<div class="form-group">
{{ form_row(form.conocimientosEspecificos) }}
</div>
<div class="form-group">
{{ form_row(form.documentosAplicables) }}
</div>
</div>
<div>
<input type="submit" id ="submitForm1" style="visibility: hidden" class="btn btn-primary mt-3 mb-0" value="guardar">
</div>
</div>
</div>
{{ form_end(form) }}
</section>
<h3>Relaciones</h3>
<section>
<div class="row">
<div class="col-md-12">
{% if entity is defined and entity.id is not null %}
<a class="btn btn-secondary btn-rounded btn-block ajax2" href="{{ path('gh_perfil_cargo_agregar_relacion', {'id': entity.id}) }}">
<i class="fas fa-plus-circle"></i> Agregar Relación
</a>
<br>
<br>
{% endif %}
</div>
<table class="table table-condensed nonTable">
<thead>
<th>accion</th>
<th>Tipo Relación</th>
<th>Relación </th>
<th>Propósito</th>
</thead>
<tbody>
{% for relaciones in entity.perfilCargoRelaciones %}
<tr>
<td>
<a class="btn btn-success fa-sm ajax2" href="{{ path('gh_perfil_cargo_editar_relacion',{'id':relaciones.id}) }}"> <i class="far fa-edit"></i> </a>
<button type="button" class="btn btn-danger btn-sm confirmar-delete" data-href="{{ path('gh_perfil_cargo_eliminar_relacion',{'id':relaciones.id}) }}">
<i class="fas fa-trash"></i>
</button>
</td>
<td>
{% if relaciones.relacion == 1 %}
Relación Interna
{% elseif relaciones.relacion == 2 %}
Relación Externa
{% else %}
No definida
{% endif %}
</td>
{% if relaciones.relacion == 1 %}
<td>{{ relaciones.relacionesInternaMultiples|join(', ') }}</td>
{% else %}
<td>{{ relaciones.relacionExterna|raw }}</td>
{% endif %}
{% if relaciones.relacion == 1 %}
<td>{{ relaciones.propositoReIn|raw }}</td>
{% else %}
<td>{{ relaciones.proposito|raw }}</td>
{% endif %}
</tr>
{% endfor %}
</tbody>
</table>
</div>
</section>
<h3>GH-SST</h3>
<section>
<!-- CONDICIONES FÍSICAS -->
<div class="row mb-4">
<div class="col-md-12">
{% if entity is defined and entity.id is not null %}
<a class="btn btn-secondary btn-rounded btn-block ajax2 mb-3"
href="{{ path('app_g_h_perfil_cargo_s_s_t_new', {'id': entity.id, 'tipoSST': 'CondFisicas'}) }}">
<i class="fas fa-plus-circle"></i> Agregar Condiciones Físicas
</a>
{% endif %}
<table class="table table-condensed nonTable">
<thead>
<tr>
<th>Acciones</th>
<th>Condiciones Físicas</th>
</tr>
</thead>
<tbody>
{% set filas = 0 %}
{% for sst in entity.perfilCargoSST %}
{% set contenido = sst.condicionesFisicas|striptags|trim %}
{% if contenido is not empty %}
{% set filas = filas + 1 %}
<tr>
<td class="text-start">
<a class="btn btn-success btn-sm ajax2"
href="{{ path('app_g_h_perfil_cargo_s_s_t_new', {'id': entity.id, 'tipoSST': 'CondFisicas', 'idSST': sst.id}) }}">
<i class="far fa-edit"></i>
</a>
</td>
<td>{{ sst.condicionesFisicas|raw }}</td>
</tr>
{% endif %}
{% endfor %}
{% if filas == 0 %}
<tr>
<td class="text-muted fst-italic">No hay condiciones físicas registradas.</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
</div>
<!-- CONDICIONES MENTALES -->
<div class="row mb-4">
<div class="col-md-12">
{% if entity is defined and entity.id is not null %}
<a class="btn btn-secondary btn-rounded btn-block ajax2 mb-3"
href="{{ path('app_g_h_perfil_cargo_s_s_t_new', {'id': entity.id, 'tipoSST': 'CondMentales'}) }}">
<i class="fas fa-plus-circle"></i> Agregar Condiciones Mentales
</a>
{% endif %}
<table class="table table-condensed nonTable">
<thead>
<tr>
<th>Acciones</th>
<th>Condiciones Mentales</th>
</tr>
</thead>
<tbody>
{% set filas = 0 %}
{% for sst in entity.perfilCargoSST %}
{% set contenido = sst.condicionesMentales|striptags|trim %}
{% if contenido is not empty %}
{% set filas = filas + 1 %}
<tr>
<td class="text-start">
<a class="btn btn-success btn-sm ajax2"
href="{{ path('app_g_h_perfil_cargo_s_s_t_new', {'id': entity.id, 'tipoSST': 'CondMentales', 'idSST': sst.id}) }}">
<i class="far fa-edit"></i>
</a>
</td>
<td>{{ sst.condicionesMentales|raw }}</td>
</tr>
{% endif %}
{% endfor %}
{% if filas == 0 %}
<tr>
<td class="text-muted fst-italic">No hay condiciones mentales registradas.</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
</div>
<!-- RIESGOS LABORALES -->
<div class="row mb-4">
<div class="col-md-12">
{% if entity is defined and entity.id is not null %}
<a class="btn btn-secondary btn-rounded btn-block ajax2 mb-3"
href="{{ path('app_g_h_perfil_cargo_s_s_t_new', {'id': entity.id, 'tipoSST': 'RiesgosLaborales'}) }}">
<i class="fas fa-plus-circle"></i> Agregar Riesgos Laborales
</a>
<br>
{% endif %}
<table class="table table-condensed nonTable">
<thead>
<tr>
<th>Acciones</th>
<th>Actividad</th>
<th>Peligro (GTC 45)</th>
<th>Riesgo</th>
<th>Medidas de Control</th>
</tr>
</thead>
<tbody>
{% set filas = 0 %}
{% for sst in entity.perfilCargoSST %}
{% set tieneDatos = (
sst.riesgosLaborales|striptags|trim is not empty or
sst.peligro|striptags|trim is not empty or
sst.riesgo|striptags|trim is not empty or
sst.medidasControl|striptags|trim is not empty
) %}
{% if tieneDatos %}
{% set filas = filas + 1 %}
<tr>
<td>
<a class="btn btn-success btn-sm ajax2"
href="{{ path('app_g_h_perfil_cargo_s_s_t_new', {'id': entity.id, 'tipoSST': 'RiesgosLaborales', 'idSST': sst.id}) }}">
<i class="far fa-edit"></i>
</a>
</td>
<td>{{ sst.riesgosLaborales|raw }}</td>
<td>{{ sst.peligro|raw }}</td>
<td>{{ sst.riesgo|raw }}</td>
<td>{{ sst.medidasControl|raw }}</td>
</tr>
{% endif %}
{% endfor %}
{% if filas == 0 %}
<tr>
<td colspan="4" class="text-muted fst-italic">No hay riesgos laborales registrados.</td>
</tr>
{% endif %}
</tbody>
</table>
</div>
</div>
</section>
{% endblock %}
{% block scripts %}
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script src="{{ asset('assets/') }}js/alerts.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#wizard2').steps({
labels: {
cancel: "Cancelar",
current: "Actual:",
pagination: "Pagination",
finish: "Finalizar",
next: "Siguiente",
previous: "Anterior",
loading: "Cargando ..."
},
headerTag: 'h3',
bodyTag: 'section',
autoFocus: true,
startIndex:{{ step }} ,
titleTemplate: '<span class="number">#index#<\/span> <span class="title">#title#<\/span>',
onInit: function () {
var $modal = $('#ajax-modal');
normalizacionFormulario($modal, true);
$('[data-toggle="tooltip"]').tooltip();
camposDependientes('{{ form.ParProceso.vars.id }}', ['{{ form.cargo.vars.id }}', '{{ form.subprocesoId.vars.id }}', '{{ form.personalCargo.vars.id }}'], false);{#, '{{ form.jefeInmediatoCargo.vars.id }}', '{{ form.cargoAprueba.vars.id }}'#}
camposDependientes('{{ form.empresaFilial.vars.id }}', ['{{ form.sede.vars.id }}'], false);
camposCondicionados('{{ form.pruebaTecnica.vars.id }}', ['{{ form.file.vars.id }}']);
},
onStepChanging: function (event, currentIndex, newIndex) {
if (currentIndex < newIndex) {
// Step 1 form validation
if (currentIndex === 0) {
form = $("#submitForm1").closest('form');
$("#submitForm1").trigger('click');
}
// Step 2 form validation
if (currentIndex === 1) {
/*var email = $('#email').parsley();
if (email.isValid()) {
return true;
} else {
email.validate();
}*/
return true;
}
// Always allow step back to the previous step even if the current step is not valid.
} else {
return true;
}
},
onFinished: function (event, currentIndex) {
// $("#submitForm1").trigger('click');
location.reload();
},
});
//cada vez que se acaban de actualizar los campos dependientes
$(document).on('camposDependientes:end', function (e, idCampo, camposActualizados) {
//campo de cargo
let cargoSelect = $('#' + '{{ form.cargo.vars.id }}');
//campo de personal a cargo
let personalCargoSelect = $( '#' + '{{ form.personalCargo.vars.id }}');
//opciones originales del campo de personal a cargo
let originalOptions = personalCargoSelect.html();
//cuando el cambio de cargo cambia
cargoSelect.on("change", function(){
//restaurar opciones originales
personalCargoSelect.html(originalOptions);
let cargoElegido = cargoSelect.find('option:selected').text();
//filtrar en personal a cargo el valor elegido en cargo y removerlo
personalCargoSelect.find('option').filter(function() {
return $(this).text() === cargoElegido;
}).remove();
//reconstruir el multiselect
personalCargoSelect.multiselect('rebuild');
})
})
const camposCriticidad = {
accesoInfoConf: '#{{ form.accesoInfoConf.vars.id }}',
constratacionAsociados: '#{{ form.constratacionAsociados.vars.id }}',
tomaDecisiones: '#{{ form.tomaDecisiones.vars.id }}',
programasInfoSensible: '#{{ form.programasInfoSensible.vars.id }}',
contactoCarga: '#{{ form.contactoCarga.vars.id }}',
resultado: '#resultadoCriticidad',
};
function calcularCriticidad() {
const valores = {
accesoInfoConf: parseFloat($(camposCriticidad.accesoInfoConf).val()) || 0,
constratacionAsociados: parseFloat($(camposCriticidad.constratacionAsociados).val()) || 0,
tomaDecisiones: parseFloat($(camposCriticidad.tomaDecisiones).val()) || 0,
programasInfoSensible: parseFloat($(camposCriticidad.programasInfoSensible).val()) || 0,
contactoCarga: parseFloat($(camposCriticidad.contactoCarga).val()) || 0
};
const ponderacion =
(valores.accesoInfoConf * 0.20) +
(valores.constratacionAsociados * 0.20) +
(valores.tomaDecisiones * 0.25) +
(valores.programasInfoSensible * 0.15) +
(valores.contactoCarga * 0.20);
let resultadoHtml, valorCriticidad;
if (ponderacion >= 3) {
resultadoHtml = '<p style="font-size: 16px" class="badge bg-danger">Crítico</p>';
valorCriticidad = 'Crítico';
} else {
resultadoHtml = '<p style="font-size: 16px" class="badge bg-success">No Crítico</p>';
valorCriticidad = 'No Crítico';
}
$(camposCriticidad.resultado).html(resultadoHtml);
$(camposCriticidad.criticidadInput).val(valorCriticidad);
}
// Ejecutar al cargar
calcularCriticidad();
// Recalcular al cambiar cualquiera de los campos
Object.values(camposCriticidad).slice(0, 5).forEach(function (selector) {
$(selector).on('change input keyup', calcularCriticidad);
});
});
</script>
{% endblock %}