Autosave: 20260326-055859

This commit is contained in:
Flatlogic Bot 2026-03-26 05:59:00 +00:00
parent 58d6986d95
commit a88941468e
5 changed files with 94 additions and 4 deletions

View File

@ -0,0 +1,2 @@
ALTER TABLE pedidos
ADD COLUMN estado_paquete ENUM('RUTA', 'CONTRAENTREGA') DEFAULT 'RUTA';

View File

@ -0,0 +1 @@
ALTER TABLE pedidos ADD COLUMN tipo_paquete ENUM('RUTA', 'CONTRAENTREGA') DEFAULT NULL;

View File

@ -45,10 +45,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Login - FLOWERSEGUIMIENTOPEDIDOS</title> <title>Login - FLOWERSEGUIMIENTOPEDIDOS</title>
<meta name="description" content="Built with Flatlogic Generator">
<meta name="keywords" content="call center, payment validation, order tracking, crm, Flatlogic Generator">
<meta property="og:title" content="FLOWERSEGUIMIENTOPEDIDOS"> <meta property="og:title" content="FLOWERSEGUIMIENTOPEDIDOS">
<meta property="og:description" content="Built with Flatlogic Generator">
<meta property="og:image" content=""> <meta property="og:image" content="">
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:image" content=""> <meta name="twitter:image" content="">

View File

@ -177,6 +177,7 @@ include 'layout_header.php';
<tr> <tr>
<th>ID</th> <th>ID</th>
<th>Seguimiento</th> <th>Seguimiento</th>
<th>Paquete</th>
<th>Cliente</th> <th>Cliente</th>
<th>Celular</th> <th>Celular</th>
@ -201,6 +202,13 @@ include 'layout_header.php';
<tr> <tr>
<td><?php echo htmlspecialchars($pedido['id']); ?></td> <td><?php echo htmlspecialchars($pedido['id']); ?></td>
<td class="editable" data-id="<?php echo $pedido['id']; ?>" data-field="seguimiento"><?php echo htmlspecialchars($pedido['seguimiento'] ?? ''); ?></td> <td class="editable" data-id="<?php echo $pedido['id']; ?>" data-field="seguimiento"><?php echo htmlspecialchars($pedido['seguimiento'] ?? ''); ?></td>
<td>
<select class="form-select form-select-sm" onchange="updateTipoPaquete(<?php echo $pedido['id']; ?>, this)" style="width: auto;" data-original-value="<?php echo htmlspecialchars($pedido['tipo_paquete'] ?? ''); ?>">
<option value="" <?php echo empty($pedido['tipo_paquete']) ? 'selected' : ''; ?>>Seleccionar</option>
<option value="RUTA" <?php echo (isset($pedido['tipo_paquete']) && $pedido['tipo_paquete'] == 'RUTA') ? 'selected' : ''; ?>>RUTA</option>
<option value="CONTRAENTREGA" <?php echo (isset($pedido['tipo_paquete']) && $pedido['tipo_paquete'] == 'CONTRAENTREGA') ? 'selected' : ''; ?>>CONTRAENTREGA</option>
</select>
</td>
<td><?php echo htmlspecialchars($pedido['nombre_completo']); ?></td> <td><?php echo htmlspecialchars($pedido['nombre_completo']); ?></td>
<td> <td>
@ -274,12 +282,44 @@ include 'layout_header.php';
<?php include 'layout_footer.php'; ?> <?php include 'layout_footer.php'; ?>
<script> <script>
function updateTipoPaquete(pedidoId, selectElement) {
const tipo = selectElement.value;
const originalValue = selectElement.getAttribute('data-original-value') || '';
const formData = new URLSearchParams();
formData.append('pedido_id', pedidoId);
formData.append('tipo_paquete', tipo);
fetch('update_paquete.php', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
body: formData
})
.then(response => response.json())
.then(data => {
if (data.success) {
console.log('Tipo de paquete actualizado con éxito.');
selectElement.setAttribute('data-original-value', tipo);
} else {
alert('Error: ' + (data.message || 'No se pudo actualizar el tipo de paquete.'));
selectElement.value = originalValue; // Revertir
}
})
.catch(error => {
console.error('Error:', error);
alert('Hubo un error de conexión al intentar actualizar.');
selectElement.value = originalValue; // Revertir
});
}
$(document).ready(function() { $(document).ready(function() {
$('#pedidos-table').DataTable({ $('#pedidos-table').DataTable({
"language": { "language": {
"url": "//cdn.datatables.net/plug-ins/1.10.25/i18n/Spanish.json" "url": "//cdn.datatables.net/plug-ins/1.10.25/i18n/Spanish.json"
}, },
"order": [[ <?php echo ($user_role !== 'Asesor' ? 15 : 14); ?>, "desc" ]], "order": [[ <?php echo ($user_role !== 'Asesor' ? 16 : 15); ?>, "desc" ]],
"paging": false, "paging": false,
"lengthChange": false, "lengthChange": false,
"info": false "info": false

50
update_paquete.php Normal file
View File

@ -0,0 +1,50 @@
<?php
session_start();
require_once 'db/config.php';
header('Content-Type: application/json');
if (!isset($_SESSION['user_id'])) {
echo json_encode(['success' => false, 'message' => 'No autorizado']);
exit;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$pedido_id = $_POST['pedido_id'] ?? null;
$tipo_paquete = $_POST['tipo_paquete'] ?? null;
if (!$pedido_id) {
echo json_encode(['success' => false, 'message' => 'ID de pedido faltante']);
exit;
}
try {
$pdo = db();
if (empty($tipo_paquete)) {
// Allow clearing the selection
$stmt = $pdo->prepare("UPDATE pedidos SET tipo_paquete = NULL WHERE id = ?");
$result = $stmt->execute([$pedido_id]);
} else {
$valid_types = ['RUTA', 'CONTRAENTREGA'];
if (!in_array($tipo_paquete, $valid_types)) {
echo json_encode(['success' => false, 'message' => 'Tipo inválido']);
exit;
}
$stmt = $pdo->prepare("UPDATE pedidos SET tipo_paquete = ? WHERE id = ?");
$result = $stmt->execute([$tipo_paquete, $pedido_id]);
}
if ($result) {
echo json_encode(['success' => true]);
} else {
echo json_encode(['success' => false, 'message' => 'Error al actualizar en la base de datos']);
}
} catch (PDOException $e) {
echo json_encode(['success' => false, 'message' => 'Error de base de datos: ' . $e->getMessage()]);
}
} else {
echo json_encode(['success' => false, 'message' => 'Método no permitido']);
}
?>