def FactsLiteLoad(self, widget, data=None): self.CursorFactLiteSlected = True model, iter = self.TreeFactsLite.get_selection().get_selected() ID = model.get_value(iter, 0) Res1 = BD_Conect.LoadOnService(ID) for i in Res1: DatosFactura = (i[0], i[1], i[2]) self.ServiceSelected = DatosFactura[0] if self.ServiceSelected > 0 and self.ServiceSelected <= 4: Com = " - 6 Comensales" elif self.ServiceSelected > 4 and self.ServiceSelected <= 5: Com = " - 8 Comensales" elif self.ServiceSelected > 5: Com = " - 10 Comensales" self.EB_S_Selected.set_text("Mesa: " + str(self.ServiceSelected) + Com) self.EB_S_Camarero.set_text(DatosFactura[1]) self.EB_S_Cliente.set_text(DatosFactura[2]) Total = 0 self.ListSFM.clear() Res = BD_Conect.LoadLF(ID) for i in Res: file = (str(i[0]), str(i[1]), str(i[2])) Total = Total + i[1] * i[2] BD_Conect.AltaLista(self.TreeSFM, self.ListSFM, file) self.EB_S_CosteTotal.set_text(str(Total) + "€")
def LoadS(self): self.CursorServicesSelected = False self.ListServicios.clear() Res = BD_Conect.Load(2) for i in Res: fila = (i[1], str(i[2]), i[0]) BD_Conect.AltaLista(self.TreeServicios, self.ListServicios, fila)
def LoadClientes(self): ### Limpiamos la lista actual del treeview self.ListClientes.clear() ResCli = BD_Conect.Load(1) for i in ResCli: fila = (i[0], i[1], i[2]) BD_Conect.AltaLista(self.TreeClientes, self.ListClientes, fila)
def FilterByDNI(self, widget, data=None): self.ListF_Factura.clear() model, iter = self.TreeF_Cliente.get_selection().get_selected() ID = model.get_value(iter, 0) Res = BD_Conect.LoadFactFilterDNI(ID) for i in Res: file = (i[0], i[1], i[2], i[3], i[4]) BD_Conect.AltaLista(self.TreeF_Factura, self.ListF_Factura, file)
def SFactsReload(self, widget, data=None): self.ListFactsLite.clear() model, iter = self.TreeSM.get_selection().get_selected() ID = model.get_value(iter, 0) Res = BD_Conect.LoadFactLite(ID) for i in Res: file = (i[0], i[1], i[4]) BD_Conect.AltaLista(self.TreeFactsLite, self.ListFactsLite, file)
def KeySearch(self, widget, event): """Búsqueda rápida por apellido Mientras se escriba en la EntryBox del apartado de clientes cada vez que se teclee se realizará una búsqueda de los clientes mediante su apellido """ ResCli = BD_Conect.SearchCli(self.EB_SearchC.get_text()) self.ListClientes.clear() for i in ResCli: fila = (i[0], i[1], i[2]) BD_Conect.AltaLista(self.TreeClientes, self.ListClientes, fila)
def ConfYES(self, widget, data=None): if self.ID_Confirm == 1: Model, ID = self.TreeClientes.get_selection().get_selected() ResC = BD_Conect.DelClient(self.ListClientes.get_value(ID, 0)) self.LoadClientes() elif self.ID_Confirm == 2: model, iter = self.TreeServicios.get_selection().get_selected() ID = model.get_value(iter, 2) BD_Conect.EraseService(ID) self.ID_Confirm = 0 self.VT_Conf.hide()
def Facturas(self, widget, data=None): self.LoadMesas() self.ListF_Cliente.clear() Res = BD_Conect.Load(1) for i in Res: fila = (i[0], i[1], i[2], i[3], i[4], i[5]) BD_Conect.AltaLista(self.TreeF_Cliente, self.ListF_Cliente, fila) self.ListF_Factura.clear() Res = BD_Conect.Load(4) for i in Res: fila = (i[0], i[1], i[2], i[3], i[4]) BD_Conect.AltaLista(self.TreeF_Factura, self.ListF_Factura, fila) self.NB_Principal.set_current_page(2)
def DelService(self, widget, data=None): model, iter = self.TreeFactsLite.get_selection().get_selected() IDF = model.get_value(iter, 0) model, iter = self.TreeSFM.get_selection().get_selected() IDS = model.get_value(iter, 0) BD_Conect.DelLF(IDF, IDS) self.ListSFM.clear() Res = BD_Conect.LoadLF(IDF) Total = 0 for i in Res: file = (str(i[0]), str(i[1]), str(i[2])) Total = Total + i[1] * i[2] BD_Conect.AltaLista(self.TreeSFM, self.ListSFM, file) self.EB_S_CosteTotal.set_text(str(Total) + "€")
def Servicios(self, widget, data=None): self.LoadS() self.LoadMesas() self.ServiceSelected = 0 Res = BD_Conect.Load(3) self.ListFactsLite.clear() for i in Res: file = (i[0], i[1], i[4]) BD_Conect.AltaLista(self.TreeFactsLite, self.ListFactsLite, file) self.EB_S_Selected.set_text("") self.EB_S_Camarero.set_text("") self.EB_S_Cliente.set_text("") self.EB_S_CosteTotal.set_text("") self.CursorServicesSelected = False self.CursorFactLiteSlected = False self.NB_Principal.set_current_page(1)
def AñadirCliente(self, widget, data=None): fila = (self.EB_C_DNI.get_text(), self.EB_C_Apellidos.get_text(), self.EB_C_Nombre.get_text(), self.EB_C_Direccion.get_text(), self.ListPro.get_value(self.CB_C_Provincia.get_active_iter(), 0), self.ListCiu.get_value(self.CB_C_Ciudad.get_active_iter(), 0)) BD_Conect.Insert(fila, 0) self.LoadClientes() self.NB_Clientes.set_current_page(0)
def Disocupped(self, widget, data=None): model, iter = self.TreeMesas.get_selection().get_selected() if iter != None: ID = model.get_value(iter, 0) # Cogemos la ID de la mesa de la tabla BD_Conect.Disocupped( ID ) #Se cambia el estado de la columna "Ocupada" de la base de datos para la mesa seleccionada self.LoadMesas()
def crearfactura(self, widget, data=None): try: model, iter = self.TreeF_Factura.get_selection().get_selected() idfactura = model.get_value(iter, 0) model, iter = self.TreeF_Factura.get_selection().get_selected() dnicliente = model.get_value(iter, 1) cser = canvas.Canvas(str(idfactura) + '.pdf', pagesize=A4) self.cabecera(cser, idfactura, dnicliente) self.pie(cser) listado = BD_Conect.LoadToFactura(idfactura) textlistado = 'Cod Concepto Unidades Precio/unidad Total' cser.drawString(50, 705, textlistado) cser.line(50, 700, 545, 700) x = 50 y = 680 total = 0 for registro in listado: for i in range(4): if i <= 1: cser.drawString(x, y, str(registro[i])) x = x + 40 else: x = x + 120 cser.drawString(x, y, str(registro[i])) var1 = int(registro[2]) var2 = registro[3] var2 = var2 var2 = round(float(var2), 2) subtotal = var1 * var2 total = total + subtotal subtotal = locale.currency(subtotal) x = x + 120 cser.drawRightString(545, y, str(subtotal)) y = y - 20 x = 50 y = y - 20 cser.line(50, y, 545, y) y = y - 20 x = 400 cser.drawString(x, y, 'Total: ') x = 485 total = round(float(total), 2) total = locale.currency(total) cser.drawString(x, y, str(total)) cser.showPage() cser.save() dir = os.getcwd() os.system('/usr/bin/xdg-open ' + dir + '/' + str(idfactura) + '.pdf') except: print('error en factura')
def Login(self, widget, data=None): Log = (self.ET_User.get_text(), self.ET_Pass.get_text()) Res = BD_Conect.LogCompr(Log) for Row in Res: self.LB_Check.set_text( " Logeado como: \n " + Row[1] ) # Establece el label que indica el nombre del camarero logeado self.CamID = Row[ 0] # Guarda su ID para futuros usos sin necesidad de hacer mas busquedas if Row[0] != None: self.LS.hide() self.LB_LE.set_text("Usuario o contraseña incorrectos")
def BuyService(self, widget, data=None): if self.CursorFactLiteSlected == True: if self.CursorServicesSelected == True: model, iter = self.TreeFactsLite.get_selection().get_selected() IDF = model.get_value(iter, 0) model, iter = self.TreeServicios.get_selection().get_selected() IDS = model.get_value(iter, 2) BD_Conect.InsertSF(IDF, IDS) self.ListSFM.clear() Res = BD_Conect.LoadLF(IDF) Total = 0 for i in Res: file = (str(i[0]), str(i[1]), str(i[2])) Total = Total + i[1] * i[2] BD_Conect.AltaLista(self.TreeSFM, self.ListSFM, file) self.EB_S_CosteTotal.set_text(str(Total) + "€") else: a = 1 else: placeholder = 1
def Occupped(self, widget, data=None): """Ocupación de mesas Este método se encarga del estado de las mesas cuando se oprime el botón de 'Ocupar' """ if self.Selected == 0: # Si la variable de seleccion está a 0 es que no se ha presionado ningún botón de mesa. self.LB_MS.set_text("Debe seleccionar una mesa primero") elif self.Selected == -1: # Si está a -1 es que se ha seleccionado una mesa ocupada del tree view self.LB_MS.set_text("Esa mesa ya estaba ocupada") elif self.Selected > 0: if self.CursorSelected == False: self.LB_MS.set_text("Tiene que seleccionar un cliente primero") else: Model, ID = self.TreeClientes.get_selection().get_selected() Año, Mes, Dia = self.CA_Fecha.get_date() Fecha = str(Año) + "-" + str(Mes) + "-" + str(Dia) fila = (self.Selected, self.ListClientes.get_value(ID, 0), self.CamID, Fecha) BD_Conect.Ocupped(fila) self.LoadMesas()
def cabecera(self, cser, idfactura, dnicliente): try: cser.setTitle('Informes') cser.setAuthor('Daniel Bastos Rodriguez') cser.setFont('Helvetica', 11) cser.line(50, 820, 545, 820) cser.line(50, 720, 545, 720) cser.line(50, 700, 545, 700) textnom = 'Restaurante Il Sicario' textdir = 'Calle False 125- Springfield' texttlfo = '666 66 66 66' cser.drawCentredString(297.5, 795, textnom) cser.drawCentredString(297.5, 775, textdir) cser.drawCentredString(297.5, 755, texttlfo) camarero = BD_Conect.LoadToCabecera(idfactura) cser.drawString(450, 745, "Le atendió: " + camarero[0][0]) cser.drawString(450, 730, "Cliente: " + dnicliente) except: print('erros cabecera')
def salir(self, widget, data=None): BD_Conect.Disconect() Gtk.main_quit()
def FCliSearch(self, widget, data=None): ResCli = BD_Conect.SearchCli(self.EB_F_ClientSearcher.get_text()) self.ListF_Cliente.clear() for i in ResCli: fila = (i[0], i[1], i[2], i[3], i[4], i[5]) BD_Conect.AltaLista(self.TreeF_Cliente, self.ListF_Cliente, fila)
def ServiceSearch(self, widget, data=None): self.ListServicios.clear() Res = BD_Conect.SearchService(self.EB_S_Searcher.get_text()) for i in Res: fila = (i[1], str(i[2]), i[0]) BD_Conect.AltaLista(self.TreeServicios, self.ListServicios, fila)
def LoadMesas(self): ### Limpiamos la lista actual del treeview self.ListMesas.clear() ### Obtenemos una lista de todas las mesas y su estado. Res = BD_Conect.Load(0) ### Para cada mesa comprobamos si está ocupada, en ese caso el botón cambio de imagen y se bloquea ### Si no está ocupada el botón se desbloquea y la imágen vuelve a la de disponible for i in Res: fila = (i[0], i[1], i[2]) if fila[0] == 1: if fila[2] == 'Si': self.IMG_Mesa1.set_from_file("../IMG/Mesa4_NO.jpg") self.BT_Mesa1.set_sensitive(False) else: self.IMG_Mesa1.set_from_file("../IMG/Mesa4_SI.jpg") self.BT_Mesa1.set_sensitive(True) elif fila[0] == 2: if fila[2] == 'Si': self.IMG_Mesa2.set_from_file("../IMG/Mesa4_NO.jpg") self.BT_Mesa2.set_sensitive(False) else: self.IMG_Mesa2.set_from_file("../IMG/Mesa4_SI.jpg") self.BT_Mesa2.set_sensitive(True) elif fila[0] == 3: if fila[2] == 'Si': self.IMG_Mesa3.set_from_file("../IMG/Mesa4_NO.jpg") self.BT_Mesa3.set_sensitive(False) else: self.IMG_Mesa3.set_from_file("../IMG/Mesa4_SI.jpg") self.BT_Mesa3.set_sensitive(True) elif fila[0] == 4: if fila[2] == 'Si': self.IMG_Mesa4.set_from_file("../IMG/Mesa4_NO.jpg") self.BT_Mesa4.set_sensitive(False) else: self.IMG_Mesa4.set_from_file("../IMG/Mesa4_SI.jpg") self.BT_Mesa4.set_sensitive(True) elif fila[0] == 5: if fila[2] == 'Si': self.IMG_Mesa5.set_from_file("../IMG/Mesa6_NO.jpg") self.BT_Mesa5.set_sensitive(False) else: self.IMG_Mesa5.set_from_file("../IMG/Mesa6_SI.jpg") self.BT_Mesa5.set_sensitive(True) elif fila[0] == 6: if fila[2] == 'Si': self.IMG_Mesa6.set_from_file("../IMG/Mesa6_NO.jpg") self.BT_Mesa6.set_sensitive(False) else: self.IMG_Mesa6.set_from_file("../IMG/Mesa6_SI.jpg") self.BT_Mesa6.set_sensitive(True) elif fila[0] == 7: if fila[2] == 'Si': self.IMG_Mesa7.set_from_file("../IMG/Mesa8_NO.jpg") self.BT_Mesa7.set_sensitive(False) else: self.IMG_Mesa7.set_from_file("../IMG/Mesa8_SI.jpg") self.BT_Mesa7.set_sensitive(True) elif fila[0] == 8: if fila[2] == 'Si': self.IMG_Mesa8.set_from_file("../IMG/Mesa8_NO.jpg") self.BT_Mesa8.set_sensitive(False) else: self.IMG_Mesa8.set_from_file("../IMG/Mesa8_SI.jpg") self.BT_Mesa8.set_sensitive(True) ### Obtenemos una lista sólo de las mesas ocupadas para poner en el tree view ResOcuped = BD_Conect.LoadOccuped() for i in ResOcuped: fila = (i[0], i[1], i[2]) BD_Conect.AltaLista(self.TreeMesas, self.ListMesas, fila)
def AddNewService(self, widget, data=None): fila = (self.EB_NSN.get_text(), self.EB_NSP.get_text()) BD_Conect.Insert(fila, 1) self.LoadS() self.VService.hide()