DI_U3.Controladores.modificarReservaControlador
1import sys 2import os 3 4sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))) 5 6from PySide6.QtWidgets import QMainWindow, QMessageBox# type: ignore 7from PySide6.QtWidgets import QDialog, QVBoxLayout, QLabel, QLineEdit, QComboBox, QSpinBox, QPushButton, QCheckBox, QMessageBox 8from PySide6.QtCore import Qt,QDate 9from PySide6.QtWidgets import QApplication # type: ignore 10from Vistas.modificarReserva import Ui_nlgModificarReserva 11from Conexion_BBDD.connectionBBDD import Connectionbd 12import sqlite3 13 14class ModificarReservaControlador(QMainWindow): 15 """ 16 Interfaz 4 para modificar una reserva. 17 Permite cargar y modificar una reserva existente a partir de un ID. 18 """ 19 20 21 def __init__(self, datos_reserva,reserva_id, parent=None): 22 """ 23 Inicializa la interfaz de modificación de reserva 24 25 """ 26 super().__init__(parent) 27 self.ui = Ui_nlgModificarReserva() 28 self.ui.setupUi(self) 29 30 # Guardamos los datos de la reserva a modificar 31 self.datos_reserva = datos_reserva 32 33 # Guardar el ID de la reserva a modificar 34 self.reserva_id = reserva_id 35 36 self.db_path = 'Conexion_BBDD/reservasHotel.sql' 37 #self.dbManager = Connectionbd(self.db_path) 38 39 # Cargar tipos de datos en combo boxes 40 self.cargar_tipos_reserva() 41 self.cargar_tipos_cocina() 42 43 # Cargar los datos de la reserva 44 self.cargar_datos_reserva() 45 46 47 # Conectar botones a funciones 48 self.ui.ButtonConfirmarModificacion.clicked.connect(self.modificar_reserva) 49 self.ui.comboBoxTipoReserva.currentTextChanged.connect(self.on_tipo_reserva_changed) 50 self.ui.pushButtonVolver.clicked.connect(self.volver) 51 52 # Configuración predeterminada de fecha 53 self.ui.dateEditReserva.setDate(QDate.currentDate()) 54 self.ui.dateEditReserva.setMinimumDate(QDate.currentDate()) 55 self.ui.dateEditReserva.setDisplayFormat("dd-MM-yyyy") 56 self.ui.dateEditReserva.setCalendarPopup(True) # Muestra el calendario 57 58 # Ocultar campos por defecto 59 self.ui.labelNumJornadas.setVisible(False) 60 self.ui.spinBoxNumHab.setVisible(False) 61 self.ui.labelHabitacion.setVisible(False) 62 self.ui.checkBoxHabitacion.setVisible(False) 63 64 # Conectar señales 65 self.ui.comboBoxTipoReserva.currentTextChanged.connect(self.on_tipo_reserva_changed) 66 67 def cargar_tipos_reserva(self): 68 try: 69 conexion = sqlite3.connect(self.db_path) 70 cursor = conexion.cursor() 71 cursor.execute("SELECT tipo_reserva_id, nombre FROM tipos_reservas") 72 tipos_reserva = cursor.fetchall() 73 74 for tipo_reserva_id, nombre in tipos_reserva: 75 self.ui.comboBoxTipoReserva.addItem(nombre, tipo_reserva_id) 76 77 conexion.close() 78 except sqlite3.Error as e: 79 QMessageBox.critical(self, "Error", f"No se pudo cargar los tipos de reserva: {e}") 80 81 def cargar_tipos_cocina(self): 82 try: 83 conexion = sqlite3.connect(self.db_path) 84 cursor = conexion.cursor() 85 cursor.execute("SELECT tipo_cocina_id, nombre FROM tipos_cocina") 86 tipos_cocina = cursor.fetchall() 87 88 for tipo_cocina_id, nombre in tipos_cocina: 89 self.ui.comboBoxTipoCocina.addItem(nombre, tipo_cocina_id) 90 91 conexion.close() 92 except sqlite3.Error as e: 93 QMessageBox.critical(self, "Error", f"No se pudo cargar los tipos de cocina: {e}") 94 95 def on_tipo_reserva_changed(self, text): 96 """ 97 Muestra u oculta campos adicionales según el tipo de reserva. 98 """ 99 if text == "Congreso": 100 self.ui.labelNumJornadas.setVisible(True) 101 self.ui.spinBoxNumHab.setVisible(True) 102 self.ui.labelHabitacion.setVisible(True) 103 self.ui.checkBoxHabitacion.setVisible(True) 104 else: 105 self.ui.labelNumJornadas.setVisible(False) 106 self.ui.spinBoxNumHab.setVisible(False) 107 self.ui.labelHabitacion.setVisible(False) 108 self.ui.checkBoxHabitacion.setVisible(False) 109 110 def cargar_datos_reserva(self): 111 """ 112 Carga los datos de la reserva a modificar desde los datos pasados al constructor 113 """ 114 persona = self.datos_reserva["persona"] 115 telefono = self.datos_reserva["telefono"] 116 fecha = self.datos_reserva["fecha"] 117 tipo_reserva_id = self.datos_reserva["tipo_reserva_id"] 118 tipo_cocina_id = self.datos_reserva["tipo_cocina_id"] 119 ocupacion = self.datos_reserva["ocupacion"] 120 jornadas = self.datos_reserva["jornadas"] 121 habitaciones = self.datos_reserva["habitaciones"] 122 123 # Llenar los campos de la interfaz con los datos de la reserva 124 self.ui.lineEditNombrePersona.setText(persona) 125 self.ui.lineEditNombrePersona.setEnabled(True) 126 self.ui.lineEditTlPersona.setText(telefono) 127 self.ui.lineEditTlPersona.setEnabled(True) 128 self.ui.dateEditReserva.setDate(QDate.fromString(fecha, "dd-MM-yyyy")) 129 self.ui.comboBoxTipoReserva.setCurrentIndex(self.ui.comboBoxTipoReserva.findData(tipo_reserva_id)) 130 self.ui.comboBoxTipoCocina.setCurrentIndex(self.ui.comboBoxTipoCocina.findData(tipo_cocina_id)) 131 self.ui.lineEdit_2.setText(str(ocupacion)) 132 self.ui.lineEdit_2.setEnabled(True) 133 134 if tipo_reserva_id == "Congreso": # Si el tipo de reserva es "Congreso" 135 self.ui.spinBoxNumHab.setValue(jornadas) 136 self.ui.spinBoxNumHab.setEnabled(True) 137 self.ui.checkBoxHabitacion.setChecked(habitaciones == 1) 138 self.ui.checkBoxHabitacion.setEnabled(True) 139 140 else: 141 142 self.ui.spinBoxNumHab.setVisible(False) 143 self.ui.checkBoxHabitacion.setVisible(False) 144 145 146 def modificar_reserva(self): 147 """ 148 Modifica la reserva en la BBDD con los nuevos datos 149 """ 150 151 try: 152 153 conexion = sqlite3.connect(self.db_path) 154 cursor = conexion.cursor() 155 156 persona = self.ui.lineEditNombrePersona.text() 157 telefono = self.ui.lineEditTlPersona.text() 158 fecha = self.ui.dateEditReserva.date().toString("dd-MM-yyyy") 159 tipo_reserva_id = self.ui.comboBoxTipoReserva.currentData() 160 tipo_cocina_id = self.ui.comboBoxTipoCocina.currentData() 161 ocupacion = self.ui.lineEdit_2.text() 162 163 # Obtener valores de jornadas y habitaciones 164 jornadas = self.ui.spinBoxNumHab.value() if self.ui.labelNumJornadas.isVisible() else 0 165 habitaciones = 1 if self.ui.checkBoxHabitacion.isChecked() else 0 166 167 # Validaciones 168 if not persona or not telefono or not tipo_reserva_id or not tipo_cocina_id or not ocupacion: 169 QMessageBox.warning(self, "Error", "Todos los campos deben estar completos.") 170 return 171 172 if not ocupacion.isdigit(): 173 QMessageBox.warning(self, "Error", "El número de personas debe ser un valor numérico.") 174 return 175 176 177 cursor.execute(""" 178 UPDATE reservas 179 SET persona = ?, telefono = ?, fecha = ?, tipo_reserva_id = ?, tipo_cocina_id = ?, ocupacion = ?, jornadas = ?, habitaciones = ? 180 WHERE reserva_id = ? 181 """, (persona, telefono, fecha, tipo_reserva_id, tipo_cocina_id, int(ocupacion), jornadas, habitaciones, self.reserva_id)) 182 183 conexion.commit() 184 conexion.close() 185 186 QMessageBox.information(self, "Éxito", f"Reserva {self.reserva_id} modificada con éxito.") 187 except sqlite3.Error as e: 188 QMessageBox.critical(self, "Error", f"No se pudo modificar la reserva: {e}") 189 190 def volver(self): 191 """ 192 Cierra la interfaz actual y vuelve a la interfaz anterior 193 """ 194 self.close() 195 196 197if __name__ == "__main__": 198 import sys 199 app = QApplication([]) 200 201 # Diccionario con los datos de la reserva a modificar 202 datos_reserva = { 203 "reserva_id": 1, 204 "persona": "Juan Pérez", 205 "telefono": "123456789", 206 "fecha": "01-01-2025", 207 "tipo_reserva_id": 1, 208 "tipo_cocina_id": 2, 209 "ocupacion": 2, 210 "jornadas": 3, 211 "habitaciones": 1 212 } 213 ventana = ModificarReservaControlador(datos_reserva=datos_reserva) 214 ventana.show() # Muestra la ventana 215 app.exec() # Inicia el ciclo de eventos
class
ModificarReservaControlador(PySide6.QtWidgets.QMainWindow):
15class ModificarReservaControlador(QMainWindow): 16 """ 17 Interfaz 4 para modificar una reserva. 18 Permite cargar y modificar una reserva existente a partir de un ID. 19 """ 20 21 22 def __init__(self, datos_reserva,reserva_id, parent=None): 23 """ 24 Inicializa la interfaz de modificación de reserva 25 26 """ 27 super().__init__(parent) 28 self.ui = Ui_nlgModificarReserva() 29 self.ui.setupUi(self) 30 31 # Guardamos los datos de la reserva a modificar 32 self.datos_reserva = datos_reserva 33 34 # Guardar el ID de la reserva a modificar 35 self.reserva_id = reserva_id 36 37 self.db_path = 'Conexion_BBDD/reservasHotel.sql' 38 #self.dbManager = Connectionbd(self.db_path) 39 40 # Cargar tipos de datos en combo boxes 41 self.cargar_tipos_reserva() 42 self.cargar_tipos_cocina() 43 44 # Cargar los datos de la reserva 45 self.cargar_datos_reserva() 46 47 48 # Conectar botones a funciones 49 self.ui.ButtonConfirmarModificacion.clicked.connect(self.modificar_reserva) 50 self.ui.comboBoxTipoReserva.currentTextChanged.connect(self.on_tipo_reserva_changed) 51 self.ui.pushButtonVolver.clicked.connect(self.volver) 52 53 # Configuración predeterminada de fecha 54 self.ui.dateEditReserva.setDate(QDate.currentDate()) 55 self.ui.dateEditReserva.setMinimumDate(QDate.currentDate()) 56 self.ui.dateEditReserva.setDisplayFormat("dd-MM-yyyy") 57 self.ui.dateEditReserva.setCalendarPopup(True) # Muestra el calendario 58 59 # Ocultar campos por defecto 60 self.ui.labelNumJornadas.setVisible(False) 61 self.ui.spinBoxNumHab.setVisible(False) 62 self.ui.labelHabitacion.setVisible(False) 63 self.ui.checkBoxHabitacion.setVisible(False) 64 65 # Conectar señales 66 self.ui.comboBoxTipoReserva.currentTextChanged.connect(self.on_tipo_reserva_changed) 67 68 def cargar_tipos_reserva(self): 69 try: 70 conexion = sqlite3.connect(self.db_path) 71 cursor = conexion.cursor() 72 cursor.execute("SELECT tipo_reserva_id, nombre FROM tipos_reservas") 73 tipos_reserva = cursor.fetchall() 74 75 for tipo_reserva_id, nombre in tipos_reserva: 76 self.ui.comboBoxTipoReserva.addItem(nombre, tipo_reserva_id) 77 78 conexion.close() 79 except sqlite3.Error as e: 80 QMessageBox.critical(self, "Error", f"No se pudo cargar los tipos de reserva: {e}") 81 82 def cargar_tipos_cocina(self): 83 try: 84 conexion = sqlite3.connect(self.db_path) 85 cursor = conexion.cursor() 86 cursor.execute("SELECT tipo_cocina_id, nombre FROM tipos_cocina") 87 tipos_cocina = cursor.fetchall() 88 89 for tipo_cocina_id, nombre in tipos_cocina: 90 self.ui.comboBoxTipoCocina.addItem(nombre, tipo_cocina_id) 91 92 conexion.close() 93 except sqlite3.Error as e: 94 QMessageBox.critical(self, "Error", f"No se pudo cargar los tipos de cocina: {e}") 95 96 def on_tipo_reserva_changed(self, text): 97 """ 98 Muestra u oculta campos adicionales según el tipo de reserva. 99 """ 100 if text == "Congreso": 101 self.ui.labelNumJornadas.setVisible(True) 102 self.ui.spinBoxNumHab.setVisible(True) 103 self.ui.labelHabitacion.setVisible(True) 104 self.ui.checkBoxHabitacion.setVisible(True) 105 else: 106 self.ui.labelNumJornadas.setVisible(False) 107 self.ui.spinBoxNumHab.setVisible(False) 108 self.ui.labelHabitacion.setVisible(False) 109 self.ui.checkBoxHabitacion.setVisible(False) 110 111 def cargar_datos_reserva(self): 112 """ 113 Carga los datos de la reserva a modificar desde los datos pasados al constructor 114 """ 115 persona = self.datos_reserva["persona"] 116 telefono = self.datos_reserva["telefono"] 117 fecha = self.datos_reserva["fecha"] 118 tipo_reserva_id = self.datos_reserva["tipo_reserva_id"] 119 tipo_cocina_id = self.datos_reserva["tipo_cocina_id"] 120 ocupacion = self.datos_reserva["ocupacion"] 121 jornadas = self.datos_reserva["jornadas"] 122 habitaciones = self.datos_reserva["habitaciones"] 123 124 # Llenar los campos de la interfaz con los datos de la reserva 125 self.ui.lineEditNombrePersona.setText(persona) 126 self.ui.lineEditNombrePersona.setEnabled(True) 127 self.ui.lineEditTlPersona.setText(telefono) 128 self.ui.lineEditTlPersona.setEnabled(True) 129 self.ui.dateEditReserva.setDate(QDate.fromString(fecha, "dd-MM-yyyy")) 130 self.ui.comboBoxTipoReserva.setCurrentIndex(self.ui.comboBoxTipoReserva.findData(tipo_reserva_id)) 131 self.ui.comboBoxTipoCocina.setCurrentIndex(self.ui.comboBoxTipoCocina.findData(tipo_cocina_id)) 132 self.ui.lineEdit_2.setText(str(ocupacion)) 133 self.ui.lineEdit_2.setEnabled(True) 134 135 if tipo_reserva_id == "Congreso": # Si el tipo de reserva es "Congreso" 136 self.ui.spinBoxNumHab.setValue(jornadas) 137 self.ui.spinBoxNumHab.setEnabled(True) 138 self.ui.checkBoxHabitacion.setChecked(habitaciones == 1) 139 self.ui.checkBoxHabitacion.setEnabled(True) 140 141 else: 142 143 self.ui.spinBoxNumHab.setVisible(False) 144 self.ui.checkBoxHabitacion.setVisible(False) 145 146 147 def modificar_reserva(self): 148 """ 149 Modifica la reserva en la BBDD con los nuevos datos 150 """ 151 152 try: 153 154 conexion = sqlite3.connect(self.db_path) 155 cursor = conexion.cursor() 156 157 persona = self.ui.lineEditNombrePersona.text() 158 telefono = self.ui.lineEditTlPersona.text() 159 fecha = self.ui.dateEditReserva.date().toString("dd-MM-yyyy") 160 tipo_reserva_id = self.ui.comboBoxTipoReserva.currentData() 161 tipo_cocina_id = self.ui.comboBoxTipoCocina.currentData() 162 ocupacion = self.ui.lineEdit_2.text() 163 164 # Obtener valores de jornadas y habitaciones 165 jornadas = self.ui.spinBoxNumHab.value() if self.ui.labelNumJornadas.isVisible() else 0 166 habitaciones = 1 if self.ui.checkBoxHabitacion.isChecked() else 0 167 168 # Validaciones 169 if not persona or not telefono or not tipo_reserva_id or not tipo_cocina_id or not ocupacion: 170 QMessageBox.warning(self, "Error", "Todos los campos deben estar completos.") 171 return 172 173 if not ocupacion.isdigit(): 174 QMessageBox.warning(self, "Error", "El número de personas debe ser un valor numérico.") 175 return 176 177 178 cursor.execute(""" 179 UPDATE reservas 180 SET persona = ?, telefono = ?, fecha = ?, tipo_reserva_id = ?, tipo_cocina_id = ?, ocupacion = ?, jornadas = ?, habitaciones = ? 181 WHERE reserva_id = ? 182 """, (persona, telefono, fecha, tipo_reserva_id, tipo_cocina_id, int(ocupacion), jornadas, habitaciones, self.reserva_id)) 183 184 conexion.commit() 185 conexion.close() 186 187 QMessageBox.information(self, "Éxito", f"Reserva {self.reserva_id} modificada con éxito.") 188 except sqlite3.Error as e: 189 QMessageBox.critical(self, "Error", f"No se pudo modificar la reserva: {e}") 190 191 def volver(self): 192 """ 193 Cierra la interfaz actual y vuelve a la interfaz anterior 194 """ 195 self.close()
Interfaz 4 para modificar una reserva. Permite cargar y modificar una reserva existente a partir de un ID.
ModificarReservaControlador(datos_reserva, reserva_id, parent=None)
22 def __init__(self, datos_reserva,reserva_id, parent=None): 23 """ 24 Inicializa la interfaz de modificación de reserva 25 26 """ 27 super().__init__(parent) 28 self.ui = Ui_nlgModificarReserva() 29 self.ui.setupUi(self) 30 31 # Guardamos los datos de la reserva a modificar 32 self.datos_reserva = datos_reserva 33 34 # Guardar el ID de la reserva a modificar 35 self.reserva_id = reserva_id 36 37 self.db_path = 'Conexion_BBDD/reservasHotel.sql' 38 #self.dbManager = Connectionbd(self.db_path) 39 40 # Cargar tipos de datos en combo boxes 41 self.cargar_tipos_reserva() 42 self.cargar_tipos_cocina() 43 44 # Cargar los datos de la reserva 45 self.cargar_datos_reserva() 46 47 48 # Conectar botones a funciones 49 self.ui.ButtonConfirmarModificacion.clicked.connect(self.modificar_reserva) 50 self.ui.comboBoxTipoReserva.currentTextChanged.connect(self.on_tipo_reserva_changed) 51 self.ui.pushButtonVolver.clicked.connect(self.volver) 52 53 # Configuración predeterminada de fecha 54 self.ui.dateEditReserva.setDate(QDate.currentDate()) 55 self.ui.dateEditReserva.setMinimumDate(QDate.currentDate()) 56 self.ui.dateEditReserva.setDisplayFormat("dd-MM-yyyy") 57 self.ui.dateEditReserva.setCalendarPopup(True) # Muestra el calendario 58 59 # Ocultar campos por defecto 60 self.ui.labelNumJornadas.setVisible(False) 61 self.ui.spinBoxNumHab.setVisible(False) 62 self.ui.labelHabitacion.setVisible(False) 63 self.ui.checkBoxHabitacion.setVisible(False) 64 65 # Conectar señales 66 self.ui.comboBoxTipoReserva.currentTextChanged.connect(self.on_tipo_reserva_changed)
Inicializa la interfaz de modificación de reserva
def
cargar_tipos_reserva(self):
68 def cargar_tipos_reserva(self): 69 try: 70 conexion = sqlite3.connect(self.db_path) 71 cursor = conexion.cursor() 72 cursor.execute("SELECT tipo_reserva_id, nombre FROM tipos_reservas") 73 tipos_reserva = cursor.fetchall() 74 75 for tipo_reserva_id, nombre in tipos_reserva: 76 self.ui.comboBoxTipoReserva.addItem(nombre, tipo_reserva_id) 77 78 conexion.close() 79 except sqlite3.Error as e: 80 QMessageBox.critical(self, "Error", f"No se pudo cargar los tipos de reserva: {e}")
def
cargar_tipos_cocina(self):
82 def cargar_tipos_cocina(self): 83 try: 84 conexion = sqlite3.connect(self.db_path) 85 cursor = conexion.cursor() 86 cursor.execute("SELECT tipo_cocina_id, nombre FROM tipos_cocina") 87 tipos_cocina = cursor.fetchall() 88 89 for tipo_cocina_id, nombre in tipos_cocina: 90 self.ui.comboBoxTipoCocina.addItem(nombre, tipo_cocina_id) 91 92 conexion.close() 93 except sqlite3.Error as e: 94 QMessageBox.critical(self, "Error", f"No se pudo cargar los tipos de cocina: {e}")
def
on_tipo_reserva_changed(self, text):
96 def on_tipo_reserva_changed(self, text): 97 """ 98 Muestra u oculta campos adicionales según el tipo de reserva. 99 """ 100 if text == "Congreso": 101 self.ui.labelNumJornadas.setVisible(True) 102 self.ui.spinBoxNumHab.setVisible(True) 103 self.ui.labelHabitacion.setVisible(True) 104 self.ui.checkBoxHabitacion.setVisible(True) 105 else: 106 self.ui.labelNumJornadas.setVisible(False) 107 self.ui.spinBoxNumHab.setVisible(False) 108 self.ui.labelHabitacion.setVisible(False) 109 self.ui.checkBoxHabitacion.setVisible(False)
Muestra u oculta campos adicionales según el tipo de reserva.
def
cargar_datos_reserva(self):
111 def cargar_datos_reserva(self): 112 """ 113 Carga los datos de la reserva a modificar desde los datos pasados al constructor 114 """ 115 persona = self.datos_reserva["persona"] 116 telefono = self.datos_reserva["telefono"] 117 fecha = self.datos_reserva["fecha"] 118 tipo_reserva_id = self.datos_reserva["tipo_reserva_id"] 119 tipo_cocina_id = self.datos_reserva["tipo_cocina_id"] 120 ocupacion = self.datos_reserva["ocupacion"] 121 jornadas = self.datos_reserva["jornadas"] 122 habitaciones = self.datos_reserva["habitaciones"] 123 124 # Llenar los campos de la interfaz con los datos de la reserva 125 self.ui.lineEditNombrePersona.setText(persona) 126 self.ui.lineEditNombrePersona.setEnabled(True) 127 self.ui.lineEditTlPersona.setText(telefono) 128 self.ui.lineEditTlPersona.setEnabled(True) 129 self.ui.dateEditReserva.setDate(QDate.fromString(fecha, "dd-MM-yyyy")) 130 self.ui.comboBoxTipoReserva.setCurrentIndex(self.ui.comboBoxTipoReserva.findData(tipo_reserva_id)) 131 self.ui.comboBoxTipoCocina.setCurrentIndex(self.ui.comboBoxTipoCocina.findData(tipo_cocina_id)) 132 self.ui.lineEdit_2.setText(str(ocupacion)) 133 self.ui.lineEdit_2.setEnabled(True) 134 135 if tipo_reserva_id == "Congreso": # Si el tipo de reserva es "Congreso" 136 self.ui.spinBoxNumHab.setValue(jornadas) 137 self.ui.spinBoxNumHab.setEnabled(True) 138 self.ui.checkBoxHabitacion.setChecked(habitaciones == 1) 139 self.ui.checkBoxHabitacion.setEnabled(True) 140 141 else: 142 143 self.ui.spinBoxNumHab.setVisible(False) 144 self.ui.checkBoxHabitacion.setVisible(False)
Carga los datos de la reserva a modificar desde los datos pasados al constructor
def
modificar_reserva(self):
147 def modificar_reserva(self): 148 """ 149 Modifica la reserva en la BBDD con los nuevos datos 150 """ 151 152 try: 153 154 conexion = sqlite3.connect(self.db_path) 155 cursor = conexion.cursor() 156 157 persona = self.ui.lineEditNombrePersona.text() 158 telefono = self.ui.lineEditTlPersona.text() 159 fecha = self.ui.dateEditReserva.date().toString("dd-MM-yyyy") 160 tipo_reserva_id = self.ui.comboBoxTipoReserva.currentData() 161 tipo_cocina_id = self.ui.comboBoxTipoCocina.currentData() 162 ocupacion = self.ui.lineEdit_2.text() 163 164 # Obtener valores de jornadas y habitaciones 165 jornadas = self.ui.spinBoxNumHab.value() if self.ui.labelNumJornadas.isVisible() else 0 166 habitaciones = 1 if self.ui.checkBoxHabitacion.isChecked() else 0 167 168 # Validaciones 169 if not persona or not telefono or not tipo_reserva_id or not tipo_cocina_id or not ocupacion: 170 QMessageBox.warning(self, "Error", "Todos los campos deben estar completos.") 171 return 172 173 if not ocupacion.isdigit(): 174 QMessageBox.warning(self, "Error", "El número de personas debe ser un valor numérico.") 175 return 176 177 178 cursor.execute(""" 179 UPDATE reservas 180 SET persona = ?, telefono = ?, fecha = ?, tipo_reserva_id = ?, tipo_cocina_id = ?, ocupacion = ?, jornadas = ?, habitaciones = ? 181 WHERE reserva_id = ? 182 """, (persona, telefono, fecha, tipo_reserva_id, tipo_cocina_id, int(ocupacion), jornadas, habitaciones, self.reserva_id)) 183 184 conexion.commit() 185 conexion.close() 186 187 QMessageBox.information(self, "Éxito", f"Reserva {self.reserva_id} modificada con éxito.") 188 except sqlite3.Error as e: 189 QMessageBox.critical(self, "Error", f"No se pudo modificar la reserva: {e}")
Modifica la reserva en la BBDD con los nuevos datos