Autosave: 20260326-055859
This commit is contained in:
parent
58d6986d95
commit
a88941468e
2
db/migrations/063_add_estado_paquete_to_pedidos.sql
Normal file
2
db/migrations/063_add_estado_paquete_to_pedidos.sql
Normal file
@ -0,0 +1,2 @@
|
||||
ALTER TABLE pedidos
|
||||
ADD COLUMN estado_paquete ENUM('RUTA', 'CONTRAENTREGA') DEFAULT 'RUTA';
|
||||
1
db/migrations/063_add_tipo_paquete_to_pedidos.sql
Normal file
1
db/migrations/063_add_tipo_paquete_to_pedidos.sql
Normal file
@ -0,0 +1 @@
|
||||
ALTER TABLE pedidos ADD COLUMN tipo_paquete ENUM('RUTA', 'CONTRAENTREGA') DEFAULT NULL;
|
||||
@ -45,10 +45,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<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:description" content="Built with Flatlogic Generator">
|
||||
<meta property="og:image" content="">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:image" content="">
|
||||
|
||||
@ -177,6 +177,7 @@ include 'layout_header.php';
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Seguimiento</th>
|
||||
<th>Paquete</th>
|
||||
<th>Cliente</th>
|
||||
|
||||
<th>Celular</th>
|
||||
@ -201,6 +202,13 @@ include 'layout_header.php';
|
||||
<tr>
|
||||
<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>
|
||||
<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>
|
||||
@ -274,12 +282,44 @@ include 'layout_header.php';
|
||||
<?php include 'layout_footer.php'; ?>
|
||||
|
||||
<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() {
|
||||
$('#pedidos-table').DataTable({
|
||||
"language": {
|
||||
"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,
|
||||
"lengthChange": false,
|
||||
"info": false
|
||||
|
||||
50
update_paquete.php
Normal file
50
update_paquete.php
Normal 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']);
|
||||
}
|
||||
?>
|
||||
Loading…
x
Reference in New Issue
Block a user