def apagar(self): """Cierra la sesion y apaga la maquina""" user = user_session.get_user() controlador.insert_log(user, 'apagar', UNIDAD, 'Control') user_session.close() controlador.update_all_activos() os.system("/sbin/shutdown -h now")
def cancel(self): """Vuelve a una pantalla anterior""" self.stop.set() self.cola_stop.put(True) if self.total_parcial: total = self.total_parcial log = controlador.insert_log(self.user, 'cargar', UNIDAD, str(self.total_parcial)) controlador.update_saldo(self.user, self.total_parcial, 0) self.update_datos() if impresora.check_status() == 1: log = str(log) nom = self.data['nombre'].decode('utf8') dni = self.data['dni'].decode('utf8') cat = self.data['categoria'].decode('utf8') fac = self.data['facultad'].decode('utf8') fecha = str(int(time())) pco = total code = fecha + '0' * (10 - len(log)) + log msj = u"Gracias por usar el Comedor Universitario" sdo = self.user['saldo'] print_thread = Thread(target=impresora.imprimir_ticket_carga, args=(nom, dni, fac, cat, code, UNIDAD, log, msj, pco, sdo)) print_thread.start() id_log = controlador.insert_log(self.user, 'cancelar', UNIDAD) controlador.cancelar_tickets(self.reserva) self.manager.current = 'compra_1' self.update_ingreso("", True) self.manager.remove_widget(self.manager.get_screen('compra_2'))
def comprar_tickets(self, excedente): """ Realiza la inserción de los tickets en la db y cambia a la siguiente pantalla. """ if self.bandera: id_log = controlador.insert_log(self.user, 'comprar', UNIDAD) if id_log: self.bandera = False controlador.comprar_tickets(self.reserva, id_log) controlador.update_saldo(self.user, self.saldo, 1) if excedente: controlador.insert_log(self.user, 'cargar', UNIDAD, str(excedente)) controlador.update_saldo(self.user, excedente, 0) self.update_datos() self.imprimir_todos() self.manager.add_widget( ConfirmacionScreen(len(self.reserva), name='confirmacion')) self.manager.current = 'confirmacion' self.manager.remove_widget(self.manager.get_screen('compra_1')) self.manager.remove_widget(self.manager.get_screen('compra_2')) self.total_parcial = 0 else: self.cancel()
def print_ticket_grupal(self, cant, delegacion, cat, date, recibo): """ Imprime el ticket grupal para el día(date), para la delegación dada y la cantidad solicitada. """ user = user_session.get_user() id_log = controlador.insert_log(user, 'comprar_grupal', UNIDAD) ticket_grupal = controlador.comprar_ticket_grupal( cant, delegacion, cat, date, recibo, id_log ) row = controlador.get_ticket_grupal_by_id(ticket_grupal) id_log = controlador.insert_log(user, 'imprimir_grupal', UNIDAD) controlador.insert_ticket_log(ticket_grupal, id_log) print_thread = Thread( target=impresora.imprimir_ticket_grupal, args=( user['nombre'], user['dni'], row['id'], UNIDAD, row['fecha'].strftime('%d/%m/%Y'), row['cantidad'], row['barcode'], row['importe'], row['delegacion'], row['recibo'] ) ) print_thread.start() Window.release_all_keyboards() self.cancel()
def imprimir(self): """imprime un ticket de control""" print_status = impresora.check_status() papel_disponible = controlador.get_papel_disponible(UNIDAD) if ((print_status == 1) or (print_status == 2 and papel_disponible >= 1)): user = user_session.get_user() controlador.insert_log(user, 'imprimir', UNIDAD, 'Ticket de prueba') fecha = "dd/mm/aaaa" code = str(int(time())) + "0000000000" nom = user['nombre'] dni = user['dni'] cat = u"control" fac = u"Secretaría de Bienestar" msj = u"Ticket NO VALIDO" sdo = 0 ticket = "XXX" print_thread = Thread(target=impresora.imprimir_ticket_alumno, args=(nom, dni, fac, cat, code, UNIDAD, ticket, fecha, msj, sdo)) print_thread.start() controlador.update_papel_disponible(UNIDAD, 0, 1) elif print_status == 2: mensaje = u"No hay papel" WarningPopup(mensaje).open() else: mensaje = u"Impresora desconectada" WarningPopup(mensaje).open()
def comprar_tickets(self, excedente): """ Realiza la inserción de los tickets en la db y cambia a la siguiente pantalla. """ if self.bandera: id_log = controlador.insert_log(self.user, 'comprar', UNIDAD) if id_log: self.bandera = False controlador.comprar_tickets(self.reserva, id_log) controlador.update_saldo(self.user, self.saldo, 1) if excedente: controlador.insert_log( self.user, 'cargar', UNIDAD, str(excedente) ) controlador.update_saldo(self.user, excedente, 0) self.update_datos() self.imprimir_todos() self.manager.add_widget( ConfirmacionScreen( len(self.reserva), name='confirmacion' ) ) self.manager.current = 'confirmacion' self.manager.remove_widget(self.manager.get_screen('compra_1')) self.manager.remove_widget(self.manager.get_screen('compra_2')) self.total_parcial = 0 else: self.cancel()
def cancel(self): """Vuelve a una pantalla anterior""" self.stop.set() self.cola_stop.put(True) if self.total_parcial: total = self.total_parcial log = controlador.insert_log( self.user, 'cargar', UNIDAD, str(self.total_parcial) ) controlador.update_saldo(self.user, self.total_parcial, 0) self.update_datos() if impresora.check_status() == 1: log = str(log) nom = self.data['nombre'].decode('utf8') dni = self.data['dni'].decode('utf8') cat = self.data['categoria'].decode('utf8') fac = self.data['facultad'].decode('utf8') fecha = str(int(time())) pco = total code = fecha + '0' * (10 - len(log)) + log msj = u"Gracias por usar el Comedor Universitario" sdo = self.user['saldo'] print_thread = Thread( target=impresora.imprimir_ticket_carga, args=(nom, dni, fac, cat, code, UNIDAD, log, msj, pco, sdo) ) print_thread.start() id_log = controlador.insert_log(self.user, 'cancelar', UNIDAD) controlador.cancelar_tickets(self.reserva) self.manager.current = 'compra_1' self.update_ingreso("", True) self.manager.remove_widget(self.manager.get_screen('compra_2'))
def update_profile(self): """Actualiza el perfil con los cambios realizados por el usuario""" self.updata = {} self.updata['email'] = self.ids.email.text self.updata['id_provincia'] = self.provincias[self.ids.provincia.text] controlador.update_usuario(self.user, self.updata) controlador.insert_log(self.user, 'perfil', UNIDAD) user_session.update(controlador.get_usuario(self.data['dni'])) self.cargar_datos()
def iniciar(self): """Accede a la pantalla principal del sistema""" user = user_session.get_user() hora = controlador.get_hora_inicio(UNIDAD) retiro = controlador.get_log(UNIDAD, 'retiro') if not hora: controlador.insert_log(user, 'iniciar', UNIDAD, '1er control') else: controlador.insert_log(user, 'iniciar', UNIDAD, 'control') user_session.close() self.manager.current = 'splash'
def billete_trabado(self): """ Registra los billetes trabados. """ self.update_ingreso("jam", True) controlador.insert_log(self.user, 'jam', UNIDAD) self.stop.set() self.cola_stop.put(True) user = user_session.get_user() controlador.insert_log(user, 'salir', UNIDAD, 'Billete trabado - bloqueo') controlador.update_activo(user, 0) user_session.close() sleep(2) self.bloquear()
def logout(self): """Cierra la sesion, libera las pantallas que no se van a usar y vuelve a la pantalla principal""" user = user_session.get_user() controlador.insert_log(user, 'salir', UNIDAD) controlador.update_activo(user, 0) user_session.close() if self.manager.has_screen('opciones'): self.manager.remove_widget(self.manager.get_screen('opciones')) if self.manager.has_screen('compra_1'): self.manager.remove_widget(self.manager.get_screen('compra_1')) if self.manager.has_screen('compra_2'): self.manager.remove_widget(self.manager.get_screen('compra_2')) self.manager.current = 'splash'
def validar(self): """Valida las entradas y chequea en la base de datos por el par dni - password""" if self.ids.dni.text: if not self.ids.dni.text.isdigit(): self.ids.dni.text = "" self.ids.dni.focus = True mensaje = u"Su DNI solo puede contenter números" WarningPopup(mensaje).open() elif len(self.ids.dni.text) >= 10: mensaje = u"\rSu DNI no puede tener\r\n más de 10 caracteres." self.ids.dni.focus = True WarningPopup(mensaje).open() elif not self.ids.passw.text: mensaje = u"Su PASSWORD no puede estar vacío" self.ids.passw.focus = True WarningPopup(mensaje).open() elif len(self.ids.passw.text) >= 64: mensaje = u"\rSu PASSWORD no puede tener\r\n" mensaje += u"más de 64 caracteres." self.ids.passw.focus = True WarningPopup(mensaje).open() else: dni = self.ids.dni.text password = self.ids.passw.text login = self.validar_login(dni, password) if login: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log( user, 'ingresar', UNIDAD, 'control - desbloqueo' ) self.manager.current = 'menu_control' self.manager.remove_widget( self.manager.get_screen('bloqueo') ) else: self.ids.passw.text = "" mensaje = u"DNI o PASSWORD incorrecto" WarningPopup(mensaje).open() else: mensaje = u"Su DNI no puede estar vacío" self.ids.dni.focus = True WarningPopup(mensaje).open()
def print_ticket_cierre(self, unidad, date): """ Imprime el ticket de cierre de la unidad y del día(date) dado """ total, bills = controlador.get_total(unidad, date) user = user_session.get_user() desc = 'Control - Cierre de la maquina %d del dia %s' % ( unidad, date.strftime('%d/%m/%Y')) id_log = controlador.insert_log(user, 'retiro', unidad, desc) id_ticket = controlador.get_id_ticket_cierre(unidad, date) if not id_ticket: id_ticket = controlador.insert_ticket_cierre(id_log, total, unidad) ticket = controlador.get_ticket_cierre(id_ticket) hora = controlador.get_hora_inicio(unidad, date) print_status = impresora.check_status() papel_disponible = controlador.get_papel_disponible(UNIDAD) if ((print_status == 1) or (print_status == 2 and papel_disponible >= 2)): print_thread = Thread(target=impresora.imprimir_ticket_cierre, args=(user['nombre'], id_ticket, unidad, hora, bills, total, ticket['barcode'], date.strftime('%d/%m/%Y'))) print_thread.start() controlador.update_papel_disponible(UNIDAD, 0, 2) elif print_status == 2: mensaje = u"No hay papel" WarningPopup(mensaje).open() else: mensaje = u"Impresora desconectada" WarningPopup(mensaje).open()
def imprimir_todos(self): """ Imprime todos los tickets que se hayan comprado. """ id_log = controlador.insert_log(self.user, 'imprimir', UNIDAD) ticket_list = [] for ticket, id_dia in self.reserva: row = None ticket_data = {} row = controlador.get_ticket_by_id(ticket) if row: id_ticket = row['id'] ticket_data['fecha'] = row['fecha'].strftime('%d/%m/%Y') ticket_data['code'] = row['barcode'] ticket_data['nombre'] = self.data['nombre'].decode('utf8') ticket_data['dni'] = self.data['dni'].decode('utf8') categoria = self.data['categoria'].decode('utf8') ticket_data['categoria'] = categoria ticket_data['facultad'] = self.data['facultad'].decode('utf8') ticket_data['unidad'] = UNIDAD mensaje = u"Gracias por usar el Comedor Universitario" ticket_data['mensaje'] = mensaje ticket_data['ticket'] = str(id_ticket) ticket_data['saldo'] = self.user['saldo'] controlador.insert_ticket_log(id_ticket, id_log) ticket_list.append(ticket_data) controlador.update_papel_disponible(UNIDAD, 0, len(ticket_list)) print_thread = Thread( target=impresora.imprimir_tickets_alumno, args=ticket_list ) print_thread.start()
def __init__(self, dias, saldo, **kwargs): """Pantalla para comprar usando efectivo.""" self.user = user_session.get_user() id_log = controlador.insert_log(self.user, 'reservar', UNIDAD) self.reserva, full, state = controlador.reservar_tickets( self.user, dias, id_log, UNIDAD ) self.data = {} self.saldo = saldo self.stop = Event() importe = controlador.get_categoria_importe(self.user['id_categoria']) self.faltante = (len(self.reserva) * importe) - saldo self.total_parcial = 0 self.bandera = True self.cargar_datos() self.cargar_threads() if state: if full: for dia in full: mensaje = "\rNo se pudo reservar: \r\n\t%s" % ( dia.strftime('%d/%m/%Y')) WarningPopup(mensaje).open() else: mensaje = "\rHubo un error al reservar \r\nIntente nuevamente" WarningPopup(mensaje).open() self.cancel() super(Compra2Screen, self).__init__(**kwargs)
def cancel(self): """Vuelve a una pantalla anterior""" if self.total: print_status = impresora.check_status() papel_disponible = controlador.get_papel_disponible(UNIDAD) if ((print_status == 1) or (print_status == 2 and papel_disponible >= 1)): log = controlador.insert_log(self.user, 'cargar', UNIDAD, str(self.total)) log = str(log) nombre = self.data['nombre'].decode('utf8') dni = self.data['dni'].decode('utf8') categoria = self.data['categoria'].decode('utf8') facultad = self.data['facultad'].decode('utf8') fecha = str(int(time())) total = self.total code = fecha + '0' * (10 - len(log)) + log mensaje = u"Gracias por usar el Comedor Universitario" saldo = self.user['saldo'] print_thread = Thread(target=impresora.imprimir_ticket_carga, args=(nombre, dni, facultad, categoria, code, UNIDAD, log, mensaje, total, saldo)) print_thread.start() controlador.update_papel_disponible(UNIDAD, 0, 1) self.stop.set() self.cola_stop.put(True) self.manager.current = 'menu' self.manager.remove_widget(self.manager.get_screen('carga'))
def __init__(self, dias, saldo, **kwargs): """Pantalla para comprar usando efectivo.""" self.user = user_session.get_user() id_log = controlador.insert_log(self.user, 'reservar', UNIDAD) self.reserva, full, state = controlador.reservar_tickets( self.user, dias, id_log, UNIDAD) self.data = {} self.saldo = saldo self.stop = Event() importe = controlador.get_categoria_importe(self.user['id_categoria']) self.faltante = (len(self.reserva) * importe) - saldo self.total_parcial = 0 self.bandera = True self.cargar_datos() self.cargar_threads() if state: if full: for dia in full: mensaje = "\rNo se pudo reservar: \r\n\t%s" % ( dia.strftime('%d/%m/%Y')) WarningPopup(mensaje).open() else: mensaje = "\rHubo un error al reservar \r\nIntente nuevamente" WarningPopup(mensaje).open() self.cancel() super(Compra2Screen, self).__init__(**kwargs)
def imprimir_todos(self): """ Imprime todos los tickets que se hayan comprado. """ id_log = controlador.insert_log(self.user, 'imprimir', UNIDAD) ticket_list = [] for ticket, id_dia in self.reserva: row = None ticket_data = {} row = controlador.get_ticket_by_id(ticket) if row: id_ticket = row['id'] ticket_data['fecha'] = row['fecha'].strftime('%d/%m/%Y') ticket_data['code'] = row['barcode'] ticket_data['nombre'] = self.data['nombre'].decode('utf8') ticket_data['dni'] = self.data['dni'].decode('utf8') categoria = self.data['categoria'].decode('utf8') ticket_data['categoria'] = categoria ticket_data['facultad'] = self.data['facultad'].decode('utf8') ticket_data['unidad'] = UNIDAD mensaje = u"Gracias por usar el Comedor Universitario" ticket_data['mensaje'] = mensaje ticket_data['ticket'] = str(id_ticket) ticket_data['saldo'] = self.user['saldo'] controlador.insert_ticket_log(id_ticket, id_log) ticket_list.append(ticket_data) controlador.update_papel_disponible(UNIDAD, 0, len(ticket_list)) print_thread = Thread(target=impresora.imprimir_tickets_alumno, args=ticket_list) print_thread.start()
def billete_trabado(self): """ Registra los billetes trabados. """ self.update_ingreso("jam", True) controlador.insert_log(self.user, 'jam', UNIDAD) self.stop.set() self.cola_stop.put(True) user = user_session.get_user() controlador.insert_log( user, 'salir', UNIDAD, 'Billete trabado - bloqueo' ) controlador.update_activo(user, 0) user_session.close() sleep(2) self.bloquear()
def imprimir(self): """imprime un ticket de control""" print_status = impresora.check_status() papel_disponible = controlador.get_papel_disponible(UNIDAD) if ((print_status == 1) or (print_status == 2 and papel_disponible >= 1) ): user = user_session.get_user() controlador.insert_log( user, 'imprimir', UNIDAD, 'Ticket de prueba' ) fecha = "dd/mm/aaaa" code = str(int(time())) + "0000000000" nom = user['nombre'] dni = user['dni'] cat = u"control" fac = u"Secretaría de Bienestar" msj = u"Ticket NO VALIDO" sdo = 0 ticket = "XXX" print_thread = Thread( target=impresora.imprimir_ticket_alumno, args=( nom, dni, fac, cat, code, UNIDAD, ticket, fecha, msj, sdo ) ) print_thread.start() controlador.update_papel_disponible(UNIDAD, 0, 1) elif print_status == 2: mensaje = u"No hay papel" WarningPopup(mensaje).open() else: mensaje = u"Impresora desconectada" WarningPopup(mensaje).open()
def validar(self): """Valida las entradas y llama al metodo que cambia el password""" if not self.ids.old_pass.text: mensaje = u"Debe ingresar el password actual" self.ids.old_pass.focus = True WarningPopup(mensaje).open() elif not self.ids.new_pass.text: mensaje = u"Debe ingresar el password nuevo" self.ids.new_pass.focus = True WarningPopup(mensaje).open() elif not self.ids.re_new_pass.text: mensaje = u"Debe repetir el password nuevo" self.ids.re_new_pass.focus = True WarningPopup(mensaje).open() else: user = user_session.get_user() response = self.cambiar_pass(user) if response == 1: mensaje = u"Su password se actualizo correctamente" WarningPopup(mensaje).open() self.clear() self.manager.current = self.scr_accept if self.scr_accept == 'profile': controlador.insert_log(user, 'perfil', UNIDAD) user_session.close() self.manager.remove_widget(self.manager.get_screen('pass')) elif response == 2: msje = u"\rEL password actual\r\n no coincide con el antiguo." WarningPopup(msje).open() self.clear() elif response == 3: mensaje = u"\rEl password actual\r\n no debe superar los 15" mensaje += u" caracteres\r\n y no puede contener" mensaje += u" símbolos extraños." WarningPopup(mensaje).open() self.clear() else: mensaje = u"El password nuevo no coincide" WarningPopup(mensaje).open() self.clear()
def cancel(self): """Vuelve a una pantalla anterior""" if self.total: print_status = impresora.check_status() papel_disponible = controlador.get_papel_disponible(UNIDAD) if ((print_status == 1) or (print_status == 2 and papel_disponible >= 1) ): log = controlador.insert_log( self.user, 'cargar', UNIDAD, str(self.total) ) log = str(log) nombre = self.data['nombre'].decode('utf8') dni = self.data['dni'].decode('utf8') categoria = self.data['categoria'].decode('utf8') facultad = self.data['facultad'].decode('utf8') fecha = str(int(time())) total = self.total code = fecha + '0' * (10 - len(log)) + log mensaje = u"Gracias por usar el Comedor Universitario" saldo = self.user['saldo'] print_thread = Thread( target=impresora.imprimir_ticket_carga, args=( nombre, dni, facultad, categoria, code, UNIDAD, log, mensaje, total, saldo ) ) print_thread.start() controlador.update_papel_disponible(UNIDAD, 0, 1) self.stop.set() self.cola_stop.put(True) self.manager.current = 'menu' self.manager.remove_widget(self.manager.get_screen('carga'))
def print_ticket_cierre(self, unidad, date): """ Imprime el ticket de cierre de la unidad y del día(date) dado """ total, bills = controlador.get_total(unidad, date) user = user_session.get_user() desc = 'Control - Cierre de la maquina %d del dia %s' % ( unidad, date.strftime('%d/%m/%Y') ) id_log = controlador.insert_log(user, 'retiro', unidad, desc) id_ticket = controlador.get_id_ticket_cierre(unidad, date) if not id_ticket: id_ticket = controlador.insert_ticket_cierre( id_log, total, unidad ) ticket = controlador.get_ticket_cierre(id_ticket) hora = controlador.get_hora_inicio(unidad, date) print_status = impresora.check_status() papel_disponible = controlador.get_papel_disponible(UNIDAD) if ((print_status == 1) or (print_status == 2 and papel_disponible >= 2) ): print_thread = Thread( target=impresora.imprimir_ticket_cierre, args=( user['nombre'], id_ticket, unidad, hora, bills, total, ticket['barcode'], date.strftime('%d/%m/%Y') ) ) print_thread.start() controlador.update_papel_disponible(UNIDAD, 0, 2) elif print_status == 2: mensaje = u"No hay papel" WarningPopup(mensaje).open() else: mensaje = u"Impresora desconectada" WarningPopup(mensaje).open()
def __init__(self, dias, titulo, **kwargs): """Pantalla para confirmar e imprimir los tickets""" self.user = user_session.get_user() id_log = controlador.insert_log(self.user, 'reservar', UNIDAD) self.reserva, full, state = controlador.reservar_tickets( self.user, dias, id_log, UNIDAD) if state: if full: for dia in full: mensaje = "\rNo se pudo reservar: \r\n\t%s" % ( dia.strftime('%d/%m/%Y')) WarningPopup(mensaje).open() else: mensaje = "\rHubo un error al reservar \r\nIntente nuevamente" WarningPopup(mensaje).open() self.cancel() self.bandera = True self.data = {} self.dias = dias self.titulo = titulo self.cargar_datos() super(Compra3Screen, self).__init__(**kwargs)
def __init__(self, dias, titulo, **kwargs): """Pantalla para confirmar e imprimir los tickets""" self.user = user_session.get_user() id_log = controlador.insert_log(self.user, 'reservar', UNIDAD) self.reserva, full, state = controlador.reservar_tickets( self.user, dias, id_log, UNIDAD ) if state: if full: for dia in full: mensaje = "\rNo se pudo reservar: \r\n\t%s" % ( dia.strftime('%d/%m/%Y')) WarningPopup(mensaje).open() else: mensaje = "\rHubo un error al reservar \r\nIntente nuevamente" WarningPopup(mensaje).open() self.cancel() self.bandera = True self.data = {} self.dias = dias self.titulo = titulo self.cargar_datos() super(Compra3Screen, self).__init__(**kwargs)
from src.screens.control import ControlScreen # Kivy related imports from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, WipeTransition class TicketApp(App): def build(self): # Cargamos el archivo con la interfaz Builder.load_file('kv/ticket.kv') # Creamos el screen manager con la WipeTransition sm = ScreenManager(transition=WipeTransition()) # Agregamos las pantallas fijas del sistema sm.add_widget(SplashScreen(name='splash')) sm.add_widget(MenuScreen(name='menu')) sm.add_widget(FormScreen(name='formulario')) sm.add_widget(LoginScreen(name='login')) sm.add_widget(AyudaScreen(name='ayuda')) sm.add_widget(ControlScreen(name='menu_control')) return sm if __name__ == '__main__': controlador.insert_log({'dni': '222'}, 'iniciar', UNIDAD, 'Pre Inicio') init_thread = Thread(target=billetes.init) init_thread.daemon = True init_thread.start() TicketApp().run()
from src.screens.ayuda import AyudaScreen from src.screens.control import ControlScreen # Kivy related imports from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import ScreenManager, WipeTransition class TicketApp(App): def build(self): # Cargamos el archivo con la interfaz Builder.load_file('kv/ticket.kv') # Creamos el screen manager con la WipeTransition sm = ScreenManager(transition=WipeTransition()) # Agregamos las pantallas fijas del sistema sm.add_widget(SplashScreen(name='splash')) sm.add_widget(MenuScreen(name='menu')) sm.add_widget(FormScreen(name='formulario')) sm.add_widget(LoginScreen(name='login')) sm.add_widget(AyudaScreen(name='ayuda')) sm.add_widget(ControlScreen(name='menu_control')) return sm if __name__ == '__main__': controlador.insert_log({'dni': '222'}, 'iniciar', UNIDAD, 'Pre Inicio') init_thread = Thread(target=billetes.init) init_thread.daemon = True init_thread.start() TicketApp().run()
def retirar(self): """ Controla que se pueda hacer un ticket de cierre para poder retirar el dinero. """ user = user_session.get_user() retiro = controlador.get_log(UNIDAD, 'retiro') hora = controlador.get_hora_inicio(UNIDAD) if not retiro and hora: total, bills = controlador.get_total(UNIDAD) if total: desc = 'Control - 1er Cierre' id_log = controlador.insert_log(user, 'retiro', UNIDAD, desc) id_ticket = controlador.insert_ticket_cierre( id_log, total, UNIDAD) ticket = controlador.get_ticket_cierre(id_ticket) hora = controlador.get_hora_inicio(UNIDAD) print_status = impresora.check_status() papel_disponible = controlador.get_papel_disponible(UNIDAD) if ((print_status == 1) or (print_status == 2 and papel_disponible >= 2)): print_thread = Thread( target=impresora.imprimir_ticket_cierre, args=(user['nombre'], id_ticket, UNIDAD, hora, bills, total, ticket['barcode'])) print_thread.start() elif print_status == 2: mensaje = u"No hay papel" WarningPopup(mensaje).open() else: mensaje = u"Impresora desconectada" WarningPopup(mensaje).open() else: mensaje = u"No hay registros para hoy" WarningPopup(mensaje).open() elif retiro and hora: total, bills = controlador.get_total(UNIDAD) if total: desc = 'Control - Cierre' id_log = controlador.insert_log(user, 'retiro', UNIDAD, desc) total, bills = controlador.get_total(UNIDAD) id_ticket = controlador.get_id_ticket_cierre(UNIDAD) if not id_ticket: id_ticket = controlador.insert_ticket_cierre( id_log, total, UNIDAD) ticket = controlador.get_ticket_cierre(id_ticket) hora = controlador.get_hora_inicio(UNIDAD) print_status = impresora.check_status() papel_disponible = controlador.get_papel_disponible(UNIDAD) if ((print_status == 1) or (print_status == 2 and papel_disponible >= 2)): print_thread = Thread( target=impresora.imprimir_ticket_cierre, args=(user['nombre'], id_ticket, UNIDAD, hora, bills, total, ticket['barcode'])) print_thread.start() controlador.update_papel_disponible(UNIDAD, 0, 2) elif print_status == 2: mensaje = u"No hay papel" WarningPopup(mensaje).open() else: mensaje = u"Impresora desconectada" WarningPopup(mensaje).open() else: mensaje = u"No hay rergistros para hoy" WarningPopup(mensaje).open() else: msje = u"\rNo puede hacer cierre\r\n sin iniciar antes el sistema." WarningPopup(msje).open()
def validar(self): """Valida las entradas y chequea en la base de datos por el par dni - password""" if self.ids.dni.text: if not self.ids.dni.text.isdigit(): self.ids.dni.text = "" self.ids.dni.focus = True mensaje = u"Su DNI solo puede contenter números" WarningPopup(mensaje).open() elif len(self.ids.dni.text) >= 10: mensaje = u"\rSu DNI no puede exceder\r\n los 10 caracteres." self.ids.dni.focus = True WarningPopup(mensaje).open() elif not self.ids.passw.text: mensaje = u"Su PASSWORD no puede estar vacío" self.ids.passw.focus = True WarningPopup(mensaje).open() elif len(self.ids.passw.text) >= 64: msje = u"\rSu PASSWORD no puede exceder\r\n los 64 caracteres." self.ids.passw.focus = True WarningPopup(msje).open() else: dni = self.ids.dni.text password = self.ids.passw.text login = self.validar_login(dni, password) if login: if login == 2: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log(user, 'ingresar', UNIDAD) controlador.update_activo(user, 1) self.manager.current = 'menu' elif login == 1: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log(user, 'ingresar', UNIDAD) self.manager.add_widget( PasswordScreen('splash', 'splash', 'pass') ) self.manager.current = 'pass' elif login == 6: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log( user, 'ingresar', UNIDAD, 'control' ) self.manager.current = 'menu_control' elif login == 5: self.clear() msje = u"\rYa has iniciado sesión\r\n en otra maquina." WarningPopup(msje).open() else: self.clear() mensaje = u"\rSu cuenta esta bloqueada.\r\n Dirijase" mensaje += u" a la Administración \r\n del Comedor" mensaje += u" Universitario." WarningPopup(mensaje).open() else: self.ids.passw.text = "" mensaje = u"DNI o PASSWORD incorrecto" WarningPopup(mensaje).open() else: mensaje = u"Su DNI no puede estar vacío" self.ids.dni.focus = True WarningPopup(mensaje).open()
def validar(self): """Valida las entradas y chequea en la base de datos por el par dni - password""" if self.ids.dni.text: if not self.ids.dni.text.isdigit(): self.ids.dni.text = "" self.ids.dni.focus = True mensaje = u"Su DNI solo puede contenter números" WarningPopup(mensaje).open() elif len(self.ids.dni.text) >= 10: mensaje = u"\rSu DNI no puede exceder\r\n los 10 caracteres." self.ids.dni.focus = True WarningPopup(mensaje).open() elif not self.ids.passw.text: mensaje = u"Su PASSWORD no puede estar vacío" self.ids.passw.focus = True WarningPopup(mensaje).open() elif len(self.ids.passw.text) >= 64: msje = u"\rSu PASSWORD no puede exceder\r\n los 64 caracteres." self.ids.passw.focus = True WarningPopup(msje).open() else: dni = self.ids.dni.text password = self.ids.passw.text login = self.validar_login(dni, password) if login: if login == 2: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log(user, 'ingresar', UNIDAD) controlador.update_activo(user, 1) self.manager.current = 'menu' elif login == 1: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log(user, 'ingresar', UNIDAD) self.manager.add_widget( PasswordScreen('splash', 'splash', 'pass')) self.manager.current = 'pass' elif login == 6: self.clear() user_session.init(controlador.get_usuario(dni), time()) user = user_session.get_user() controlador.insert_log(user, 'ingresar', UNIDAD, 'control') self.manager.current = 'menu_control' elif login == 5: self.clear() msje = u"\rYa has iniciado sesión\r\n en otra maquina." WarningPopup(msje).open() else: self.clear() mensaje = u"\rSu cuenta esta bloqueada.\r\n Dirijase" mensaje += u" a la Administración \r\n del Comedor" mensaje += u" Universitario." WarningPopup(mensaje).open() else: self.ids.passw.text = "" mensaje = u"DNI o PASSWORD incorrecto" WarningPopup(mensaje).open() else: mensaje = u"Su DNI no puede estar vacío" self.ids.dni.focus = True WarningPopup(mensaje).open()
def retirar(self): """ Controla que se pueda hacer un ticket de cierre para poder retirar el dinero. """ user = user_session.get_user() retiro = controlador.get_log(UNIDAD, 'retiro') hora = controlador.get_hora_inicio(UNIDAD) if not retiro and hora: total, bills = controlador.get_total(UNIDAD) if total: desc = 'Control - 1er Cierre' id_log = controlador.insert_log(user, 'retiro', UNIDAD, desc) id_ticket = controlador.insert_ticket_cierre( id_log, total, UNIDAD ) ticket = controlador.get_ticket_cierre(id_ticket) hora = controlador.get_hora_inicio(UNIDAD) print_status = impresora.check_status() papel_disponible = controlador.get_papel_disponible(UNIDAD) if ((print_status == 1) or (print_status == 2 and papel_disponible >= 2) ): print_thread = Thread( target=impresora.imprimir_ticket_cierre, args=( user['nombre'], id_ticket, UNIDAD, hora, bills, total, ticket['barcode'] ) ) print_thread.start() elif print_status == 2: mensaje = u"No hay papel" WarningPopup(mensaje).open() else: mensaje = u"Impresora desconectada" WarningPopup(mensaje).open() else: mensaje = u"No hay registros para hoy" WarningPopup(mensaje).open() elif retiro and hora: total, bills = controlador.get_total(UNIDAD) if total: desc = 'Control - Cierre' id_log = controlador.insert_log(user, 'retiro', UNIDAD, desc) total, bills = controlador.get_total(UNIDAD) id_ticket = controlador.get_id_ticket_cierre(UNIDAD) if not id_ticket: id_ticket = controlador.insert_ticket_cierre( id_log, total, UNIDAD ) ticket = controlador.get_ticket_cierre(id_ticket) hora = controlador.get_hora_inicio(UNIDAD) print_status = impresora.check_status() papel_disponible = controlador.get_papel_disponible(UNIDAD) if ((print_status == 1) or (print_status == 2 and papel_disponible >= 2) ): print_thread = Thread( target=impresora.imprimir_ticket_cierre, args=( user['nombre'], id_ticket, UNIDAD, hora, bills, total, ticket['barcode'] ) ) print_thread.start() controlador.update_papel_disponible(UNIDAD, 0, 2) elif print_status == 2: mensaje = u"No hay papel" WarningPopup(mensaje).open() else: mensaje = u"Impresora desconectada" WarningPopup(mensaje).open() else: mensaje = u"No hay rergistros para hoy" WarningPopup(mensaje).open() else: msje = u"\rNo puede hacer cierre\r\n sin iniciar antes el sistema." WarningPopup(msje).open()