Esempio n. 1
0
 def __init__(self):
     self.lista_clientes = ListaClientes()
     self.lista_trabajos = ListaTrabajos()
     self.opciones = {
         "1": self.mostrar_clientes,
         "2": self.nuevo_cliente,
         "3": self.eliminar_cliente,
         "4": self.modificar_cliente,
         "5": self.mostrar_trabajos,
         "6": self.nuevo_trabajo,
         "0": self.salir
     }
Esempio n. 2
0
    def modificar_corporativo(self):
        print("Modificar cliente Corporativo: ")
        id_cliente = int(input("Ingresa id de un Corporativo: "))
        obj_cliente = self.rc.get_one_corporativo(id_cliente)
        print(obj_cliente)
        opcion = int(
            input(""""Elige una opcion para modificar: 
                            1. Nombre empresa
                            2. Nombre contacto
                            3. Teléfono de contacto
                            4. Telefono
                            5. Mail
                            0. Salir
                            : """))
        if opcion == 1:
            nuevo_nombre_empresa = input(
                "Ingrese el nuevo NOMBRE DE LA EMPRESA:")
            obj_cliente.nombre_empresa = nuevo_nombre_empresa
            print("Nombre de empresa cambiado con exito.")

        elif opcion == 2:
            nuevo_nombre_contacto = input(
                "Ingrese el nuevo NOMBRE DE CONTACTO:")
            obj_cliente.nombre_contacto = nuevo_nombre_contacto
            print("Nombre de contacto cambiado con exito.")

        elif opcion == 3:
            nuevo_telefono_contacto = input(
                "Ingrese el nuevo TELEFONO DE CONTACTO: ")
            obj_cliente.telefono_contacto = nuevo_telefono_contacto
            print("Telefono de contacto cambiado con exito.")

        elif opcion == 4:
            nuevo_telefono = input("Ingrese el nuevo TELEFONO: ")
            obj_cliente.telefono = nuevo_telefono
            print("Telefono cambiado con exito.")

        elif opcion == 5:
            nuevo_mail = input("Ingrese un nuevo MAIL: ")
            obj_cliente.mail = nuevo_mail
            print("Mail cambiado con exito.")

        elif opcion == 0:
            return

        self.rc.update(obj_cliente)
        self.lista_clientes = ListaClientes()
        print("Cambio Exitoso:")
        print(obj_cliente)
Esempio n. 3
0
 def __init__(self):
     self.lista_clientes = ListaClientes()
     self.repositoriocl = RepositorioClientes()
     self.lista = self.repositoriocl.get_all()
     self.repositoriotr = RepositorioTrabajos()
     self.LT = ListaTrabajos()
     self.opciones = {
         "1": self.mostrar_clientes,
         "2": self.nuevo_cliente,
         "3": self.modificar_cliente,
         "4": self.eliminar_cliente,
         "5": self.carga_trabajo,
         "6": self.modificar_trabajo,
         "7": self.mostrar_trabajos,
         "8": self.HistorialTrabajosCl,
         "0": self.salir
     }
Esempio n. 4
0
 def __init__(self):
     self.repotrabajo = RepositorioTrabajos()
     self.lista_clientes = ListaClientes()
     self.recl = RepositorioClientes()
     self.repo = Repositorio()
     self.listaT = ListaTrabajos()
     self.opciones= {
         "1": self.mostrar_clientes,
         "2": self.nuevo_cliente,
         "3": self.actualizar_datos,
         "4": self.eliminar_cliente,
         "5": self.nuevo_trabajo,
         "6": self.mostrar_trabajo,
         "7": self.modificar_trabajo,
         "8": self.eliminar_trabajo,
         "9": self.generar_informe,
         "0": self.salir
     }
Esempio n. 5
0
 def __init__(self):
     self.rc = RepositorioClientes()
     self.rt = RepositorioTrabajos()
     self.lista_trabajo = Lista_Trabajo()
     self.lista_clientes = ListaClientes()
     self.opciones = {
         "1": self.mostrar_clientes,
         "2": self.nuevo_cliente,
         "3": self.modificar_particular,
         "4": self.modificar_corporativo,
         "5": self.borrar_cliente,
         "6": self.mostrar_trabajos,
         "7": self.nuevo_trabajo,
         "8": self.trabajo_finalizado,
         "9": self.trabajo_retirado,
         "10": self.modificar_trabajo,
         "11": self.mostrar_no_retirados,
         "12": self.eliminar_trabajo,
         "0": self.salir
     }
Esempio n. 6
0
 def __init__(self):
     self.lista_clientes = ListaClientes()
     self.reposclientes = RepositorioClientes()
     self.listatrabajos = ListaTrabajos()
     self.repostrabajos = RepositorioTrabajos()
     self.opciones = {
         "1": self.mostrar_clientes,
         "2": self.mostrar_un_cliente,
         "3": self.nuevo_cliente,
         "4": self.actualizar_datos_clientes,
         "5": self.eliminar_clientes,
         "6": self.nuevo_trabajo,
         "7": self.mostrar_trabajo,
         "8": self.trabajo_finalizado,
         "9": self.trabajo_entregado,
         "10": self.actualizar_datos_trabajo,
         "11": self.eliminar_trabajo,
         "12": self.historial_trabajos,
         "13": self.mostrar_trabajos,
         "0": self.salir
     }
Esempio n. 7
0
    def nuevo_cliente(self):
        tipo = "A"
        while tipo not in ("C", "c", "P", "p"):
            tipo = input(
                "Ingrese el tipo de cliente: C:Corporativo / P:Particular")
        nombre = input("Ingrese el nombre: ")
        if tipo in ("C", "c"):
            contacto = input("Ingrese el nombre del contacto: ")
            tc = input("Ingrese el telefono del contacto: ")
        else:
            apellido = input("Ingrese el apellido: ")
        tel = input("Ingrese el telefono: ")
        mail = input("Ingrese el correo electronico: ")
        if tipo in ("C", "c"):
            c = ListaClientes().nuevo_cliente_corporativo(
                nombre, contacto, tc, tel, mail)
        else:
            c = ListaClientes().nuevo_cliente_particular(
                nombre, apellido, tel, mail)

        if c is None:
            print("Error al cargar el cliente")
        else:
            print("Cliente cargado correctamente")
Esempio n. 8
0
    def modificar_particular(self):
        print("Modificar cliente Particular: ")
        id_cliente = int(input("Ingresa id de un Particular: "))
        obj_cliente = self.rc.get_one_particular(id_cliente)
        print(obj_cliente)
        opcion = int(
            input(""""Elige una opcion para modificar: 
                            1. Nombre
                            2. Apellido
                            3. Teléfono
                            4. Mail
                            0. Salir
                            : """))
        if opcion == 1:
            nuevo_nombre = input("Ingrese el nuevo NOMBRE:")
            obj_cliente.nombre = nuevo_nombre
            print("Nombre cambiado con exito.")

        elif opcion == 2:
            nuevo_apellido = input("Ingrese el nuevo APELLIDO: ")
            obj_cliente.apellido = nuevo_apellido
            print("Apellido cambiado con exito.")

        elif opcion == 3:
            nuevo_telefono = input("Ingrese el nuevo TELEFONO: ")
            obj_cliente.telefono = nuevo_telefono
            print("Telefono cambiado con exito.")

        elif opcion == 4:
            nuevo_mail = input("Ingrese un nuevo MAIL: ")
            obj_cliente.mail = nuevo_mail
            print("Mail cambiado con exito.")
        elif opcion == 0:
            return
        self.rc.update(obj_cliente)
        self.lista_clientes = ListaClientes()
Esempio n. 9
0
class Menu:
    '''Mostrar un menú y responder a las opciones'''
    def __init__(self):
        self.repotrabajo = RepositorioTrabajos()
        self.lista_clientes = ListaClientes()
        self.recl = RepositorioClientes()
        self.repo = Repositorio()
        self.listaT = ListaTrabajos()
        self.opciones= {
            "1": self.mostrar_clientes,
            "2": self.nuevo_cliente,
            "3": self.actualizar_datos,
            "4": self.eliminar_cliente,
            "5": self.nuevo_trabajo,
            "6": self.mostrar_trabajo,
            "7": self.modificar_trabajo,
            "8": self.eliminar_trabajo,
            "9": self.generar_informe,
            "0": self.salir
        }

    def mostrar_menu(self):
        print("""
Menú del anotador:
1.  Mostrar todos los clientes 
2.  Ingresar los datos del nuevo cliente 
3.  Actualizar datos de un cliente 
4.  Eliminar cliente 
5.  Ingresar los datos del nuevo trabajo 
6.  Mostrar trabajos 
7.  Modificar datos de trabajo (registro de trabajo retirado/finalizado)  
8.  Eliminar trabajo 
9.  Mostrar trabajos de un cliente (Informe)
0.  Salir 
""")

    def ejecutar(self):
        '''Mostrar el menu y responder a las opciones.'''
        while True:
            self.mostrar_menu()
            opcion = input("Ingresar una opción: ")
            accion = self.opciones.get(opcion)
            if accion:
                accion()
            else:
                print("{0} no es una opción válida".format(opcion))

    def mostrar_clientes(self, lista = None):
        if lista == None:
            lista = self.lista_clientes.lista
        for cliente in lista:
            print(cliente)

    def nuevo_cliente(self):
        tipo = "A"
        while tipo not in ("C", "c", "P", "p"):
            tipo =  input("Ingrese el tipo de cliente: C: Corporativo / P: Particular: ")
        nombre = input("Ingrese el nombre del contacto: ")
        if tipo in ("C", "c"):
            contacto = input("Ingrese el nombre de la empresa: ")
            tc = int(input("Ingrese el telefono de la empresa: "))
        else:
            apellido = input("Ingrese el apellido: ")
        tel = int(input("Ingrese el telefono particular: "))
        mail = input("Ingrese el correo electronico: ")
        if tipo in ("C", "c"):
            c = self.lista_clientes.nuevo_cliente_corporativo(nombre, contacto, tc, tel, mail)
        else:
            c = self.lista_clientes.nuevo_cliente_particular(nombre, apellido, tel, mail)
        if c is None:
            print("Error al cargar el trabajo")
        else:
            print("Trabajo cargado correctamente")



    def actualizar_datos(self):
        tipo = "A"
        id = int(input("Ingrese ID del cliente para actualizar sus datos: "))
        while tipo not in ("C", "c", "P", "p"):
            tipo =  input("Ingrese el tipo de cliente: C: Corporativo / P: Particular: ")
        nombre = input("Ingrese el nombre actualizado del contacto: ")
        if tipo in ("C", "c"):
            contacto = input("Ingrese el nombre actualizado  de la empresa: ")
            tc = int(input("Ingrese el telefono actualizado  de la empresa: "))
        else:
            apellido = input("Ingrese el apellido actualizado : ")
        tel = int(input("Ingrese el telefono particular actualizado : "))
        mail = input("Ingrese el correo electronico actualizado : ")
        if tipo in ("C", "c"):
            cliente = ClienteCorporativo(nombre, contacto,  tc, tel, mail, id)
            c = self.recl.update(cliente)            
        else:
            cliente = ClienteParticular(nombre, apellido, tel, mail, id)
            c = self.recl.update(cliente)  
        if c is None:
            print("Error al actualizar el cliente")
        else:
            print("Cliente actualizado correctamente")
        

    def  eliminar_cliente(self):
        id_cliente = int(input("Ingrese ID del cliente para eliminar sus datos: "))
        borrar = input("Para eliminar los datos del cliente ingrese E, de caso contrario se cancelará la eliminación: ")
        cliente = self.recl.get_one(id_cliente)
        if borrar == "E" or "e":
            c = self.recl.delete(cliente)
            print("El cliente se elimino correctamente! ")
        else:
            print("Se cancela la eliminación.")
    

    def nuevo_trabajo(self):
        id_cliente = int(input("Ingrese ID del cliente al que le desea asignar un trabajo: "))
        ingreso_trabajo = input("Ingrese N para ingresar un trabajo al cliente: ")
        cliente = self.recl.get_one(id_cliente)
        if ingreso_trabajo in ("N", "n"):
            hoy = datetime.today()
            ingreso = hoy
            dia = int(input("Ingrese el dia propuesto para la entrega: "))
            mes = int(input("Ingrese el mes propuesto para la entrega (en número, 1 a 12): "))
            anio = int(input("Ingrese el año propuesto para la entrega (4 dígitos): "))
            fecha_entrega_propuesta = datetime(anio, mes, dia)
            fecha_entrega_real = None
            descripcion = input("Ingrese una breve descripcion del trabajo: ")
            retirado = False
            t = self.listaT.nuevo_trabajo(cliente, ingreso, fecha_entrega_propuesta, fecha_entrega_real, descripcion, retirado)
            if t == 0:
                print("Error al cargar el cliente. ")
            else:
                print("Cliente cargado correctamente!")
        else: 
            if ingreso_trabajo != ("N", "n"):
                print("Ingreso de trabajo CANCELADO. ")

    def mostrar_trabajo(self, listaT = None):
        if listaT == None:
            listaT = self.listaT.listatrabajo
        for Trabajo in listaT:
            print(Trabajo)

    def modificar_trabajo(self):
        id_trabajo = int(input("Ingrese ID de trabajo al que le desea modificar un trabajo: "))
        mod_trabajo= input("Ingrese M para modificar un trabajo al cliente: ")
        trabajo = self.repotrabajo.get_one(id_trabajo)
        if mod_trabajo in ("M", "m"):
            mod_descripcion = input("Si desea modificar la descripcion presione X, si no presione otra letra: ")
            if mod_descripcion in ("X","x"):
                descripcion = input("Ingrese una breve descripcion del trabajo: ")
                trabajo.descripcion = descripcion
                mod_ingreso = input("Si desea modificar la fecha de ingreso presione X, si no presione otra letra: ")
                if mod_ingreso in ("X","x"):
                    hoy = datetime.today()
                    ingreso = hoy
                    trabajo.ingreso = ingreso
                    print("Se modifico la descripcion y la fecha de ingreso ! ")
                else:
                    print("Se modifico solamente la descripcion")
            else:
                mod_ingreso = input("Si desea modificar la fecha de ingreso presione X, si no presione otra letra: ")
                if mod_ingreso in ("X","x"):
                    hoy = datetime.today()
                    ingreso = hoy
                    trabajo.ingreso = ingreso
                    print("Se modifico la fecha de ingreso !")
                else:
                    print("No se modificó la fecha de entrega. ")
            mod_fechapropuesta = input("Si desea modificar la fecha propuesta presione X, si no presione otra letra: ")
            if mod_fechapropuesta in ("X", "x"):
                dia = int(input("Ingrese el dia propuesto para la entrega: "))
                mes = int(input("Ingrese el mes propuesto para la entrega (en número, 1 a 12): "))
                anio = int(input("Ingrese el año propuesto para la entrega (4 dígitos): "))
                fecha_entrega_propuesta = datetime(anio, mes, dia)
                trabajo.fecha_entrega_propuesta = fecha_entrega_propuesta
                print("Se modificó la fecha propuesta de entrega !")
            else:
                print("No se modifico la fecha propuesta de entrega")
            mod_fechareal = input("Ingrese X para modificar la fecha de entrega real, si no presione otra letra: ")
            if mod_fechareal in ("X", "x"):
                hoy = datetime.today()
                fecha_entrega_real = hoy
                trabajo.fecha_entrega_real = fecha_entrega_real
                print("Se modificó la fecha de entrega real. ")
            else:
                print("No se modificó la fecha de entrega real")
            mod_retirado = input("Ingrese X para modificar si el trabajo fue retirado, si no fue retirado presione N, si no presione otra letra: ")
            if mod_retirado in ("X", "x"):
                retirado = True
                trabajo.retirado = retirado
                print("El trabajó fue retirado.")
                t = self.repotrabajo.update(trabajo)                
            else:
                if mod_retirado in ("N", "n"):
                    print("El trabajo no fue retirado")
                    retirado = False  
                    trabajo.retirado = retirado
                    t = self.repotrabajo.update(trabajo)
            print("Datos actualizados correctamente !")
            t = self.repotrabajo.update(trabajo)



    def eliminar_trabajo(self):
        id_trabajo = int(input("Ingrese ID de trabajo del cliente para eliminar sus trabajos: "))
        borrar = input("Para eliminar los datos del cliente ingrese E, de caso contrario se cancelará la eliminación: ")
        trabajo = self.repotrabajo.get_one(id_trabajo)
        if borrar == "E" or "e":
            t = self.repotrabajo.delete(trabajo)
            if t == 0:
                print("El trabajo ha sido eliminado")
            else:
                print("No se eliminó correctamente")
            print("Eliminación del trabajo de manera exitosa.")
        else:
            print("Se cancela la eliminación.")


########### No se como hacer para que con el id del cliente imprima sus trabajos
########## 
    def generar_informe(self):           
        id_cliente = int(input("Ingrese el ID del cliente: "))
        cliente = self.recl.get_one(id_cliente)
        t = self.listaT.un_trabajo
        for cliente in t:
            print(cliente)






    
    
    def salir(self):

        print("Gracias por utilizar el sistema.")
        sys.exit(0)
Esempio n. 10
0
class Menu:
    "Muestra un menu para que se responda a las opciones"

    def __init__(self):
        self.lista_clientes = ListaClientes()
        self.repositoriocl = RepositorioClientes()
        self.lista = self.repositoriocl.get_all()
        self.repositoriotr = RepositorioTrabajos()
        self.LT = ListaTrabajos()
        self.opciones = {
            "1": self.mostrar_clientes,
            "2": self.nuevo_cliente,
            "3": self.modificar_cliente,
            "4": self.eliminar_cliente,
            "5": self.carga_trabajo,
            "6": self.modificar_trabajo,
            "7": self.mostrar_trabajos,
            "8": self.HistorialTrabajosCl,
            "0": self.salir
        }

    def mostrar_menu(self):
        print("""
Menu del sistema:
1. Mostrar todos los clientes
2. Ingreso de nuevo cliente
3. Modificacion de cliente
4. Eliminacion de cliente
5. Carga de nuevo trabajo
6. Modificar datos de un trabajo
7. Mostrar todos los trabajos
8. Informe
0. Salir
""")

    def ejecutar(self):
        "Muestra el menu y responde a las opciones."
        while True:
            self.mostrar_menu()
            opcion = input("Ingresar una opcion: ")
            accion = self.opciones.get(opcion)
            if accion:
                accion()
            else:
                print("{0} no es una opcion valida".format(opcion))

    #CLIENTE // Mostrar todos los clientes.
    def mostrar_clientes(self, lista=None):
        if lista == None:
            lista = self.repositoriocl.get_all()
        for cliente in lista:
            print(cliente)
            print("==========================")

    #CLIENTE // Ingreso de cliente.
    def nuevo_cliente(self):
        tipo = "A"
        while tipo not in ("C", "c", "P", "p"):
            tipo = input(
                "Ingrese el tipo de cliente: C: Corporativo/ P:Particular")
        nombre = input("Ingrese el nombre:")
        if tipo in ("C", "c"):
            contacto = input("Ingrese el nombre del contacto: ")
            tc = input("Ingrese el telefono del contacto: ")
        else:
            apellido = input("Ingrese el apellido: ")
        tel = input("Ingrese el telefono: ")
        mail = input("Ingresa la direccion de email: ")
        if tipo in ("C", "c"):
            c = self.lista_clientes.nuevo_cliente_corporativo(
                nombre, contacto, tc, tel, mail)
        else:
            c = self.lista_clientes.nuevo_cliente_particular(
                nombre, apellido, tel, mail)
        if c is None:
            print("Error al cargar el cliente")
        else:
            print("Cliente cargado correctamente")

    #CLIENTE // Modificacion de cliente.
    def modificar_cliente(self):
        tipo = "A"
        id_cliente = int(input("Ingrese el ID del cliente registrado: "))
        while tipo not in ("C", "c", "P", "p"):
            tipo = input(
                "Ingrese el tipo de cliente: C: Corporativo/ P: Particular ")
        nombre = input("Ingrese el nombre: ")
        if tipo in ("C", "c"):
            contacto = input("Ingrese el nombre del contacto: ")
            tc = input("Ingrese el telefono del contacto: ")
        else:
            apellido = input("Ingrese el apellido: ")
        tel = input("Ingrese el telefono: ")
        mail = input("Ingresa la direccion de email: ")
        if tipo in ("C", "c"):
            cliente = ClienteCorporativo(nombre, contacto, tc, tel, mail,
                                         id_cliente)
            c = self.repositoriocl.update(cliente)
        else:
            cliente = ClienteParticular(nombre, apellido, tel, mail,
                                        id_cliente)
            c = self.repositoriocl.update(cliente)

        if c is None:
            print("Error al modificar el cliente")
        else:
            print("Cliente modificado correctamente")

    #CLIENTE // Suprimir un cliente.
    def eliminar_cliente(self):
        id_cliente = int(input("Ingrese el id del cliente"))
        c = self.repositoriocl.get_one(id_cliente)
        if c == None:
            print("El id del cliente no esta cargado en nuestra base de datos")
        else:
            self.repositoriocl.delete(c)
            print("El cliente fue eliminado correctamente!")

    #TRABAJO // Carga de un nuevo trabajo.
    def carga_trabajo(self):
        id_cliente = int(input("Ingrese el id del cliente: "))
        rc = RepositorioClientes()
        cl = rc.get_one(id_cliente)
        fecha_ingreso = datetime.date.today()
        dia = int(input("Ingrese el dia: "))
        mes = int(input("Ingrese el mes: "))
        anio = int(input("Ingrese el anio: "))
        fecha_entrega_propuesta = datetime.date(anio, mes, dia)
        descripcion_trabajo = input(
            "Ingrese una descripcion del trabajo a realizar: ")
        c = self.LT.nuevo_trabajo(cl, fecha_ingreso, fecha_entrega_propuesta,
                                  descripcion_trabajo)
        if c == None:
            print("Error, no puede cargarse el nuevo trabajo ")
        else:
            print("Trabajo cargado correctamente en la base de datos! ")

    #TRABAJO // Modificar datos de los trabajos cargados. // FechaING-PROP-REAL-DESC-ESTADO DEL TRABAJO.
    def modificar_trabajo(self):
        print(
            "Al ingresar un ID de trabajo se tendran que modificar todos los datos, en caso de que quede un campo vacio se modificara de esa forma"
        )
        id_trabajo = int(input("Ingrese el ID del trabajo: "))
        C = self.repositoriotr.get_one(id_trabajo)
        if C == None:
            print("No se encontro el trabajo")
        else:
            t = input(
                "Si desea modificar la fecha de ingreso presione f, de lo contrario presione 0 para continuar: "
            )
            if t in ("f", "F"):
                dia = int(input("Ingrese nuevamente el dia: "))
                mes = int(input("Ingrese nuevamente el mes: "))
                anio = int(input("Ingrese nuevamente el anio: "))
                print("Fecha modificada exitosamente! ")
                fechaingreso = datetime.date(anio, mes, dia)
            else:
                fechaingreso = C.fecha_ingreso
            t = input(
                "Si desea modificar la fecha de entrega propuesta de un trabajo presione la tecla e, de lo contrario presione 0 para continuar: "
            )
            if t in ("e", "E"):
                dia = int(input("Ingrese nuevamente el dia: "))
                mes = int(input("Ingrese nuevamente el mes: "))
                anio = int(input("Ingrese nuevamente el anio: "))
                print("Fecha modificada exitosamente! ")
                fentregapropuesta = datetime.date(anio, mes, dia)
            else:
                fentregapropuesta = C.fecha_entrega_propuesta
                print("Ningun dato se ha modificado")
            t = input(
                "Si desea modificar la fecha real de un trabajo presione la tecla r, de lo contrario presione 0 para continuar: "
            )
            if t in ("r", "R"):
                dia = int(input("Ingrese nuevamente el dia: "))
                mes = int(input("Ingrese nuevamente el mes: "))
                anio = int(input("Ingrese nuevamente el anio: "))
                print("Fecha modificada exitosamente! ")
                fentregareal = datetime.date(anio, mes, dia)
            else:
                fentregareal = C.fecha_entrega_real
                print("No se ha modificado la fecha! ")
            t = input(
                "Si desea modificar la descripcion de un trabajo presione la tecla t, de lo contrario presione 0 para continuar: "
            )
            if t in ("t", "T"):
                t = input("Ingrese la nueva descripcion del trabajo: ")
                print("Se ha modificado el nombre del trabajo! ")
                descripcion = t
            else:
                C.descripcion = descripcion
                print("La descripcion del trabajo no ha podido modificarse")
            trabajo = self.LT.modificar_trabajo(fechaingreso,
                                                fentregapropuesta,
                                                fentregareal, descripcion,
                                                id_trabajo)
            self.repositoriocl.update(trabajo)
            self.LT.TrabajoL = self.repositoriotr.get_all()

    #TRABAJO // Mostrar todos los trabajos.
    def mostrar_trabajos(self, listat=None):
        if listat == None:
            listat = self.repositoriotr.get_all()
        for cliente in listat:
            print(cliente)
            print("============================")

    #INFORME // Despliega una lista con los trabajos cargados en cada cliente.
    def HistorialTrabajosCl(self):
        "Pide un ID y muestra una lista con los trabajos cargados en cada cliente"
        for i in self.repositoriocl.get_all_particulares():
            print("=====================================")
            print("ID cliente: ", i.id_cliente, "- Nombre: ", i.nombre)
            print("=====================================")
        for i in self.repositoriocl.get_all_corporativos():
            print("=====================================")
            print("ID cliente: ", i.id_cliente, "- Nombre: ", i.nombre_empresa)
        id = int(input("Ingrese el ID del cliente: "))
        C = self.repositoriotr.get_one(id)
        if C == None:
            print()
        else:
            print("=====================================")
            print(C)
            print("=====================================")
            for I in self.LT.TrabajoL:
                if I.cliente.id_cliente == id:
                    print("========================================")
                    print("ID trabajo: ", I.id_trabajo)
                    print("Fecha de ingreso: ", I.fecha_ingreso)
                    print("Fecha entrega propuesta: ",
                          I.fecha_entrega_propuesta)
                    print("Fecha entrega real: ", I.fecha_entrega_real)
                    print("Descripcion: ", I.descripcion)
                    print("Retirado: ", I.retirado)
                    print("========================================")
                else:
                    print("========================================")
                    print("No se encontraron trabajos")
                    print("========================================")

    def salir(self):
        print("Gracias por utilizar el sistema.")
        sys.exit(0)
Esempio n. 11
0
class Menu:
    '''Mostrar un menú y responder a las opciones'''
    def __init__(self):
        self.lista_clientes = ListaClientes()
        self.lista_trabajos = ListaTrabajos()
        self.opciones = {
            "1": self.mostrar_clientes,
            "2": self.nuevo_cliente,
            "3": self.eliminar_cliente,
            "4": self.modificar_cliente,
            "5": self.mostrar_trabajos,
            "6": self.nuevo_trabajo,
            "0": self.salir
        }

    def mostrar_menu(self):
        print("""
Menú del sistema:
1. Mostrar todos los clientes
2. Alta de cliente
3. Baja de cliente
4. Modificación de cliente
5. Mostrar todos los trabajos
6. Cargar nuevo trabajo
0. Salir
""")

    def ejecutar(self):
        '''Mostrar el menu y responder a las opciones.'''
        while True:
            self.mostrar_menu()
            opcion = input("Ingresar una opción: ")
            accion = self.opciones.get(opcion)
            if accion:
                accion()
            else:
                print("{0} no es una opción válida".format(opcion))

    def mostrar_clientes(self, lista=None):
        if lista == None:
            lista = self.lista_clientes.lista
        for cliente in lista:
            print(cliente)
            print("=====================================")

    def nuevo_cliente(self):
        tipo = "A"
        while tipo not in ("C", "c", "P", "p"):
            tipo = input(
                "Ingrese el tipo de cliente: C:Corporativo / P:Particular: ")
        nombre = input("Ingrese el nombre: ")
        if tipo in ("C", "c"):
            contacto = input("Ingrese el nombre del contacto: ")
            tc = input("Ingrese el teléfono del contacto: ")
        else:
            apellido = input("Ingrese el apellido: ")
        tel = input("Ingrese el teléfono: ")
        mail = input("Ingrese el e-mail: ")
        if tipo in ("C", "c"):
            c = self.lista_clientes.nuevo_cliente_corporativo(
                nombre, contacto, tc, tel, mail)
        else:
            c = self.lista_clientes.nuevo_cliente_particular(
                nombre, apellido, tel, mail)
        if c is None:
            print("Error al cargar el cliente")
        else:
            print("Cliente cargado con éxito")

    def eliminar_cliente(self):
        nc = input("Ingrese el Nro de Cliente a dar de baja: ")
        eliminado = self.lista_clientes.eliminar_cliente(nc)
        if eliminado:
            print("Cliente eliminado correctamente")
        else:
            print("El cliente no se pudo eliminar")

    def modificar_cliente(self):
        nc = input("Ingrese el Nro de Cliente a modificar: ")
        c = self.lista_clientes.rc.get_one(nc)

        if type(c) is ClienteCorporativo:
            c.nombre_empresa = input("Ingrese el nombre de la empresa: ")
            c.telefono = input("Ingrese el teléfono de la empresa: ")
            c.nombre_contacto = input("Ingrese el nombre del contacto: ")
            c.telefono_contacto = input("Ingrese el teléfono del contacto: ")
            c.mail = input("Ingrese el e-mail: ")
        else:
            c.nombre = input("Ingrese el nombre: ")
            c.apellido = input("Ingrese el apellido: ")
            c.telefono = input("Ingrese el teléfono: ")
            c.mail = input("Ingrese el e-mail: ")
        modificado = self.lista_clientes.modificar_cliente(c)
        if modificado:
            print("Cliente modificado correctamente")
        else:
            print("El cliente no se pudo modificar")

    def mostrar_trabajos(self, lista=None):
        if lista == None:
            lista = self.lista_trabajos.lista
        for trabajo in lista:
            print(trabajo)
            print("=====================================")

    def nuevo_trabajo(self):
        nc = input("Ingrese el Nro de Cliente: ")
        cliente = self.lista_clientes.buscar_cliente(nc)
        fecha_ingreso = datetime.date.today()
        fep = input("Ingrese la fecha de entrega propuesta (AAAA-MM-DD): ")
        fecha_entrega_propuesta = datetime.datetime.strptime(
            fep, "%Y-%m-%d").date()
        fecha_entrega_real = None
        descripcion = input("Ingrese descripción del trabajo: ")
        retirado = False

        trabajo = self.lista_trabajos.nuevo_trabajo(cliente, fecha_ingreso,
                                                    fecha_entrega_propuesta,
                                                    fecha_entrega_real,
                                                    descripcion, retirado)

        if trabajo is None:
            print("Error al cargar el trabajo")
        else:
            print("Trabajo cargado con éxito")

    def salir(self):
        print("Gracias por utilizar el sistema.")
        sys.exit(0)
Esempio n. 12
0
 def mostrar_clientes(self, lista=None):
     if lista == None:
         lista = ListaClientes().lista
     for Cliente in lista:
         print(Cliente)
         print("==============================")
Esempio n. 13
0
class Menu:
    '''Mostrar un menu y responder a las opciones'''
    def __init__(self):
        self.lista_clientes = ListaClientes()
        self.reposclientes = RepositorioClientes()
        self.listatrabajos = ListaTrabajos()
        self.repostrabajos = RepositorioTrabajos()
        self.opciones = {
            "1": self.mostrar_clientes,
            "2": self.mostrar_un_cliente,
            "3": self.nuevo_cliente,
            "4": self.actualizar_datos_clientes,
            "5": self.eliminar_clientes,
            "6": self.nuevo_trabajo,
            "7": self.mostrar_trabajo,
            "8": self.trabajo_finalizado,
            "9": self.trabajo_entregado,
            "10": self.actualizar_datos_trabajo,
            "11": self.eliminar_trabajo,
            "12": self.historial_trabajos,
            "13": self.mostrar_trabajos,
            "0": self.salir
        }

    def mostrar_menu(self):
        print("""
        Menu del sistema:
        1. Mostrar todos los clientes
        2. Mostrar un cliente por ID
        3. Ingresar los datos de un nuevo cliente
        4. Actualizar datos de un cliente
        5. Eliminar cliente
        6. Ingresar los datos de un nuevo trabajo
        7. Mostrar trabajo por ID
        8. Marcar un trabajo como finalizado
        9. Marcar un trabajo como entregado
        10. Actualizar datos de un trabajo
        11. Eliminar trabajo
        12. Historial de trabajos de un cliente
        13. Mostrar todos los trabajos
        0. Salir
        """)

    def ejecutar(self):
        '''Mostrar el menu y responder a las opciones'''
        while True:
            self.mostrar_menu()
            opcion = input("Ingresar una opcion: ")
            accion = self.opciones.get(opcion)
            if accion:
                accion()
            else:
                print("{0} no es una opcion valida".format(opcion))

    #READ - Metodo para mostrar todos los clientes cargados en la base de datos
    def mostrar_clientes(self, lista=None):
        if lista == None:
            lista = self.lista_clientes.lista
        for cliente in lista:
            print(cliente)
            print("***********************************")

    #READ - Metodo para mostrar un solo cliente de la base de datos, buscando por ID
    def mostrar_un_cliente(self, lista=None):
        id_cliente = int(input("Ingrese el id del cliente: "))
        cliente = self.reposclientes.get_one(id_cliente)
        if cliente == None:
            print("Error, no existe un cliente con el ID ingresado")
        else:
            print(cliente)

    #CREATE - Metodo para crear un nuevo objeto cliente en la base de datos, dentro de la clase hija que corresponde (C o P)
    def nuevo_cliente(self):
        tipo = "A"
        while tipo not in ("C", "c", "P", "p"):
            tipo = input(
                "Ingrese el tipo de cliente: C = Corporativo - P = Particular: "
            )
        nombre = input("Ingrese el nombre: ")
        if tipo in ("C", "c"):
            contacto = input("Ingrese el nombre del contacto: ")
            tc = input("Ingrese el telefono del contacto: ")
        else:
            apellido = input("Ingrese el apellido: ")
        tel = input("Ingrese el telefono: ")
        mail = input("Ingrese el correo electronico: ")
        if tipo in ("C", "c"):
            c = self.lista_clientes.nuevo_cliente_corporativo(
                nombre, contacto, tc, tel, mail)
        else:
            c = self.lista_clientes.nuevo_cliente_particular(
                nombre, apellido, tel, mail)
        if c is None:
            print("Error al cargar el cliente")
        else:
            print("Cliente cargado correctamente")

    #UPDATE - Metodo para modificar y actualizar los datos de un cliente particular o corporativo, en la base de datos.
    def actualizar_datos_clientes(self):
        id = int(input("Ingrese el id del cliente: "))
        tipo = "A"
        while tipo not in ("C", "c", "P", "p"):
            tipo = input(
                "Ingrese el tipo de cliente: C = Corporativo - P = Particular: "
            )
        nombre = input("Ingrese el nuevo nombre: ")
        if tipo in ("C", "c"):
            contacto = input("Ingrese el nuevo nombre del contacto: ")
            tc = input("Ingrese el telefono del contacto: ")
        else:
            apellido = input("Ingrese el nuevo apellido: ")
        tel = input("Ingrese el nuevo telefono: ")
        mail = input("Ingrese el nuevo correo electronico: ")
        if tipo in ("C", "c"):
            cliente = ClienteCorporativo(nombre, contacto, tc, tel, mail, id)
            c = self.reposclientes.update(cliente)
        else:
            cliente = ClienteParticular(nombre, apellido, tel, mail, id)
            c = self.reposclientes.update(cliente)
        if c is False:
            print(
                "Error al intentar modificar al cliente, no existe en la lista que corresponde al tipo seleccionado (C o P)"
            )
        else:
            print("Cliente modificado correctamente")

    #DELETE - Metodo para eliminar definitivamente un cliente particular o corporativo, de la base de datos.
    def eliminar_clientes(self, lista=None):
        tipo = "A"
        while tipo not in ("C", "c", "P", "p"):
            tipo = input(
                "Ingrese el tipo de cliente que desea eliminar: C = Corporativo - P = Particular: "
            )
        nombre = None
        if tipo in ("C", "c"):
            id = int(input("Ingrese el id del cliente que desea eliminar: "))
            contacto = None
            tc = None
        else:
            id = int(input("Ingrese el id del cliente que desea eliminar: "))
            apellido = None
        tel = None
        mail = None
        if tipo in ("C", "c"):
            cliente = ClienteCorporativo(nombre, contacto, tc, tel, mail, id)
            c = self.reposclientes.delete(cliente)
        else:
            cliente = ClienteParticular(nombre, apellido, tel, mail, id)
            c = self.reposclientes.delete(cliente)
        if c is False:
            print("Error al intentar eliminar al cliente de la base de datos")
        else:
            print("Cliente eliminado correctamente de la base de datos")

    #NUEVO TRABAJO: Para cargar un nuevo trabajo en base de datos trabajo
    def nuevo_trabajo(self):
        tipo = "A"
        while tipo not in ("C", "c", "P", "p"):
            tipo = input(
                "Ingrese el tipo de cliente al que desa asignarle el trabajo: C = Corporativo - P = Particular: "
            )
        nombre = None
        if tipo in ("C", "c"):
            id = int(input("Ingrese el id del cliente: "))
            contacto = None
            tc = None
        else:
            id = int(input("Ingrese el id del cliente: "))
            apellido = None
        tel = None
        mail = None
        if tipo in ("C", "c"):
            cliente = ClienteCorporativo(nombre, contacto, tc, tel, mail, id)
            fecha_ingreso = datetime.date.today()
            print("Fecha de entrega propuesta: ")
            dia = (int(input("Ingrese el dia de entrega propuesta: ")))
            mes = (int(input("Ingrese el mes de entrega propuesta: ")))
            anio = (int(input("Ingrese el año de entrega propuesta: ")))
            fecha_entrega_propuesta = datetime.date(anio, mes, dia)
            fecha_entrega_real = None
            retirado = False
            descripcion = input(
                "Ingrese una breve descripcion del trabajo a realizar: ")
            nt = self.listatrabajos.nuevo_trabajo(cliente, fecha_ingreso,
                                                  fecha_entrega_propuesta,
                                                  fecha_entrega_real,
                                                  descripcion, retirado)
        else:
            cliente = ClienteParticular(nombre, apellido, tel, mail, id)
            fecha_ingreso = datetime.date.today()
            print("Fecha de entrega propuesta: ")
            dia = (int(input("Ingrese el dia de entrega propuesta: ")))
            mes = (int(input("Ingrese el mes de entrega propuesta: ")))
            anio = (int(input("Ingrese el año de entrega propuesta: ")))
            fecha_entrega_propuesta = datetime.date(anio, mes, dia)
            fecha_entrega_real = None
            retirado = False
            descripcion = input(
                "Ingrese una breve descripcion del trabajo a realizar: ")
            nt = self.listatrabajos.nuevo_trabajo(cliente, fecha_ingreso,
                                                  fecha_entrega_propuesta,
                                                  fecha_entrega_real,
                                                  descripcion, retirado)
        if nt == 0:
            print("Error al intentar cargar el trabajo nuevo")
        else:
            print("Trabajo cargado exitosamente")

    #Mostrar un trabajo en particular
    def mostrar_trabajo(self):
        id_trabajo = int(input("Ingrese el id del trabajo: "))
        trabajo = self.repostrabajos.get_one(id_trabajo)
        if trabajo == None:
            print("Error, no existe un trabajo con el ID ingresado")
        else:
            print(trabajo)

    #TRABAJO FINALIZADO: Para marcar un trabajo como finalizado con la fecha actual (hoy)
    def trabajo_finalizado(self):
        id_trabajo = int(
            input(
                "Ingrese el id del trabajo que desea marcar como concluido: "))
        trabajo = self.repostrabajos.get_one(id_trabajo)
        if trabajo == None:
            print("Error, no existe un trabajo con el ID ingresado")
        else:
            trabajo.fecha_entrega_real = datetime.date.today()
            return self.repostrabajos.update(trabajo)
            print("El trabajo fue marcado como finalizado, de manera exitosa")

    #TRABAJO ENTREGADO: Para marcar un trabajo como entregado
    def trabajo_entregado(self):
        id_trabajo = int(
            input(
                "Ingrese el id del trabajo que desea marcar como entregado: "))
        trabajo = self.repostrabajos.get_one(id_trabajo)
        if trabajo == None:
            print("Error, no existe un trabajo con el ID ingresado")
        else:
            trabajo.retirado = True
            return self.repostrabajos.update(trabajo)
            print("El trabajo fue marcado como entregado, de manera exitosa")

    #ACTUALIZAR TRABAJO: Para actualizar cualquiera de los datos del trabajo
    #(excepto id, y cliente asociado al mismo), buscando por ID
    def actualizar_datos_trabajo(self):
        id_trabajo = int(
            input("Ingrese el id del trabajo que desea actualizar: "))
        trabajo = self.repostrabajos.get_one(id_trabajo)
        if trabajo == None:
            print("Error, no existe un trabajo con el ID ingresado")
        else:
            preg_uno = int(
                input(
                    "Si desea actualizar la fecha de ingreso marque 1, de lo contrario otro numero: "
                ))
            if preg_uno == 1:
                print("Actualizar la fecha de ingreso: ")
                dia = (int(input("Ingrese el dia de ingreso: ")))
                mes = (int(input("Ingrese el mes de ingreso: ")))
                anio = (int(input("Ingrese el año de ingreso: ")))
                fecha_ingreso = datetime.date(anio, mes, dia)
                trabajo.fecha_ingreso = fecha_ingreso
            preg_dos = int(
                input(
                    "Si desea actualizar la fecha de entrega propuesta marque 1, \n de lo contrario otro numero: "
                ))
            if preg_dos == 1:
                print("Actualizar la fecha de entrega propuesta: ")
                dia = (int(input("Ingrese el dia de entrega propuesta: ")))
                mes = (int(input("Ingrese el mes de entrega propuesta: ")))
                anio = (int(input("Ingrese el año de entrega propuesta: ")))
                fecha_entrega_propuesta = datetime.date(anio, mes, dia)
                trabajo.fecha_entrega_propuesta = fecha_entrega_propuesta
            preg_tres = int(
                input(
                    "Si el trabajo ya fue entregado, y desea modificar esa fecha, marque 1,\n de lo contrario marque otro numero: "
                ))
            if preg_tres == 1:
                print("Actualizar la fecha de entrega real: ")
                dia = (int(input("Ingrese el dia de entrega real: ")))
                mes = (int(input("Ingrese el mes de entrega real: ")))
                anio = (int(input("Ingrese el año de entrega real: ")))
                fecha_entrega_real = datetime.date(anio, mes, dia)
                trabajo.fecha_entrega_real = fecha_entrega_real
            preg_cuatro = int(
                input(
                    "Si desea modificar la descripcion del trabajo, marque 1,\n de lo contrario otro numero: "
                ))
            if preg_cuatro == 1:
                print("Actualizar descripcion del trabajo: ")
                descripcion = input(
                    "Ingrese una breve descripcion del trabajo a realizar: ")
                trabajo.descripcion = descripcion
            preg_cinco = int(
                input(
                    "Si desea modificar el estado a retirado/no retirado,\n marque 1, de lo contrario otro numero: "
                ))
            if preg_cinco == 1:
                preg_retirado = int(
                    input(
                        "Ingrese 1 para indicar que el trabajo esta retirado,\n otro numero para marcar como no retirado: "
                    ))
                if preg_retirado == 1:
                    retirado = True
                else:
                    retirado = False
            return self.repostrabajos.update(trabajo)
        print("Datos del trabajo actualizados con exito !!!")

    #ELIMINAR TRABAJO: busca por ID, en repositorio trabajos y si lo encuentra lo elimina de la base de datos
    def eliminar_trabajo(self):
        id_trabajo = int(
            input("Ingrese el id del trabajo que desea eliminar: "))
        trabajo = self.repostrabajos.get_one(id_trabajo)
        if trabajo == None:
            print("Error, no existe un trabajo con el ID ingresado")
        else:
            return self.repostrabajos.delete(trabajo)
            print("Trabajo eliminado con exito !!!")

    #INFORME: Historial de trabajos de un cliente, buscado por su id
    def historial_trabajos(self):
        id_cliente = int(input("Ingrese el ID del cliente: "))
        cliente = self.reposclientes.get_one(id_cliente)
        lista = self.listatrabajos.lista
        for consulta in lista:
            if consulta.cliente.id_cliente == id_cliente:
                print("Trabajo del cliente: ")
                print(consulta)

    #Mostrar todos los trabajos de la base de datos
    def mostrar_trabajos(self, lista=None):
        if lista == None:
            lista = self.listatrabajos.lista
        for cliente in lista:
            print(cliente)
            print("***********************************")

    def salir(self):
        print("Gracias por utilizar el sistema.")
        sys.exit(0)
Esempio n. 14
0
class Menu:
    def __init__(self):
        self.rc = RepositorioClientes()
        self.rt = RepositorioTrabajos()
        self.lista_trabajo = Lista_Trabajo()
        self.lista_clientes = ListaClientes()
        self.opciones = {
            "1": self.mostrar_clientes,
            "2": self.nuevo_cliente,
            "3": self.modificar_particular,
            "4": self.modificar_corporativo,
            "5": self.borrar_cliente,
            "6": self.mostrar_trabajos,
            "7": self.nuevo_trabajo,
            "8": self.trabajo_finalizado,
            "9": self.trabajo_retirado,
            "10": self.modificar_trabajo,
            "11": self.mostrar_no_retirados,
            "12": self.eliminar_trabajo,
            "0": self.salir
        }

    def mostrar_menu(self):
        print("""
_________________________________________________
|Menu del sistema:                               |
|1. Mostrar todos los clientes                   |
|2. Agregar Nuevo Cliente                        |
|3. Modificar Cliente PARTICULAR                 |
|4. Modificar Cliente CORPORATIVO                |
|5. Borrar cliente                               |
|6. Mostrar Trabajos                             |
|7. Nuevo Trabajo                                |
|8. Finalizar Trabajo                            |
|9. Marcar trabajo como retirado                 |
|10. Modificar Trabajo                           |
|11. Mostrar trabajos finalizados no retirados   |
|12. Eliminar Trabajo                            |
|0. Salir                                        |
|________________________________________________|
""")

    def ejecutar(self):
        '''Mostrar el menu y responder las opciones'''
        while True:
            self.mostrar_menu()
            opcion = input("Ingrese una opcion: ")
            accion = self.opciones.get(opcion)
            if accion:
                accion()
            else:
                print("{0} no es una opcion valida".format(opcion))

    def mostrar_clientes(self, lista=None):
        if lista == None:
            lista = self.lista_clientes.lista
        print("Clientes: ")
        for cliente in lista:
            print("===========================================")
            print(cliente)
            print("===========================================")

    def nuevo_cliente(self):
        tipo = "A"
        while tipo not in ("C", "c", "P", "p"):
            tipo = input(
                "Ingrese el tipo de cliente: C:corporativo / P:Particular:  ")
        nombre = input("Ingrese el nombre: ")
        if tipo in ("C", "c"):
            contacto = input("ingrese el nombre del contacto: ")
            tc = input("ingrese el telefono del contacto: ")
        else:
            apellido = input("Ingrese el apellido: ")
        tel = input("Ingrese el Telefono: ")
        mail = input("Ingrese el Mail: ")

        if tipo in ("c", "C"):
            c = self.lista_clientes.nuevo_cliente_corporativo(
                nombre, contacto, tc, tel, mail)
        else:
            c = self.lista_clientes.nuevo_cliente_particular(
                nombre, apellido, tel, mail)
        if c is None:
            print("Error al cargar el cliente.")
        else:
            print("Cliente cargado con exito.")

    def modificar_particular(self):
        print("Modificar cliente Particular: ")
        id_cliente = int(input("Ingresa id de un Particular: "))
        obj_cliente = self.rc.get_one_particular(id_cliente)
        print(obj_cliente)
        opcion = int(
            input(""""Elige una opcion para modificar: 
                            1. Nombre
                            2. Apellido
                            3. Teléfono
                            4. Mail
                            0. Salir
                            : """))
        if opcion == 1:
            nuevo_nombre = input("Ingrese el nuevo NOMBRE:")
            obj_cliente.nombre = nuevo_nombre
            print("Nombre cambiado con exito.")

        elif opcion == 2:
            nuevo_apellido = input("Ingrese el nuevo APELLIDO: ")
            obj_cliente.apellido = nuevo_apellido
            print("Apellido cambiado con exito.")

        elif opcion == 3:
            nuevo_telefono = input("Ingrese el nuevo TELEFONO: ")
            obj_cliente.telefono = nuevo_telefono
            print("Telefono cambiado con exito.")

        elif opcion == 4:
            nuevo_mail = input("Ingrese un nuevo MAIL: ")
            obj_cliente.mail = nuevo_mail
            print("Mail cambiado con exito.")
        elif opcion == 0:
            return
        self.rc.update(obj_cliente)
        self.lista_clientes = ListaClientes()

    def modificar_corporativo(self):
        print("Modificar cliente Corporativo: ")
        id_cliente = int(input("Ingresa id de un Corporativo: "))
        obj_cliente = self.rc.get_one_corporativo(id_cliente)
        print(obj_cliente)
        opcion = int(
            input(""""Elige una opcion para modificar: 
                            1. Nombre empresa
                            2. Nombre contacto
                            3. Teléfono de contacto
                            4. Telefono
                            5. Mail
                            0. Salir
                            : """))
        if opcion == 1:
            nuevo_nombre_empresa = input(
                "Ingrese el nuevo NOMBRE DE LA EMPRESA:")
            obj_cliente.nombre_empresa = nuevo_nombre_empresa
            print("Nombre de empresa cambiado con exito.")

        elif opcion == 2:
            nuevo_nombre_contacto = input(
                "Ingrese el nuevo NOMBRE DE CONTACTO:")
            obj_cliente.nombre_contacto = nuevo_nombre_contacto
            print("Nombre de contacto cambiado con exito.")

        elif opcion == 3:
            nuevo_telefono_contacto = input(
                "Ingrese el nuevo TELEFONO DE CONTACTO: ")
            obj_cliente.telefono_contacto = nuevo_telefono_contacto
            print("Telefono de contacto cambiado con exito.")

        elif opcion == 4:
            nuevo_telefono = input("Ingrese el nuevo TELEFONO: ")
            obj_cliente.telefono = nuevo_telefono
            print("Telefono cambiado con exito.")

        elif opcion == 5:
            nuevo_mail = input("Ingrese un nuevo MAIL: ")
            obj_cliente.mail = nuevo_mail
            print("Mail cambiado con exito.")

        elif opcion == 0:
            return

        self.rc.update(obj_cliente)
        self.lista_clientes = ListaClientes()
        print("Cambio Exitoso:")
        print(obj_cliente)

    def borrar_cliente(self):
        lista = self.lista_clientes.lista
        for id_lista in lista:
            print(
                "=================================================================="
            )
            print(id_lista)
            print(
                "=================================================================="
            )
        id_elegido = int(
            input("Ingrese el ID del cliente que quiere eliminar: "))
        for id_lista in lista:
            if id_lista.id_cliente == id_elegido:
                cli = self.lista_clientes.rc.delete(id_lista)
                lista.remove(id_lista)
                print("Se elimino correctamente.")
                break

    def mostrar_trabajos(self, lista=None):
        if lista == None:
            lista = self.lista_trabajo.lista
        for trabajo in lista:
            print("====================================================")
            print("Cliente: ")
            print(trabajo.cliente)
            print("Trabajo: ")
            print("ID: ", trabajo.id_trabajo)
            print("Fecha de entrega: ", trabajo.fecha_entrega_propuesta)
            print("Fecha de entrega real: ", trabajo.fecha_entrega_real)
            print("Descripcion: ", trabajo.descripcion)
            print("Retirado: ", trabajo.retirado)
            print("====================================================")

    def nuevo_trabajo(self):
        obj_cliente = None
        while True:
            cliente = input("Ingrese el id del cliente: ")
            obj_cliente = self.rc.get_one(cliente)
            if obj_cliente != None:
                print(obj_cliente)
                break

        fecha_ingreso = datetime.date.today()
        while True:
            try:
                f = input("Ingrese la fecha propuesta (aaaa,mm,dd): ")
                fecha_propuesta = datetime.datetime.strptime(f, "%Y,%m,%d")
            except ValueError:
                print("Fecha no valida")
                continue
            break
        fecha_entrega_real = None
        descripcion = input("Ingrese la descripcion del trabajo: ")
        retirado = False

        nt = Trabajo(obj_cliente, fecha_ingreso, fecha_propuesta,
                     fecha_entrega_real, descripcion, retirado, None)
        resultado = self.rt.store(nt)
        self.lista_Trabajo = self.rt.get_all()

        print("Trabajo guardado exitosamente. Con el id ", resultado)

    def trabajo_finalizado(self):
        print("Finalizar trabajo: ")
        id_trabajo = int(input("Ingresa id del trabajo: "))
        obj_trabajo = self.rt.get_one(id_trabajo)

        obj_trabajo.fecha_entrega_real = datetime.date.today()
        print("")
        print("Trabajo finalizado con exito: ")
        print("")
        print("==============================================")
        print("ID: ", obj_trabajo.id_trabajo)
        print("Fecha de entrega: ", obj_trabajo.fecha_entrega_propuesta)
        print("Fecha de entrega real: ", obj_trabajo.fecha_entrega_real)
        print("Descripcion: ", obj_trabajo.descripcion)
        print("Retirado: ", obj_trabajo.retirado)
        print("==============================================")

        self.rt.update(obj_trabajo)
        self.lista_trabajo = Lista_Trabajo()

    def trabajo_retirado(self):
        print("Marcar trabajo retirado : ")
        id_trabajo = int(input("Ingresa id del trabajo: "))
        obj_trabajo = self.rt.get_one(id_trabajo)

        obj_trabajo.retirado = True
        print("")
        print("Trabajo retirado con exito: ")
        print("")
        print("==============================================")
        print("ID: ", obj_trabajo.id_trabajo)
        print("Fecha de entrega: ", obj_trabajo.fecha_entrega_propuesta)
        print("Fecha de entrega real: ", obj_trabajo.fecha_entrega_real)
        print("Descripcion: ", obj_trabajo.descripcion)
        print("Retirado: ", obj_trabajo.retirado)
        print("==============================================")

        self.rt.update(obj_trabajo)
        self.lista_trabajo = Lista_Trabajo()

    def modificar_trabajo(self):
        print("Modificar trabajo : ")
        id_trabajo = int(input("Ingresa id del trabajo: "))
        obj_trabajo = self.rt.get_one(id_trabajo)

        while True:
            try:
                f = input("Ingrese la nueva fecha propuesta (aaaa,mm,dd): ")
                fecha_propuesta = datetime.datetime.strptime(f, "%Y,%m,%d")
            except ValueError:
                print("Fecha no valida")
                continue
            break
        descripcion = input("Ingrese la nueva descripcion del trabajo: ")

        obj_trabajo.fecha_entrega_propuesta = fecha_propuesta
        obj_trabajo.descripcion = descripcion

        print("")
        print("Trabajo modificado con exito: ")
        print("")
        print("==============================================")
        print("ID: ", obj_trabajo.id_trabajo)
        print("Fecha de entrega: ", obj_trabajo.fecha_entrega_propuesta)
        print("Fecha de entrega real: ", obj_trabajo.fecha_entrega_real)
        print("Descripcion: ", obj_trabajo.descripcion)
        print("Retirado: ", obj_trabajo.retirado)
        print("==============================================")

        self.rt.update(obj_trabajo)
        self.lista_trabajo = Lista_Trabajo()

    def mostrar_no_retirados(self, lista=None):
        if lista == None:
            lista = self.lista_trabajo.lista
        for trabajo in lista:
            if trabajo.retirado == False and trabajo.fecha_entrega_real != None:
                print("===========================================")
                print("Cliente: ")
                print(trabajo.cliente)
                print("ID: ", trabajo.id_trabajo)
                print("Fecha de entrega: ", trabajo.fecha_entrega_propuesta)
                print("Fecha de entrega real: ", trabajo.fecha_entrega_real)
                print("Descripcion: ", trabajo.descripcion)
                print("Retirado: ", trabajo.retirado)
                print("===========================================")

    def eliminar_trabajo(self):
        id_elegido = int(
            input("Ingrese el ID del trabajo que quiere eliminar: "))
        obj_trabajo = self.rt.get_one(id_elegido)
        resultado = self.rt.delete(obj_trabajo)
        self.lista_trabajo = Lista_Trabajo()
        print("Eliminado: ", resultado)

    def salir(self):
        print("Saliste del programa. Gracias por todo.")
        sys.exit(0)