templates/gh_perfil_cargo/editar.html.twig line 1

Open in your IDE?
  1. {% extends "master_modal.html.twig" %}
  2. {% block tituloModal %} (APY-FR-130) {% if referencia %} {{ referencia}} {% endif %} {% endblock %}
  3. {% block contenidoModal %}
  4.     <div class="row">
  5.         {{ form_start(form) }}
  6.         <div class="col-md-12 col-lg-12 col-xl-12 mx-auto d-block" id="wizard2">
  7.             <h3>Inf. Perfil Cargo</h3>
  8.             <section>
  9.                 <div class="card card-body pd-20 pd-md-40 border shadow-none">
  10.                     <div class="row row-sm mb-20">
  11.                         {#columna 1#}
  12.                         <div class="col-lg-4">
  13.                             <div class="row">
  14.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  15.                                     <div class="form-group">
  16.                                         {{ form_row(form.ParProceso) }}
  17.                                     </div>
  18.                                 </div>
  19.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  20.                                     <div class="form-group" id="div_{{ form.subprocesoId.vars.id }}">
  21.                                         {{ form_row(form.subprocesoId) }}
  22.                                     </div>
  23.                                 </div>
  24.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  25.                                     <div class="form-group" id="div_{{ form.cargo.vars.id }}">
  26.                                         {{ form_row(form.cargo) }}
  27.                                     </div>
  28.                                 </div>
  29.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  30.                                     <div class="form-group" id="div_{{ form.jefeInmediatoCargo.vars.id }}">
  31.                                         {{ form_row(form.jefeInmediatoCargo) }}
  32.                                     </div>
  33.                                 </div>
  34.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  35.                                     <div class="form-group">
  36.                                         {{ form_row(form.empresaFilial) }}
  37.                                     </div>
  38.                                 </div>
  39.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  40.                                     <div class="form-group" id="div_{{ form.cargoAprueba.vars.id }}">
  41.                                         {{ form_row(form.cargoAprueba) }}
  42.                                     </div>
  43.                                 </div>
  44.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  45.                                     <div class="form-group" id="div_{{ form.sede.vars.id }}">
  46.                                         {{ form_row(form.sede) }}
  47.                                     </div>
  48.                                 </div>
  49.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  50.                                     <div class="form-group">
  51.                                         {{ form_row(form.empresaServicios) }}
  52.                                     </div>
  53.                                 </div>
  54.                             </div>
  55.                             <div class="row">
  56.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  57.                                     <div class="form-group" id="div_{{ form.personalCargo.vars.id }}">
  58.                                         {{ form_row(form.personalCargo) }}
  59.                                     </div>
  60.                                 </div>
  61.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  62.                                     <div class="form-group">
  63.                                         {{ form_row(form.ParNivelAutoridad) }}
  64.                                     </div>
  65.                                 </div>
  66.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  67.                                     <div class="form-group">
  68.                                         {# {{ form_row(form.ParCriticidad) }}#}
  69.                                         {{ form_row(form.ParTipoPerfil) }}
  70.                                     </div>
  71.                                 </div>
  72.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  73.                                     <div class="form-group">
  74.                                         {{ form_row(form.ParNivelEducativo) }}
  75.                                     </div>
  76.                                 </div>
  77.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  78.                                     <div class="form-group">
  79.                                         {{ form_row(form.tipoContrato) }}
  80.                                     </div>
  81.                                 </div>
  82.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  83.                                     <div class="form-group">
  84.                                         {{ form_row(form.vinculacion) }}
  85.                                     </div>
  86.                                 </div>
  87.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  88.                                     <div class="form-group">
  89.                                         {{ form_row(form.sistemaInformacion) }}
  90.                                     </div>
  91.                                 </div>
  92.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  93.                                     <div class="form-group">
  94.                                         {{ form_row(form.recursos) }}
  95.                                     </div>
  96.                                 </div>
  97.                                 <div>
  98.                                     <div class="custom-control custom-switch">
  99.                                         {{ form_widget(form.pruebaTecnica) }}{{ form_label(form.pruebaTecnica) }}
  100.                                     </div>
  101.                                     <div class="form-group">
  102.                                         {% if entity.archivo %}
  103.                                             <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>
  104.                                         {% endif %}
  105.                                         {{ form_row(form.file) }}
  106.                                     </div>
  107.                                 </div>
  108.                                 <div class="form-group">
  109.                                     {{ form_row(form.rangoSalarial) }}
  110.                                 </div>
  111.                                 <br>
  112.                                 <b>Calificar Criticidad</b><hr>
  113.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  114.                                     <div class="form-group">
  115.                                         {{ form_row(form.accesoInfoConf) }}
  116.                                     </div>
  117.                                 </div>
  118.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  119.                                     <div class="form-group">
  120.                                         {{ form_row(form.constratacionAsociados) }}
  121.                                     </div>
  122.                                 </div>
  123.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  124.                                     <div class="form-group">
  125.                                         {{ form_row(form.tomaDecisiones) }}
  126.                                     </div>
  127.                                 </div>
  128.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  129.                                     <div class="form-group">
  130.                                         {{ form_row(form.programasInfoSensible) }}
  131.                                     </div>
  132.                                 </div>
  133.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  134.                                     <div class="form-group">
  135.                                         {{ form_row(form.contactoCarga) }}
  136.                                     </div>
  137.                                 </div>
  138.                                 <div class="col-lg-6 col-md-6 col-sm-12">
  139.                                     <div class="form-group">
  140.                                         <label class="form-label d-block">Resultado Criticidad</label>
  141.                                         <div id="resultadoCriticidad">
  142.                                             <p style="color:gray; font-size: 16px">Sin calcular</p>
  143.                                         </div>
  144.                                     </div>
  145.                                 </div>
  146.                             </div>
  147.                         </div>
  148.                         {#columna 2#}
  149.                         <div class="col-lg-4">
  150.                             <div class="form-group">
  151.                                 {{ form_row(form.educacion) }}
  152.                             </div>
  153.                             <div class="form-group">
  154.                                 {{ form_row(form.habilidades) }}
  155.                             </div>
  156.                             <div class="form-group">
  157.                                 {{ form_row(form.resumenCargo) }}
  158.                             </div>
  159.                             <div class="form-group">
  160.                                 {{ form_row(form.responsabilidades) }}
  161.                             </div>
  162.                             <div class="form-group">
  163.                                 {{ form_row(form.competenciasOrganizacionales) }}
  164.                             </div>
  165.                             <div class="form-group">
  166.                                 {{ form_row(form.competenciasFuncionales) }}
  167.                             </div>
  168.                         </div>
  169.                         {#columna 3#}
  170.                         <div class="col-lg-4">
  171.                             <div class="form-group">
  172.                                 {{ form_row(form.formacionExperiencia) }}
  173.                             </div>
  174.                             <div class="form-group">
  175.                                 {{ form_row(form.experiencia) }}
  176.                             </div>
  177.                             <div class="form-group">
  178.                                 {{ form_row(form.conocimientosEspecificos) }}
  179.                             </div>
  180.                             <div class="form-group">
  181.                                 {{ form_row(form.documentosAplicables) }}
  182.                             </div>
  183.                         </div>
  184.                         <div>
  185.                             <input type="submit" id ="submitForm1" style="visibility: hidden" class="btn btn-primary mt-3 mb-0" value="guardar">
  186.                         </div>
  187.                     </div>
  188.                 </div>
  189.                 {{ form_end(form) }}
  190.             </section>
  191.             <h3>Relaciones</h3>
  192.             <section>
  193.                 <div class="row">
  194.                     <div class="col-md-12">
  195.                         {% if entity is defined and entity.id is not null %}
  196.                                 <a class="btn btn-secondary btn-rounded btn-block ajax2" href="{{ path('gh_perfil_cargo_agregar_relacion', {'id': entity.id}) }}">
  197.                                     <i class="fas fa-plus-circle"></i> Agregar Relación
  198.                                 </a>
  199.                                 <br>
  200.                                 <br>
  201.                         {% endif %}
  202.                     </div>
  203.                             <table class="table table-condensed nonTable">
  204.                                 <thead>
  205.                                 <th>accion</th>
  206.                                 <th>Tipo Relación</th>
  207.                                 <th>Relación </th>
  208.                                 <th>Propósito</th>
  209.                                 </thead>
  210.                                 <tbody>
  211.                                 {% for relaciones in entity.perfilCargoRelaciones %}
  212.                                 <tr>
  213.                                     <td>
  214.                                         <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>
  215.                                         <button type="button" class="btn btn-danger btn-sm confirmar-delete" data-href="{{ path('gh_perfil_cargo_eliminar_relacion',{'id':relaciones.id}) }}">
  216.                                             <i class="fas fa-trash"></i>
  217.                                         </button>
  218.                                     </td>
  219.                                     <td>
  220.                                         {% if relaciones.relacion == 1 %}
  221.                                             Relación Interna
  222.                                         {% elseif relaciones.relacion == 2 %}
  223.                                             Relación Externa
  224.                                         {% else %}
  225.                                             No definida
  226.                                         {% endif %}
  227.                                     </td>
  228.                                     {% if relaciones.relacion == 1 %}
  229.                                         <td>{{ relaciones.relacionesInternaMultiples|join(', ') }}</td>
  230.                                     {% else %}
  231.                                         <td>{{ relaciones.relacionExterna|raw }}</td>
  232.                                     {% endif %}
  233.                                     {% if relaciones.relacion == 1 %}
  234.                                         <td>{{ relaciones.propositoReIn|raw }}</td>
  235.                                     {% else %}
  236.                                         <td>{{ relaciones.proposito|raw }}</td>
  237.                                     {% endif %}
  238.                                 </tr>
  239.                                 {% endfor %}
  240.                                 </tbody>
  241.                             </table>
  242.                 </div>
  243.             </section>
  244.             <h3>GH-SST</h3>
  245.             <section>
  246.     <!-- CONDICIONES FÍSICAS -->
  247.     <div class="row mb-4">
  248.         <div class="col-md-12">
  249.             {% if entity is defined and entity.id is not null %}
  250.                 <a class="btn btn-secondary btn-rounded btn-block ajax2 mb-3"
  251.                    href="{{ path('app_g_h_perfil_cargo_s_s_t_new', {'id': entity.id, 'tipoSST': 'CondFisicas'}) }}">
  252.                     <i class="fas fa-plus-circle"></i> Agregar Condiciones Físicas
  253.                 </a>
  254.             {% endif %}
  255.             <table class="table table-condensed nonTable">
  256.                 <thead>
  257.                  <tr>
  258.                     <th>Acciones</th>
  259.                     <th>Condiciones Físicas</th>
  260.                  </tr>
  261.                 </thead>
  262.                 <tbody>
  263.                     {% set filas = 0 %}
  264.                     {% for sst in entity.perfilCargoSST %}
  265.                         {% set contenido = sst.condicionesFisicas|striptags|trim %}
  266.                         {% if contenido is not empty %}
  267.                             {% set filas = filas + 1 %}
  268.                             <tr>
  269.                                 <td class="text-start">
  270.                                     <a class="btn btn-success btn-sm ajax2"
  271.                                        href="{{ path('app_g_h_perfil_cargo_s_s_t_new', {'id': entity.id, 'tipoSST': 'CondFisicas', 'idSST': sst.id}) }}">
  272.                                         <i class="far fa-edit"></i>
  273.                                     </a>
  274.                                 </td>
  275.                                 <td>{{ sst.condicionesFisicas|raw }}</td>
  276.                             </tr>
  277.                         {% endif %}
  278.                     {% endfor %}
  279.                     {% if filas == 0 %}
  280.                         <tr>
  281.                             <td class="text-muted fst-italic">No hay condiciones físicas registradas.</td>
  282.                         </tr>
  283.                     {% endif %}
  284.                 </tbody>
  285.             </table>
  286.         </div>
  287.     </div>
  288.     <!-- CONDICIONES MENTALES -->
  289.     <div class="row mb-4">
  290.         <div class="col-md-12">
  291.             {% if entity is defined and entity.id is not null %}
  292.                 <a class="btn btn-secondary btn-rounded btn-block ajax2 mb-3"
  293.                    href="{{ path('app_g_h_perfil_cargo_s_s_t_new', {'id': entity.id, 'tipoSST': 'CondMentales'}) }}">
  294.                     <i class="fas fa-plus-circle"></i> Agregar Condiciones Mentales
  295.                 </a>
  296.             {% endif %}
  297.             <table class="table table-condensed nonTable">
  298.                 <thead>
  299.                     <tr>
  300.                         <th>Acciones</th>
  301.                         <th>Condiciones Mentales</th>
  302.                     </tr>
  303.                 </thead>
  304.                 <tbody>
  305.                     {% set filas = 0 %}
  306.                     {% for sst in entity.perfilCargoSST %}
  307.                         {% set contenido = sst.condicionesMentales|striptags|trim %}
  308.                         {% if contenido is not empty %}
  309.                             {% set filas = filas + 1 %}
  310.                             <tr>
  311.                                 <td class="text-start">
  312.                                     <a class="btn btn-success btn-sm ajax2"
  313.                                         href="{{ path('app_g_h_perfil_cargo_s_s_t_new', {'id': entity.id, 'tipoSST': 'CondMentales', 'idSST': sst.id}) }}">
  314.                                         <i class="far fa-edit"></i>
  315.                                     </a>
  316.                                 </td>
  317.                                 <td>{{ sst.condicionesMentales|raw }}</td>
  318.                             </tr>
  319.                         {% endif %}
  320.                     {% endfor %}
  321.                     {% if filas == 0 %}
  322.                         <tr>
  323.                             <td class="text-muted fst-italic">No hay condiciones mentales registradas.</td>
  324.                         </tr>
  325.                     {% endif %}
  326.                 </tbody>
  327.             </table>
  328.         </div>
  329.     </div>
  330.     <!-- RIESGOS LABORALES -->
  331.     <div class="row mb-4">
  332.         <div class="col-md-12">
  333.             {% if entity is defined and entity.id is not null %}
  334.                 <a class="btn btn-secondary btn-rounded btn-block ajax2 mb-3"
  335.                    href="{{ path('app_g_h_perfil_cargo_s_s_t_new', {'id': entity.id, 'tipoSST': 'RiesgosLaborales'}) }}">
  336.                     <i class="fas fa-plus-circle"></i> Agregar Riesgos Laborales
  337.                 </a>
  338.                 <br>
  339.             {% endif %}
  340.             <table class="table table-condensed nonTable">
  341.                 <thead>
  342.                     <tr>
  343.                         <th>Acciones</th>
  344.                         <th>Actividad</th>
  345.                         <th>Peligro (GTC 45)</th>
  346.                         <th>Riesgo</th>
  347.                         <th>Medidas de Control</th>
  348.                     </tr>
  349.                 </thead>
  350.                 <tbody>
  351.                     {% set filas = 0 %}
  352.                     {% for sst in entity.perfilCargoSST %}
  353.                         {% set tieneDatos = (
  354.                             sst.riesgosLaborales|striptags|trim is not empty or
  355.                             sst.peligro|striptags|trim is not empty or
  356.                             sst.riesgo|striptags|trim is not empty or
  357.                             sst.medidasControl|striptags|trim is not empty
  358.                         ) %}
  359.                         {% if tieneDatos %}
  360.                             {% set filas = filas + 1 %}
  361.                             <tr>
  362.                                 <td>
  363.                                     <a class="btn btn-success btn-sm ajax2"
  364.                                        href="{{ path('app_g_h_perfil_cargo_s_s_t_new', {'id': entity.id, 'tipoSST': 'RiesgosLaborales', 'idSST': sst.id}) }}">
  365.                                         <i class="far fa-edit"></i>
  366.                                     </a>
  367.                                 </td>
  368.                                 <td>{{ sst.riesgosLaborales|raw }}</td>
  369.                                 <td>{{ sst.peligro|raw }}</td>
  370.                                 <td>{{ sst.riesgo|raw }}</td>
  371.                                 <td>{{ sst.medidasControl|raw }}</td>
  372.                             </tr>
  373.                         {% endif %}
  374.                     {% endfor %}
  375.                     {% if filas == 0 %}
  376.                         <tr>
  377.                             <td colspan="4" class="text-muted fst-italic">No hay riesgos laborales registrados.</td>
  378.                         </tr>
  379.                     {% endif %}
  380.                 </tbody>
  381.             </table>
  382.         </div>
  383.     </div>
  384. </section>
  385. {% endblock %}
  386. {% block scripts %}
  387.     <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
  388.     <script src="{{ asset('assets/') }}js/alerts.js"></script>
  389.     <script type="text/javascript">
  390.         $(document).ready(function () {
  391.             $('#wizard2').steps({
  392.                 labels: {
  393.                     cancel: "Cancelar",
  394.                     current: "Actual:",
  395.                     pagination: "Pagination",
  396.                     finish: "Finalizar",
  397.                     next: "Siguiente",
  398.                     previous: "Anterior",
  399.                     loading: "Cargando ..."
  400.                 },
  401.                 headerTag: 'h3',
  402.                 bodyTag: 'section',
  403.                 autoFocus: true,
  404.                 startIndex:{{ step }} ,
  405.                 titleTemplate: '<span class="number">#index#<\/span> <span class="title">#title#<\/span>',
  406.                 onInit: function () {
  407.                     var $modal = $('#ajax-modal');
  408.                     normalizacionFormulario($modal, true);
  409.                     $('[data-toggle="tooltip"]').tooltip();
  410.                     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 }}'#}
  411.                     camposDependientes('{{ form.empresaFilial.vars.id }}', ['{{ form.sede.vars.id }}'], false);
  412.                     camposCondicionados('{{ form.pruebaTecnica.vars.id }}', ['{{ form.file.vars.id }}']);
  413.                 },
  414.                 onStepChanging: function (event, currentIndex, newIndex) {
  415.                     if (currentIndex < newIndex) {
  416.                         // Step 1 form validation
  417.                         if (currentIndex === 0) {
  418.                             form = $("#submitForm1").closest('form');
  419.                             $("#submitForm1").trigger('click');
  420.                         }
  421.                         // Step 2 form validation
  422.                         if (currentIndex === 1) {
  423.                             /*var email = $('#email').parsley();
  424.                              if (email.isValid()) {
  425.                              return true;
  426.                              } else {
  427.                              email.validate();
  428.                              }*/
  429.                             return true;
  430.                         }
  431.                         // Always allow step back to the previous step even if the current step is not valid.
  432.                     } else {
  433.                         return true;
  434.                     }
  435.                 },
  436.                 onFinished: function (event, currentIndex) {
  437. //                    $("#submitForm1").trigger('click');
  438.                     location.reload();
  439.                 },
  440.             });
  441.             //cada vez que se acaban de actualizar los campos dependientes
  442.             $(document).on('camposDependientes:end', function (e, idCampo, camposActualizados) {
  443.                 //campo de cargo
  444.                 let cargoSelect = $('#' + '{{ form.cargo.vars.id }}');
  445.                 //campo de personal a cargo
  446.                 let personalCargoSelect = $( '#' + '{{ form.personalCargo.vars.id }}');
  447.                 //opciones originales del campo de personal a cargo
  448.                 let originalOptions = personalCargoSelect.html();
  449.                 //cuando el cambio de cargo cambia
  450.                 cargoSelect.on("change", function(){
  451.                     //restaurar opciones originales
  452.                     personalCargoSelect.html(originalOptions);
  453.                     let cargoElegido = cargoSelect.find('option:selected').text();
  454.                     //filtrar en personal a cargo el valor elegido en cargo y removerlo
  455.                     personalCargoSelect.find('option').filter(function() {
  456.                         return $(this).text() === cargoElegido;
  457.                     }).remove();
  458.                     //reconstruir el multiselect
  459.                     personalCargoSelect.multiselect('rebuild');
  460.                 })
  461.             })
  462.             const camposCriticidad = {
  463.                 accesoInfoConf: '#{{ form.accesoInfoConf.vars.id }}',
  464.                 constratacionAsociados: '#{{ form.constratacionAsociados.vars.id }}',
  465.                 tomaDecisiones: '#{{ form.tomaDecisiones.vars.id }}',
  466.                 programasInfoSensible: '#{{ form.programasInfoSensible.vars.id }}',
  467.                 contactoCarga: '#{{ form.contactoCarga.vars.id }}',
  468.                 resultado: '#resultadoCriticidad',
  469.             };
  470.             function calcularCriticidad() {
  471.                 const valores = {
  472.                     accesoInfoConf: parseFloat($(camposCriticidad.accesoInfoConf).val()) || 0,
  473.                     constratacionAsociados: parseFloat($(camposCriticidad.constratacionAsociados).val()) || 0,
  474.                     tomaDecisiones: parseFloat($(camposCriticidad.tomaDecisiones).val()) || 0,
  475.                     programasInfoSensible: parseFloat($(camposCriticidad.programasInfoSensible).val()) || 0,
  476.                     contactoCarga: parseFloat($(camposCriticidad.contactoCarga).val()) || 0
  477.                 };
  478.                 const ponderacion =
  479.                     (valores.accesoInfoConf * 0.20) +
  480.                     (valores.constratacionAsociados * 0.20) +
  481.                     (valores.tomaDecisiones * 0.25) +
  482.                     (valores.programasInfoSensible * 0.15) +
  483.                     (valores.contactoCarga * 0.20);
  484.                 let resultadoHtml, valorCriticidad;
  485.                 if (ponderacion >= 3) {
  486.                     resultadoHtml = '<p  style="font-size: 16px" class="badge bg-danger">Crítico</p>';
  487.                     valorCriticidad = 'Crítico';
  488.                 } else {
  489.                     resultadoHtml = '<p style="font-size: 16px" class="badge bg-success">No Crítico</p>';
  490.                     valorCriticidad = 'No Crítico';
  491.                 }
  492.                 $(camposCriticidad.resultado).html(resultadoHtml);
  493.                 $(camposCriticidad.criticidadInput).val(valorCriticidad);
  494.             }
  495.             // Ejecutar al cargar
  496.             calcularCriticidad();
  497.             // Recalcular al cambiar cualquiera de los campos
  498.             Object.values(camposCriticidad).slice(0, 5).forEach(function (selector) {
  499.                 $(selector).on('change input keyup', calcularCriticidad);
  500.             });
  501.         });
  502.     </script>
  503. {% endblock %}