class buser(Tk): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.resizable(0, 0) self.title("Consulta de usuarios") self.frameb = Frame(self) self.frameb.pack() self.frameb.config(width=750, height=550) self.frameb.config(bg="white") self.framet = ScrollableFrame(self.frameb, width=100) self.framet.place(x=25, y=75) self.lab1 = Label(self.frameb, text="Buscar por...", bg="white", font=("Verdana", 12)) self.lab1.place(x=25, y=25) self.comb = ttk.Combobox(self.frameb, width=25, height=10, state="readonly") self.comb.place(x=150, y=25) self.comb["values"] = ["Cedula", "Nombre", "ID"] self.comb.set("Cedula") self.lab2 = Label(self.frameb, text="Buscar:", bg="white", font=("Verdana", 12)) self.lab2.place(x=340, y=25) self.text = Entry(self.frameb, width=30) self.text.place(x=420, y=25) self.rellenar(alluser()) self.bot = Button(self.frameb, width=10, height=1, text="Aceptar", command=self.val) self.bot.place(x=640, y=25) self.bot3 = Button(self.frameb, text="Realizar reporte", command=self.reporte) self.bot3.place(x=150, y=500) self.mainloop() def rellenar(self, lista): self.marco = [] self.reportdata = lista i = 0 for per in lista: self.marco.append( framemod(self.framet.scrollable_frame, per[0], width=750, height=60, bg="#DB7093")) self.marco[i].pack() self.marco[i].bind("<Button-1>", self.allinfo) self.id = Label(self.marco[i], text=per[0], fg="white") self.id.place(x=20, y=5) self.nom = Label(self.marco[i], text=per[2], fg="white") self.nom.place(x=50, y=5) self.ci = Label(self.marco[i], text="Cedula: " + str(per[1]), fg="white") self.ci.place(x=50, y=30) self.priv = Label(self.marco[i], text=per[3], fg="white") self.priv.place(x=570, y=5) self.id.config(bg="#DB7093") self.nom.config(bg="#DB7093") self.ci.config(bg="#DB7093") self.priv.config(bg="#DB7093") if i % 2 == 0: self.marco[i].config(bg="#C40233") self.id.config(bg="#C40233") self.nom.config(bg="#C40233") self.ci.config(bg="#C40233") self.priv.config(bg="#C40233") i += 1 def val(self): if self.text.get() == "": messagebox.showerror("Error", "Ingrese un valor para realizar la busqueda") self.text.delete(0, END) else: self.buscar() def buscar(self): quer = suser(self.comb.get(), self.text.get()) self.text.delete(0, END) for i in self.marco: i.pack_forget() i.destroy() if len(quer) < 1: messagebox.showerror( "Error", "No se han encontrado relaciones, intente otra vez") else: messagebox.showinfo( "Busqueda exitosa", "Se ha encontrado " + str(len(quer)) + " registros") self.rellenar(quer) def allinfo(self, event): caller = event.widget pos = caller.id nwin = userindi(self, pos) def refresh(self): for i in self.marco: i.pack_forget() i.destroy() self.rellenar(alluser()) def reporte(self): res = messagebox.askquestion( "Confirmación", "¿Estas seguro que deseas guardar un reporte de los elementos seleccionados?" ) if res == "yes": self.empreport = [[ "ID", "CI Empleado", "Nombre", "Privilegios", "N° de ventas", "F. de registro" ]] for e in self.reportdata: self.empreport.append(e) now = datetime.now() titulo = "Reporte de empleados " + str(date.today()) + " " + str( now.hour) + "-" + str(now.minute) + "-" + str( now.second) + ".pdf" export_to_pdf(4, titulo, "Clientes", self.empreport) messagebox.showinfo("Operación Exitosa", "El reporte se ha generado exitosamente")
class leventos(Tk): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.resizable(0,0) self.title("Listado de eventos") self.frameb= Frame(self) self.frameb.pack() self.frameb.config(width=750,height=550) self.frameb.config(bg="white") self.framet= ScrollableFrame(self.frameb,width=100) self.framet.place(x=25,y=75) self.lab1= Label(self.frameb, text="Buscar por...",bg="white",font=("Verdana",12)) self.lab1.place(x=25,y=25) self.comb= ttk.Combobox(self.frameb, width=25,height=10,state="readonly") self.comb.place(x=150,y=25) self.comb["values"] = ["CI Cliente","CI Empleado","N° de Factura","Metodo"] self.comb.set("CI Cliente") self.lab2= Label(self.frameb, text="Buscar:",bg="white",font=("Verdana",12)) self.lab2.place(x=340,y=25) self.text= Entry(self.frameb, width=30) self.text.place(x=420,y=25) self.bot = Button(self.frameb, width=10,height=1,text= "Aceptar", command=self.valv) self.bot.place(x=640,y=25) self.bot2 = Button(self.frameb,text="Movimiento de items",command=self.lmov) self.bot2.place(x=580,y=500) self.bot3 = Button(self.frameb,text="Operaciones de inventario",command=self.lope) self.bot3.place(x=400,y=500) self.bot4 = Button(self.frameb,text="Ventas realizadas",command=self.lventa,state="disabled") self.bot4.place(x=265,y=500) self.bot6 = Button(self.frameb,text="Realizar reporte", command=self.reportv) self.bot6.place(x=150,y=500) self.bot5 = Button(self.frameb,text="Regresar") self.bot5.place(x=25,y=500) self.rellenar(allventa()) self.mainloop() def rellenar(self,lista): self.reportdata=lista self.marco=[] i=0 for vent in lista: self.marco.append(framemod(self.framet.scrollable_frame, vent[0],width=750, height=60, bg="#DB7093")) self.marco[i].pack() self.id = Label(self.marco[i], text="N° Factura: "+str(vent[0]), fg="white", bg="#DB7093") self.id.place(x=20,y=5) self.cie = Label(self.marco[i], text="CI empleado: "+str(vent[1]), fg="white", bg="#DB7093") self.cie.place(x=20,y=25) self.cic = Label(self.marco[i], text="CI cliente: "+str(vent[2]), fg="white", bg="#DB7093") self.cic.place(x=250,y=25) self.met = Label(self.marco[i], text="Pago en: "+str(vent[3]), fg="white", bg="#DB7093") self.met.place(x=250,y=5) self.mon = Label(self.marco[i], text="Monto: Bs.S"+str(vent[4]), fg="white", bg="#DB7093") self.mon.place(x=500,y=5) if i % 2 == 0: self.marco[i].config(bg="#C40233") self.id.config(bg="#C40233") self.cie.config(bg="#C40233") self.cic.config(bg="#C40233") self.met.config(bg="#C40233") self.mon.config(bg="#C40233") i+=1 def rellenarm(self,lista): self.reportdata=lista self.marco=[] i=0 for mov in lista: self.marco.append(framemod(self.framet.scrollable_frame, mov[0],width=750, height=60, bg="#DB7093")) self.marco[i].pack() self.id =Label(self.marco[i], text="ID: " + str(mov[0]), fg="white", bg="#DB7093") self.id.place(x=20,y=5) self.prod =Label(self.marco[i], text="Producto: "+ str(mov[1]), fg="white", bg="#DB7093") self.prod.place(x=20,y=25) if mov[2]==0: self.iden= Label(self.marco[i], text="ID operación: "+str(mov[3]), fg="white", bg="#DB7093") else: self.iden= Label(self.marco[i], text="N° factura: "+str(mov[2]), fg="white", bg="#DB7093") self.iden.place(x=250,y=5) self.acc =Label(self.marco[i], text="Acción: "+ str(mov[4]), fg="white", bg="#DB7093") self.acc.place(x=250,y=25) self.cant = Label(self.marco[i], text="Cantidad: "+str(mov[5]), fg="white", bg="#DB7093") self.cant.place(x=500,y=5) if i % 2 == 0: self.marco[i].config(bg="#C40233") self.id.config(bg="#C40233") self.prod.config(bg="#C40233") self.iden.config(bg="#C40233") self.acc.config(bg="#C40233") self.cant.config(bg="#C40233") i+=1 def rellenaro(self,lista): self.reportdata=lista self.marco=[] i=0 for ope in lista: self.marco.append(framemod(self.framet.scrollable_frame, ope[0],width=750, height=60, bg="#DB7093")) self.marco[i].pack() self.id = Label(self.marco[i], text="ID Operación: "+str(ope[0]), fg="white", bg="#DB7093") self.id.place(x=20,y=5) self.cie = Label(self.marco[i], text="CI empleado: "+str(ope[1]), fg="white", bg="#DB7093") self.cie.place(x=20,y=25) self.des = Label(self.marco[i], text="Acción: "+str(ope[2]), fg="white", bg="#DB7093") self.des.place(x=250,y=25) self.hora = Label(self.marco[i], text="Fecha: "+str(ope[3]), fg="white", bg="#DB7093") self.hora.place(x=250,y=5) if i % 2 == 0: self.marco[i].config(bg="#C40233") self.id.config(bg="#C40233") self.cie.config(bg="#C40233") self.des.config(bg="#C40233") self.hora.config(bg="#C40233") i+=1 def valv(self): if self.text.get() == "": messagebox.showerror("Error","Ingrese un valor para realizar la busqueda") self.text.delete(0,END) else: self.buscarv() def valm(self): if self.text.get() == "": messagebox.showerror("Error","Ingrese un valor para realizar la busqueda") self.text.delete(0,END) else: self.buscarm() def valo(self): if self.text.get() == "": messagebox.showerror("Error","Ingrese un valor para realizar la busqueda") self.text.delete(0,END) else: self.buscaro() def buscarv(self): quer=sventa(self.comb.get(),self.text.get()) self.text.delete(0,END) for i in self.marco: i.pack_forget() i.destroy() if len(quer)<1: messagebox.showerror("Error","No se han encontrado relaciones, intente otra vez") else: messagebox.showinfo("Busqueda exitosa","Se ha encontrado " +str(len(quer))+" registros") self.rellenar(quer) def buscarm(self): quer=smov(self.comb.get(),self.text.get()) self.text.delete(0,END) for i in self.marco: i.pack_forget() i.destroy() if len(quer)<1: messagebox.showerror("Error","No se han encontrado relaciones, intente otra vez") else: messagebox.showinfo("Busqueda exitosa","Se ha encontrado " +str(len(quer))+" registros") self.rellenarm(quer) def buscaro(self): quer=sope(self.comb.get(),self.text.get()) self.text.delete(0,END) for i in self.marco: i.pack_forget() i.destroy() if len(quer)<1: messagebox.showerror("Error","No se han encontrado relaciones, intente otra vez") else: messagebox.showinfo("Busqueda exitosa","Se ha encontrado " +str(len(quer))+" registros") self.rellenaro(quer) def lmov(self): for i in self.marco: i.pack_forget() i.destroy() self.rellenarm(allmov()) self.comb["values"] = ["ID","Nombre de producto","Acción"] self.comb.set("ID") self.bot2.config(state="disabled") self.bot3.config(state="normal") self.bot4.config(state="normal") self.bot6.config(command=self.reportm) self.bot.config(command=self.valm) def lventa(self): for i in self.marco: i.pack_forget() i.destroy() self.rellenar(allventa()) self.comb["values"] = ["CI Cliente","CI Empleado","N° de Factura","Metodo"] self.comb.set("CI Cliente") self.bot4.config(state="disabled") self.bot2.config(state="normal") self.bot3.config(state="normal") self.bot6.config(command=self.reportv) self.bot.config(command=self.valv) def lope(self): for i in self.marco: i.pack_forget() i.destroy() self.rellenaro(allope()) self.comb["values"] = ["ID","CI Empleado","Descripción"] self.comb.set("ID") self.bot4.config(state="normal") self.bot2.config(state="normal") self.bot3.config(state="disabled") self.bot6.config(command=self.reporto) self.bot.config(command=self.valo) def reportv(self): res=messagebox.askquestion("Confirmación","¿Estas seguro que deseas guardar un reporte de los elementos seleccionados?") if res == "yes": self.ventreport=[["N° de factura","CI Empleado","CI Cliente","Tipo de pago","Monto(Bs.S)"]] for v in self.reportdata: self.ventreport.append(v) now=datetime.now() titulo="Reporte de ventas "+str(date.today()) +" "+ str(now.hour) + "-" + str(now.minute) + "-" + str(now.second) + ".pdf" export_to_pdf(4,titulo,"Clientes",self.ventreport) messagebox.showinfo("Operación Exitosa","El reporte se ha generado exitosamente") def reportm(self): res=messagebox.askquestion("Confirmación","¿Estas seguro que deseas guardar un reporte de los elementos seleccionados?") if res == "yes": self.movreport=[["ID","Producto","N° de factura","ID operación","Acción","Cantidad"]] for m in self.reportdata: if m[2]==0: m[2]="No posee" else: m[3]="No posee" self.movreport.append(m) now=datetime.now() titulo="Reporte de movimientos "+str(date.today()) +" "+ str(now.hour) + "-" + str(now.minute) + "-" + str(now.second) + ".pdf" export_to_pdf(4,titulo,"Clientes",self.movreport) messagebox.showinfo("Operación Exitosa","El reporte se ha generado exitosamente") def reporto(self): res=messagebox.askquestion("Confirmación","¿Estas seguro que deseas guardar un reporte de los elementos seleccionados?") if res == "yes": self.opereport=[["ID","CI Empleado","Descripción","Fecha/Hora"]] for o in self.reportdata: self.opereport.append(o) now=datetime.now() titulo="Reporte de operaciones "+str(date.today()) +" "+ str(now.hour) + "-" + str(now.minute) + "-" + str(now.second) + ".pdf" export_to_pdf(4,titulo,"Clientes",self.opereport) messagebox.showinfo("Operación Exitosa","El reporte se ha generado exitosamente")
class venta(Tk): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.resizable(0, 0) self.title("Procesar venta") self.frameb = Frame(self) self.frameb.pack() self.frameb.config(width=950, height=550) self.frameb.config(bg="white") self.framet = ScrollableFrame(self.frameb) self.framet.canvas.config(height=180) self.framet.place(x=25, y=330) self.frmcl = Frame(self.frameb, width=270, height=120, relief="sunken", bd=5, bg="white") self.frmcl.place(x=660, y=20) self.titu = Label(self.frameb, text="Agregar item a \n la compra", font=("Verdana", 15), bg="white") self.titu.place(x=100, y=30) self.lab1 = Label(self.frameb, text="Código:", font=("Verdana", 12), bg="white") self.lab1.place(x=70, y=130) self.lab2 = Label(self.frameb, text="Cantidad:", font=("Verdana", 12), bg="white") self.lab2.place(x=50, y=205) self.cod = Entry(self.frameb, width=30) self.cod.place(x=150, y=130) self.spin = Spinbox(self.frameb, from_=0, to=10000, width=7) self.spin.place(x=150, y=205) self.agre = Button(self.frameb, text="Agregar", command=self.val) self.agre.place(x=150, y=255) self.regr = Button(self.frameb, text="Regresar al\n menu anterior", width=25, height=3, command=self.regre) self.regr.place(x=730, y=332) self.rein = Button(self.frameb, text="Reiniciar \nCompra", width=25, height=3, command=self.reiniciar) self.rein.place(x=730, y=402) self.fin = Button(self.frameb, text="Proseguir \nCompra", width=25, height=3, command=self.sig) self.fin.place(x=730, y=472) self.lab3 = Label(self.frameb, text="TOTAL", font=("Verdana", 20), bg="white") self.lab3.place(x=500, y=30) self.total = Label(self.frameb, text="0.00", font=("Verdana", 40), bg="white") self.sum = 0.00 self.total.place(x=480, y=150) nwin = bcliente(self) self.item = [] self.i = 0 self.tota = [] self.cantidad = [] self.facturao = [] self.mainloop() def val(self): if self.cod.get() == "": messagebox.showerror("Error", "Ingrese un código de barras") self.cod.delete(0, END) self.spin.delete(0, END) elif len(self.cod.get()) < 7: messagebox.showerror( "Error", "El codigo debe tener un total de 13 dígitos") self.cod.delete(0, END) self.spin.delete(0, END) elif not self.cod.get().isdigit(): messagebox.showerror("Error", "El codigo solo puede tener números") self.cod.delete(0, END) self.spin.delete(0, END) elif not self.spin.get().isdigit(): messagebox.showerror("Error", "Ingrese una cantidad valida de elementos") self.cod.delete(0, END) self.spin.delete(0, END) elif not checkprodu(self.cod.get()): messagebox.showerror("Error", "El item no se ha encontrado") self.cod.delete(0, END) self.spin.delete(0, END) elif checkcant(self.cod.get()) < int(self.spin.get()): messagebox.showerror("Error", "El item no posee suficientes elementos") self.cod.delete(0, END) self.spin.delete(0, END) else: self.fill() def fill(self): self.item.append( framemod(self.framet.scrollable_frame, self.cod.get(), width=750, height=80, bg="white")) self.item[self.i].pack() info = produforventa(self.cod.get()) self.facturao.append([ info[1], self.spin.get(), info[0], (float(self.spin.get()) * info[1]) ]) self.nompro = Label(self.item[self.i], text=info[0], bg="white") self.nompro.place(x=20, y=5) self.costi = Label(self.item[self.i], text=str(self.spin.get()) + " x Bs.S " + str(info[1]), bg="white") self.costi.place(x=20, y=25) self.toti = Label(self.item[self.i], text=str(float(self.spin.get()) * info[1]), font=("Verdana", 17), bg="white") self.toti.place(x=250, y=5) self.tota.append(float(self.spin.get()) * info[1]) self.cantidad.append(self.spin.get()) self.canc = Button(self.item[self.i], text="Cancelar", bg="white", command=partial(self.eli, self.item[self.i], self.tota[self.i], self.cantidad[self.i])) self.canc.place(x=600, y=15) self.sum = self.sum + (float(self.spin.get()) * info[1]) self.total.config(text=self.sum) self.cod.delete("0", "end") self.spin.delete("0", "end") self.i += 1 def eli(self, fram, tota, cant): rest = float(tota) self.sum -= rest self.total.config(text=self.sum) fram.pack_forget() fram.destroy() self.item.remove(fram) self.tota.remove(tota) self.cantidad.remove(cant) self.i -= 1 def infoclient(self, ci, nom): self.titu2 = Label(self.frmcl, text="Inf. cliente", font=("Verdana", 15), bg="white") self.titu2.place(x=40, y=5) self.nom = Label(self.frmcl, text="Nombre: " + str(nom), font=("Verdana", 12), bg="white") self.nom.place(x=5, y=45) self.cic = Label(self.frmcl, text="CI: " + str(ci), font=("Verdana", 12), bg="white") self.cic.place(x=5, y=85) self.ciclient = ci def regre(self): ans = messagebox.askquestion( "Confirmación", "¿Estas seguro que deseas abandonar la ventana?") if ans == "yes": self.destroy() def reiniciar(self): ans = messagebox.askquestion( "Confirmación", "¿Estas seguro que deseas reiniciar el proceso?") if ans == "yes": self.ini() def ini(self): for i in self.item: i.pack_forget() i.destroy() self.total.config(text=0) self.sum = 0.00 self.i = 0 self.item = [] self.tota = [] self.cantidad = [] self.facturao = [] nwin = bcliente(self) def sig(self): nwind = metodop(self) def final(self, met): # NOTA: CAMBIAR EL ID DEL EMPLEADO CUANDO ESTE COMPLETO LOS MENUS idemp = 4 idclient = getidcliet(self.ciclient) factura = proceventa(idemp, idclient, met, self.sum) j = 0 for i in self.item: movventa(i.id, factura, self.cantidad[j]) retiitem(i.id, self.cantidad[j]) j += 1 messagebox.showinfo("Compra exitosa", "La compra se ha procesado correctamente") gen_factura(self.facturao, self.sum, factura, idclient) self.ini()
class inventario(Tk): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.resizable(0, 0) self.title("Inventario de productos") self.frameb = Frame(self) self.frameb.pack() self.frameb.config(width=750, height=550) self.frameb.config(bg="white") self.framet = ScrollableFrame(self.frameb, width=100) self.framet.place(x=25, y=75) self.lab1 = Label(self.frameb, text="Buscar por...", bg="white", font=("Verdana", 12)) self.lab1.place(x=25, y=25) self.comb = ttk.Combobox(self.frameb, width=25, height=10, state="readonly") self.comb.place(x=150, y=25) self.comb["values"] = ["Nombre", "Código"] self.comb.set("Nombre") self.lab2 = Label(self.frameb, text="Buscar:", bg="white", font=("Verdana", 12)) self.lab2.place(x=340, y=25) self.text = Entry(self.frameb, width=30) self.text.place(x=420, y=25) self.bot = Button(self.frameb, width=10, height=1, text="Aceptar", command=self.vali) self.bot.place(x=640, y=25) self.bot2 = Button(self.frameb, text="Listado de productos", command=self.lprodu) self.bot2.place(x=580, y=500) self.bot3 = Button(self.frameb, text="Regresar") self.bot3.place(x=25, y=500) self.bot4 = Button(self.frameb, text="Realizar reporte", command=self.reporti) self.bot4.place(x=150, y=500) self.rellenar(allitem()) self.mainloop() def rellenar(self, lista): self.reportdata = lista self.marco = [] i = 0 for item in lista: self.marco.append( framemod(self.framet.scrollable_frame, item[0], width=750, height=60, bg="#DB7093")) self.marco[i].pack() self.marco[i].bind("<Button-1>", self.iteminfo) self.id = Label(self.marco[i], text="Codigo de barras: " + str(item[0]), fg="white", bg="#DB7093") self.id.place(x=20, y=5) self.nom = Label(self.marco[i], text=item[1], fg="white", bg="#DB7093") self.nom.place(x=20, y=25) self.cant = Label(self.marco[i], text="Cantidad ingresada: " + str(item[2]), fg="white", bg="#DB7093") self.cant.place(x=250, y=5) self.est = Label(self.marco[i], text="Estado: " + str(item[3]), fg="white", bg="#DB7093") self.est.place(x=500, y=5) if i % 2 == 0: self.marco[i].config(bg="#C40233") self.id.config(bg="#C40233") self.nom.config(bg="#C40233") self.cant.config(bg="#C40233") self.est.config(bg="#C40233") i += 1 def rellenarp(self, lista): self.marco = [] self.reportdata = lista i = 0 for item in lista: self.marco.append( framemod(self.framet.scrollable_frame, item[0], width=750, height=60, bg="#DB7093")) self.marco[i].pack() self.marco[i].bind("<Button-1>", self.prodinfo) self.id = Label(self.marco[i], text=str(item[0]), fg="white", bg="#DB7093") self.id.place(x=20, y=5) self.nom = Label(self.marco[i], text=item[1], fg="white", bg="#DB7093") self.nom.place(x=50, y=5) self.clas = Label(self.marco[i], text=item[3], fg="white", bg="#DB7093") self.clas.place(x=50, y=30) self.cant = Label(self.marco[i], text=item[2], fg="white", bg="#DB7093") self.cant.place(x=570, y=5) if i % 2 == 0: self.marco[i].config(bg="#C40233") self.id.config(bg="#C40233") self.nom.config(bg="#C40233") self.cant.config(bg="#C40233") self.clas.config(bg="#C40233") i += 1 def vali(self): if self.text.get() == "": messagebox.showerror("Error", "Ingrese un valor para realizar la busqueda") self.text.delete(0, END) else: self.buscari() def valp(self): if self.text.get() == "": messagebox.showerror("Error", "Ingrese un valor para realizar la busqueda") self.text.delete(0, END) else: self.buscarp() def buscari(self): quer = sitem(self.comb.get(), self.text.get()) self.text.delete(0, END) for i in self.marco: i.pack_forget() i.destroy() if len(quer) < 1: messagebox.showerror( "Error", "No se han encontrado relaciones, intente otra vez") else: messagebox.showinfo( "Busqueda exitosa", "Se ha encontrado " + str(len(quer)) + " registros") self.rellenar(quer) def buscarp(self): quer = sprodu(self.comb.get(), self.text.get()) self.text.delete(0, END) for i in self.marco: i.pack_forget() i.destroy() if len(quer) < 1: messagebox.showerror( "Error", "No se han encontrado relaciones, intente otra vez") else: messagebox.showinfo( "Busqueda exitosa", "Se ha encontrado " + str(len(quer)) + " registros") self.rellenarp(quer) def lprodu(self): for i in self.marco: i.pack_forget() i.destroy() self.rellenarp(allprodu()) self.comb["values"] = ["Nombre", "ID", "Clasificación"] self.comb.set("Nombre") self.bot2.config(command=self.litem, text="Listado de items") self.bot.config(command=self.valp) self.bot4.config(command=self.reportp) def litem(self): for i in self.marco: i.pack_forget() i.destroy() self.rellenar(allitem()) self.comb["values"] = ["Nombre", "Código"] self.comb.set("Nombre") self.bot2.config(command=self.lprodu, text="Listado de productos") self.bot.config(command=self.vali) self.bot4.config(command=self.reporti) def iteminfo(self, event): caller = event.widget pos = caller.id nwin = itemindi(self, pos) def prodinfo(self, event): caller = event.widget pos = caller.id nwin = produindi(self, pos) def refreshi(self): for i in self.marco: i.pack_forget() i.destroy() self.rellenar(allitem()) def refreshp(self): for i in self.marco: i.pack_forget() i.destroy() self.rellenarp(allprodu()) def reportp(self): res = messagebox.askquestion( "Confirmación", "¿Estas seguro que deseas guardar un reporte de los elementos seleccionados?" ) if res == "yes": self.prodreport = [[ "ID", "Nombre", "disponibilidad", "Clasificación", "Precio(Bs.S)" ]] for p in self.reportdata: self.prodreport.append(p) now = datetime.now() titulo = "Reporte de productos " + str(date.today()) + " " + str( now.hour) + "-" + str(now.minute) + "-" + str( now.second) + ".pdf" export_to_pdf(4, titulo, "Clientes", self.prodreport) messagebox.showinfo("Operación Exitosa", "El reporte se ha generado exitosamente") def reporti(self): res = messagebox.askquestion( "Confirmación", "¿Estas seguro que deseas guardar un reporte de los elementos seleccionados?" ) if res == "yes": self.itreport = [[ "Código", "Producto", "Cant registrada", "Estado", "F. registro", "F. expedición" ]] for p in self.reportdata: self.itreport.append(p) now = datetime.now() titulo = "Reporte de clientes " + str(date.today()) + " " + str( now.hour) + "-" + str(now.minute) + "-" + str( now.second) + ".pdf" export_to_pdf(4, titulo, "Clientes", self.itreport) messagebox.showinfo("Operación Exitosa", "El reporte se ha generado exitosamente")