function obtener_xml(id_estatus) { var num_nomina = $("#num_nomina").val(); var checkall = []; $("input[name='rfcEmpleados[]']:checked").each(function() { checkall.push($(this).attr('id')); // o $(this).val() si los valores son importantes }); if (checkall.length === 0) { Swal.fire({ icon: 'error', title: 'Error', text: 'Debe seleccionar al menos un RFC', timer: 3000, showConfirmButton: false }); return; } $.ajax({ data: { 'num_nomina': num_nomina, 'rfc_empleados': checkall }, url: '{$_layoutParams.root}timbrarsat/obtener_lista_xml/', type: 'post', scriptCharset: "utf-8", dataType: 'json', error: function(xhr) { Swal.fire({ icon: 'error', title: 'Error', text: 'Error ' + xhr.statusText + ' - ' + xhr.responseText, timer: 3000, showConfirmButton: false }); $("#mensaje").html(''); }, beforeSend: function() { $("#mensaje").html('Guardando...'); }, success: function(response) { $("#mensaje").html(''); if (response.cfdis) { var cont = 0; for (let RFC in response.cfdis) { timbrar_xml(RFC, response.cfdis[RFC].name_file); cont++; } } else if (response.error) { Swal.fire({ icon: 'error', title: 'Aviso', text: response.error, timer: 3000, showConfirmButton: false }); } else { Swal.fire({ icon: 'error', title: 'Error', text: response, timer: 3000, showConfirmButton: false }); } } }); } function obtener_lista_xml() { // Recibir y validar los parámetros POST if (!isset($_POST['rfc_empleados']) || !isset($_POST['num_nomina'])) { echo json_encode(['error' => 'Debe seleccionar al menos un RFC']); return; } $rfcEmpleados = $_POST['rfc_empleados']; $num_nom = $_POST['num_nomina']; $directorioFull = "/opt/sitios/srh/sistema_timbrado/xml/".$num_nom; // Ubicación de los XML $respuesta = array(); // Verificar si el directorio existe if (!file_exists($directorioFull)) { $respuesta['error'] = "No se encontró el directorio ".$directorioFull; } else { // Obtener la lista de CFDIs para la nómina $cfdis = $this->_m->get_lista_nomina($num_nom); $contador = 0; $encontrados = false; // Recorrer los RFC de los empleados foreach ($rfcEmpleados as $rfc) { foreach ($cfdis as $cfdi) { if ($cfdi['RFC'] == $rfc) { // Obtener el folio del CFDI $folio = $this->_m->get_folio_cfdi($num_nom, $cfdi['NUMEMPLEADO']); $nombre_archivo = $rfc . "_nom" . $num_nom . "_" . $folio; $respuesta['cfdis'][$rfc]['name_file'] = $nombre_archivo; $contador++; $encontrados = true; break; // Salir del bucle interno una vez encontrado el CFDI } } } // Verificar si se encontraron CFDIs if (!$encontrados) { $respuesta['error'] = "No se encontró ningún archivo en ".$directorioFull; } } // Devolver la respuesta como JSON echo json_encode($respuesta); }