Beispiel #1
0
 def __init__(self, padre=None, db=None):
     QMainWindow.__init__(self, padre)
     self.ventanahabitaciones = Ui_VentanaHabitaciones()
     self.ventanahabitaciones.setupUi(self)
     self.validacion = Validaciones(self.ventanahabitaciones)
     self.db = db
     self.ventanahabitaciones.btnAsignar.clicked.connect(self.Asignar)
     self.ventanahabitaciones.btnEstado.clicked.connect(self.Estado)
     self.ventanahabitaciones.btnAsignaciones.clicked.connect(
         self.Asignaciones)
     self.ventanahabitaciones.actionAcercaDe.triggered.connect(self.close)
     self.ventanahabitaciones.actionAsignaciones.triggered.connect(
         self.Asignaciones)
     self.ventanahabitaciones.actionAsignar.triggered.connect(self.Asignar)
     self.ventanahabitaciones.actionEstado.triggered.connect(self.Estado)
     self.ventanahabitaciones.actionAcercaDe.triggered.connect(
         self.AcercaDe)
     self.setWindowTitle("Habitaciones")
     self.setWindowIcon(QIcon("Iconos/habitaciones-ico.png"))
     self.ventanahabitaciones.actionAcercaDe.setIcon(
         QIcon("Iconos/estrella.png"))
     self.ventanahabitaciones.actionAsignar.setIcon(QIcon("Iconos/mas.png"))
     self.ventanahabitaciones.actionEstado.setIcon(
         QIcon("Iconos/lista.png"))
     self.ventanahabitaciones.actionAsignaciones.setIcon(
         QIcon("Iconos/lista2.png"))
     self.ventanahabitaciones.actionSalir.triggered.connect(self.close)
     self.ventanahabitaciones.actionSalir.setIcon(
         QIcon("Iconos/cancelar.png"))
     self.setFixedSize(447, 187)
Beispiel #2
0
class FormularioRegistro(QMainWindow):
	def __init__(self, padre=None, db=None):
		QMainWindow.__init__(self, padre)
		self.ventana = Ui_FormularioRegistroWin()
		self.ventana.setupUi(self)
		self.validacion = Validaciones(self.ventana)
		self.db = db
		self.ventana.leCorreo.textChanged.connect(self.validacion.validar_correo)
		self.ventana.leUsuario.textChanged.connect(self.validacion.validar_usuario)
		self.ventana.leContrasena.textChanged.connect(self.validacion.validar_contrasena)
		self.ventana.leNombre.textChanged.connect(self.validacion.validar_nombre)
		self.ventana.leApellido.textChanged.connect(self.validacion.validar_apellido)
		self.ventana.leCI_RIF.textChanged.connect(self.validacion.validar_cedula)
		self.ventana.leDireccion.textChanged.connect(self.validacion.validar_direccion)
		self.ventana.leDireccion_Hotel.textChanged.connect(self.validacion.validar_direccion_hotel)
		self.ventana.leHotel.textChanged.connect(self.validacion.validar_hotel)
		self.ventana.btnRegistrar.clicked.connect(self.Registrar)
		self.setWindowTitle("Registro")
		self.setWindowIcon(QIcon("Iconos/archivo.png"))
	
	def Registrar(self):
		if self.validacion.validar_correo() and self.validacion.validar_usuario() and self.validacion.validar_contrasena() and self.validacion.validar_nombre() and self.validacion.validar_apellido() and self.validacion.validar_cedula() and self.validacion.validar_direccion() and self.validacion.validar_direccion_hotel and self.validacion.validar_hotel():
			self.db.open()
			consulta = QtSql.QSqlQuery()
			consulta.exec_("insert into Registro values('%s', '%s' , '%s', '%s', %d, '%s', '%s', '%s', '%s')" % (self.ventana.leUsuario.text(), self.ventana.leContrasena.text(), self.ventana.leNombre.text(), self.ventana.leApellido.text(), int(self.ventana.leCI_RIF.text()), self.ventana.leDireccion.toPlainText(), self.ventana.leCorreo.text(), self.ventana.leHotel.text(), self.ventana.leDireccion_Hotel.toPlainText()))
			self.setVisible(False)
			login = Login(self, self.db)
			login.show()
		else:
			QMessageBox.warning(self, "Error!", "Faltan datos en el formulario", QMessageBox.Ok)
Beispiel #3
0
 def __init__(self, padre=None, db=None):
     QMainWindow.__init__(self, padre)
     self.window = Ui_loginWin()
     self.window.setupUi(self)
     self.validacion = Validaciones(self.window)
     self.db = db
     self.window.btnAcercaDe.clicked.connect(self.muestraAcerca)
     self.window.btnIngresar.clicked.connect(self.Ingresar)
     self.window.leUsuario.textChanged.connect(
         self.validacion.validar_usuario)
     self.window.leContrasena.textChanged.connect(
         self.validacion.validar_contrasena)
     self.setWindowTitle("Ingreso al Sistema")
     self.setWindowIcon(QIcon("Iconos/clave.png"))
     self.setFixedSize(366, 143)
Beispiel #4
0
	def __init__(self, padre=None, db=None):
		QMainWindow.__init__(self, padre)
		self.ventana = Ui_FormularioRegistroWin()
		self.ventana.setupUi(self)
		self.validacion = Validaciones(self.ventana)
		self.db = db
		self.ventana.leCorreo.textChanged.connect(self.validacion.validar_correo)
		self.ventana.leUsuario.textChanged.connect(self.validacion.validar_usuario)
		self.ventana.leContrasena.textChanged.connect(self.validacion.validar_contrasena)
		self.ventana.leNombre.textChanged.connect(self.validacion.validar_nombre)
		self.ventana.leApellido.textChanged.connect(self.validacion.validar_apellido)
		self.ventana.leCI_RIF.textChanged.connect(self.validacion.validar_cedula)
		self.ventana.leDireccion.textChanged.connect(self.validacion.validar_direccion)
		self.ventana.leDireccion_Hotel.textChanged.connect(self.validacion.validar_direccion_hotel)
		self.ventana.leHotel.textChanged.connect(self.validacion.validar_hotel)
		self.ventana.btnRegistrar.clicked.connect(self.Registrar)
		self.setWindowTitle("Registro")
		self.setWindowIcon(QIcon("Iconos/archivo.png"))
Beispiel #5
0
 def __init__(self, padre=None, db=None):
     QMainWindow.__init__(self, padre)
     self.main = Ui_VentanaUsuarios()
     self.main.setupUi(self)
     self.main.btnAgregar.clicked.connect(self.Agregar)
     self.main.btnEstado.clicked.connect(self.Estado)
     self.main.btnReporte.clicked.connect(self.Reporte)
     self.validacion = Validaciones(self.main)
     self.main.actionSalir_2.triggered.connect(self.close)
     self.main.actionAgregar_2.triggered.connect(self.Agregar)
     self.main.actionEstado_2.triggered.connect(self.Estado)
     self.main.actionCSV.triggered.connect(self.CSV)
     self.main.actionPDF.triggered.connect(self.PDF)
     self.main.actionAcercaDe.triggered.connect(self.acercaDe)
     self.db = db
     self.setWindowTitle("Clientes")
     self.setWindowIcon(QIcon("Iconos/grupo-ico.png"))
     self.main.actionSalir_2.setIcon(QIcon("Iconos/cancelar.png"))
     self.main.actionAcercaDe.setIcon(QIcon("Iconos/estrella.png"))
     self.main.actionAgregar_2.setIcon(QIcon("Iconos/usuario.png"))
     self.main.actionEstado_2.setIcon(QIcon("Iconos/lista.png"))
     self.main.actionCSV.setIcon(QIcon("Iconos/csv.png"))
     self.main.actionPDF.setIcon(QIcon("Iconos/pdf.png"))
     self.main.menuReporte.setIcon(QIcon("Iconos/bloc.png"))
Beispiel #6
0
 def __init__(self, padre=None, db=None):
     QMainWindow.__init__(self, padre)
     self.ventanaempleados = Ui_VentanaEmpleados()
     self.ventanaempleados.setupUi(self)
     self.db = db
     self.validacion = Validaciones(self.ventanaempleados)
     self.ventanaempleados.btnAgregar.clicked.connect(self.Agregar)
     self.ventanaempleados.btnTurnos.clicked.connect(self.Turnos)
     self.ventanaempleados.btnLista.clicked.connect(self.Lista)
     self.ventanaempleados.actionSalir.triggered.connect(self.close)
     self.ventanaempleados.actionAgregar.triggered.connect(self.Agregar)
     self.ventanaempleados.actionTurnos.triggered.connect(self.Turnos)
     self.ventanaempleados.actionLista.triggered.connect(self.Lista)
     self.ventanaempleados.actionAcercaDe.triggered.connect(self.acercaDe)
     self.setWindowTitle("Empleados")
     self.setWindowIcon(QIcon("Iconos/empleados-ico.png"))
     self.ventanaempleados.actionAcercaDe.setIcon(
         QIcon("Iconos/estrella.png"))
     self.ventanaempleados.actionAgregar.setIcon(
         QIcon("Iconos/usuario.png"))
     self.ventanaempleados.actionLista.setIcon(QIcon("Iconos/bloc.png"))
     self.ventanaempleados.actionSalir.setIcon(QIcon("Iconos/cancelar.png"))
     self.ventanaempleados.actionTurnos.setIcon(QIcon("Iconos/turnos.png"))
     self.setFixedSize(1086, 600)
Beispiel #7
0
class VentanaUsuarios(QMainWindow):
    def __init__(self, padre=None, db=None):
        QMainWindow.__init__(self, padre)
        self.main = Ui_VentanaUsuarios()
        self.main.setupUi(self)
        self.main.btnAgregar.clicked.connect(self.Agregar)
        self.main.btnEstado.clicked.connect(self.Estado)
        self.main.btnReporte.clicked.connect(self.Reporte)
        self.validacion = Validaciones(self.main)
        self.main.actionSalir_2.triggered.connect(self.close)
        self.main.actionAgregar_2.triggered.connect(self.Agregar)
        self.main.actionEstado_2.triggered.connect(self.Estado)
        self.main.actionCSV.triggered.connect(self.CSV)
        self.main.actionPDF.triggered.connect(self.PDF)
        self.main.actionAcercaDe.triggered.connect(self.acercaDe)
        self.db = db
        self.setWindowTitle("Clientes")
        self.setWindowIcon(QIcon("Iconos/grupo-ico.png"))
        self.main.actionSalir_2.setIcon(QIcon("Iconos/cancelar.png"))
        self.main.actionAcercaDe.setIcon(QIcon("Iconos/estrella.png"))
        self.main.actionAgregar_2.setIcon(QIcon("Iconos/usuario.png"))
        self.main.actionEstado_2.setIcon(QIcon("Iconos/lista.png"))
        self.main.actionCSV.setIcon(QIcon("Iconos/csv.png"))
        self.main.actionPDF.setIcon(QIcon("Iconos/pdf.png"))
        self.main.menuReporte.setIcon(QIcon("Iconos/bloc.png"))

    def Agregar(self):
        if not self.main.tabAgregar.isVisible():
            self.main.tabClientes.addTab(self.main.tabAgregar, "Agregar")
            self.main.leCI_RIF.textChanged.connect(
                self.validacion.validar_cedula)
            self.main.leNombre.textChanged.connect(
                self.validacion.validar_nombre)
            self.main.leApellido.textChanged.connect(
                self.validacion.validar_apellido)
            self.main.leCorreo.textChanged.connect(
                self.validacion.validar_correo)
            self.main.leTelefono.textChanged.connect(
                self.validacion.validar_telefono)
            self.main.btnCerrar_Agregar.clicked.connect(self.cerrarAgregar)
            self.main.btnAgregar_2.clicked.connect(self.AgregarBtn)
            self.main.btnEstado.clicked.connect(self.Estado)

    def AgregarBtn(self):
        if self.validacion.validar_cedula() and self.validacion.validar_nombre(
        ) and self.validacion.validar_apellido(
        ) and self.validacion.validar_correo(
        ) and self.validacion.validar_telefono():
            self.db.open()
            consulta = QtSql.QSqlQuery()
            consulta.exec_("SELECT CI_RIF FROM CLIENTES WHERE CI_RIF = '%s'" %
                           (self.main.leCI_RIF.text()))
            ci = ""
            while consulta.next():
                ci = consulta.value(0)
                if ci == self.main.leCI_RIF.text():
                    QMessageBox.warning(self, "Error",
                                        "El cliente ya existe!!!!",
                                        QMessageBox.Ok)
                    break
            if ci != self.main.leCI_RIF.text():
                consulta.exec_(
                    "INSERT INTO Clientes VALUES( '%s','%s','%s','%s','%s')" %
                    (self.main.leCI_RIF.text(), self.main.leNombre.text(),
                     self.main.leApellido.text(), self.main.leCorreo.text(),
                     self.main.leTelefono.text()))
                consulta.exec_("SELECT COUNT(CI_RIF) FROM Clientes")
                cantidad = 0
                while consulta.next():
                    cantidad = int(consulta.value(0))
                cantidad += 1
                consulta.exec_("SELECT Fecha FROM CantClientes")
                ultimafecha = ""
                while consulta.next():
                    ultimafecha = consulta.value(0)
                fechaActual = time.strftime("%d/%m/%y")
                if ultimafecha == "" or fechaActual != ultimafecha:
                    consulta.exec_(
                        "INSERT INTO CantClientes (Fecha, Cantidad) VALUES('%s', %d)"
                        % (fechaActual, cantidad))
                elif ultimafecha == fechaActual:
                    consulta.exec__(
                        "UPDATE CantClientes SET Cantidad = %d WHERE Fecha = '%s'"
                        % (cantidad, fechaActual))
                QMessageBox.information(
                    self, "Operacion exitosa",
                    "Cliente %s %s %s fue agregado a la base datos" %
                    (self.main.leCI_RIF.text(), self.main.leNombre.text(),
                     self.main.leApellido.text()), QMessageBox.Ok)
        else:
            if not self.validacion.validar_cedula(
            ) and not self.validacion.validar_nombre(
            ) and not self.validacion.validar_apellido(
            ) and not self.validacion.validar_correo(
            ) and not self.validacion.validar_telefono():
                QMessageBox.warning(self, "Error",
                                    "No se ha llenado ningun campo!!!",
                                    QMessageBox.Ok)
            elif not self.validacion.validar_cedula():
                QMessageBox.warning(self, "Error",
                                    "No ha colocado la cedula!!!",
                                    QMessageBox.Ok)
            elif not self.validacion.validar_nombre():
                QMessageBox.warning(self, "Error",
                                    "No ha colocado el nombre!!!",
                                    QMessageBox.Ok)
            elif not self.validacion.validar_apellido():
                QMessageBox.warning(self, "Error",
                                    "No ha colocado el appellido!!!",
                                    QMessageBox.Ok)
            elif not self.validacion.validar_correo():
                QMessageBox.warning(self, "Error",
                                    "No ha colocado el correo!!!",
                                    QMessageBox.Ok)
            elif not self.validacion.validar_telefono():
                QMessageBox.warning(self, "Error",
                                    "No ha colocado el telefono",
                                    QMessageBox.Ok)
            else:
                QMessageBox.warning(self, "Error",
                                    "Todo los campos son obligatorios",
                                    QMessageBox.Ok)
        self.db.close()

    def Estado(self):
        if not self.main.tabEstado.isVisible():
            self.main.tabClientes.addTab(self.main.tabEstado, "Estado")
            self.main.tablaUsuarios.itemChanged.connect(self.Actualizar)
            self.main.btnCerrar_Estado.clicked.connect(self.cerrarEstado)
            self.main.btnRecargar.clicked.connect(self.Recargar)
            self.main.btnEliminar.clicked.connect(self.Eliminar)
            self.main.leBuscar.textChanged.connect(self.Buscar)
            for i in range(self.main.tablaUsuarios.rowCount()):
                self.main.tablaUsuarios.removeRow(i)
            self.db.open()
            consulta = QtSql.QSqlQuery()
            consulta.exec_("SELECT * FROM Clientes")
            self.main.tablaUsuarios.setColumnCount(5)
            self.main.tablaUsuarios.setHorizontalHeaderLabels(
                ['CI_RIF', 'Nombre', 'Apellido', 'Correo', 'Telefono'])
            while consulta.next():
                self.main.tablaUsuarios.insertRow(
                    self.main.tablaUsuarios.rowCount())
                CI_RIF = QTableWidgetItem(str(consulta.value(0)))
                nombre = QTableWidgetItem(str(consulta.value(1)))
                apellido = QTableWidgetItem(str(consulta.value(2)))
                correo = QTableWidgetItem(str(consulta.value(3)))
                telefono = QTableWidgetItem(str(consulta.value(4)))
                self.main.tablaUsuarios.setItem(
                    self.main.tablaUsuarios.rowCount() - 1, 0, CI_RIF)
                self.main.tablaUsuarios.setItem(
                    self.main.tablaUsuarios.rowCount() - 1, 1, nombre)
                self.main.tablaUsuarios.setItem(
                    self.main.tablaUsuarios.rowCount() - 1, 2, apellido)
                self.main.tablaUsuarios.setItem(
                    self.main.tablaUsuarios.rowCount() - 1, 3, correo)
                self.main.tablaUsuarios.setItem(
                    self.main.tablaUsuarios.rowCount() - 1, 4, telefono)
            self.db.close()

    def Buscar(self):
        Cedula = self.main.leBuscar.text()
        self.db.open()
        for i in range(self.main.tablaUsuarios.rowCount()):
            self.main.tablaUsuarios.removeRow(i)
        consulta = QtSql.QSqlQuery()
        consulta.exec_("SELECT * FROM Clientes WHERE CI_RIF LIKE '%s'" %
                       (Cedula + '%'))
        row = 0
        while consulta.next():
            self.main.tablaUsuarios.insertRow(row)
            CI_RIF = QTableWidgetItem(str(consulta.value(0)))
            nombre = QTableWidgetItem(str(consulta.value(1)))
            apellido = QTableWidgetItem(str(consulta.value(2)))
            correo = QTableWidgetItem(str(consulta.value(3)))
            telefono = QTableWidgetItem(str(consulta.value(4)))
            self.main.tablaUsuarios.setItem(row, 0, CI_RIF)
            self.main.tablaUsuarios.setItem(row, 1, nombre)
            self.main.tablaUsuarios.setItem(row, 2, apellido)
            self.main.tablaUsuarios.setItem(row, 3, correo)
            self.main.tablaUsuarios.setItem(row, 4, telefono)
            row = row + 1
        self.db.close()

    def Actualizar(self):
        column = self.main.tablaUsuarios.currentColumn()
        row = self.main.tablaUsuarios.currentRow()
        self.db.open()
        consulta = QtSql.QSqlQuery()
        if row > -1:
            CI_RIF = self.main.tablaUsuarios.item(row, 0).text()
            valor = self.main.tablaUsuarios.currentItem().text()
            columns = ['CI_RIF', 'Nombre', 'Apellido', 'Correo', 'Telefono']
            consulta.exec_("UPDATE Clientes SET " + columns[column] + " = '" +
                           valor + "' WHERE CI_RIF = '" + CI_RIF + "'")
        self.db.close()

    def Recargar(self):
        for i in range(self.main.tablaUsuarios.rowCount()):
            self.main.tablaUsuarios.removeRow(i)
        self.db.open()
        consulta = QtSql.QSqlQuery()
        consulta.exec_("SELECT * FROM Clientes")
        self.main.tablaUsuarios.setColumnCount(5)
        self.main.tablaUsuarios.setHorizontalHeaderLabels(
            ['CI_RIF', 'Nombre', 'Apellido', 'Correo', 'Telefono'])
        row = 0
        while consulta.next():
            self.main.tablaUsuarios.insertRow(row)
            CI_RIF = QTableWidgetItem(str(consulta.value(0)))
            nombre = QTableWidgetItem(str(consulta.value(1)))
            apellido = QTableWidgetItem(str(consulta.value(2)))
            correo = QTableWidgetItem(str(consulta.value(3)))
            telefono = QTableWidgetItem(str(consulta.value(4)))
            self.main.tablaUsuarios.setItem(row, 0, CI_RIF)
            self.main.tablaUsuarios.setItem(row, 1, nombre)
            self.main.tablaUsuarios.setItem(row, 2, apellido)
            self.main.tablaUsuarios.setItem(row, 3, correo)
            self.main.tablaUsuarios.setItem(row, 4, telefono)
            row = row + 1
        self.db.close()

    def Reporte(self):
        Guardar = QMessageBox(self)
        CSV = Guardar.addButton("CSV", QMessageBox.ActionRole)
        PDF = Guardar.addButton("PDF", QMessageBox.ActionRole)
        Guardar.setWindowTitle("Guardar Reporte")
        Guardar.setText(
            "Seleccione el formato en que desea guardar el reporte")
        Guardar.exec_()
        if Guardar.clickedButton() == CSV:
            ruta_guardar = ""
            NombreArchivo = QFileDialog.getSaveFileName(
                self, "Guardar Archivo", ruta_guardar)
            if NombreArchivo[0]:
                self.db.open()
                file = open(NombreArchivo[0] + '.csv', 'w')
                consulta = QtSql.QSqlQuery()
                consulta.exec_("SELECT * FROM Clientes")
                fieldnames = [
                    "CI_RIF", "Nombre", "Apellido", "Correo", "Telefono"
                ]
                csvsalida = csv.DictWriter(file, fieldnames)
                while consulta.next():
                    csvsalida.writerow({
                        fieldnames[0]: consulta.value(0),
                        fieldnames[1]: consulta.value(1),
                        fieldnames[2]: consulta.value(2),
                        fieldnames[3]: consulta.value(3),
                        fieldnames[4]: consulta.value(4)
                    })
                file.close()
                self.db.close()
            Guardar.close()
        elif Guardar.clickedButton() == PDF:
            ruta_guardar = ""
            NombreArchivo = QFileDialog.getSaveFileName(
                self, "Guarfar Archivo", ruta_guardar)
            if NombreArchivo[0]:
                self.db.open()
                consulta = QtSql.QSqlQuery()
                consulta.exec_("SELECT * FROM Clientes")
                estiloHoja = getSampleStyleSheet()
                story = []
                cuerpo = estiloHoja["BodyText"]
                cuerpo.alignment = TA_CENTER

                col = ["CI_RIF", "Nombre", "Apellido", "Correo", "Telefono"]
                fil = []
                fil.insert(0, col)
                fila = 1
                while consulta.next():
                    fil.insert(fila, [
                        consulta.value(0),
                        consulta.value(1),
                        consulta.value(2),
                        consulta.value(3),
                        consulta.value(4)
                    ])
                    fila += 1
                datos = [i for i in fil]
                tabla = Table(data=datos, colWidths=[90, 60, 60, 110, 80])
                story.append(tabla)
                doc = SimpleDocTemplate(NombreArchivo[0] + '.pdf',
                                        pagesize=portrait(LETTER),
                                        leftMargin=3,
                                        rightMargin=4,
                                        topMargin=3,
                                        bottomMargin=4)
                doc.build(story)
                self.db.close()
            Guardar.close()
        else:
            Guardar.close()

    def cerrarAgregar(self):
        index = self.main.tabClientes.indexOf(self.main.tabAgregar)
        self.main.tabClientes.removeTab(index)

    def cerrarEstado(self):
        index = self.main.tabClientes.indexOf(self.main.tabEstado)
        self.main.tabClientes.removeTab(index)

    def cerrarModificar(self):
        index = self.main.tabClientes.indexOf(self.main.tabModififcar)
        self.main.tabClientes.removeTab(index)

    def Eliminar(self):
        row = self.main.tablaUsuarios.currentRow()
        print(row)
        if row > -1:
            Pregunta = QMessageBox(self)
            Pregunta.setText("¿Desea eliminar al cliente?")
            SI = Pregunta.addButton("Si", QMessageBox.ActionRole)
            NO = Pregunta.addButton("No", QMessageBox.ActionRole)
            Pregunta.setWindowTitle("Eliminar")
            Pregunta.setIconPixmap(QPixmap("Iconos/pregunta.png"))
            SI.setIcon(QIcon("Iconos/aceptar-ico.png"))
            NO.setIcon(QIcon("Iconos/cancelar.png"))
            Pregunta.exec_()
            if Pregunta.clickedButton() == SI:
                self.db.open()
                consulta = QtSql.QSqlQuery()
                CI_RIF = self.main.tablaUsuarios.item(row, 0).text()
                consulta.exec_("DELETE FROM Clientes WHERE CI_RIF = '%s'" %
                               (CI_RIF))
                consulta.exec_(
                    "DELETE FROM AsignarHabitaciones WHERE CI_RIF = '%s'" %
                    (CI_RIF))
                QMessageBox.information(self, "Eliminado",
                                        "Cliente eliminado!!!")
                self.db.close()
            else:
                Pregunta.close()

    def CSV(self):
        ruta_guardar = ""
        NombreArchivo = QFileDialog.getSaveFileName(self, "Guardar Archivo",
                                                    ruta_guardar)
        if NombreArchivo[0]:
            self.db.open()
            file = open(NombreArchivo[0] + '.csv', 'w')
            consulta = QtSql.QSqlQuery()
            consulta.exec_("SELECT * FROM Clientes")
            fieldnames = ["CI_RIF", "Nombre", "Apellido", "Correo", "Telefono"]
            csvsalida = csv.DictWriter(file, fieldnames)
            while consulta.next():
                csvsalida.writerow({
                    fieldnames[0]: consulta.value(0),
                    fieldnames[1]: consulta.value(1),
                    fieldnames[2]: consulta.value(2),
                    fieldnames[3]: consulta.value(3),
                    fieldnames[4]: consulta.value(4)
                })
            file.close()
            self.db.close()

    def PDF(self):
        ruta_guardar = ""
        NombreArchivo = QFileDialog.getSaveFileName(self, "Guarfar Archivo",
                                                    ruta_guardar)
        if NombreArchivo[0]:
            self.db.open()
            consulta = QtSql.QSqlQuery()
            consulta.exec_("SELECT * FROM Clientes")
            estiloHoja = getSampleStyleSheet()
            story = []
            cuerpo = estiloHoja["BodyText"]
            cuerpo.alignment = TA_CENTER

            col = ["CI_RIF", "Nombre", "Apellido", "Correo", "Telefono"]
            fil = []
            fil.insert(0, col)
            fila = 1
            while consulta.next():
                fil.insert(fila, [
                    consulta.value(0),
                    consulta.value(1),
                    consulta.value(2),
                    consulta.value(3),
                    consulta.value(4)
                ])
                fila += 1
            datos = [i for i in fil]
            tabla = Table(data=datos, colWidths=[90, 60, 60, 110, 80])
            story.append(tabla)
            doc = SimpleDocTemplate(NombreArchivo[0] + '.pdf',
                                    pagesize=portrait(LETTER),
                                    leftMargin=3,
                                    rightMargin=4,
                                    topMargin=3,
                                    bottomMargin=4)
            doc.build(story)
            self.db.close()

    def acercaDe(self):
        acerca = AcercaDe(self)
        acerca.show()
Beispiel #8
0
class VentanaHabitaciones(QMainWindow):
    def __init__(self, padre=None, db=None):
        QMainWindow.__init__(self, padre)
        self.ventanahabitaciones = Ui_VentanaHabitaciones()
        self.ventanahabitaciones.setupUi(self)
        self.validacion = Validaciones(self.ventanahabitaciones)
        self.db = db
        self.ventanahabitaciones.btnAsignar.clicked.connect(self.Asignar)
        self.ventanahabitaciones.btnEstado.clicked.connect(self.Estado)
        self.ventanahabitaciones.btnAsignaciones.clicked.connect(
            self.Asignaciones)
        self.ventanahabitaciones.actionAcercaDe.triggered.connect(self.close)
        self.ventanahabitaciones.actionAsignaciones.triggered.connect(
            self.Asignaciones)
        self.ventanahabitaciones.actionAsignar.triggered.connect(self.Asignar)
        self.ventanahabitaciones.actionEstado.triggered.connect(self.Estado)
        self.ventanahabitaciones.actionAcercaDe.triggered.connect(
            self.AcercaDe)
        self.setWindowTitle("Habitaciones")
        self.setWindowIcon(QIcon("Iconos/habitaciones-ico.png"))
        self.ventanahabitaciones.actionAcercaDe.setIcon(
            QIcon("Iconos/estrella.png"))
        self.ventanahabitaciones.actionAsignar.setIcon(QIcon("Iconos/mas.png"))
        self.ventanahabitaciones.actionEstado.setIcon(
            QIcon("Iconos/lista.png"))
        self.ventanahabitaciones.actionAsignaciones.setIcon(
            QIcon("Iconos/lista2.png"))
        self.ventanahabitaciones.actionSalir.triggered.connect(self.close)
        self.ventanahabitaciones.actionSalir.setIcon(
            QIcon("Iconos/cancelar.png"))
        self.setFixedSize(447, 187)

    def Asignar(self):
        if not self.ventanahabitaciones.tabAsignar.isVisible():
            self.ventanahabitaciones.tabHabitaciones.addTab(
                self.ventanahabitaciones.tabAsignar, "Asignar")
            self.ventanahabitaciones.leCI_RIF.textChanged.connect(
                self.validacion.validar_cedula)
            self.ventanahabitaciones.leHabitacion.textChanged.connect(
                self.validacion.validar_habitacion)
            self.ventanahabitaciones.leCostoDia.textChanged.connect(
                self.validacion.validar_costo)
            self.ventanahabitaciones.btnAsignar_2.clicked.connect(
                self.AsignarBtn)
            self.ventanahabitaciones.btnCerrar_Asignar.clicked.connect(
                self.cerrarAsignar)

    def AsignarBtn(self):
        self.db.open()
        consulta = QtSql.QSqlQuery()
        cedula = self.ventanahabitaciones.leCI_RIF.text()
        ci = ""
        Habitacion = self.ventanahabitaciones.leHabitacion.text()
        Entrada = self.ventanahabitaciones.dateEntrada.text()
        Salida = self.ventanahabitaciones.dateSalida.text()
        consulta.exec_(
            "SELECT Fecha_Salida FROM AsignarHabitaciones WHERE CI_RIF = '%s" %
            (cedula))
        FechaAsignada = ""
        capacidad = ""
        asignado = ""
        HabitacionAsignada = ""
        while consulta.next():
            FechaAsignada = consulta.value(0)
        consulta.exec_(
            "SELECT Capacidad, Asignado FROM Habitaciones WHERE Numero_Codigo = '%s'"
            % (Habitacion))
        while consulta.next():
            capacidad = consulta.value(0)
            asignado = consulta.value(1)
        consulta.exec_(
            "SELECT Habitacion FROM AsignarHabitaciones WHERE CI_RIF = %s" %
            (cedula))
        while consulta.next():
            HabitacionAsignada = consulta.value(0)
        CI = ""
        consulta.exec_(
            "SELECT CI_RIF From AsignarHabitaciones WHERE CI_RIF = '%s'" %
            (cedula))
        while consulta.next():
            CI = consulta.value(0)

        if Salida < Entrada:
            QMessageBox.warning(self, "Error", "Error al asignar las fechas",
                                QMessageBox.Ok)
        elif Entrada == Salida:
            QMessageBox.warning(self, "Error",
                                "Las fechas no pueden ser iguales",
                                QMessageBox.Ok)
        elif Salida < FechaAsignada:
            QMessageBox.warning(self, "Error",
                                "Aun tiene una asignacion activa",
                                QMessageBox.Ok)
        elif capacidad == asignado and capacidad != "" and asignado != "":
            QMessageBox.warning(self, "Error",
                                "La habitacion a alcanzado su limite",
                                QMessageBox.Ok)
        elif FechaAsignada < Salida and Habitacion != HabitacionAsignada and HabitacionAsignada != "" and Habitacion != "" and FechaAsignada != "" and Salida != "":
            QMessageBox.warning(
                self, "Error",
                "No puede asignar dos habitaciones al mismo cliente",
                QMessageBox.Ok)
        elif FechaAsignada == Salida or Habitacion == HabitacionAsignada:
            QMessageBox.warning(self, "Error",
                                "Ya el cliente tiene la habitacion asignada",
                                QMessageBox.Ok)
        elif CI == cedula:
            QMessageBox.warning(self, "Error",
                                "Ya el cliente tiene una habitacion asignada",
                                QMessageBox.Ok)
        elif not self.validacion.validar_cedula(
        ) and not self.validacion.validar_costo(
        ) and not self.validacion.validar_habitacion():
            QMessageBox.warning(self, "Error", "No ha llenado ningun campo",
                                QMessageBox.Ok)
        elif not self.validacion.validar_cedula():
            QMessageBox.warning(self, "Error", "No ha introducido la cedula",
                                QMessageBox.Ok)
        elif not self.validacion.validar_habitacion():
            QMessageBox.warning(self, "Error",
                                "No ha introducido la habitacion",
                                QMessageBox.Ok)
        elif not self.validacion.validar_costo():
            QMessageBox.warning(self, "Error", "No ha introducido el costo",
                                QMessageBox.Ok)
        else:
            CostoDia = float(self.ventanahabitaciones.leCostoDia.text())
            consulta.exec__("SELECT CI_RIF FROM Clientes WHERE CI_RIF = '%s'" %
                            (cedula))
            while consulta.next():
                ci = consulta.value(0)
            if ci == "":
                QMessageBox.warning(self, "Error",
                                    "El cliente aun no esta registrado",
                                    QMessageBox.Ok)
            else:
                listd = Salida.split('/')
                listd2 = Entrada.split('/')
                Dias = int(listd[0]) - int(listd2[0])
                Total = CostoDia * Dias
                fecha = time.strftime("%d/%m/%y")
                anioactual = time.strftime("%y")
                if listd[2] and listd2[2] == anioactual or listd[
                        2] == anioactual:
                    consulta.exec__(
                        "INSERT INTO AsignarHabitaciones (CI_RIF, Habitacion, Fecha_Entrada, Fecha_Salida, Costo_Dia, Total) VALUES( '%s', '%s', '%s', '%s', '%f', '%f')"
                        %
                        (cedula, Habitacion, Entrada, Salida, CostoDia, Total))
                    consulta.exec__(
                        "INSERT INTO Ingresos (Fecha, Ingreso) VALUES('%s', '%f')"
                        % (fecha, Total))
                    consulta.exec__(
                        "SELECT Estado FROM Habitaciones WHERE Numero_Codigo = '%s'"
                        % (Habitacion))
                    Estado = ""
                    while consulta.next():
                        Estado = consulta.value(0)
                    if Estado == "Desocupada":
                        consulta.exec_(
                            "UPDATE Habitaciones SET Estado = 'Ocupada' WHERE Numero_Codigo = '%s'"
                            % (Habitacion))
                        consulta.exec_(
                            "SELECT Asignado FROM Habitaciones WHERE Numero_Codigo = '%s'"
                            % (Habitacion))
                        Asignado = 0
                        while consulta.next():
                            Asignado = int(consulta.value(0))
                        Asignado += 1
                        consulta.exec_(
                            "UPDATE Habitaciones SET Asignado = %d WHERE Numero_Codigo = '%s'"
                            % (Asignado, Habitacion))
                    else:
                        consulta.exec_(
                            "SELECT Asignado FROM Habitaciones WHERE Numero_Codigo = '%s'"
                            % (Habitacion))
                        Asignado = 0
                        while consulta.next():
                            Asignado = int(consulta.value(0))
                        Asignado += 1
                        consulta.exec_(
                            "UPDATE Habitaciones SET Asignado = %d WHERE Numero_Codigo = '%s'"
                            % (Asignado, Habitacion))
                        ultimaFecha = ""
                        fechaActual = time.strftime("%d/%m/%y")
                        consulta = QtSql.QSqlQuery()
                        consulta.exec_("select Fecha from Ingresos")
                        while consulta.next():
                            ultimaFecha = consulta.value(0)
                        if ultimaFecha == fechaActual:
                            consulta.exec_(
                                "SELECT SUM(Total) FROM AsignarHabitaciones")
                            Ingreso = 0.0
                            while consulta.next():
                                Ingreso = float(consulta.value(0))
                            consulta.exec_(
                                "UPDATE Ingresos SET Ingreso = %f WHERE Fecha = '%s'"
                                % (Ingreso, ultimaFecha))
                        else:
                            consulta.exec_(
                                "SELECT SUM(Total) FROM AsignarHabitaciones")
                            Ingreso = 0.0
                            while consulta.next():
                                Ingreso = float(consulta.value(0))
                            consulta.exec_(
                                "INSERT INTO Ingresos (Fecha, Ingreso) VALUES('%s', %f)"
                                % (fechaActual, Ingreso))
                    QMessageBox.information(
                        self, "Aviso",
                        "Se le ha asignado la habitacion %s al cliente %s" %
                        (Habitacion, cedula), QMessageBox.Ok)
                else:
                    QMessageBox.warning(self, "Error",
                                        "La fecha es incorrecta",
                                        QMessageBox.Ok)

    def Estado(self):
        if not self.ventanahabitaciones.tabEstado.isVisible():
            self.ventanahabitaciones.tabHabitaciones.addTab(
                self.ventanahabitaciones.tabEstado, "Estado")
            self.ventanahabitaciones.btnCerrar_Estado.clicked.connect(
                self.cerrarEstado)
            self.ventanahabitaciones.cBGuardar.currentIndexChanged.connect(
                self.Guardar)
            self.ventanahabitaciones.btnRecargar_Estado.clicked.connect(
                self.Recargar_Habitaciones)
            self.ventanahabitaciones.tablaEstado.setColumnCount(5)
            self.ventanahabitaciones.tablaEstado.setHorizontalHeaderLabels(
                ['Numero_Codigo', 'Piso', 'Estado', 'Capacidad', 'Asignado'])
            for i in range(self.ventanahabitaciones.tablaEstado.rowCount()):
                self.ventanahabitaciones.tablaEstado.removeRow(i)
            self.db.open()
            consulta = QtSql.QSqlQuery()
            consulta.exec__("SELECT * FROM Habitaciones")
            row = 0
            while consulta.next():
                self.ventanahabitaciones.tablaEstado.insertRow(row)
                Numero_Codigo = QTableWidgetItem(str(consulta.value(0)))
                Piso = QTableWidgetItem(str(consulta.value(1)))
                Estado = QTableWidgetItem(str(consulta.value(2)))
                Capacidad = QTableWidgetItem(str(consulta.value(3)))
                Asignado = QTableWidgetItem(str(consulta.value(4)))
                self.ventanahabitaciones.tablaEstado.setItem(
                    row, 0, Numero_Codigo)
                self.ventanahabitaciones.tablaEstado.setItem(row, 1, Piso)
                self.ventanahabitaciones.tablaEstado.setItem(row, 2, Estado)
                self.ventanahabitaciones.tablaEstado.setItem(row, 3, Capacidad)
                self.ventanahabitaciones.tablaEstado.setItem(row, 4, Asignado)
                row = row + 1
            self.db.close()

    def Guardar(self):
        tipo = self.ventanahabitaciones.cBGuardar.currentText()
        if tipo == "CSV":
            ruta_guardar = ""
            NombreArchivo = QFileDialog.getSaveFileName(
                self, "Guardar Archivo", ruta_guardar)
            if NombreArchivo[0]:
                file = open(NombreArchivo[0] + '.csv', 'w')
                self.db.open()
                consulta = QtSql.QSqlQuery()
                consulta.exec_("SELECT * FROM Habitaciones")
                fieldnames = [
                    "Numero_Codigo", "Piso", "Estado", "Capacidad", "Asignado"
                ]
                csvsalida = csv.DictWriter(file, fieldnames)
                while consulta.next():
                    csvsalida.writerow({
                        fieldnames[0]: consulta.value(0),
                        fieldnames[1]: consulta.value(1),
                        fieldnames[2]: consulta.value(2),
                        fieldnames[3]: consulta.value(3),
                        fieldnames[4]: consulta.value(4)
                    })
                file.close()
        elif tipo == "PDF":
            ruta_guardar = ""
            NombreArchivo = QFileDialog.getSaveFileName(
                self, "Guarfar Archivo", ruta_guardar)
            if NombreArchivo[0]:
                self.db.open()
                consulta = QtSql.QSqlQuery()
                consulta.exec_("SELECT * FROM Habitaciones")
                estiloHoja = getSampleStyleSheet()
                story = []
                cuerpo = estiloHoja["BodyText"]
                cuerpo.alignment = TA_CENTER

                col = [
                    "Numero_Codigo", "Piso", "Estado", "Capacidad", "Asignado"
                ]
                fil = []
                fil.insert(0, col)
                fila = 1
                while consulta.next():
                    fil.insert(fila, [
                        consulta.value(0),
                        consulta.value(1),
                        consulta.value(2),
                        consulta.value(3),
                        consulta.value(4)
                    ])
                    fila += 1
                datos = [i for i in fil]
                tabla = Table(data=datos, colWidths=[90, 60, 80, 60, 80])
                story.append(tabla)
                doc = SimpleDocTemplate(NombreArchivo[0] + '.pdf',
                                        pagesize=portrait(LETTER),
                                        leftMargin=3,
                                        rightMargin=4,
                                        topMargin=3,
                                        bottomMargin=4)
                doc.build(story)

    def Asignaciones(self):
        if not self.ventanahabitaciones.tabAsignaciones.isVisible():
            self.ventanahabitaciones.tabHabitaciones.addTab(
                self.ventanahabitaciones.tabAsignaciones, "Asignaciones")
            self.ventanahabitaciones.btnCerrar_Asignaciones.clicked.connect(
                self.cerrarAsignaciones)
            self.ventanahabitaciones.btnEliminar.clicked.connect(self.Eliminar)
            self.ventanahabitaciones.btnRecargar.clicked.connect(self.Recargar)
            self.ventanahabitaciones.leBuscarAsignaciones.textChanged.connect(
                self.BuscarAsignaciones)
            for i in range(
                    self.ventanahabitaciones.tablaAsignaciones.rowCount()):
                self.ventanahabitaciones.tablaAsignaciones.removeRow(i)
            self.db.open()
            consulta = QtSql.QSqlQuery()
            consulta.exec_("SELECT * FROM AsignarHabitaciones")
            self.ventanahabitaciones.tablaAsignaciones.setColumnCount(7)
            self.ventanahabitaciones.tablaAsignaciones.setHorizontalHeaderLabels(
                [
                    'N°', 'CI_RIF', 'Habitacion', 'Fecha_Entrada',
                    'Fecha_Salida', 'Costo_Dia', 'Total'
                ])
            row = 0
            while consulta.next():
                self.ventanahabitaciones.tablaAsignaciones.insertRow(row)
                Numero = QTableWidgetItem(str(consulta.value(0)))
                CI_RIF = QTableWidgetItem(str(consulta.value(1)))
                Habitaciones = QTableWidgetItem(str(consulta.value(2)))
                Fecha_Entrada = QTableWidgetItem(str(consulta.value(3)))
                Fecha_Salida = QTableWidgetItem(str(consulta.value(4)))
                Costo_Dia = QTableWidgetItem(str(consulta.value(5)))
                Total = QTableWidgetItem(str(consulta.value(6)))
                self.ventanahabitaciones.tablaAsignaciones.setItem(
                    row, 0, Numero)
                self.ventanahabitaciones.tablaAsignaciones.setItem(
                    row, 1, CI_RIF)
                self.ventanahabitaciones.tablaAsignaciones.setItem(
                    row, 2, Habitaciones)
                self.ventanahabitaciones.tablaAsignaciones.setItem(
                    row, 3, Fecha_Entrada)
                self.ventanahabitaciones.tablaAsignaciones.setItem(
                    row, 4, Fecha_Salida)
                self.ventanahabitaciones.tablaAsignaciones.setItem(
                    row, 5, Costo_Dia)
                self.ventanahabitaciones.tablaAsignaciones.setItem(
                    row, 6, Total)
                row = row + 1
            self.db.close()

    def Recargar(self):
        for i in range(self.ventanahabitaciones.tablaAsignaciones.rowCount()):
            self.ventanahabitaciones.tablaAsignaciones.removeRow(i)
        self.db.open()
        consulta = QtSql.QSqlQuery()
        consulta.exec_("SELECT * FROM AsignarHabitaciones")
        row = 0
        while consulta.next():
            self.ventanahabitaciones.tablaAsignaciones.insertRow(row)
            Numero = QTableWidgetItem(str(consulta.value(0)))
            CI_RIF = QTableWidgetItem(str(consulta.value(1)))
            Habitaciones = QTableWidgetItem(str(consulta.value(2)))
            Fecha_Entrada = QTableWidgetItem(str(consulta.value(3)))
            Fecha_Salida = QTableWidgetItem(str(consulta.value(4)))
            Costo_Dia = QTableWidgetItem(str(consulta.value(5)))
            Total = QTableWidgetItem(str(consulta.value(6)))
            self.ventanahabitaciones.tablaAsignaciones.setItem(row, 0, Numero)
            self.ventanahabitaciones.tablaAsignaciones.setItem(row, 1, CI_RIF)
            self.ventanahabitaciones.tablaAsignaciones.setItem(
                row, 2, Habitaciones)
            self.ventanahabitaciones.tablaAsignaciones.setItem(
                row, 3, Fecha_Entrada)
            self.ventanahabitaciones.tablaAsignaciones.setItem(
                row, 4, Fecha_Salida)
            self.ventanahabitaciones.tablaAsignaciones.setItem(
                row, 5, Costo_Dia)
            self.ventanahabitaciones.tablaAsignaciones.setItem(row, 6, Total)
            row = row + 1
        self.db.close()

    def Eliminar(self):
        row = self.ventanahabitaciones.tablaAsignaciones.currentRow()
        print(row)
        if row > -1:
            Pregunta = QMessageBox(self)
            Pregunta.setText("¿Desea eliminar la asignacion?")
            Pregunta.setIconPixmap(QPixmap("Iconos/pregunta.png"))
            SI = Pregunta.addButton("Si", QMessageBox.ActionRole)
            NO = Pregunta.addButton("No", QMessageBox.ActionRole)
            SI.setIcon(QIcon("Iconos/aceptar-ico.png"))
            NO.setIcon(QIcon("Iconos/cancelar.png"))
            Pregunta.setWindowTitle("Eliminar")
            Pregunta.exec_()
            if Pregunta.clickedButton() == SI:
                self.db.open()
                consulta = QtSql.QSqlQuery()
                numero = self.ventanahabitaciones.tablaAsignaciones.item(
                    row, 0).text()
                consulta.exec_(
                    "DELETE FROM AsignarHabitaciones WHERE N° = %d" %
                    (int(numero)))
                habitacion = self.ventanahabitaciones.tablaAsignaciones.item(
                    row, 2).text()
                consulta.exec_(
                    "SELECT Asignado From Habitaciones WHERE Numero_Codigo = %d"
                    % (int(habitacion)))
                asignado = 0
                while consulta.next():
                    asignado = int(consulta.value(0))
                asignado -= 1
                consulta.exec_(
                    "UPDATE Habitaciones SET Asignado = %d WHERE Numero_Codigo = %d"
                    % (asignado, int(habitacion)))
                if asignado == 0:
                    consulta.exec_(
                        "UPDATE Habitaciones SET Estado = 'Desocupada' WHERE Numero_Codigo = %d"
                        % (int(habitacion)))
                QMessageBox.information(self, "Eliminado",
                                        "Asignacion Eliminada!!!")
                self.db.close()
            else:
                Pregunta.close()

    def Recargar_Habitaciones(self):
        self.db.open()
        self.ventanahabitaciones.tablaEstado.clearContents()
        for i in range(self.ventanahabitaciones.tablaEstado.rowCount()):
            self.ventanahabitaciones.tablaEstado.removeRow(i)
        consulta = QtSql.QSqlQuery()
        consulta.exec_("SELECT * FROM Habitaciones")
        row = 0
        while consulta.next():
            self.ventanahabitaciones.tablaAsignaciones.insertRow(row)
            Numero_Codigo = QTableWidgetItem(str(consulta.value(0)))
            Piso = QTableWidgetItem(str(consulta.value(1)))
            Estado = QTableWidgetItem(str(consulta.value(2)))
            Capacidad = QTableWidgetItem(str(consulta.value(3)))
            Asignado = QTableWidgetItem(str(consulta.value(4)))

            self.ventanahabitaciones.tablaEstado.setItem(row, 0, Numero_Codigo)
            self.ventanahabitaciones.tablaEstado.setItem(row, 1, Piso)
            self.ventanahabitaciones.tablaEstado.setItem(row, 2, Estado)
            self.ventanahabitaciones.tablaEstado.setItem(row, 3, Capacidad)
            self.ventanahabitaciones.tablaEstado.setItem(row, 4, Asignado)
            row = row + 1
        self.db.close()

    def BuscarAsignaciones(self):
        codigo = self.ventanahabitaciones.leBuscarAsignaciones.text()
        self.db.open()
        for i in range(self.ventanahabitaciones.tablaAsignaciones.rowCount()):
            self.ventanahabitaciones.tablaAsignaciones.removeRow(i)
        consulta = QtSql.QSqlQuery()
        if codigo != "":
            consulta.exec_(
                "SELECT * FROM AsignarHabitaciones WHERE Habitaciones = %d" %
                (int(codigo)))
        row = 0
        while consulta.next():
            self.ventanahabitaciones.tablaAsignaciones.insertRow(row)
            Numero = QTableWidgetItem(str(consulta.value(0)))
            CI_RIF = QTableWidgetItem(str(consulta.value(1)))
            Habitacion = QTableWidgetItem(str(consulta.value(2)))
            Fecha_Entrada = QTableWidgetItem(str(consulta.value(3)))
            Fecha_Salida = QTableWidgetItem(str(consulta.value(4)))
            Costo_Dia = QTableWidgetItem(str(consulta.value(5)))
            Total = QTableWidgetItem(str(consulta.value(6)))
            self.ventanahabitaciones.tablaAsignaciones.setItem(row, 0, Numero)
            self.ventanahabitaciones.tablaAsignaciones.setItem(row, 1, CI_RIF)
            self.ventanahabitaciones.tablaAsignaciones.setItem(
                row, 2, Habitacion)
            self.ventanahabitaciones.tablaAsignaciones.setItem(
                row, 3, Fecha_Entrada)
            self.ventanahabitaciones.tablaAsignaciones.setItem(
                row, 4, Fecha_Salida)
            self.ventanahabitaciones.tablaAsignaciones.setItem(
                row, 5, Costo_Dia)
            self.ventanahabitaciones.tablaAsignaciones.setItem(row, 6, Total)
            row = row + 1
        self.db.close()

    def cerrarAsignar(self):
        index = self.ventanahabitaciones.tabHabitaciones.indexOf(
            self.ventanahabitaciones.tabAsignar)
        self.ventanahabitaciones.tabHabitaciones.removeTab(index)

    def cerrarEstado(self):
        index = self.ventanahabitaciones.tabHabitaciones.indexOf(
            self.ventanahabitaciones.tabEstado)
        self.ventanahabitaciones.tabHabitaciones.removeTab(index)
        for i in range(self.ventanahabitaciones.tablaEstado.rowCount()):
            self.ventanahabitaciones.tablaEstado.removeRow(i)

    def cerrarAsignaciones(self):
        index = self.ventanahabitaciones.tabHabitaciones.indexOf(
            self.ventanahabitaciones.tabAsignaciones)
        self.ventanahabitaciones.tabHabitaciones.removeTab(index)
        for i in range(self.ventanahabitaciones.tablaAsignaciones.rowCount()):
            self.ventanahabitaciones.tablaAsignaciones.removeRow(i)

    def AcercaDe(self):
        acerca = AcercaDe(self)
        acerca.show()
Beispiel #9
0
class VentanaEmpleados(QMainWindow):
    def __init__(self, padre=None, db=None):
        QMainWindow.__init__(self, padre)
        self.ventanaempleados = Ui_VentanaEmpleados()
        self.ventanaempleados.setupUi(self)
        self.db = db
        self.validacion = Validaciones(self.ventanaempleados)
        self.ventanaempleados.btnAgregar.clicked.connect(self.Agregar)
        self.ventanaempleados.btnTurnos.clicked.connect(self.Turnos)
        self.ventanaempleados.btnLista.clicked.connect(self.Lista)
        self.ventanaempleados.actionSalir.triggered.connect(self.close)
        self.ventanaempleados.actionAgregar.triggered.connect(self.Agregar)
        self.ventanaempleados.actionTurnos.triggered.connect(self.Turnos)
        self.ventanaempleados.actionLista.triggered.connect(self.Lista)
        self.ventanaempleados.actionAcercaDe.triggered.connect(self.acercaDe)
        self.setWindowTitle("Empleados")
        self.setWindowIcon(QIcon("Iconos/empleados-ico.png"))
        self.ventanaempleados.actionAcercaDe.setIcon(
            QIcon("Iconos/estrella.png"))
        self.ventanaempleados.actionAgregar.setIcon(
            QIcon("Iconos/usuario.png"))
        self.ventanaempleados.actionLista.setIcon(QIcon("Iconos/bloc.png"))
        self.ventanaempleados.actionSalir.setIcon(QIcon("Iconos/cancelar.png"))
        self.ventanaempleados.actionTurnos.setIcon(QIcon("Iconos/turnos.png"))
        self.setFixedSize(1086, 600)

    def Agregar(self):
        if not self.ventanaempleados.tabAgregar.isVisible():
            self.ventanaempleados.tabEmpleados.addTab(
                self.ventanaempleados.tabAgregar, "Agregar")
            self.ventanaempleados.leCI_RIF.textChanged.connect(
                self.validacion.validar_cedula)
            self.ventanaempleados.leNombre.textChanged.connect(
                self.validacion.validar_nombre)
            self.ventanaempleados.leApellido.textChanged.connect(
                self.validacion.validar_apellido)
            self.ventanaempleados.leCorreo.textChanged.connect(
                self.validacion.validar_correo)
            self.ventanaempleados.leTelefono.textChanged.connect(
                self.validacion.validar_telefono)
            self.ventanaempleados.teDireccion.textChanged.connect(
                self.validacion.validar_direccion_2)
            self.ventanaempleados.leSueldo.textChanged.connect(
                self.validacion.validar_sueldo)
            self.ventanaempleados.btnAgregar_2.clicked.connect(self.AgregarBtn)
            self.ventanaempleados.btnCerrar_Agregar.clicked.connect(
                self.Cerrar_Agregar)

    def AgregarBtn(self):
        if self.validacion.validar_cedula(
        ) and self.validacion.validar_apellido(
        ) and self.validacion.validar_correo(
        ) and self.validacion.validar_telefono(
        ) and self.validacion.validar_direccion_2(
        ) and self.validacion.validar_sueldo():
            self.db.open()
            consulta = QtSql.QSqlQuery()
            consulta.exec_("SELECT CI_RIF FROM Empleados WHERE CI_RIF = '%s'" %
                           (self.ventanaempleados.leCI_RIF.text()))
            ci = ""
            while consulta.next():
                ci = consulta.value(0)
            if ci == "":
                consulta.exec_(
                    "INSERT INTO Empleados (CI_RIF, Nombre, Apellido, Correo, Telefono, Direccion, Sueldo) VALUES('%s', '%s', '%s', '%s', '%s', '%s', %f)"
                    % (self.ventanaempleados.leCI_RIF.text(),
                       self.ventanaempleados.leNombre.text(),
                       self.ventanaempleados.leApellido.text(),
                       self.ventanaempleados.leCorreo.text(),
                       self.ventanaempleados.leTelefono.text(),
                       self.ventanaempleados.teDireccion.toPlainText(),
                       float(self.ventanaempleados.leSueldo.text())))
                QMessageBox.information(
                    self, "Aviso", "El Empleado %s ha sido agreagado" %
                    (self.ventanaempleados.leCI_RIF.text()), QMessageBox.Ok)
            elif ci == self.ventanaempleados.leCI_RIF.text():
                QMessageBox.warning(self, "Error1/1/00",
                                    "El empleado ya existe!!!", QMessageBox.Ok)
            self.db.close()
        elif not self.validacion.validar_cedula():
            QMessageBox.warning(self, "Error", "Falta la cedula",
                                QMessageBox.Ok)
        elif not self.validacion.validar_nombre():
            QMessageBox.warning(self, "Error", "Falta el nombre",
                                QMessageBox.Ok)
        elif not self.validacion.validar_apellido():
            QMessageBox.warning(self, "Error", "Falta el apellido",
                                QMessageBox.Ok)
        elif not self.validacion.validar_correo():
            QMessageBox.warning(self, "Error", "Falta el correo",
                                QMessageBox.Ok)
        elif not self.validacion.validar_direccion_2():
            QMessageBox.warning(self, "Error", "Falta la direccion",
                                QMessageBox.Ok)
        elif not self.validacion.validar_sueldo():
            QMessageBox.warning(self, "Error", "Falta el sueldo",
                                QMessageBox.Ok)
        elif not self.validacion.validar_sueldo():
            QMessageBox.warning(self, "Error", "Falta el telefono",
                                QMessageBox.Ok)
        elif not self.validacion.validar_cedula(
        ) and not self.validacion.validar_apellido(
        ) and not self.validacion.validar_correo(
        ) and not self.validacion.validar_telefono(
        ) and not self.validacion.validar_direccion_2(
        ) and not self.validacion.validar_sueldo():
            QMessageBox.warning(self, "Error", "No ha llenado ningun campo",
                                QMessageBox.Ok)

    def Cerrar_Agregar(self):
        index = self.ventanaempleados.tabEmpleados.indexOf(
            self.ventanaempleados.tabAgregar)
        self.ventanaempleados.tabEmpleados.removeTab(index)

    def Turnos(self):
        if not self.ventanaempleados.tabTurnos.isVisible():
            self.ventanaempleados.tabEmpleados.addTab(
                self.ventanaempleados.tabTurnos, "Turnos")
            self.ventanaempleados.cbTodos.currentIndexChanged.connect(
                self.Todos)
            self.ventanaempleados.cbEmpleados.currentIndexChanged.connect(
                self.Empleados)
            self.ventanaempleados.cbGuardar.currentIndexChanged.connect(
                self.Guardar_Turnos)
            self.ventanaempleados.btnCerrar_Turnos.clicked.connect(
                self.Cerrar_Turnos)
            self.ventanaempleados.btnAsignar.clicked.connect(self.Asignar)
            self.ventanaempleados.leCI_RIF_2.textChanged.connect(
                self.validacion.validar_cedula_2)
            self.ventanaempleados.leCI_RIF_3.textChanged.connect(
                self.validacion.validar_cedula_3)
            self.ventanaempleados.tablaTurnos.setColumnCount(5)
            self.ventanaempleados.tablaTurnos.setHorizontalHeaderLabels(
                ['N°', 'CI_RIF', 'Hora_Inicio', 'Hora_Fin', 'Fecha'])
            for i in range(self.ventanaempleados.tablaTurnos.rowCount()):
                self.ventanaempleados.tablaTurnos.removeRow(i)

    def Todos(self):
        tipo = self.ventanaempleados.cbTodos.currentText()
        dia = time.strftime("%d/%m/%y")
        mes = time.strftime("%m/%y")
        anio = time.strftime("%y")
        for i in range(self.ventanaempleados.tablaTurnos.rowCount()):
            self.ventanaempleados.tablaTurnos.removeRow(i)
        if tipo == "Dia":
            self.db.open()
            consulta = QtSql.QSqlQuery()
            consulta.exec_(
                "SELECT * FROM Turnos WHERE Fecha BETWEEN '%s' and '%s'" %
                (dia, dia))
            row = 0
            for i in range(self.ventanaempleados.tablaTurnos.rowCount()):
                self.ventanaempleados.tablaTurnos.removeRow(i)
            while consulta.next():
                self.ventanaempleados.tablaTurnos.insertRow(row)
                Numero = QTableWidgetItem(str(consulta.value(0)))
                CI_RIF = QTableWidgetItem(str(consulta.value(1)))
                Inicio = QTableWidgetItem(str(consulta.value(2)))
                Fin = QTableWidgetItem(str(consulta.value(3)))
                Fecha = QTableWidgetItem(str(consulta.value(4)))

                self.ventanaempleados.tablaTurnos.setItem(row, 0, Numero)
                self.ventanaempleados.tablaTurnos.setItem(row, 1, CI_RIF)
                self.ventanaempleados.tablaTurnos.setItem(row, 2, Inicio)
                self.ventanaempleados.tablaTurnos.setItem(row, 3, Fin)
                self.ventanaempleados.tablaTurnos.setItem(row, 4, Fecha)

                row = row + 1
            self.db.close()
        elif tipo == "Mes":
            self.db.open()
            consulta = QtSql.QSqlQuery()
            consulta.exec_(
                "SELECT * FROM Turnos WHERE Fecha BETWEEN '%s' and '%s'" %
                ('1/' + mes, '31/' + mes))
            row = 0
            for i in range(self.ventanaempleados.tablaTurnos.rowCount()):
                self.ventanaempleados.tablaTurnos.removeRow(i)
            while consulta.next():
                self.ventanaempleados.tablaTurnos.insertRow(row)
                Numero = QTableWidgetItem(str(consulta.value(0)))
                CI_RIF = QTableWidgetItem(str(consulta.value(1)))
                Inicio = QTableWidgetItem(str(consulta.value(2)))
                Fin = QTableWidgetItem(str(consulta.value(3)))
                Fecha = QTableWidgetItem(str(consulta.value(4)))

                self.ventanaempleados.tablaTurnos.setItem(row, 0, Numero)
                self.ventanaempleados.tablaTurnos.setItem(row, 1, CI_RIF)
                self.ventanaempleados.tablaTurnos.setItem(row, 2, Inicio)
                self.ventanaempleados.tablaTurnos.setItem(row, 3, Fin)
                self.ventanaempleados.tablaTurnos.setItem(row, 4, Fecha)

                row = row + 1
            self.db.close()
        elif tipo == "Año":
            self.db.open()
            consulta = QtSql.QSqlQuery()
            consulta.exec_(
                "SELECT * FROM Turnos WHERE Fecha BETWEEN '%s' and '%s'" %
                ('1/1/' + anio, '31/12/' + anio))
            row = 0
            for i in range(self.ventanaempleados.tablaTurnos.rowCount()):
                self.ventanaempleados.tablaTurnos.removeRow(i)
            while consulta.next():
                self.ventanaempleados.tablaTurnos.insertRow(row)
                Numero = QTableWidgetItem(str(consulta.value(0)))
                CI_RIF = QTableWidgetItem(str(consulta.value(1)))
                Inicio = QTableWidgetItem(str(consulta.value(2)))
                Fin = QTableWidgetItem(str(consulta.value(3)))
                Fecha = QTableWidgetItem(str(consulta.value(4)))

                self.ventanaempleados.tablaTurnos.setItem(row, 0, Numero)
                self.ventanaempleados.tablaTurnos.setItem(row, 1, CI_RIF)
                self.ventanaempleados.tablaTurnos.setItem(row, 2, Inicio)
                self.ventanaempleados.tablaTurnos.setItem(row, 3, Fin)
                self.ventanaempleados.tablaTurnos.setItem(row, 4, Fecha)

                row = row + 1
            self.db.close()
        else:
            for i in range(self.ventanaempleados.tablaTurnos.rowCount()):
                self.ventanaempleados.tablaTurnos.removeRow(i)

    def Empleados(self):
        tipo = self.ventanaempleados.cbEmpleados.currentText()
        dia = time.strftime("%d/%m/%y")
        mes = time.strftime("%m/%y")
        anio = time.strftime("%y")
        for i in range(self.ventanaempleados.tablaTurnos.rowCount()):
            self.ventanaempleados.tablaTurnos.removeRow(i)
        self.db.open()
        consulta = QtSql.QSqlQuery()
        consulta.exec_("SELECT CI_RIF FROM Empleados WHERE CI_RIF = '%s'" %
                       (self.ventanaempleados.leCI_RIF_2.text()))
        ci = ""
        while consulta.next():
            ci = consulta.value(0)
        if ci == "":
            QMessageBox.warning(self, "Error", "El empleado no existe",
                                QMessageBox.Ok)
        else:
            if tipo == "Dia":
                consulta.exec_(
                    "SELECT * FROM Turnos WHERE CI_RIF = '%s' and Fecha BETWEEN '%s' and '%s'"
                    % (self.ventanaempleados.leCI_RIF_2.text(), dia, dia))
                row = 0
                for i in range(self.ventanaempleados.tablaTurnos.rowCount()):
                    self.ventanaempleados.tablaTurnos.removeRow(i)
                while consulta.next():
                    self.ventanaempleados.tablaTurnos.insertRow(row)
                    Numero = QTableWidgetItem(str(consulta.value(0)))
                    CI_RIF = QTableWidgetItem(str(consulta.value(1)))
                    Inicio = QTableWidgetItem(str(consulta.value(2)))
                    Fin = QTableWidgetItem(str(consulta.value(3)))
                    Fecha = QTableWidgetItem(str(consulta.value(4)))

                    self.ventanaempleados.tablaTurnos.setItem(row, 0, Numero)
                    self.ventanaempleados.tablaTurnos.setItem(row, 1, CI_RIF)
                    self.ventanaempleados.tablaTurnos.setItem(row, 2, Inicio)
                    self.ventanaempleados.tablaTurnos.setItem(row, 3, Fin)
                    self.ventanaempleados.tablaTurnos.setItem(row, 4, Fecha)

                    row = row + 1
            elif tipo == "Mes":
                consulta.exec_(
                    "SELECT * FROM Turnos WHERE CI_RIF = '%s' and Fecha BETWEEN '%s' and '%s'"
                    % (self.ventanaempleados.leCI_RIF_2.text(), '1/' + mes,
                       '31/' + mes))
                row = 0
                for i in range(self.ventanaempleados.tablaTurnos.rowCount()):
                    self.ventanaempleados.tablaTurnos.removeRow(i)
                while consulta.next():
                    self.ventanaempleados.tablaTurnos.insertRow(row)
                    Numero = QTableWidgetItem(str(consulta.value(0)))
                    CI_RIF = QTableWidgetItem(str(consulta.value(1)))
                    Inicio = QTableWidgetItem(str(consulta.value(2)))
                    Fin = QTableWidgetItem(str(consulta.value(3)))
                    Fecha = QTableWidgetItem(str(consulta.value(4)))

                    self.ventanaempleados.tablaTurnos.setItem(row, 0, Numero)
                    self.ventanaempleados.tablaTurnos.setItem(row, 1, CI_RIF)
                    self.ventanaempleados.tablaTurnos.setItem(row, 2, Inicio)
                    self.ventanaempleados.tablaTurnos.setItem(row, 3, Fin)
                    self.ventanaempleados.tablaTurnos.setItem(row, 4, Fecha)

                    row = row + 1
            elif tipo == "Año":
                consulta.exec_(
                    "SELECT * FROM Turnos WHERE CI_RIF = '%s' and Fecha BETWEEN '%s' and '%s'"
                    % (self.ventanaempleados.leCI_RIF_2.text(), '1/1/' + anio,
                       '31/12/' + anio))
                row = 0
                for i in range(self.ventanaempleados.tablaTurnos.rowCount()):
                    self.ventanaempleados.tablaTurnos.removeRow(i)
                while consulta.next():
                    self.ventanaempleados.tablaTurnos.insertRow(row)
                    Numero = QTableWidgetItem(str(consulta.value(0)))
                    CI_RIF = QTableWidgetItem(str(consulta.value(1)))
                    Inicio = QTableWidgetItem(str(consulta.value(2)))
                    Fin = QTableWidgetItem(str(consulta.value(3)))
                    Fecha = QTableWidgetItem(str(consulta.value(4)))

                    self.ventanaempleados.tablaTurnos.setItem(row, 0, Numero)
                    self.ventanaempleados.tablaTurnos.setItem(row, 1, CI_RIF)
                    self.ventanaempleados.tablaTurnos.setItem(row, 2, Inicio)
                    self.ventanaempleados.tablaTurnos.setItem(row, 3, Fin)
                    self.ventanaempleados.tablaTurnos.setItem(row, 4, Fecha)

                    row = row + 1
            else:
                for i in range(self.ventanaempleados.tablaTurnos.rowCount()):
                    self.ventanaempleados.tablaTurnos.removeRow(i)
            self.db.close()

    def Guardar_Turnos(self):
        tipo = self.ventanaempleados.cbGuardar.currentText()
        row = self.ventanaempleados.tablaTurnos.rowCount()
        if self.ventanaempleados.tablaTurnos.item(0, 0) != None:
            if tipo == "CSV":
                ruta_guardar = ""
                NombreArchivo = QFileDialog.getSaveFileName(
                    self, "Guardar Archivo", ruta_guardar)
                if NombreArchivo[0]:
                    file = open(NombreArchivo[0] + '.csv', 'w')
                    fieldnames = [
                        "N°", "CI_RIF", "Hora_Inicio", "Hora_Fin", "Fecha"
                    ]
                    csvsalida = csv.DictWriter(file, fieldnames)
                    for i in range(row):
                        csvsalida.writerow({
                            fieldnames[0]:
                            self.ventanaempleados.tablaTurnos.item(i,
                                                                   0).text(),
                            fieldnames[1]:
                            self.ventanaempleados.tablaTurnos.item(i,
                                                                   1).text(),
                            fieldnames[2]:
                            self.ventanaempleados.tablaTurnos.item(i,
                                                                   2).text(),
                            fieldnames[3]:
                            self.ventanaempleados.tablaTurnos.item(i,
                                                                   3).text(),
                            fieldnames[4]:
                            self.ventanaempleados.tablaTurnos.item(i,
                                                                   4).text()
                        })
                    file.close()
            elif tipo == "PDF":
                ruta_guardar = ""
                NombreArchivo = QFileDialog.getSaveFileName(
                    self, "Guardar Archivo", ruta_guardar)
                if NombreArchivo[0]:
                    estiloHoja = getSampleStyleSheet()
                    story = []
                    cuerpo = estiloHoja["BodyText"]
                    cuerpo.alignment = TA_CENTER

                    col = ["N°", "CI_RIF", "Hora_Inicio", "Hora_Fin", "Fecha"]
                    fil = []
                    fil.insert(0, col)
                    filasTabla = 0
                    for fila in range(row):
                        fil.insert(fila + 1, [
                            self.ventanaempleados.tablaTurnos.item(
                                filasTabla, 0).text(),
                            self.ventanaempleados.tablaTurnos.item(
                                filasTabla, 1).text(),
                            self.ventanaempleados.tablaTurnos.item(
                                filasTabla, 2).text(),
                            self.ventanaempleados.tablaTurnos.item(
                                filasTabla, 3).text(),
                            self.ventanaempleados.tablaTurnos.item(
                                filasTabla, 4).text()
                        ])
                        filasTabla += 1
                    datos = [i for i in fil]
                    tabla = Table(data=datos, colWidths=[20, 60, 60, 60, 60])
                    story.append(tabla)
                    doc = SimpleDocTemplate(NombreArchivo[0] + '.pdf',
                                            pagesize=portrait(LETTER),
                                            leftMargin=3,
                                            rightMargin=4,
                                            topMargin=3,
                                            bottomMargin=4)
                    doc.build(story)

    def Cerrar_Turnos(self):
        index = self.ventanaempleados.tabEmpleados.indexOf(
            self.ventanaempleados.tabTurnos)
        self.ventanaempleados.tabEmpleados.removeTab(index)

    def Asignar(self):
        self.db.open()
        consulta = QtSql.QSqlQuery()
        ci = ""
        consulta.exec_("SELECT CI_RIF FROM Empleados WHERE CI_RIF = '%s'" %
                       (self.ventanaempleados.leCI_RIF_3.text()))
        while consulta.next():
            ci = consulta.value(0)
        if ci == "":
            QMessageBox.warning(self, "Error", "La cedula no existe",
                                QMessageBox.Ok)
        else:
            ultimafecha = ""
            consulta.exec_("SELECT Fecha FROM Turnos WHERE CI_RIF = '%s'" %
                           (self.ventanaempleados.leCI_RIF_3.text()))
            while consulta.next():
                ultimafecha = consulta.value(0)
            consulta.exec_(
                "SELECT Hora_Inicio, Hora_Fin From Turnos WHERE CI_RIF = '%s'"
                % (self.ventanaempleados.leCI_RIF_3.text()))
            while consulta.next():
                Hora_Inicio = consulta.value(0)
                Hora_Fin = consulta.value(1)
            fechaActual = time.strftime("%d/%m/%y")
            listFecha = fechaActual.split('/')
            anioEntrada = self.ventanaempleados.dateFecha.text().split('/')
            if fechaActual == ultimafecha and Hora_Inicio == self.ventanaempleados.timeInicio.text(
            ) and Hora_Fin == self.ventanaempleados.timeFin.text():
                QMessageBox.warning(self, "Error",
                                    "El empleado ya tiene asignado un turno",
                                    QMessageBox.Ok)
            elif anioEntrada[2] != listFecha[2]:
                QMessageBox.warning(self, "Error",
                                    "Error en asignar las fecha",
                                    QMessageBox.Ok)
            elif self.ventanaempleados.timeFin.text(
            ) == self.ventanaempleados.timeInicio.text():
                QMessageBox.warning(self, "Error",
                                    "Error al asignar las horas",
                                    QMessageBox.Ok)
            else:
                consulta.exec_(
                    "INSERT INTO Turnos (CI_RIF, Hora_Inicio, Hora_Fin, Fecha) VALUES('%s', '%s', '%s', '%s')"
                    % (self.ventanaempleados.leCI_RIF_3.text(),
                       self.ventanaempleados.timeInicio.text(),
                       self.ventanaempleados.timeFin.text(),
                       self.ventanaempleados.dateFecha.text()))
                QMessageBox.information(
                    self, "Aviso",
                    "Se le ha asignado un turno al empleado %s" %
                    (self.ventanaempleados.leCI_RIF_3.text()), QMessageBox.Ok)

    def Lista(self):
        if not self.ventanaempleados.tabLista.isVisible():
            self.ventanaempleados.tabEmpleados.addTab(
                self.ventanaempleados.tabLista, "Lista")
            self.ventanaempleados.leBuscar_Lista.textChanged.connect(
                self.Buscar)
            self.ventanaempleados.tablaLista.itemChanged.connect(
                self.Actualizar)
            self.ventanaempleados.btnEliminar.clicked.connect(self.Eliminar)
            self.ventanaempleados.btnRecargar.clicked.connect(self.Recargar)
            self.ventanaempleados.btnCerrar_Lista.clicked.connect(
                self.Cerrar_Lista)
            self.ventanaempleados.cbGuardar_Lista.currentIndexChanged.connect(
                self.Guardar_Lista)
            self.ventanaempleados.tablaLista.setColumnCount(7)
            self.ventanaempleados.tablaLista.setHorizontalHeaderLabels([
                'CI_RIF', 'Nombre', 'Apellido', 'Correo', 'Telefono',
                'Direccion', 'Sueldo'
            ])
            for i in range(self.ventanaempleados.tablaLista.rowCount()):
                self.ventanaempleados.tablaLista.removeRow(i)
            self.db.open()
            consulta = QtSql.QSqlQuery()
            consulta.exec_("SELECT * FROM Empleados")
            row = 0
            while consulta.next():
                self.ventanaempleados.tablaLista.insertRow(row)
                CI_RIF = QTableWidgetItem(str(consulta.value(0)))
                nombre = QTableWidgetItem(str(consulta.value(1)))
                apellido = QTableWidgetItem(str(consulta.value(2)))
                correo = QTableWidgetItem(str(consulta.value(3)))
                telefono = QTableWidgetItem(str(consulta.value(4)))
                direccion = QTableWidgetItem(str(consulta.value(5)))
                sueldo = QTableWidgetItem(str(consulta.value(6)))
                self.ventanaempleados.tablaLista.setItem(row, 0, CI_RIF)
                self.ventanaempleados.tablaLista.setItem(row, 1, nombre)
                self.ventanaempleados.tablaLista.setItem(row, 2, apellido)
                self.ventanaempleados.tablaLista.setItem(row, 3, correo)
                self.ventanaempleados.tablaLista.setItem(row, 4, telefono)
                self.ventanaempleados.tablaLista.setItem(row, 5, direccion)
                self.ventanaempleados.tablaLista.setItem(row, 6, sueldo)
                row = row + 1
            self.db.close()

    def Buscar(self):
        Cedula = self.ventanaempleados.leBuscar_Lista.text()
        self.db.open()
        for i in range(self.ventanaempleados.tablaLista.rowCount()):
            self.ventanaempleados.tablaLista.removeRow(i)
        consulta = QtSql.QSqlQuery()
        consulta.exec_("SELECT * FROM Empleados WHERE CI_RIF LIKE '%s'" %
                       (Cedula + '%'))
        row = 0
        while consulta.next():
            self.ventanaempleados.tablaLista.insertRow(row)
            CI_RIF = QTableWidgetItem(str(consulta.value(0)))
            nombre = QTableWidgetItem(str(consulta.value(1)))
            apellido = QTableWidgetItem(str(consulta.value(2)))
            correo = QTableWidgetItem(str(consulta.value(3)))
            telefono = QTableWidgetItem(str(consulta.value(4)))
            direccion = QTableWidgetItem(str(consulta.value(5)))
            sueldo = QTableWidgetItem(str(consulta.value(6)))
            self.ventanaempleados.tablaLista.setItem(row, 0, CI_RIF)
            self.ventanaempleados.tablaLista.setItem(row, 1, nombre)
            self.ventanaempleados.tablaLista.setItem(row, 2, apellido)
            self.ventanaempleados.tablaLista.setItem(row, 3, correo)
            self.ventanaempleados.tablaLista.setItem(row, 4, telefono)
            self.ventanaempleados.tablaLista.setItem(row, 5, direccion)
            self.ventanaempleados.tablaLista.setItem(row, 6, sueldo)
            row = row + 1
        self.db.close()

    def Actualizar(self):
        column = self.ventanaempleados.tablaLista.currentColumn()
        row = self.ventanaempleados.tablaLista.currentRow()
        self.db.open()
        consulta = QtSql.QSqlQuery()
        if row > -1:
            CI_RIF = self.ventanaempleados.tablaLista.item(row, 0).text()
            valor = self.ventanaempleados.tablaLista.currentItem().text()
            columns = [
                'CI_RIF', 'Nombre', 'Apellido', 'Correo', 'Telefono',
                'Direccion', 'Sueldo'
            ]
            consulta.exec_("UPDATE Empleados SET " + columns[column] + " = '" +
                           valor + "' WHERE CI_RIF = '" + CI_RIF + "'")
        self.db.close()

    def Eliminar(self):
        row = self.ventanaempleados.tablaLista.currentRow()
        print(row)
        if row > -1:
            Pregunta = QMessageBox(self)
            Pregunta.setText("¿Desea eliminar al cliente?")
            SI = Pregunta.addButton("Si", QMessageBox.ActionRole)
            NO = Pregunta.addButton("No", QMessageBox.ActionRole)
            Pregunta.setIconPixmap(QPixmap("Iconos/pregunta.png"))
            SI.setIcon(QIcon("Iconos/aceptar-ico.png"))
            NO.setIcon(QIcon("Iconos/cancelar.png"))
            Pregunta.setWindowTitle("Eliminar")
            Pregunta.exec_()
            if Pregunta.clickedButton() == SI:
                self.db.open()
                consulta = QtSql.QSqlQuery()
                CI_RIF = self.ventanaempleados.tablaLista.item(row, 0).text()
                consulta.exec_("DELETE FROM Empleados WHERE CI_RIF = '%s'" %
                               (CI_RIF))
                consulta.exec_("DELETE FROM Turnos WHERE CI_RIF = '%s'" %
                               (CI_RIF))
                QMessageBox.information(self, "Eliminado",
                                        "Cliente eliminado!!!")
                self.db.close()
            else:
                Pregunta.close()

    def Recargar(self):
        for i in range(self.ventanaempleados.tablaLista.rowCount()):
            self.ventanaempleados.tablaLista.removeRow(i)
        self.db.open()
        self.ventanaempleados.tablaLista.setColumnCount(7)
        self.ventanaempleados.tablaLista.setHorizontalHeaderLabels([
            'CI_RIF', 'Nombre', 'Apellido', 'Correo', 'Telefono', 'Direccion',
            'Sueldo'
        ])
        consulta = QtSql.QSqlQuery()
        consulta.exec_("SELECT * FROM Empleados")
        row = 0
        while consulta.next():
            self.ventanaempleados.tablaLista.insertRow(row)
            CI_RIF = QTableWidgetItem(str(consulta.value(0)))
            nombre = QTableWidgetItem(str(consulta.value(1)))
            apellido = QTableWidgetItem(str(consulta.value(2)))
            correo = QTableWidgetItem(str(consulta.value(3)))
            telefono = QTableWidgetItem(str(consulta.value(4)))
            direccion = QTableWidgetItem(str(consulta.value(5)))
            sueldo = QTableWidgetItem(str(consulta.value(6)))
            self.ventanaempleados.tablaLista.setItem(row, 0, CI_RIF)
            self.ventanaempleados.tablaLista.setItem(row, 1, nombre)
            self.ventanaempleados.tablaLista.setItem(row, 2, apellido)
            self.ventanaempleados.tablaLista.setItem(row, 3, correo)
            self.ventanaempleados.tablaLista.setItem(row, 4, telefono)
            self.ventanaempleados.tablaLista.setItem(row, 5, direccion)
            self.ventanaempleados.tablaLista.setItem(row, 6, sueldo)
            row = row + 1
        self.db.close()

    def Guardar_Lista(self):
        tipo = self.ventanaempleados.cbGuardar_Lista.currentText()
        print(tipo)
        self.db.open()
        consulta = QtSql.QSqlQuery()
        if tipo == "CSV":
            ruta_guardar = ""
            NombreArchivo = QFileDialog.getSaveFileName(
                self, "Guardar Archivo", ruta_guardar)
            if NombreArchivo[0]:
                file = open(NombreArchivo[0] + '.csv', 'w')
                fieldnames = [
                    "CI_RIF", "Nombre", "Apellido", "Correo", "Telefono",
                    "Direccion", "Sueldo"
                ]
                csvsalida = csv.DictWriter(file, fieldnames)
                consulta.exec_("SELECT * FROM Empleados")
                while consulta.next():
                    csvsalida.writerow({
                        fieldnames[0]: consulta.value(0),
                        fieldnames[1]: consulta.value(1),
                        fieldnames[2]: consulta.value(2),
                        fieldnames[3]: consulta.value(3),
                        fieldnames[4]: consulta.value(4),
                        fieldnames[5]: consulta.value(5),
                        fieldnames[6]: consulta.value(6)
                    })
                file.close()
        elif tipo == "PDF":
            ruta_guardar = ""
            NombreArchivo = QFileDialog.getSaveFileName(
                self, "Guardar Archivo", ruta_guardar)
            if NombreArchivo[0]:
                estiloHoja = getSampleStyleSheet()
                story = []
                cuerpo = estiloHoja["BodyText"]
                cuerpo.alignment = TA_CENTER

                col = [
                    "CI_RIF", "Nombre", "Apellido", "Correo", "Telefono",
                    "Direccion", "Sueldo"
                ]
                fil = []
                fil.insert(0, col)
                filasTabla = 0
                consulta.exec_("SELECT * FROM Empleados")
                while consulta.next():
                    fil.insert(filasTabla + 1, [
                        consulta.value(0),
                        consulta.value(1),
                        consulta.value(2),
                        consulta.value(3),
                        consulta.value(4),
                        consulta.value(5),
                        consulta.value(6)
                    ])
                    filasTabla += 1
                datos = [i for i in fil]
                tabla = Table(data=datos,
                              colWidths=[60, 80, 90, 140, 110, 120, 130])
                story.append(tabla)
                doc = SimpleDocTemplate(NombreArchivo[0] + '.pdf',
                                        pagesize=landscape(LETTER),
                                        leftMargin=3,
                                        rightMargin=4,
                                        topMargin=3,
                                        bottomMargin=4)
                doc.build(story)

    def Cerrar_Lista(self):
        index = self.ventanaempleados.tabEmpleados.indexOf(
            self.ventanaempleados.tabLista)
        self.ventanaempleados.tabEmpleados.removeTab(index)

    def acercaDe(self):
        acerca = AcercaDe(self)
        acerca.show()
Beispiel #10
0
class Login(QMainWindow):
    def __init__(self, padre=None, db=None):
        QMainWindow.__init__(self, padre)
        self.window = Ui_loginWin()
        self.window.setupUi(self)
        self.validacion = Validaciones(self.window)
        self.db = db
        self.window.btnAcercaDe.clicked.connect(self.muestraAcerca)
        self.window.btnIngresar.clicked.connect(self.Ingresar)
        self.window.leUsuario.textChanged.connect(
            self.validacion.validar_usuario)
        self.window.leContrasena.textChanged.connect(
            self.validacion.validar_contrasena)
        self.setWindowTitle("Ingreso al Sistema")
        self.setWindowIcon(QIcon("Iconos/clave.png"))
        self.setFixedSize(366, 143)

    def muestraAcerca(self):
        self.acercaDe = AcercaDe(self)
        self.acercaDe.show()

    def Ingresar(self):
        if self.validacion.validar_usuario(
        ) and self.validacion.validar_contrasena():
            self.db.open()
            consulta = QtSql.QSqlQuery()
            consulta.exec_("select Usuario, Contrasena from Registro")
            while consulta.next():
                if self.window.leUsuario.text() == consulta.value(
                        0) and self.window.leContrasena.text(
                        ) == consulta.value(1):
                    self.setVisible(False)
                    self.db.close()
                    sistema = Sistema(self, self.db)
                    sistema.show()
                elif self.window.leUsuario.text() != consulta.value(
                        0) and self.window.leContrasena.text(
                        ) != consulta.value(1):
                    QMessageBox.warning(self, "Acceso Denegado",
                                        "Usuario y contraseña incorrectos!!!",
                                        QMessageBox.Ok)
                elif self.window.leUsuario.text() != consulta.value(0):
                    QMessageBox.warning(self, "Acceso Denegado",
                                        "El usuario no existe!!!",
                                        QMessageBox.Ok)
                else:
                    QMessageBox.warning(self, "Acceso Denegado",
                                        "La contraseña es incorrecta!!!",
                                        QMessageBox.Ok)
        else:
            if not self.window.leUsuario.text(
            ) and not self.window.leContrasena.text():
                QMessageBox.warning(self, "Error!!!",
                                    "No ha llenado ninguno de los campos!!!",
                                    QMessageBox.Ok)
            else:
                if not self.window.leContrasena.text():
                    QMessageBox.warning(self, "Error!!!",
                                        "Falta la contraseña!!!",
                                        QMessageBox.Ok)
                else:
                    QMessageBox.warning(self, "Error!!!",
                                        "Falta el usuario!!!", QMessageBox.Ok)