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 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="">
|
||||||
|
|||||||
@ -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
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