'RUTA', 'CONTRAENTREGA' => 'CONTRAENTREGA', 'NOCONTESTAVOLVERALLAMAR' => 'NO CONTESTA, VOLVER A LLAMAR', 'PENDIENTEARETORNO' => 'PENDIENTE A RETORNO', 'COMPLETADO' => 'COMPLETADO', 'EMPAQUETADO' => 'PREPARADO', 'PREPARADO' => 'PREPARADO', 'EMPAQUETARDO' => 'PREPARADO', 'RETORNADO' => 'RETORNADO', 'ANULADO' => 'ANULADO', ]; return $aliases[$canonicalKey] ?? $normalized; } } if (!isset($_SESSION['user_id'])) { echo json_encode(['success' => false, 'message' => 'No autorizado']); exit; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { $pedido_id_raw = $_POST['pedido_id'] ?? null; $pedido_id = (is_numeric($pedido_id_raw) && (int)$pedido_id_raw > 0) ? (int)$pedido_id_raw : null; $tipo_paquete = normalizeTipoPaqueteValue($_POST['tipo_paquete'] ?? null); if (!$pedido_id) { echo json_encode(['success' => false, 'message' => 'ID de pedido faltante']); exit; } try { $pdo = db(); ensureTipoPaqueteEnumDefinition($pdo); if ($tipo_paquete === null) { // Allow clearing the selection $stmt = $pdo->prepare("UPDATE pedidos SET tipo_paquete = NULL WHERE id = ?"); $result = $stmt->execute([$pedido_id]); } else { $valid_types = tipoPaqueteValidValues(); if (!in_array($tipo_paquete, $valid_types, true)) { 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']); } ?>