//---------------------- FOR-S-CCI-20-INSPECCIÓN CALIDAD PRODUCTO TERMINADO--------------------------------------///---------------------//---------------- $(document).ready(function () { $(".btnsendinspeccionCalidad").click(function (e) { e.preventDefault(); swal.fire({ title: "Cargando datos...", allowOutsideClick: false, didOpen: () => { swal.showLoading(); } }); if ($.fn.DataTable.isDataTable('#tblinspeccionCalidad')) { $('#tblinspeccionCalidad').DataTable().destroy(); } let tabla20 = $("#tblinspeccionCalidad").DataTable({ "ajax": { "url": "../../BACKEND/controltablas/FOR-S-CCI-20.php", "type": "POST", "data": { opcion: 42 }, "dataSrc": "" }, "columns": [ { data: "id" }, { data: "hora" }, { data: "fecha" }, { data: "productoInspeccion" }, { data: "area" }, { data: "tipo_ave" }, { data: "loteInspeccion" }, { data: "fechaVencimiento" }, { data: "rotulacionIncompleta" }, { data: "dislocacionInspeccion" }, { data: "residualInspeccion" }, { data: "plumasInspeccion" }, { data: "pigmentacionInspeccion" }, { data: "cuticulaInspeccion" }, { data: "hematomasInspeccion" }, { data: "elementosInspeccion" }, { data: "embalajeInspeccion" }, { data: "trazabilidadInspeccion" }, { data: "rupturasInspeccion" }, { data: "lixiviadoInspeccion" }, { data: "selladoInspeccion" }, { data: "productoFueraBandeja" }, { data: "totalMuestras" }, { data: "responsableInspeccion" }, { data: "observacionInspeccion" }, { data: "aprobo" }, { data: "porcentajeInspeccion" }, { "data": null, "orderable": false, "width": "80px", "className": "text-center", "render": function () { return "<button class='btn btn-danger btn-sm btnBorrar'><i class='fas fa-trash-alt'></i></button>"; } }, { "data": null, "orderable": false, "width": "80px", "className": "text-center", "render": function (data, type, row) { return "<button class='btn btn-primary btn-sm btnEditar' data-id='" + row.id + "'><i class='fas fa-edit'></i></button>"; } } ], "language": { "decimal": "", "emptyTable": "No hay información", "info": "Mostrando _START_ a _END_ de _TOTAL_ registros", "infoEmpty": "Mostrando 0 a 0 de 0 registros", "infoFiltered": "(Filtrado de _MAX_ total registros)", "thousands": ",", "lengthMenu": "Mostrar _MENU_ registros", "loadingRecords": "Cargando...", "processing": "Procesando...", "search": "Buscar:", "zeroRecords": "Sin resultados encontrados", "paginate": { "first": "Primero", "last": "Último", "next": "Siguiente", "previous": "Anterior" } }, "scrollX": true, "scrollCollapse": true, "autoWidth": false, "dom": "Bfrtip", "buttons": [ { extend: "pageLength", className: "btn btn-warning" }, { extend: "excelHtml5", autoFilter: true, sheetName: "NSPECCIÓN CALIDAD PRODUCTO SEMI ELABORADO Y TERMINADO", title: "NSPECCIÓN CALIDAD PRODUCTO SEMI ELABORADO Y TERMINADO", text: '<i class="fa-lg fa-solid fa-file-excel"></i> GENERAR EXCEL', className: "btn btn-success", exportOptions: { columns: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27] } } ], customize: function (xlsx) { var sheet = xlsx.xl.worksheets["sheet1.xml"]; var rows = sheet.getElementsByTagName("row"); // Recorremos todas las filas for (var i = 0; i < rows.length; i++) { var cells = rows[i].getElementsByTagName("c"); // Recorremos todas las celdas for (var j = 0; j < cells.length; j++) { var cell = cells[j]; var cellValue = cell.textContent || cell.innerText; // Si la celda es "pesoPromedioPechuga" y contiene comas if (cellValue && cellValue.includes(",")) { // Envolvemos el valor de la celda entre comillas dobles para evitar que Excel lo separe cell.textContent = '"' + cellValue + '"'; } } } }, "initComplete": function () { swal.close(); } }); // --- ELIMINAR --- $('#tblinspeccionCalidad tbody').off('click', '.btnBorrar').on('click', '.btnBorrar', function (e) { e.preventDefault(); e.stopPropagation(); let data = tabla20.row($(this).parents('tr')).data(); swal.fire({ title: "¿Eliminar registro?", text: "ID: " + data.id, icon: "warning", showCancelButton: true, confirmButtonColor: "#d33", cancelButtonColor: "#3085d6", cancelButtonText: "Cancelar", confirmButtonText: "Sí, borrar" }).then((result) => { if (result.isConfirmed) { $.ajax({ url: "../../BACKEND/controltablas/FOR-S-CCI-20.php", type: "POST", data: { opcion: 1, id: data.id }, success: function (response) { tabla20.ajax.reload(null, false); swal.fire({ icon: "success", title: "¡Éxito!", text: "Registro eliminado correctamente", showConfirmButton: false, timer: 1500 }); }, error: function () { swal.fire({ icon: "error", title: "Error", text: "No se pudo eliminar el registro", showConfirmButton: false, timer: 1500 }); } }); } }); return false; }); // --- EDITAR --- $('#tblinspeccionCalidad tbody').off('click', '.btnEditar').on('click', '.btnEditar', function (e) { e.preventDefault(); e.stopPropagation(); let $row = $(this).closest('tr'); let data = tabla20.row($row).data(); $row.find('td').each(function (index) { // Obtenemos la configuración de la columna para esa celda let colConfig = tabla20.settings().init().columns[index]; // Solo editamos si tiene la propiedad "data" definida y no es el ID ni botones if (index > 0 && index < 27) { let valorActual = $(this).text(); let nombreColumna = colConfig.data; // Agregamos un estilo inline "width: 100%" y un contenedor pequeño $(this).html(` <input type="text" class="form-control form-control-sm" style="min-width: 70px; width: 100%; padding: 2px;" value="${valorActual}" data-campo="${nombreColumna}"> `); } }); $(this).removeClass('btn-primary btnEditar').addClass('btn-success btnGuardar').html('<i class="fas fa-save"></i>'); $row.find('.btnBorrar').removeClass('btn-danger btnBorrar').addClass('btn-secondary btnCancelar').html('<i class="fas fa-times"></i>'); return false; }); // --- GUARDAR --- $('#tblinspeccionCalidad tbody').off('click', '.btnGuardar').on('click', '.btnGuardar', function (e) { e.preventDefault(); e.stopPropagation(); let $row = $(this).closest('tr'); let id = tabla20.row($row).data().id; let datosActualizados = { opcion: 2, id: id }; $row.find('input').each(function () { let campo = $(this).data('campo'); let valor = $(this).val(); datosActualizados[campo] = valor; }); $.ajax({ url: "../../BACKEND/controltablas/FOR-S-CCI-20.php", type: "POST", data: datosActualizados, success: function (response) { tabla20.ajax.reload(null, false); swal.fire({ icon: "success", title: "¡Éxito!", text: "Registro actualizado correctamente", showConfirmButton: false, timer: 1500 }); }, error: function () { swal.fire({ icon: "error", title: "Error", text: "No se pudo actualizar el registro", showConfirmButton: false, timer: 1500 }); tabla20.ajax.reload(null, false); } }); return false; }); // --- CANCELAR --- // --- CANCELAR --- $('#tblinspeccionCalidad tbody').off('click', '.btnCancelar').on('click', '.btnCancelar', function (e) { e.preventDefault(); e.stopPropagation(); tabla20.ajax.reload(null, false); // ✅ CORRECTO return false; }); }); });