Example #1
0
    def CrearunCliente(self):
        print("\nEligió agregar un Ciente \n" +
              "\n Llene los siguientes datos:" + "\n")
        nombre = input("Nombre del cliente: ")
        edad = str(input("Edad: "))
        direccion = input("Dirección: ")
        sexo = input(
            "Presione M si es sexo Masculino y F si es sexo Femenino" +
            "\nSexo: ")

        self.cliente = Cliente(nombre, direccion, edad, sexo)

        while sexo != "M" and sexo != "F":
            sexo = input(
                "Presione M si es sexo Masculino y F si es sexo Femenino  ")
        if sexo == "M":
            self.Hombres.append(self.cliente)
        if sexo == "F":
            self.Mujeres.append(self.cliente)

        print("****Datos del cliente: \n*****")
        print(self.cliente)
        self.banco.AñadirCliente(self.cliente)

        print(
            "\nDespués de ingresar los datos del cliente debe crear una cuenta. "
        )
        print(
            "\n Por favor eliga la opción adecuada para crear la cuenta del cliente:"
        )

        self.AgregarunaCuenta()
Example #2
0
class Player():

    def __init__(self, nome):
        self.nome = nome
        self.pontuacao = 0
        self.opcao = ''
        self.inicializa_cliente()

    def inicializa_cliente(self):
        dados = '1-%s-0' % (self.getNome())

        self.player_cliente = Cliente()
        self.player_cliente.conecta_servidor(PORTA)
        self.player_cliente.envia_dados(dados)
    
    def setPontuacao(self, valor):
        self.pontuacao += valor
    
    def setOpcao(self, op):
        self.opcao = op
    
    def getOpcao(self):
        return self.opcao

    def getPontuacao(self):
        return self.pontuacao
    
    def getNome(self):
        return self.nome

    def sai_jogo(self):
        dados = '0-%s-%d' % (self.getNome(), self.getPontuacao())
        self.player_cliente.envia_dados(dados)
        self.player_cliente.fecha_conexao()
Example #3
0
    def consultarCli():
        cpfA = etCPF.get()

        cliente1 = Cliente("", "", cpfA, "", "")
        result = Cliente.SelecionarUmCliente(cliente1)[0]
        txtTitID.place(x=10, y=70)
        txtID.place(x=10, y=90)
        txtID.insert(0, result[0])
        txtID.config(state="disabled")
        txtTitNome.place(x=10, y=110)
        txtNome.place(x=10, y=130)
        txtNome.insert(0, result[1])
        txtNome.config(state="disabled")
        txtTitCPF.place(x=10, y=150)
        txtCPF.place(x=10, y=170)
        txtCPF.insert(0, result[2])
        txtCPF.config(state="disabled")
        txtTitEmail.place(x=10, y=190)
        txtEmail.place(x=10, y=210)
        txtEmail.insert(0, result[3])
        txtEmail.config(state="disabled")
        txtTitTel.place(x=10, y=230)
        txtTel.place(x=10, y=250)
        txtTel.insert(0, result[4])
        txtTel.config(state="disabled")
        btEditar.place(x=90, y=280)
Example #4
0
def registro_cliente():
    print("Registre sus datos.")
    temp_cli = Cliente.Cliente('', '', '', '', '', '', '', '')
    aux = input("Nombre: ")
    temp_cli.set_nombre(aux.title())
    aux = input("Apellido Paterno: ")
    temp_cli.set_apellido_paterno(aux.title())
    aux = input("Apellido Materno: ")
    temp_cli.set_apellido_materno(aux.title())
    aux = input("Genero (M/F): ")
    temp_cli.set_genero(aux.title())
    aux = input("Edad: ")
    temp_cli.set_edad(aux)
    aux = input("Domicilio: ")
    temp_cli.set_domicilio(aux.title())
    aux = input("Teléfono (###-###-####): ")
    temp_cli.set_telefono(aux)
    aux = input("Email: ")
    temp_cli.set_email(aux)

    cartera_clientes.append(temp_cli)

    log.append("[{}] - {} {} fue añadido a la cartera de clientes.".format(
        time.ctime(), temp_cli.get_nombre(), temp_cli.get_apellido_paterno()))

    print("\nCliente registrado:\n{}\n".format(temp_cli.get_info_cliente()))
Example #5
0
    def atender(self):
        salir = 0

        c = raw_input("ingrese el numero de cliente: ")
        a = Cliente()
        con = raw_input("ingrese la contrasenia: ")

        b = Cuenta(c, con)

        while salir == 0:
            tarea = raw_input(
                "ELIJA UNA DE LAS OPCIONES: --consultar saldo-- --depositar dinero-- --extraer dinero-- --salir-- :"
            )
            if tarea == "consultar saldo":
                b.consultar()
            if tarea == "depositar dinero":
                dinero = int(
                    raw_input("ingrese cantidad de dinero a depositar: "))
                b.agregar_din_cuenta(dinero)
            if tarea == "extraer dinero":
                dinero = int(
                    raw_input("ingrese cantidad de dinero a extraer: "))
                b.extraer_din_cuenta(dinero)
            if tarea == "salir":
                salir = 1
Example #6
0
    def agregar_cliente(self):

        print("-------------------NUEVO UN CLIENTE-------------------\n", "\n")
        nombre = input("Nombre del cliente: ")
        edad = input("Edad: ")
        direccion = input("Dirección: ")
        print("\n-------------------Cuentas del cliente-------------------\n")
        tipo = input("Tipo de cuenta (Elija la opción de acuerdo al numero)" +
                     "\n1.-Ahorro" + "\n2.-Credito" + "\n")
        cuentas = []
        if tipo == "1":
            valor = input("Cantidad de la cuenta: ")
            interes = input("Tasa de interés: ")
            cuenta = Cuenta_ahorro(valor, interes)
            self.cliente = Cliente(nombre, direccion, edad, cuentas)
            self.cliente.agregar_cuenta(cuenta)
            self.clientes.append(self.cliente)
        elif tipo == "2":
            valor = input("Cantidad de la cuenta: ")
            sobregiro = input("Cantidad de sobregiro: ")
            cuenta = Cuenta_credito(valor, sobregiro)
            self.cliente = Cliente(nombre, direccion, edad, cuentas)
            self.cliente.agregar_cuenta(cuenta)
            self.clientes.append(self.cliente)
        else:
            print("Tipo de cuenta no disponible")

        if len(cuentas) > 0:
            print("\nCLIENTE REGISTRADO\n")
            ver_datos = input("¿Mostrar los datos del cliente?\n" +
                              "Si, oprima 's'\n" + "No, oprima 'n'\n")
            while ver_datos.lower() != "s" and ver_datos.lower() != "n":
                print("\nOpción incorrecta\n")
                ver_datos = input("¿Mostrar los datos del cliente?\n" +
                                  "Si, oprima 's'\n" + "No, oprima 'n'\n")
            if ver_datos.lower() == "s":
                print("\nDatos del cliente: ")
                print(self.cliente)
            if ver_datos.lower() == "n" or ver_datos.lower() == "s":
                agregar_mas_cuentas = input(
                    "¿Se agregaran más cuentas al cliente?\n" +
                    "Si, oprima 's'\n" + "No, oprima 'n'\n")
                self.agregar_cuenta(agregar_mas_cuentas)
                if agregar_mas_cuentas.lower() == "n":
                    self.menu_inicio()
        else:
            print("El cliente no fué registrado")
Example #7
0
    def TestaGarantia(self):
	self.cliente = Cliente(1, "luiz", "rua a")
        self.vendaA = Venda(1,"01/10/2008",self.cliente)
        self.vendaA.data |should| equal_to ("01/10/2008")
        self.vendaA.tem_garantia() |should| equal_to (False)
        self.vendaB = Venda(1, "08/05/2013", self.cliente)
	self.vendaB.data |should| equal_to ("08/05/2013")
        self.vendaB.tem_garantia() |should| equal_to (True)
Example #8
0
def iniciarPrograma(clientes, tecnicos, ordenes, heladeras):
    #cargar tecnicos
    tecnicos.append(
        Tecnico("Facundo", "Rada", datetime(datetime.now().year, 1, 12),
                datetime(datetime.now().year, 7, 12)))
    tecnicos.append(
        Tecnico("Matias", "Mancuello", datetime(datetime.now().year, 2, 3),
                datetime(datetime.now().year, 8, 1)))
    tecnicos.append(
        Tecnico("Agustin", "Ramirez", datetime(datetime.now().year, 1, 15),
                datetime(datetime.now().year, 12, 11)))

    #cargar clientes
    clientes.append(
        Cliente("12345678", "Notario", "Marcelo", "Resistencia-1",
                "*****@*****.**", "252562", 1))
    clientes.append(
        Cliente("12345677", "Figueredo", "Ariel", "Resistencia-2",
                "*****@*****.**", "252563", 1))
    clientes.append(
        Cliente("12345676", "Lujan", "Fernando", "Resistencia-3",
                "*****@*****.**", "252564", 1))
    clientes.append(
        Cliente("12345675", "Marcos", "Cortes", "Resistencia-4",
                "*****@*****.**", "252565", 1))

    #cargar ordenes
    ordenes.append(
        Orden(datetime.now(), "Hace Falso contacto",
              datetime(datetime.now().year, 6, 15)))
    ordenes.append(
        Orden(datetime.now(), "NO prende", datetime(datetime.now().year, 7,
                                                    15)))
    ordenes.append(
        Orden(datetime.now(), "Tiene la chapa picada",
              datetime(datetime.now().year, 6, 23)))
    ordenes.append(
        Orden(datetime.now(), "No funciona el freezer",
              datetime(datetime.now().year, 7, 23)))

    #cargar heladeras
    heladeras.append(Heladera(ordenes[0], clientes[0], "Blanca y cuadrada"))
    heladeras.append(Heladera(ordenes[1], clientes[1], "Negra y cuadrada"))
    heladeras.append(Heladera(ordenes[2], clientes[2], "Gris y cuadrada"))
    heladeras.append(
        Heladera(ordenes[3], clientes[3], "No tan gris... pero cuadrada"))
Example #9
0
 def testSetEstado(self):
     """
     Prueba unitaria para setEstado
     """
     self.cliente = Cliente.Cliente("localhost", 5)
     self.cliente.setEstado("AWAY")
     self.assertEqual("AWAY", self.cliente.getEstado())
     self.cliente.cerrarSocket()
Example #10
0
 def testGetUserAddress(self):
     """
     Prueba unitaria para getUserAddress
     """
     self.cliente = Cliente.Cliente("localhost", 2)
     self.cliente.setUserAddress(("localhost", 2))
     self.assertEqual(("localhost", 2), self.cliente.getUserAddress())
     self.cliente.cerrarSocket()
Example #11
0
 def testGetSock(self):
     """
     Prueba unitaria para getSock
     """
     self.cliente = Cliente.Cliente("localhost", 6)
     self.cliente.setEstado("BUSY")
     self.assertEqual("BUSY", self.cliente.getEstado())
     self.cliente.cerrarSocket()
Example #12
0
 def consultarCli():
     cpfA = int(etCPF.get())
     cliente = Cliente("", "", cpfA, "", "")
     result = Cliente.SelecionarUmCliente(cliente)[0]
     txtNome["text"] = result[1]
     txtCPF["text"] = result[2]
     txtEmail["text"] = result[3]
     txtTel["text"] = result[4]
Example #13
0
    def TestaAddTroca(self):
	self.cliente = Cliente(1, "luiz", "rua a")
	self.vendaA = Venda(1,"01/10/2008",self.cliente)
        self.troca = Troca("quebrado", "05/05/2013", self.vendaA, 100)
        self.troca.defeito |should| equal_to ("quebrado")
        self.troca.data |should| equal_to ("05/05/2013")
        self.troca.id_produto |should| equal_to (100)
        self.troca.quem_trocou() |should| equal_to ("luiz")
        pdef = Troca.listar_defeituosos()
Example #14
0
    def getAllClientes(self):
        with self.con:
            try:
                self.cur = self.con.cursor(
                    cursor_factory=pdb.extras.DictCursor)
                self.cur.execute('SELECT * FROM Cliente')
                rows = self.cur.fetchall()
                clientes = ""

                for row in rows:
                    if row is not None:
                        cliente = Cliente(row[0], row[1])
                        clientes = clientes + cliente.toString() + ';'

                return clientes

            except Exception as e:
                print('Error while getting all clients: ' + str(e))
                return 'Fracasso'
Example #15
0
 def testGetEstado(self):
     """
     Prueba unitaria para getEstado
     """
     self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     self.cliente = Cliente.Cliente("localhost", 4)
     self.cliente.setSock(self.sock)
     self.assertEqual(self.sock, self.cliente.getSock())
     self.sock.close()
     self.cliente.cerrarSocket()
Example #16
0
 def editarCli():
     cliente = Cliente(txtID.get(), txtNome.get(), txtCPF.get(),
                       txtEmail.get(), txtTel.get())
     Cliente.AlterarCliente(cliente)
     txtID.config(state="normal")
     txtID.delete(0, END)
     txtNome.delete(0, END)
     txtCPF.delete(0, END)
     txtEmail.delete(0, END)
     txtTel.delete(0, END)
Example #17
0
    def cadastrarCli():
        nomeA = nome.get()
        cpfA = cpf.get()
        emailA = email.get()
        telefoneA = telefone.get()

        cliente = Cliente("", nomeA, cpfA, emailA, telefoneA)
        Cliente.CadastrarCliente(cliente)
        nome.delete(0, 'end')
        cpf.delete(0, 'end')
        email.delete(0, 'end')
        telefone.delete(0, 'end')
Example #18
0
    def TestaTroca(self):
        self.cliente = Cliente(1, "luiz", "rua a")
        self.venda = Venda(1,"10/11/2013", self.cliente)
        self.venda.data |should| equal_to ("10/11/2013")
        self.venda.cliente.id_cliente |should| equal_to (1)
        self.venda.cliente.nome |should| equal_to ("luiz")
        self.venda.cliente.endereco |should| equal_to ("rua a")
        self.produto = Produto(10, "marca a", "modelo a",321,30)
        self.venda.adicionar_produto(self.produto)
        self.venda.produtos[0].id_produto |should| equal_to (10)
        self.venda.produtos[0].marca |should| equal_to ("marca a")
        self.venda.produtos[0].modelo |should| equal_to ("modelo a")
        self.venda.produtos[0].numserie |should| equal_to (321)
	self.venda.produtos[0].quantidade |should| equal_to (30)
Example #19
0
def agregar():
    #agrega un cliente al arbol y a la cola de prioridad.
    nombre = input("Ingrese el nombre: ")
    cantidad = int(input("Ingrese la cantidad: "))
    precio = int(input("Ingrese el precio: "))
    fechaDeEntrega = input("Ingrese la fecha de entrega (DD-MM-AAAA): ")
    modoDePago = pago()
    cliente = C.Cliente(nombre, cantidad, precio, fechaDeEntrega, modoDePago)
    arbol.agregar(cliente)
    colaDePrioridad.insertar(cliente)
    print("")
    print("Cliente agregado exitosamente")
    print("")
    return volverAlMain()
Example #20
0
 def deletarCli():
     cliente = Cliente(txtID.get(), txtNome.get(), txtCPF.get(),
                       txtEmail.get(), txtTel.get())
     Cliente.ExcluirCliente(cliente)
     txtID.config(state="normal")
     txtNome.config(state="normal")
     txtCPF.config(state="normal")
     txtEmail.config(state="normal")
     txtTel.config(state="normal")
     txtID.delete(0, END)
     txtNome.delete(0, END)
     txtCPF.delete(0, END)
     txtEmail.delete(0, END)
     txtTel.delete(0, END)
Example #21
0
def loginCliente():
    os.system('clear')

    nome = input(colored('Nome: ', 'green')).title()
    cpf = input(colored('CPF:  ', 'green'))
    os.system('clear')

    cliente = acharCliente(nome, cpf)

    if not cliente:
        cliente = Cliente(nome, cpf)
        novoCliente(cliente)
        os.system('clear')

    menuCliente(cliente)
Example #22
0
 def MenuagregarClientes(self, banco):
     print(" \n Eligió agregar un cliente")
     print("inserte los siguientes datos:")
     print("Nombre")
     nombre = input("")
     print("Edad")
     edad = input(" ")
     print("Direccion")
     direccion = input("")
     print("Nombre del cliente:" + nombre)
     print("Edad:" + edad)
     print("Direccion:" + direccion)
     newcte = Cliente(nombre, edad, direccion)
     banco.agregarClientes(newcte)
     banco.writeFile()
     return
Example #23
0
 def agregar(self):
     cliente = C.Cliente(self.__Entry[0].get(), self.__Entry[1].get(),
                         self.__Entry[2].get(), self.__Entry[3].get(),
                         self.__Entry[4].get())
     try:
         if cliente.getPrioridad() >= prioridadActual:
             arbol.agregar(cliente)
             colaDePrioridad.insertar(cliente)
             self.dialogo("Mensaje", "200x50",
                          "Cliente agregado exitosamente", "Hecho")
         else:
             self.dialogo("Mensaje", "300x50",
                          "Ingrese una fecha válida, Cliente no agregado",
                          "Aceptar")
     except Exception:
         self.dialogo("Mensaje", "200x50",
                      cliente.getNombre() + " ya existe", "Aceptar")
Example #24
0
  def registrarCliente(self):
    #Este método es para que el cliente interactue con el MenuCliente y así obtener sus datos
    print("Bienvenido.")
    print("Ingrese su nombre: ")
    nombre = input()
    saldo = input("Ingrese su saldo: ") 
    registro = nombre + saldo
    cliente = Tienda(Cliente(nombre,saldo))
    cliente.catalogoproductos()
		while 0<1:
			eleccion=input("\n¿Que desea hacer?:\na)Ver carrito\nb)Comprar\nc)Eliminar producto del carrito\nEscriba su elección 'a', 'b' o 'c': ")
			if eleccion == "a":
				cliente.catalogoproductos()
			elif eleccion == "b":
				cliente.comprar()
			elif eleccion == "c":
				Eliminarproducto = input("\nIntroduzca el nombre del articulo que desea eliminar: ")
				cliente.eliminar(Eliminarproducto)
Example #25
0
    def menuCuenta(self):

        #Aca genero un cliente, pero bien podría ser por un metodo
        # o como atributo de la clase
        cte = Cliente("Virginia", "direccion de Virginia", 32)

        opciones = "Menu Cuenta"
        opciones += "Teclee la opcion que desee"
        opciones += "1. Agregar una Cuenta"
        opciones += "2. Eliminar una Cuenta"

        print(opciones)
        opcion = input()
        print("Elegiste:" + opcion)

        if opcion == "1":
            self.agregarCuenta(cte)
        else:
            print("Eligió la opción NO correcta")
Example #26
0
class Pruebas:
    pass

    print("\t *********La clase madre")
    cuenta1 = Cuenta(300)
    print(cuenta1)
    cuenta1.depositar(400)
    print(cuenta1)

    print("\n\n\t *********La clase hija")
    cuenta2 = CuentaHija(200, "debito")
    print(cuenta2)
    cuenta2.depositar(8000)
    print(cuenta2)

    print("\n\n\t *********La clase Cliente")

    cliente = Cliente("Virginia", "direccion", 25, cuenta1)
    print("Objeto cliente::", cliente)
Example #27
0
def repetirTresVeces(
        pFecha):  # se solicita un vuelo cada minuto en una fecha especifica

    for a in ciudadesDestino.keys():

        fecha = 0
        nombreCiudad = ""

        nombreCiudad = a + "Ciudad"

        while ciudadesDestino[a][0] < 3:
            nombreCiudad = Cliente.Ciudad(a)
            if nombreCiudad.solicitarVuelo("2019-11-" + str(pFecha)):
                print("Listo", ciudadesDestino[a][0])

            fecha += 1

            ciudadesDestino[a][0] = fecha
            time.sleep(60)
Example #28
0
    def agregarClientesEmpresa(self, empresaAgregarClientes, idempresa):

        stopLlenadoClientes = False
        empresa = empresaAgregarClientes
        print('Proceda a ingresar los clientes')

        while not stopLlenadoClientes:
            cancelar = False

            if empresa.getCantidadClientes() > 0:

                respuestaCorrecta = False

                while not respuestaCorrecta:
                    _input = input(
                        'Desea seguir agregando más clientes(S/N):\n').upper()

                    if _input == 'N':
                        cancelar = True
                        stopLlenadoClientes = True
                        respuestaCorrecta = True
                    elif _input == 'S':
                        respuestaCorrecta = True

            if not cancelar:
                nombreCliente = input(
                    'Ingrese el nombre del cliente:\n').upper()
                direccionCliente = input(
                    'Ingrese la direccion del cliente:\n').upper()
                rfcCliente = input('Ingrese el rfc del cliente:\n').upper()
                cliente = Cliente.Cliente(nombreCliente, direccionCliente,
                                          rfcCliente)
                empresa.setCliente(cliente)
                print(f'''
                Se ingresó al cliente:

                {cliente.getDatos()}

                ''')
                self.mongo.guardarClient(nombreCliente, direccionCliente,
                                         rfcCliente, idempresa)
Example #29
0
def form(request):
    ciudad = request.GET["ciudad"]
    consulta = request.GET["optradio"]
    print(ciudad)
    print(consulta)

    #Se crea un cliente ICE
    miCliente = Cliente.Client(ciudad, consulta)
    miCliente.main(sys.argv)

    #Retorna el arreglo para mostrarlo en las vistas
    medidas = miCliente.retornaMedida()

    if consulta == 'semana':
        return render(request, "informe.html", {'miLista':medidas,'ciudad':ciudad})
    else:
        print(len(medidas))
        print(type(medidas[0].hora))
        print(medidas[0].hora)
        nocturno = ["21:00","22:00","23:00","0:00","1:00","2:00","3:00","4:00","5:00","6:00"]
        return render(request, "vistaHoras.html", {'miLista':medidas, 'ciudad':ciudad,'noche':nocturno})
Example #30
0
 def openFile(self, name):
     with open("Archivo.txt","r") as archivo_1:
         for linea in archivo_1:
             datos = linea.split(",")
             if (len(datos)==1):
                 continue
             if datos[0]=='N':
                 cte = Cliente (datos[1], int(datos[2]), datos[3])
                 self.clientes.append(cte)
             elif datos[0]=='A':
                 ctaa = CuentaDeAhorro(float(datos[1]),float(datos[2]) )
                 cte.agregarCuentas(ctaa)
             else :
                 ctac = CuentaCredito(float(datos[1]),float(datos[2]))
                 cte.agregarCuentas(ctac)
     archivo_1.close()
Example #31
0
# Bind the socket to the port
server_address = ('localhost', 10000)
print >>sys.stderr, 'starting up on %s port %s' % server_address
sock.bind(server_address)

#Calling listen() puts the socket into server mode, and accept() waits for an incoming connection.

# Listen for incoming connections
sock.listen(1)

while True:
# Wait for a connection
    print >>sys.stderr, 'waiting for a connection'


    #accept() returns an open connection between the server and client, along with the address of the client. The connection is actually a different socket on another port (assigned by the kernel). Data is read from the connection with recv() and transmitted with sendall().



# bucle para atender clientes
    while 1:
      # Se espera a un cliente
      connection, client_address = sock.accept()
      # Se escribe su informacion
      print "conectado "+str(client_address)
      # Se crea la clase con el hilo
      hilo = Cliente(connection, server_address)
      # y se arranca el hilo
      hilo.start()
Example #32
0
  def aplicar(self,cliente,ladiciona,lconsumos,lincluPlan,lincluServ,lplan,lproductos,lservicios,mes,anio):
    
    #String que se devolvera
    strimpr=''
    #Obtenemos los productos del cliente que sean post
    lp=self.conseguir_productosPost(cliente,lproductos,lplan)
    
    #Aca se sumaran el total de cada producto facturado, para asi tener un monto
    #total de la factura
    montoGlobal=0
    
    #Guardamos el string con la info de la factura.
    #Util para su posterior impresion.
    strimpr=strimpr+"-->Factura Fiscal generada:"+"\n"
    strimpr=strimpr+"Nombre:"+cliente.getNombre()+"\n"
    strimpr=strimpr+"\n"
    #strimpr=strimpr+cliente.getId()
    strimpr=strimpr+"Direccion:"+cliente.getDireccion()
    strimpr=strimpr+"\n"
    strimpr=strimpr+"Mes/Anio factura:"+str(mes)+"-"+str(anio)
    strimpr=strimpr+"\n"
    strimpr=strimpr+"Fecha emision:"+str(datetime.datetime.now())
    strimpr=strimpr+"\n"
    
    #Iteraremos sobre los productos
    for a in lp:
      rentaplan=self.obtener_renta(a,lplan)
      
      nombreprod=a.getNombre()
      idprod=str(a.getIdn())
      
      strimpr=strimpr+"-->Producto:"+nombreprod+"-"+idprod
      strimpr=strimpr+"\n"
      montototal=0
      montototal=montototal+rentaplan
      
      #Sumaremos el total de sus consumos
      #Esta lista sera de la forma (descripcion),(total),(descripcion),(total),...
      listasumadaconsumos=[]
      for b in lconsumos:
	#Revisamos que sea un consumo para el producto que analizamos en esta iteracion
	if ((b.getNombre_Producto() == nombreprod) & (str(b.getId_Producto()) == idprod)):
	  #Si es un consumo que no hemos visto, lo ponemos por primera vez en la
	  #lista
	  if (not ((b.getDescripcion()) in listasumadaconsumos)):
	    listasumadaconsumos.append(b.getDescripcion())
	    listasumadaconsumos.append(int(b.getCosto()))
	  #Si ya el consumo de ese tipo ha sido puesto en la lista, se le va sumando
	  #a la posicion aledanha que es lo que se habia consumido mas lo nuevo.
	  else:
	    i=listasumadaconsumos.index(b.getDescripcion())
	    listasumadaconsumos[i+1]=int(listasumadaconsumos[i+1])+int(b.getCosto())
	    
	#Veremos el total de lo incluido en su plan(mismo formato-logica de arrib
	
      linclud=[]
      laux=[]
      #laux es para evitar caso especifico en que varios productos del cliente
      #esten asociados al mismo plan. De esta manera no estaremos sumando
      #incluidos de mas.
      for c in lincluPlan:
	#TOmamos solo los incluidos en el plan en cuestion.
	if ((c.getNombre() == a.getNombre_Plan()) & (c.getTipo() not in laux)):
	  linclud.append(c.getTipo())
	  linclud.append(c.getCantidad())
	  laux.append(c.getTipo())
	  
	#Vemos los servicios que tengo para este prod
      lservs=[]
      for w in ladiciona:
	if ((w.getNombre_Producto() == nombreprod) & (str(w.getId_Producto()) == idprod)):
	  lservs.append(w)
	  
	   
      #Vemos lo incluido en dichos servicios y metemos todo en una lista
      lincluservs=[]
      laux2=[]
      #laux2 tiene la misma funcion que laux para la inclusion en los planes.
      
      #Itero sobre los servicios del producto en cuestion
      for x in lservs:
	#Recorro a ver que tiene incluido el servicio x
	for y in lincluServ:
	  if (x.getNombre_Servicio() == y.getNombre_Sextr()):
	    if (((x.getNombre_Servicio() not  in laux2)) & ((y.getTipo() not in laux2))):
	      lincluservs.append(y.getTipo())
	      lincluservs.append(int(y.getCantidad()))
	      laux2.append(x.getNombre_Servicio())
	      laux2.append(y.getTipo())

	#Mezclo las listas de incluidoplan e incluidoservs para tener una total
	
	#Recorro la lista de lo que se incluye en todos sus servs extra:
	#Si algo de ese tipo ya esta incluido en su plan, se le suma.
	#Si no, se "appendea" a la lista para tenerlo todo en una lista que
	#englobe todo.
      for d in lincluservs:
	if (isinstance(d,str)):
	  if ((d in linclud)):
	    i2=linclud.index(d)
	    i3=lincluservs.index(d)
	    linclud[i2+1]=linclud[i2+1]+int(lincluservs[i3+1])
	  else:
	    i4=lincluservs.index(d)
	    linclud.append(d)
	    linclud.append(int(lincluservs[i4+1]))
    
	#Sumaremos las rentas de los servicios que tiene afiliado
	#Veo los servicios que ha adicionado y lo comparo con 
	#los servicios en general, si coinice, agarro su costo.
      laux3=[]
      sumaservs=0
      for e in lservicios:
	for h in lservs:
	  if ((e.getNombre() == h.getNombre_Servicio()) & (h.getNombre_Servicio() not in laux3)):
	    sumaservs=sumaservs+e.getCosto()
	    laux3.append(h.getNombre_Servicio())
	  
	#Falta contrastar lo consumido(en listasumadaconsumos) con lo incluido
	#(en lincud)
	
	#Iteramos sobre lo que consumio y sobre lo que tiene incluido:
	#Vamos restando a lo que consumio segun lo que tiene incluido, a ver si
	#sobran consumos, que significaria haber consumido de mas.
      for t in listasumadaconsumos:
	for k in linclud:
	  if ((isinstance(k,str)) & (isinstance(t,str))):
	    if (k == t):
	      index1=listasumadaconsumos.index(t)
	      index2=linclud.index(k)
	      listasumadaconsumos[index1+1]=listasumadaconsumos[index1+1]-linclud[index2+1]
	      
	#Recorremos a ver si se sobrepaso con algun consumo
	#Vamos por la lista, si consigo un string: no hago nada, pues
	#el string es el tipo de consumo que esta en la casilla siguiente
	#de la lista.
      sobrepaso=0
      for v in listasumadaconsumos:
	if (isinstance(v, str)):
	  pass
	else:
	  if (v > 0):
	    sobrepaso=sobrepaso+v
	
	#Luego el monto total de la factua es:
	#La renta de su plan, mas la renta de los servicios que ha agregado,
	#mas algun consumo que haya hecho en exceso.
      montototal=sumaservs+rentaplan+sobrepaso
      strimpr=strimpr+"  Plan contratado:"+a.getNombre_Plan()+"\n"
      strimpr=strimpr+"  Renta del plan:"+str(rentaplan)+"\n"
      strimpr=strimpr+"  Servicios Contratados para este producto:"+"\n"
      for z in lservs:
	strimpr=strimpr+"  "+z.getNombre_Servicio()+"\n"
      strimpr=strimpr+"  Total por sobrepaso de consumos:"+str(sobrepaso)+"\n"
      strimpr=strimpr+"  Total por este producto:"+str(montototal)+"\n"
	  
      #Agregamos el costo de facturar este producto al total.
      montoGlobal=montoGlobal+montototal
	    
    strimpr=strimpr+"-->Monto total de la factura:"+str(montoGlobal)+"\n"
    return (montoGlobal,strimpr)