def retirar(): if plz.get() != "" and matr.get() != "" and pin.get() != "": plaza = park_serv.search_plaza_by_name(parking, plz.get().upper()) tick = tick_serv.search_by_matricula(lista_tickets, matr.get().upper()) if plaza != None and tick != None and dinero.get() >= 0: ok = tick_serv.pagar_ticket(plz.get().upper(),parking,tick, dinero.get()) if ok: park_serv.retirar_vehiculo(matr.get().upper(),plz.get().upper(),int(pin.get()),parking,lista_tickets) ticket = tick boton1 = tk.Button(frame_tick, text="Descargar ticket", font=LARGE_FONT, command=lambda :infoTick(ticket)).pack(pady=20) tick_serv.save_file(lista_tickets) park_serv.save_file(parking) else: ticketInf.set("La cantidad insertada no es suficiente")
def calculo(err, sol): fecha1, fecha2, err = fechas(err) if not err: total, dinero = tick_serv.facturacion(lista_tickets, fecha1, fecha2) sol.set( f"Se han obtenido {dinero} € entre las dos fechas por el cobro de {total} tichets" )
def reservar(): res = "" tick = None if (v.get() == 1 or v.get() == 2 or v.get() == 3) and matr.get() != "": res, tick = park_serv.depositar_vehiculo(matr.get().upper(), v.get(), lista_tickets, parking) if tick != None: ticket = tick boton1 = tk.Button(frame_tick, text="Descargar ticket", font=LARGE_FONT, command=lambda: infoTick(ticket)).pack(pady=20) tick_serv.save_file(lista_tickets) park_serv.save_file(parking) else: ticketInf.set(res)
def depositar_vehiculo(matricula, tipo, lista_tick, parking): result = False if is_free_space(tipo, parking): result = True plaza = asignar_plaza(parking, tipo) vehiculo = Vehiculo(matricula) plaza.vehiculo = vehiculo ticket = Ticket(datetime.now(), matricula, plaza) ticket.pin = random.randrange(100000, 1000000) serv_tick.add(lista_tick, ticket) plaza.ocupado = True #serv_tick.pintar_ticket(ticket) if result: res = "Se ha finalizado el aparcado el vehículo sin problemas." return res, ticket else: res = "No se puede aparcar, no hay sitio." return res, None
def retirar_vehiculo(matricula, nombre_plaza, pin, parking, lista_tick): plaza = search_plaza_by_name(parking, nombre_plaza) if plaza != None: tick = serv_tick.search_by_matricula(lista_tick, matricula) if tick != None: if pin == tick.pin: tick.fechaSalida = datetime.now() plaza.ocupado = False plaza.vehiculo = None tick.plaza = plaza
def calculo(pago, fail, precio_mostrar): if plz.get() != "" and matr.get() != "" and pin.get() != "": plaza = park_serv.search_plaza_by_name(parking, plz.get().upper()) tick = tick_serv.search_by_matricula(lista_tickets, matr.get().upper()) if plaza != None and tick != None and tick.pin == int(pin.get()): fail.set("") actual=datetime.now() min=(ceil((actual-tick.fechaEntrada).total_seconds()/60)) precio = min * plaza.coste precio_mostrar.set("El coste es:(€)\n"+str(round(precio,2))) else: fail.set("No se puede proceder con los datos aprotados, inténtelo de nuevo.") else: fail.set("No se puede proceder con los datos aprotados, inténtelo de nuevo.")
import tkinter as tk from tkcalendar import * from tkinter import ttk from datetime import datetime from math import ceil from tkinter import messagebox import servicio.ParkingService as park_serv import servicio.AbonoService as abon_serv import servicio.ClienteService as clin_serv import servicio.TicketService as tick_serv import servicio.FacturaService as fact_serv from modelo.Parking import * from modelo.Cliente import * from modelo.Vehiculo import * lista_abonos = abon_serv.load_file() lista_tickets = tick_serv.load_file() lista_facturas = fact_serv.load_file() parking = park_serv.load_file() import os import servicio.AbonoService as serv_abo LARGE_FONT = ("Verdana", 10) NEGRITA = ("Verdana", 12, "bold") # Configuración de la raíz root = tk.Tk() root.geometry("900x800") def redirecc(root, nombre): root.destroy() os.system(f'python controlador/{nombre}.py')