function inicializarBotonPRMSubd() {
  const form = document.getElementById("formSolicitarPRM");
  const btnAbrirModal = document.getElementById("btnSolicitarPRM");

  if (btnAbrirModal && !btnAbrirModal._eventoPRM) {
    btnAbrirModal._eventoPRM = true;

    btnAbrirModal.addEventListener("click", () => {
      // 🚩 Siempre lee el CURP desde el botón y lo inyecta al input hidden del modal
      const curp = btnAbrirModal.getAttribute("data-curp")?.trim() || "";
      const inputCurp = form.querySelector("#curpAspirante");
      if (inputCurp) inputCurp.value = curp;

      console.log("🟢 [SUBD] Botón Solicitar PRM clickeado. CURP:", curp);

      if (!curp || curp.length !== 18) {
        Swal.fire("Atención", "CURP inválido o no encontrado (al abrir modal).", "warning");
        return;
      }

      // Validar si ya fue enviada la solicitud PRM
      fetch("../../backend/recruiter/validar_solicitud_prm.php", {
        method: "POST",
        headers: { "Content-Type": "application/x-www-form-urlencoded" },
        body: new URLSearchParams({ curp })
      })
        .then(res => res.json())
        .then(data => {
          if (data.enviada) {
            btnAbrirModal.disabled = true;
            btnAbrirModal.classList.remove("btn-primary");
            btnAbrirModal.classList.add("btn-secondary");
            btnAbrirModal.textContent = "Solicitud PRM enviada";
          }
        })
        .catch(err => {
          console.error("Error al validar solicitud PRM:", err);
        });

      // Obtener tipo de comisión desde Plantilla
      fetch("../../backend/recruiter/obtener_tipo_comision.php", {
        method: "POST",
        headers: { "Content-Type": "application/x-www-form-urlencoded" },
        body: new URLSearchParams({ curp })
      })
        .then(res => res.json())
        .then(data => {
          const inputTexto = document.getElementById("tipoComisionTexto");
          const inputHidden = document.getElementById("tipoComisionInput");

          if (data.success) {
            inputTexto.value = data.tipo_comision;
            inputHidden.value = data.tipo_comision;
          } else {
            inputTexto.value = "No determinado";
            inputHidden.value = "";
            Swal.fire("Atención", data.message, "warning");
          }
        })
        .catch(err => {
          console.error("Error en fetch tipo comisión:", err);
          document.getElementById("tipoComisionTexto").value = "Error";
          Swal.fire("Error", "No se pudo obtener el tipo de comisión.", "error");
        });

      // Obtener datos generales desde Plantilla
      fetch("../../backend/recruiter/obtener_datos_prm.php", {
        method: "POST",
        headers: { "Content-Type": "application/x-www-form-urlencoded" },
        body: new URLSearchParams({ curp })
      })
        .then(res => res.json())
        .then(data => {
          if (data.success) {
            document.getElementById("nombreCompletoPRM").value = data.nombre;
            document.getElementById("pdvPRM").value = data.pdv;
            document.getElementById("puestoPRM").value = data.puesto;
          } else {
            Swal.fire("Atención", data.message, "warning");
          }
        })
        .catch(err => {
          console.error("Error en fetch datos plantilla:", err);
          Swal.fire("Error", "No se pudo obtener los datos desde plantilla", "error");
        });
    });
  }

  // Envío del formulario
  if (form && !form._eventoPRM) {
    form._eventoPRM = true;
    form.addEventListener("submit", async (e) => {
      e.preventDefault();

      // 🚩 Siempre toma el input hidden DENTRO del form para evitar duplicidad/confusión
      const curp = form.querySelector("#curpAspirante")?.value?.trim() || "";
      const fechaIngreso = form.querySelector('[name="fecha_ingreso"]').value;
      const tipoComision = form.querySelector('[name="tipo_comision"]').value;

      console.log("🚩 [SUBMIT] Curp en input hidden:", curp, "| Fecha ingreso:", fechaIngreso, "| Tipo comisión:", tipoComision);

      if (!curp || curp.length !== 18 || !fechaIngreso || !tipoComision) {
        Swal.fire('Error', 'Todos los campos son obligatorios y el CURP debe ser válido.', 'error');
        return;
      }

      const formData = new FormData(form);

      try {
        const response = await fetch("../../backend/recruiter/guardar_solicitud_prm.php", {
          method: "POST",
          body: formData
        });

        const result = await response.json();

        if (result.success) {
          Swal.fire({
            icon: 'success',
            title: 'Éxito',
            text: result.message,
            confirmButtonText: 'Aceptar'
          }).then(() => {
            const modal = bootstrap.Modal.getInstance(document.getElementById("modalSolicitarPRM"));
            if (modal) modal.hide();
            location.reload();
          });
        } else {
          Swal.fire('Error', result.message, 'error');
        }

      } catch (error) {
        Swal.fire('Error', 'No se pudo enviar la solicitud.', 'error');
      }
    });
  }
}

// Inicialización básica al cargar la página
document.addEventListener("DOMContentLoaded", inicializarBotonPRMSubd);

// Además, re-inicializa después de renderizar el candidato (espera breve para asegurar render)
document.addEventListener("detalleCandidatoRenderizado", inicializarBotonPRMSubd);
setTimeout(inicializarBotonPRMSubd, 1000); // fallback por si tarda en renderizar
