Example #1
0
    def __init__(self):
        """
        Inicializa la ventana con la interfaz.
        """

        #CSS para las labels y botones
        css = '''
        
                    label {
                    font: 20px Courier-bold;
                    }
                    button { 
                    background:  #ffcc99;
                    padding: 5px 10px;
                    font: 14px Courier-bold;
                    color: #000000;
                    }
                                        '''
        cssProvider = Gtk.CssProvider()
        cssProvider.load_from_data(bytes(css.encode()))
        screen = Gdk.Screen.get_default()
        styleContext = Gtk.StyleContext()
        styleContext.add_provider_for_screen(screen, cssProvider,
                                             Gtk.STYLE_PROVIDER_PRIORITY_USER)

        #Creación tablas BD
        MethodsBD.tablas()

        builder = Gtk.Builder()

        #Asignamos a nuestro builder el archivo de nuestro proyecto Glade
        path = os.path.dirname(os.path.realpath(__file__))
        file = os.path.join(path, 'formEntrada.glade')
        builder.add_from_file(file)

        self.vEntrada = builder.get_object("vEntrada")
        self.vEntrada.set_default_size(220, 150)

        self.btnClientes = builder.get_object("btnClientes")
        self.btnProdutos = builder.get_object("btnProdutos")
        self.btnSalir = builder.get_object("btnSalir")

        #Señales
        self.btnClientes.connect("clicked", self.on_btnClientes_clicked)
        self.btnProdutos.connect("clicked", self.on_btnProdutos_clicked)
        self.btnSalir.connect("clicked", self.on_btnSalir_clicked)
        self.vEntrada.connect("destroy", self.on_btnSalir_clicked)

        self.vEntrada.show_all()
Example #2
0
    def on_btnGuardar_clicked(self, boton):
        """Método que crea un pdf con la lista de clientes.
            :param boton: boton.
            :return: No devuelve ningún parámetro.
        """
        #Cogemos los datos

        data = []
        data.append(
            ["DNI", "Nombre", "Apellidos", "Sexo", "Telefono", "Direccion"])
        clientes = MethodsBD.selectTablaClientes()
        for cliente in clientes:
            data.append([
                cliente[0], cliente[1], cliente[2], cliente[3], cliente[4],
                cliente[5]
            ])

        # Creamos el PDF
        file = 'ListaClientes.pdf'
        diractual = os.getcwd()
        pdf = SimpleDocTemplate(diractual + "/" + file, pagesize=letter)

        # Creamos una tabla
        table = Table(data)
        elementos = []
        elementos.append(table)

        # Estilamos la tabla

        style = TableStyle([
            ('BACKGROUND', (0, 0), (-1, 0), colors.burlywood),
            ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),
            ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
            ('FONTNAME', (0, 0), (-1, 0), 'Courier-Bold'),
            ('FONTSIZE', (0, 0), (-1, 0), 20),
            ('BOTTOMPADDING', (0, 0), (-1, 0), 15),
        ])
        table.setStyle(style)

        # Alternamos colores de las filas

        numCols = len(data)
        for i in range(1, numCols):
            if i % 2 == 0:
                bc = colors.lightgrey
            else:
                bc = colors.ghostwhite
            colorCol = TableStyle([('BACKGROUND', (0, i), (-1, i), bc)])
            table.setStyle(colorCol)

        # Añadimos bordes a la tabla

        bordes = TableStyle([('BOX', (0, 0), (-1, -1), 1, colors.black),
                             ('LINEBEFORE', (0, 0), (-1, numCols), 1,
                              colors.black),
                             ('LINEABOVE', (0, 0), (-1, 1), 1, colors.black)])
        table.setStyle(bordes)
        pdf.build(elementos)
        wb.open_new(diractual + "/" + file)
Example #3
0
    def dniBDCheck(self, dni):
        """Metodo que comprueba si el DNI del GTKEntry esta en la BD.
            :param dni: dni de la persona.
            :return boolean: True o False en función del resultado.
        """

        clientesBD = MethodsBD.selectTablaClientes()
        for cliente in clientesBD:
            if cliente[0] == dni:
                return True

        return False
Example #4
0
    def idBDCheck(self, id):
        """Metodo que comprueba si la ID del GTKEntry está en la BD
            :param id: id del produto
            :return boolean: True o False en función del resultado.
        """

        produtosBD = MethodsBD.selectTablaProductos()
        for produto in produtosBD:
            if produto[0] == id:
                return True

        return False
Example #5
0
    def tablaProdutoRefresh(self):
        """Metodo actualiza la tabla produtos
                :param: No recibe parámetros.
                :return: No devuelve ningún parámetro.
        """

        self.modeloP.clear()
        self.produtos = []
        produtosBD = MethodsBD.selectTablaProductos()
        for produto in produtosBD:
            self.produtos.append([produto[0], produto[1], produto[2], False])

        for elemento in self.produtos:
            self.modeloP.append(elemento)
Example #6
0
    def tablaClienteRefresh(self):
        """Metodo actualiza la tabla clientes
            :param: No recibe parámetros.
            :return: No devuelve ningún parámetro.
        """

        self.modeloC.clear()
        self.clientes = []
        clientesBD = MethodsBD.selectTablaClientes()
        for cliente in clientesBD:
            self.clientes.append([
                cliente[0], cliente[1], cliente[2], cliente[3], cliente[4],
                cliente[5]
            ])

        for elemento in self.clientes:
            self.modeloC.append(elemento)
Example #7
0
    def __init__(self):
        """Inicializa la ventana de Gestión de Clientes con la interfaz.
        """

        Gtk.Window.__init__(self, title="Xestión de Clientes")
        self.set_default_size(600, 400)

        boxV = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)

        #TABLA CLIENTES

        self.columnasC = [
            "DNI", "Nome", "Apelido", "Sexo", "Telefono", "Direccion"
        ]
        self.modeloC = Gtk.ListStore(str, str, str, str, str, str)
        self.clientes = []
        self.vista = Gtk.TreeView(model=self.modeloC)
        self.vista.set_hexpand(True)
        self.vista.set_vexpand(True)
        seleccion = self.vista.get_selection()
        seleccion.connect("changed", self.on_vista_changed)

        clientesBD = MethodsBD.selectTablaClientes()
        for cliente in clientesBD:
            self.clientes.append([
                cliente[0], cliente[1], cliente[2], cliente[3], cliente[4],
                cliente[5]
            ])

        for elemento in self.clientes:
            self.modeloC.append(elemento)

        for i in range(len(self.columnasC)):
            celda = Gtk.CellRendererText()
            celda.set_alignment(0.5, 0)
            self.columna = Gtk.TreeViewColumn(self.columnasC[i], celda, text=i)
            self.columna.set_alignment(0.5)
            self.columna.set_expand(True)
            self.vista.append_column(self.columna)

        boxV.pack_start(self.vista, True, True, 0)

        grid = Gtk.Grid(column_homogeneous=True,
                        column_spacing=10,
                        row_spacing=10)

        self.lblDni = Gtk.Label("DNI:")
        self.txtDni = Gtk.Entry()
        self.lblNome = Gtk.Label("Nome:")
        self.txtNome = Gtk.Entry()
        self.lblApelido = Gtk.Label("Apelido:")
        self.txtApelido = Gtk.Entry()
        self.lblSexo = Gtk.Label("Sexo:")
        self.txtSexo = Gtk.Entry()
        self.lblTelefono = Gtk.Label("Telefono:")
        self.txtTelefono = Gtk.Entry()
        self.lblDireccion = Gtk.Label("Dirección:")
        self.txtDireccion = Gtk.Entry()
        self.btnAplicar = Gtk.Button(label="Aplicar")
        self.btnGuardar = Gtk.Button(label="Guardar clientes en PDF")
        self.btnVolver = Gtk.Button(label="Volver")
        self.cmbAccion = Gtk.ComboBox()
        acciones = Gtk.ListStore(int, str)
        acciones.append([0, "Añadir"])
        acciones.append([1, "Modificar"])
        acciones.append([2, "Eliminar"])
        self.cmbAccion.set_model(acciones)
        celdaTexto = Gtk.CellRendererText()
        self.cmbAccion.pack_start(celdaTexto, True)
        self.cmbAccion.add_attribute(celdaTexto, "text", 1)
        self.cmbAccion.set_active(0)

        grid.add(self.lblDni)
        grid.attach(self.txtDni, 0, 1, 1, 1)
        grid.attach_next_to(self.lblNome, self.lblDni, Gtk.PositionType.RIGHT,
                            1, 1)
        grid.attach(self.txtNome, 1, 1, 1, 1)
        grid.attach_next_to(self.lblApelido, self.lblNome,
                            Gtk.PositionType.RIGHT, 1, 1)
        grid.attach(self.txtApelido, 2, 1, 1, 1)
        grid.attach_next_to(self.lblSexo, self.txtDni, Gtk.PositionType.BOTTOM,
                            1, 1)
        grid.attach(self.txtSexo, 0, 3, 1, 1)
        grid.attach_next_to(self.lblTelefono, self.lblSexo,
                            Gtk.PositionType.RIGHT, 1, 1)
        grid.attach(self.txtTelefono, 1, 3, 1, 1)
        grid.attach_next_to(self.lblDireccion, self.lblTelefono,
                            Gtk.PositionType.RIGHT, 1, 1)
        grid.attach(self.txtDireccion, 2, 3, 1, 1)
        grid.attach(self.cmbAccion, 1, 4, 1, 1)
        grid.attach(self.btnAplicar, 2, 5, 1, 1)
        grid.attach(self.btnGuardar, 0, 5, 1, 2)
        grid.attach(self.btnVolver, 1, 5, 1, 1)

        boxV.pack_start(grid, True, True, 10)

        self.add(boxV)
        self.show_all()

        #Señales
        self.btnVolver.connect("clicked", self.on_btnVolver_clicked)
        self.btnAplicar.connect("clicked", self.on_btnAplicar_clicked)
        self.btnGuardar.connect("clicked", self.on_btnGuardar_clicked)
        self.connect("destroy", self.on_btnSalir_clicked)
Example #8
0
    def on_btnAplicar_clicked(self, boton):
        """Metodo que según la opción del ComboBox, añade,
            modifica o elimina un valor de la tabla clientes.
            :param boton: boton
            :return: No devuelve ningún parámetro.
        """
        modAcc = self.cmbAccion.get_model()
        indice = self.cmbAccion.get_active_iter()

        if modAcc[indice][0] == 0:

            #OPCION AÑADIR

            dniValid = self.dniCheck(self.txtDni.get_text())
            sexValid = self.sexCheck(self.txtSexo.get_text())
            tlfValid = self.tlfCheck(self.txtTelefono.get_text())
            dniBDValid = self.dniBDCheck(self.txtDni.get_text())

            if (dniBDValid == False and dniValid and sexValid and tlfValid
                    and self.txtNome.get_text() != ""
                    and self.txtApelido.get_text() != ""
                    and self.txtDireccion.get_text() != ""):
                MethodsBD.insertTablaClientes(self.txtDni.get_text(),
                                              self.txtNome.get_text(),
                                              self.txtApelido.get_text(),
                                              self.txtSexo.get_text(),
                                              self.txtTelefono.get_text(),
                                              self.txtDireccion.get_text())
                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO,
                                           Gtk.ButtonsType.OK,
                                           "Cliente añadido Correctamente")
                dialog.run()
                dialog.destroy()
                self.tablaClienteRefresh()

            elif (tlfValid == False):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un teléfono válido")
                dialog.run()
                dialog.destroy()

            elif (sexValid == False):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un sexo válido")
                dialog.run()
                dialog.destroy()

            elif (self.txtNome.get_text() == ""):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un nome válido")
                dialog.run()
                dialog.destroy()

            elif (self.txtApelido.get_text() == ""):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un apelido válido")
                dialog.run()
                dialog.destroy()

            elif (self.txtDireccion.get_text() == ""):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce unha direccion válida")
                dialog.run()
                dialog.destroy()

            elif (dniValid == False):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un DNI válido")
                dialog.run()
                dialog.destroy()
            else:
                dialog = Gtk.MessageDialog(
                    self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK,
                    "El DNI ya se encuentra en la Base de datos")
                dialog.run()
                dialog.destroy()

        elif modAcc[indice][0] == 1:

            #OPCION MODIFICAR

            dniValid = self.dniCheck(self.txtDni.get_text())
            sexValid = self.sexCheck(self.txtSexo.get_text())
            tlfValid = self.tlfCheck(self.txtTelefono.get_text())
            dniBDValid = self.dniBDCheck(self.txtDni.get_text())

            if (dniBDValid and dniValid and sexValid and tlfValid
                    and self.txtNome.get_text() != ""
                    and self.txtApelido.get_text() != ""
                    and self.txtDireccion.get_text() != ""):
                MethodsBD.updateTablaClientes(self.txtDni.get_text(),
                                              self.txtNome.get_text(),
                                              self.txtApelido.get_text(),
                                              self.txtSexo.get_text(),
                                              self.txtTelefono.get_text(),
                                              self.txtDireccion.get_text())
                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO,
                                           Gtk.ButtonsType.OK,
                                           "Cliente modificado correctamente")
                dialog.run()
                dialog.destroy()
                self.tablaClienteRefresh()
            elif (tlfValid == False):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un teléfono válido")
                dialog.run()
                dialog.destroy()

            elif (sexValid == False):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un sexo válido")
                dialog.run()
                dialog.destroy()

            elif (self.txtNome.get_text() == ""):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un nome válido")
                dialog.run()
                dialog.destroy()

            elif (self.txtApelido.get_text() == ""):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un apelido válido")
                dialog.run()
                dialog.destroy()

            elif (self.txtDireccion.get_text() == ""):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce unha direccion válida")
                dialog.run()
                dialog.destroy()

            elif (dniValid == False):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un DNI válido")
                dialog.run()
                dialog.destroy()
            else:
                dialog = Gtk.MessageDialog(
                    self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK,
                    "El DNI no se encuentra en la Base de datos")
                dialog.run()
                dialog.destroy()

        elif modAcc[indice][0] == 2:

            #OPCION ELIMINAR

            dniValid = self.dniCheck(self.txtDni.get_text())
            dniBDValid = self.dniBDCheck(self.txtDni.get_text())

            if (dniValid and dniBDValid):
                MethodsBD.deleteTablaClientes(self.txtDni.get_text())
                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO,
                                           Gtk.ButtonsType.OK,
                                           "Cliente eliminado correctamente")
                dialog.run()
                dialog.destroy()
                self.tablaClienteRefresh()
            elif (dniValid == False):
                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO,
                                           Gtk.ButtonsType.OK,
                                           "Introduzca un DNI correcto")
                dialog.run()
                dialog.destroy()
            else:
                dialog = Gtk.MessageDialog(
                    self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK,
                    "El DNI no se encuentra en la Base de datos")
                dialog.run()
                dialog.destroy()
Example #9
0
    def on_btnFactura_clicked(self, boton):
        """Método que crea un pdf con la factura del cliente
            y productos seleccionados.
            :param boton: boton.
            :return: No devuelve ningún parámetro.
        """

        if self.produtos2 is not None:
            #Cogemos los datos a través del DNI del cliente

            modeldni = self.cmbCliente.get_model()
        dni = self.cmbCliente.get_active_iter()
        datosCli = MethodsBD.selectTablaClientesDni(modeldni[dni][0])
        cliente = []
        for cli in datosCli:
            cliente.append(["", "", "", "", 'Datos Cliente'])
            cliente.append(["", "", "", 'DNI: ', cli[0]])
            cliente.append(["", "", "", 'Nome: ', cli[1]])
            cliente.append(["", "", "", 'Apelidos: ', cli[2]])
            cliente.append([
                "",
                "",
                "",
                'Direccion: ',
                cli[5],
            ])
            cliente.append([""])

            #Hacemos el modelo para la tabla de la factura, los datos de productos ya lo tenemos recogidos en una lista

            data = []
            precioFinal = 0.0
            data.append(["ID", "Nome", "Precio"])
            for produto in self.produtos2:
                data.append([produto[0], produto[1], str(produto[2]) + " €"])
                precioFinal = precioFinal + produto[2]

            data.append(['', 'PRECIO TOTAL:', str(precioFinal) + " €"])

            # Creamos el PDF

            file = 'Factura' + cli[0] + '.pdf'
            diractual = os.getcwd()
            pdf = SimpleDocTemplate(diractual + "/" + file, pagesize=letter)

            # Agregamos datos del cliente

            datCli = Table(cliente, colWidths=50, rowHeights=15)
            numCols = len(cliente)
            datCli.setStyle(
                TableStyle([
                    ('TEXTCOLOR', (0, 0), (4, numCols - 1), colors.firebrick),
                    ('ALIGN', (0, 0), (0, -1), 'LEFT'),
                ]))

            # Agregamos tabla de factura con los productos
            tablaFact = Table(data, colWidths=100, rowHeights=25)

            numCols = len(data)
            tablaFact.setStyle(
                TableStyle([
                    ('TEXTCOLOR', (0, 0), (2, 0), colors.firebrick),
                    ('TEXTCOLOR', (0, numCols - 1), (2, numCols - 1),
                     colors.red), ('ALIGN', (0, 0), (0, -1), 'LEFT'),
                    ('VALIGN', (0, 0), (-1, -1), 'MIDDLE'),
                    ('ALIGN', (0, 0), (-1, -1), 'CENTER'),
                    ('BOX', (0, 0), (-1, numCols - 2), 1, colors.black),
                    ('INNERGRID', (0, 0), (-1, numCols - 2), 0.5, colors.black)
                ]))

            # Añadimos los elementos al PDF
            elementos = []
            elementos.append(datCli)
            elementos.append(tablaFact)
            pdf.build(elementos)
            wb.open_new(diractual + "/" + file)
Example #10
0
    def __init__(self):
        """Inicializa la ventana de Productos y Servicios con la interfaz.
        """

        Gtk.Window.__init__(self, title="Produtos e Servizos")
        self.set_default_size(600, 400)

        self.notebook = Gtk.Notebook()
        self.add(self.notebook)

        #Notebook1 - PRODUTOS

        boxV = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)

        #TABLA PRODUTOS

        self.columnasP = ["ID", "Produto", "Precio(€)", ""]
        self.modeloP = Gtk.ListStore(int, str, int, bool)
        self.produtos = []
        self.vista = Gtk.TreeView(model=self.modeloP)
        self.vista.set_hexpand(True)
        self.vista.set_vexpand(True)
        seleccion = self.vista.get_selection()
        seleccion.connect("changed", self.on_vista_changed)

        produtosBD = MethodsBD.selectTablaProductos()
        for produto in produtosBD:
            self.produtos.append([produto[0], produto[1], produto[2], False])

        for elemento in self.produtos:
            self.modeloP.append(elemento)

        for i in range(len(self.columnasP)):
            if i == 3:

                celda = Gtk.CellRendererToggle()
                celda.connect("toggled", self.on_celdaCheck_toggled,
                              self.modeloP)
                celda.set_alignment(0.5, 0)
                self.columna = Gtk.TreeViewColumn(self.columnasP[i],
                                                  celda,
                                                  active=i)
                self.columna.set_alignment(0.5)
                self.columna.set_expand(True)
                self.vista.append_column(self.columna)
            else:
                celda = Gtk.CellRendererText()
                celda.set_alignment(0.5, 0)
                self.columna = Gtk.TreeViewColumn(self.columnasP[i],
                                                  celda,
                                                  text=i)
                self.columna.set_alignment(0.5)
                self.columna.set_expand(True)
                self.vista.append_column(self.columna)

        boxV.pack_start(self.vista, True, True, 0)

        grid = Gtk.Grid(column_homogeneous=True,
                        column_spacing=10,
                        row_spacing=10)

        self.lblID = Gtk.Label("ID:")
        self.txtID = Gtk.Entry()
        self.lblProduto = Gtk.Label("Produto:")
        self.txtProduto = Gtk.Entry()
        self.lblPrecio = Gtk.Label("Precio:")
        self.txtPrecio = Gtk.Entry()
        self.btnAplicar = Gtk.Button(label="Aplicar")
        self.cmbAccion = Gtk.ComboBox()
        acciones = Gtk.ListStore(int, str)
        acciones.append([0, "Añadir"])
        acciones.append([1, "Modificar"])
        acciones.append([2, "Eliminar"])
        self.cmbAccion.set_model(acciones)
        celdaTexto = Gtk.CellRendererText()
        self.cmbAccion.pack_start(celdaTexto, True)
        self.cmbAccion.add_attribute(celdaTexto, "text", 1)
        self.cmbAccion.set_active(0)
        self.btnVolver = Gtk.Button(label="Volver")

        grid.add(self.lblID)
        grid.attach(self.txtID, 0, 1, 1, 1)
        grid.attach_next_to(self.lblProduto, self.lblID,
                            Gtk.PositionType.RIGHT, 1, 1)
        grid.attach(self.txtProduto, 1, 1, 1, 1)
        grid.attach_next_to(self.lblPrecio, self.lblProduto,
                            Gtk.PositionType.RIGHT, 1, 1)
        grid.attach(self.txtPrecio, 2, 1, 1, 1)
        grid.attach(self.cmbAccion, 1, 4, 1, 1)
        grid.attach(self.btnAplicar, 2, 5, 1, 1)
        grid.attach(self.btnVolver, 0, 5, 1, 1)

        #Notebook2 - SERVIZO

        gridS = Gtk.Grid(column_homogeneous=True,
                         column_spacing=10,
                         row_spacing=10)
        self.lblServizo = Gtk.Label("FACTURA")
        self.lblFactura = Gtk.Label(
            "Seleccione os produtos na pestaña de produtos e logo o cliente o que quere facer a factura"
        )
        self.btnFactura = Gtk.Button(label="Factura")
        self.btnVolver2 = Gtk.Button(label="Volver")

        #COMBO PARA LA FACTURA RECOGE DNI
        self.cmbCliente = Gtk.ComboBox()
        cli = Gtk.ListStore(str)
        datos = MethodsBD.selectTablaClientes()
        self.clientes = []

        for clientes in datos:
            cli.append([clientes[0]])

        self.cmbCliente.set_model(cli)
        celdaTexto = Gtk.CellRendererText()
        self.cmbCliente.pack_start(celdaTexto, True)
        self.cmbCliente.add_attribute(celdaTexto, "text", 0)
        self.cmbCliente.set_active(0)

        #VISTA DE PRODUCTOS PARA LA FACTURA

        self.columnasP2 = ["ID", "Produto", "Precio(€)"]
        self.modelo2 = Gtk.ListStore(int, str, int)
        self.vista2 = Gtk.TreeView(model=self.modelo2)
        self.vista2.set_hexpand(True)
        self.vista2.set_vexpand(True)

        self.produtos2 = []

        for i in range(len(self.columnasP2)):
            celda2 = Gtk.CellRendererText()
            celda2.set_alignment(0.5, 0)
            self.columna2 = Gtk.TreeViewColumn(self.columnasP2[i],
                                               celda2,
                                               text=i)
            self.columna2.set_alignment(0.5)
            self.columna2.set_expand(True)
            self.vista2.append_column(self.columna2)

        gridS.attach(self.lblServizo, 1, 1, 2, 1)
        gridS.attach(self.vista2, 1, 2, 2, 1)
        gridS.attach(self.lblFactura, 1, 3, 2, 1)
        gridS.attach(self.cmbCliente, 1, 5, 1, 1)
        gridS.attach_next_to(self.btnFactura, self.cmbCliente,
                             Gtk.PositionType.RIGHT, 1, 1)
        gridS.attach(self.btnVolver2, 1, 6, 2, 2)

        boxV.pack_start(grid, True, True, 10)
        self.notebook.append_page(boxV, Gtk.Label("Produtos"))
        self.notebook.append_page(gridS, Gtk.Label("Servizo"))

        self.show_all()

        # Señales
        self.btnVolver.connect("clicked", self.on_btnVolver_clicked)
        self.btnVolver2.connect("clicked", self.on_btnVolver_clicked)
        self.btnAplicar.connect("clicked", self.on_btnAplicar_clicked)
        self.btnFactura.connect("clicked", self.on_btnFactura_clicked)
        self.connect("destroy", self.on_btnSalir_clicked)
Example #11
0
    def on_btnAplicar_clicked(self, boton):
        """Metodo que según la opción del ComboBox, añade,
        modifica o elimina un valor de la tabla produtos.
                :param boton: boton
                :return: No devuelve ningún parámetro.
        """
        modAcc = self.cmbAccion.get_model()
        indice = self.cmbAccion.get_active_iter()

        if modAcc[indice][0] == 0:

            # OPCION AÑADIR

            idBDValid = self.idBDCheck(int(self.txtID.get_text()))

            if (idBDValid == False and self.txtID.get_text().isdigit()
                    and self.txtProduto.get_text() != ""
                    and self.txtPrecio.get_text().isdigit()):
                MethodsBD.insertTablaProdutos(int(self.txtID.get_text()),
                                              self.txtProduto.get_text(),
                                              int(self.txtPrecio.get_text()))
                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO,
                                           Gtk.ButtonsType.OK,
                                           "Produto añadido Correctamente")
                dialog.run()
                dialog.destroy()
                self.tablaProdutoRefresh()

            elif (self.txtID.get_text().isdigit() == False):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce unha ID válida")
                dialog.run()
                dialog.destroy()

            elif (self.txtProduto.get_text() == ""):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un nome válido")
                dialog.run()
                dialog.destroy()
            elif (idBDValid):

                dialog = Gtk.MessageDialog(
                    self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK,
                    "El ID del producto ya se encuentra en la base de datos")
                dialog.run()
                dialog.destroy()

            else:
                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un precio válido")
                dialog.run()
                dialog.destroy()

        elif modAcc[indice][0] == 1:

            # OPCION MODIFICAR

            idBDValid = self.idBDCheck(int(self.txtID.get_text()))

            if (idBDValid and self.txtID.get_text().isdigit()
                    and self.txtProduto.get_text() != ""
                    and self.txtPrecio.get_text().isdigit()):
                MethodsBD.updateTablaProdutos(int(self.txtID.get_text()),
                                              self.txtProduto.get_text(),
                                              int(self.txtPrecio.get_text()))
                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO,
                                           Gtk.ButtonsType.OK,
                                           "Produto modificado Correctamente")
                dialog.run()
                dialog.destroy()
                self.tablaProdutoRefresh()

            elif (self.txtID.get_text().isdigit() == False):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce unha ID válida")
                dialog.run()
                dialog.destroy()

            elif (self.txtProduto.get_text() == ""):

                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un nome válido")
                dialog.run()
                dialog.destroy()
            elif (idBDValid == False):
                dialog = Gtk.MessageDialog(
                    self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK,
                    "El ID del producto no se encuentra en la base de datos")
                dialog.run()
                dialog.destroy()

            else:
                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.WARNING,
                                           Gtk.ButtonsType.OK,
                                           "Introduce un precio válido")
                dialog.run()
                dialog.destroy()
        elif modAcc[indice][0] == 2:

            #OPCION ELIMINAR

            idBDValid = self.idBDCheck(int(self.txtID.get_text()))

            if (idBDValid):
                MethodsBD.deleteTablaProductos(self.txtID.get_text())
                dialog = Gtk.MessageDialog(self, 0, Gtk.MessageType.INFO,
                                           Gtk.ButtonsType.OK,
                                           "Produto eliminado correctamente")
                dialog.run()
                dialog.destroy()
                self.tablaProdutoRefresh()
            else:
                dialog = Gtk.MessageDialog(
                    self, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK,
                    "El ID del producto no se encuentra en la base de datos")
                dialog.run()
                dialog.destroy()