Ejemplo n.º 1
0
    def test_unConsumoConAfiliacionYExcesosMultiples(self):
        self.myConsult.setComando("""
        insert into EMPRESA values
        (12345678,'MOCEL');
        
        insert into CLIENTE values (22714709,'Gustavo El Khoury',
        'Urb. Monte Elena Qta. Santa Teresa');
        
        insert into PRODUCTO values
        ('CBZ27326','iPhone 4S','12345678',22714709);
        
        insert into SERVICIO values
        (1001,'Segundos a MOCEL',0.15,FALSE);
        
        insert into PLAN values
        (3002,'Mixto Plus','Este fabuloso plan incluye todos los servicios, y 
        tarifas para excesos',211,311,'postpago');
        
        insert into INCLUYE values
        (3002,1001,0.1,100);
        
        insert into AFILIA values
        ('CBZ27326',3002,'paquete');
        
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp,20);
        
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp - interval '45 days',20);
        
        commit;""")

        self.myConsult.execute()
        testBill = Factura.Factura(22714709, "CBZ27326")
        result = testBill.totalCobrar()

        # El valor de la deuda debe ser 211 + 0.1*(120-100) = 213
        # Corresponde a la renta mas los 20 consumos no incluidos en el plan
        theoreticResult = 213

        try:
            self.assertEqual(
                result, theoreticResult,
                "Error en la prueba 5: Se esperaba %d y se recibio %d" %
                (theoreticResult, result))
        except AssertionError, e:
            print e
            print("Prueba 5 FALLIDA")
            return
Ejemplo n.º 2
0
    def test_casoBase(self):
        self.myConsult.setComando("""
        insert into EMPRESA values
        (12345678,'MOCEL');
        
        insert into CLIENTE values (22714709,'Gustavo El Khoury',
        'Urb. Monte Elena Qta. Santa Teresa');
        
        insert into PRODUCTO values
        ('CBZ27326','iPhone 4S','12345678',22714709);
        
        insert into SERVICIO values
        (1001,'Segundos a MOCEL',0.15,FALSE);
        
        insert into plan values
        (3002,'Mixto Plus','Este fabuloso plan incluye todos los servicios, y 
        tarifas para excesos',211,311,'postpago');
        
        insert into incluye values
        (3002,1001,0.1,100);
        
        insert into AFILIA values
        ('CBZ27326',3002,'paquete');
        
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp - interval '45 days',50);
        
        commit;""")

        self.myConsult.execute()
        testBill = Factura.Factura(22714709, "CBZ27326")
        result = testBill.totalCobrar()
        theoreticResult = 211
        try:
            self.assertEqual(
                result, theoreticResult,
                "Error en la prueba 1: Se esperaba %d y se recibio %d" %
                (theoreticResult, result))
        except AssertionError, e:
            print e
            print("Prueba 1 FALLIDA")
            return
Ejemplo n.º 3
0
import Cliente, Factura, SMS, Call, CallInternational

if __name__ == "__main__":
    # principal:
    cli = Cliente.Cliente("Juan Perez", 600998833, "56.777.888G")
    fact = Factura.Factura("30/09/2016", "16/0001", cli)
    fact.addDetalle(SMS.SMS("1/09/2016", "14:15", 808585585, 0.05))
    fact.addDetalle(SMS.SMS("10/09/2016", "08:09", 608585445, 0.05))
    fact.addDetalle(SMS.SMS("12/09/2016", "12:58", 608564585, 0.05))
    fact.addDetalle(SMS.SMS("19/09/2016", "14:15", 208585585, 0.05))

    fact.addDetalle(Call.Call("9/09/2016", "14:15", 208585585, 0.025, 0.023))
    fact.addDetalle(Call.Call("19/09/2016", "4:15", 208585585, 0.025, 0.08))
    fact.addDetalle(Call.Call("29/09/2016", "16:15", 208555585, 0.025, 0.12))

    fact.addDetalle(
        CallInternational.CallInternational("2/09/2016", "09:15", 208555585,
                                            0.025, 0.12, 1))

    fact.generar()
Ejemplo n.º 4
0
def main():
    print("BIENVENIDOS")

    #Menu de las consultas
    flag = True

    while flag:
        print "\n---Menu---"
        print "\nElija el modulo de su preferencia: "
        print "   1.- Cliente."
        print "   2.- Producto."
        print "   3.- Afiliaciones."
        print "   4.- Consumos."
        print "   5.- Generacion de facturas."
        print "   6.- Salir"

        op = int(validacion.validarNumero('Opcion: '))

        if op == 1:

            flag1 = True
            while flag1:
                print "\nMODULO CLIENTE \n"
                print "   1.- Registrar un cliente."
                print "   2.- Consultar un cliente."
                print "   3.- Regresar al menu anterior."

                op1 = int(validacion.validarNumero('Opcion: '))
                if op1 == 1:
                    print "\n1.- Registrar un cliente."
                    moduloCliente.registroCliente()
                elif op1 == 2:
                    print "\n2.- Consultar un cliente."

                    print "Mostrando todos los clientes: "
                    moduloCliente.listarClientes()

                    moduloCliente.consultaClientes()
                elif op1 == 3:
                    print "\n3.- Regresar al menu anterior."
                    flag1 = False
                elif (op1 > 3 or op1 <= 0):
                    print "\nERROR: La opcion no es valida."

        elif op == 2:
            flag2 = True
            while flag2:
                print "\nMODULO PRODUCTO\n"
                print "   1.- Registrar un producto."
                print "   2.- Consultar un producto."
                print "   3.- Regresar al menu anterior."

                op2 = int(validacion.validarNumero('Opcion: '))
                if op2 == 1:
                    print "\n1.- Registrar un producto."
                    productos.nuevoProducto()
                elif op2 == 2:
                    print "\n2.- Consultar un producto."
                    serie = productos.validarSerie()
                    print str(productos.obtenerProducto(serie))
                elif op2 == 3:
                    print "\n3.- Regresar al menu anterior."
                    flag2 = False
                elif (op2 > 3 or op2 <= 0):
                    print "\nERROR: La opcion no es valida."
        elif op == 3:
            flag3 = True

            while flag3:
                print "\nMODULO AFILIACIONES\n"
                print "   1.- Afiliar un producto."
                print "   2.- Desafiliar un producto."
                print "   3.- Consultar planes de un producto."
                print "   4.- Regresar al menu anterior."

                op3 = int(validacion.validarNumero('Opcion: '))

                print "Mostrando todos los productos disponibles: "
                productos.listarProductos()

                if op3 == 1:
                    producto31 = productos.validarSerie()
                    flag31 = True

                    while flag31:
                        print "\n1.- Afiliar un producto a un :"
                        print "   1.- Plan."
                        print "   2.- Paquete de Servicios."
                        print "   3.- Regresar."

                        op31 = int(validacion.validarNumero('Opcion: '))
                        if op31 == 1:

                            print "\n1.- Plan."

                            print "Mostrando todos los planes disponibles: "
                            Afiliaciones.impPlanes()

                            cod_plan = int(
                                validacion.validarNumero(
                                    'Introduzca el codigo del plan: '))
                            Afiliacion = Afiliaciones.Afiliaciones(
                                producto31, cod_plan)
                            Afiliacion.CrearAfiliacion()
                            flag31 = False

                        elif op31 == 2:
                            print "\n2.- Paquete de Servicios."

                            print "Mostrando todos los paquetes de servicios disponibles: "
                            Afiliaciones.impPaquetes()

                            cod_ser = int(
                                validacion.validarNumero(
                                    'Introduzca el codigo del paquete de servicio: '
                                ))
                            Afiliacion = Afiliaciones.Afiliaciones(
                                producto31, cod_ser)
                            Afiliacion.CrearContratacion()
                            flag31 = False

                        elif op31 == 3:
                            print "\n3.- Regresar."
                            flag31 = False

                        elif (op31 > 3 or op31 <= 0):
                            print "\nERROR: La opcion no es valida."

                elif op3 == 2:

                    flag32 = True
                    producto32 = productos.validarSerie()
                    while flag32:
                        print "\n2.- Desafiliar un producto a un: ."
                        print "   1.- Plan."
                        print "   2.- Paquete de Servicios."
                        print "   3.- Regresar."

                        op32 = int(validacion.validarNumero('Opcion: '))
                        if op32 == 1:
                            print "\n1.- Plan."

                            print "Mostrando todos los planes disponibles: "
                            Afiliaciones.impPlanes()

                            cod_plan = int(
                                validacion.validarNumero(
                                    'Introduzca el codigo del plan: '))
                            Afiliacion = Afiliaciones.Afiliaciones(
                                producto32, cod_plan)
                            Afiliacion.DesafiliarProducto()

                        elif op32 == 2:
                            print "\n2.- Paquete de Servicios."

                            print "Mostrando todos los paquetes de servicios disponibles: "
                            Afiliaciones.impPaquetes()

                            cod_ser = int(
                                validacion.validarNumero(
                                    'Introduzca el codigo del paquete de servicio: '
                                ))
                            Afiliacion = Afiliaciones.Afiliaciones(
                                producto32, cod_ser)
                            Afiliacion.desafiliarContratacion()

                        elif op32 == 3:
                            print "\n3.- Regresar."
                            flag32 = False
                        elif (op32 > 3 or op32 <= 0):
                            print "\nERROR: La opcion no es valida."

                elif op3 == 3:
                    print "\n3.- Consultar planes de un producto."
                    producto33 = productos.validarSerie()
                    Afiliacion = Afiliaciones.Afiliaciones(producto33, 1)
                    Afiliacion.ConsultarPlanes()

                elif op3 == 4:
                    print "\n4.- Regresar al menu anterior."
                    flag3 = False

                elif (op3 > 4 or op3 <= 0):
                    print "\nERROR: La opcion no es valida."

        elif op == 4:

            flag4 = True
            while flag4:
                print "\nMODULO CONSUMOS\n"
                print "   1.- Registrar un consumo."
                print "   2.- Consultar consumos de un producto."
                print "   3.- Regresar al menu anterior."

                op4 = int(validacion.validarNumero('Opcion: '))
                if op4 == 1:
                    print "\n1.- Registrar un consumo."

                    print "Mostrando todos los productos disponibles: "
                    productos.listarProductos()

                    consumos.crearConsumoInteractivo()
                elif op4 == 2:
                    print "\n2.- Consultar consumos de un producto."

                    print "Mostrando todos los productos disponibles: "
                    productos.listarProductos()
                    consumos.consumosProducto()
                elif op4 == 3:
                    print "\n3.- Regresar al menu anterior."
                    flag4 = False
                elif (op4 > 3 or op4 <= 0):
                    print "\nERROR: La opcion no es valida."

        elif op == 5:
            flag5 = True
            while flag5:
                print "\nMODULO GENERACION DE FACTURAS"
                print "   1.- Generar la factura de un cliente."
                print "   2.- Regresar al menu anterior."
                op5 = int(validacion.validarNumero('Opcion: '))
                if op5 == 1:
                    print "\n1.- Generar la factura de un cliente."
                    #Genera la factura
                    fact = Factura.pedirFactura()
                    if fact:
                        print fact

                elif op5 == 2:
                    print "\n2.- Regresar al menu anterior."
                    flag5 = False
                elif (op5 > 2 or op5 <= 0):
                    print "\nERROR: La opcion no es valida."

        elif op == 6:
            print "\nHasta luego."
            flag = False
        elif (op > 6 or op <= 0):
            print "\nERROR: La opcion no es valida."
Ejemplo n.º 5
0
 def __init__(self):
     self.factura = Factura()
Ejemplo n.º 6
0
def imp():
    Factura.generar(AutomataOrden.Facturafinal, Menu, Total, Facturas)
Ejemplo n.º 7
0
def menu():
    _opcion = ''
    _contS = 1
    _contI = 1
    _sand = ''
    _ingre = ''
    _listI = []
    _ingreN = ''
    _total = 0
    _opcionM = ''
    _totalF = 0

    #Ciclo de todo el menu
    while (_opcionM != 'n'):
        _sand = Sandwiche()
        _ingreN = Ingrediente()
        print(30 * "*")
        print("SANDWICHES UCAB")
        print("Sandwiche Número " + str(_contS))
        print(30 * "*")
        print()

        #Pedido de sandwiches
        #Ciclo para el pedido de sandwiches
        while (_opcion != "d") and (_opcion != "t") and (_opcion != "i"):
            print("Opciones:")
            _opcion = input(
                "Tamaños: Triple ( t ) Doble ( d ) Individual ( i ): ")
            if (_opcion == "d"):
                _sand = Sandwiche("Doble")
            elif (_opcion == "t"):
                _sand = Sandwiche("Triple")
            elif (_opcion == "i"):
                _sand = Sandwiche("Individual")
            else:
                print("Debe seleccionar el tamaño correcto!!")

        #Pedido de ingredientes
        print()
        print("Ingredientes:")
        print("Jamón" + 25 * " " + "(ja)")
        print("Champiñones" + 19 * " " + "(ch)")
        print("Pimenton" + 22 * " " + "(pi)")
        print("Doble Queso" + 19 * " " + "(dq)")
        print("Aceitunas" + 21 * " " + "(ac)")
        print("Pepperoni" + 21 * " " + "(pp)")
        print("Salchichón" + 20 * " " + "(sa)")
        print()

        #Ciclo para el pedido de ingredientes
        while (_contI > 0):
            _ingre = input("Indique ingrediente (enter para terminar): ")
            if (_ingre == '') and (_contI == 1):
                print("Usted seleccionó un sadwich " +
                      str(_sand.get_tamano()) + " con Queso")
                _contI = 0

            elif (_ingre == "ja"):
                _ingreN = Ingrediente("Jamón")
                _listI.append(_ingreN.get_nombre())
                _contI += 1
                _total += _ingreN.get_precio()

            elif (_ingre == "ch"):
                _ingreN = Ingrediente("Champiñones")
                _listI.append(_ingreN.get_nombre())
                _contI += 1
                _total += _ingreN.get_precio()

            elif (_ingre == "pi"):
                _ingreN = Ingrediente("Pimentón")
                _listI.append(_ingreN.get_nombre())
                _contI += 1
                _total += _ingreN.get_precio()

            elif (_ingre == "dq"):
                _ingreN = Ingrediente("Doble Queso")
                _listI.append(_ingreN.get_nombre())
                _contI += 1
                _total += _ingreN.get_precio()

            elif (_ingre == "ac"):
                _ingreN = Ingrediente("Aceitunas")
                _listI.append(_ingreN.get_nombre())
                _contI += 1
                _total += _ingreN.get_precio()

            elif (_ingre == "pp"):
                _ingreN = Ingrediente("Pepperoni")
                _listI.append(_ingreN.get_nombre())
                _contI += 1
                _total += _ingreN.get_precio()

            elif (_ingre == "sa"):
                _ingreN = Ingrediente("Salchichón")
                _listI.append(_ingreN.get_nombre())
                _contI += 1
                _total += _ingreN.get_precio()

            else:
                print("Usted seleccionó un sandwiche " +
                      str(_sand.get_tamano()) + " con " +
                      str(ingredients(_listI)))
                _contI = 0

        #Aca se suma el precio del sandwiche, el total de precio de ingredientes y en caso de ser un segundo pedido en adelante se le suma lo que se llevaba
        _totalF = _totalF + _sand.get_precio() + _total
        # Se llama metodo de Modulo Factura para mostrar la misma
        _opcionM = f.factura(_sand.get_tamano(), _sand.get_precio(), _total,
                             _contS, _totalF)

        # En este if se reinician variables en caso de que se haga otro pedido
        if (_opcionM != 'n'):
            print("\n" * 100)
            del _sand
            del _ingreN
            _opcion = ''
            _opcionM = ''
            _contI = 1
            _contS += 1
            _listI = []
Ejemplo n.º 8
0
def main():
    print("BIENVENIDOS")
   
    #Menu de las consultas
    flag = True   

    while flag:
        print "\n---Menu---"
        print "\nElija el modulo de su preferencia: "
        print "   1.- Cliente."
        print "   2.- Producto."
        print "   3.- Afiliaciones."
        print "   4.- Consumos."
        print "   5.- Generacion de facturas."
        print "   6.- Salir"
        
        op = int(validacion.validarNumero('Opcion: '))
        
        if op == 1:
            
            flag1 = True
            while flag1:
                print "\nMODULO CLIENTE \n"                    
                print "   1.- Registrar un cliente."
                print "   2.- Consultar un cliente."
                print "   3.- Regresar al menu anterior."
        
                op1 = int(validacion.validarNumero('Opcion: '))
                if op1 == 1:
                    print "\n1.- Registrar un cliente."
                    moduloCliente.registroCliente()
                elif op1 == 2:     
                    print "\n2.- Consultar un cliente."
                    
                    print "Mostrando todos los clientes: "
                    moduloCliente.listarClientes()
                    
                    moduloCliente.consultaClientes()         
                elif op1 == 3: 
                    print "\n3.- Regresar al menu anterior."
                    flag1 = False
                elif (op1 > 3 or op1 <= 0):
                    print "\nERROR: La opcion no es valida."
                    
        elif op == 2:     
            flag2 = True
            while flag2:
                print "\nMODULO PRODUCTO\n"                    
                print "   1.- Registrar un producto."
                print "   2.- Consultar un producto."
                print "   3.- Regresar al menu anterior."
        
                op2 = int(validacion.validarNumero('Opcion: '))
                if op2 == 1:
                    print "\n1.- Registrar un producto."
                    productos.nuevoProducto()
                elif op2 == 2:     
                    print "\n2.- Consultar un producto."
                    serie = productos.validarSerie()                    
                    print str(productos.obtenerProducto(serie))
                elif op2 == 3: 
                    print "\n3.- Regresar al menu anterior."
                    flag2 = False
                elif (op2 > 3 or op2 <= 0):
                    print "\nERROR: La opcion no es valida."
        elif op == 3:    
            flag3 = True

            while flag3:
                print "\nMODULO AFILIACIONES\n"                   
                print "   1.- Afiliar un producto."
                print "   2.- Desafiliar un producto."
                print "   3.- Consultar planes de un producto."
                print "   4.- Regresar al menu anterior."     
                           
                op3 = int(validacion.validarNumero('Opcion: '))
                
                print "Mostrando todos los productos disponibles: "
                productos.listarProductos()
                
                if op3 == 1:
                    producto31 = productos.validarSerie()   
                    flag31 = True                                       
                    
                    while flag31: 
                        print "\n1.- Afiliar un producto a un :"                   
                        print "   1.- Plan."
                        print "   2.- Paquete de Servicios."
                        print "   3.- Regresar."
                
                        op31 = int(validacion.validarNumero('Opcion: '))
                        if op31 == 1:
                            
                            print "\n1.- Plan."
                            
                            print "Mostrando todos los planes disponibles: "
                            Afiliaciones.impPlanes()
                            
                            cod_plan = int(validacion.validarNumero('Introduzca el codigo del plan: '))
                            Afiliacion = Afiliaciones.Afiliaciones(producto31,cod_plan)                            
                            Afiliacion.CrearAfiliacion()
                            flag31 = False
                            
                        elif op31 == 2:     
                            print "\n2.- Paquete de Servicios."
                            
                            print "Mostrando todos los paquetes de servicios disponibles: "
                            Afiliaciones.impPaquetes()
                            
                            cod_ser = int(validacion.validarNumero('Introduzca el codigo del paquete de servicio: '))
                            Afiliacion = Afiliaciones.Afiliaciones(producto31,cod_ser)                            
                            Afiliacion.CrearContratacion()
                            flag31 = False
                              
                        elif op31 == 3: 
                            print "\n3.- Regresar."                     
                            flag31 = False
                            
                        elif (op31 > 3 or op31 <= 0):
                            print "\nERROR: La opcion no es valida."
                            

                elif op3 == 2:     
                    
                    flag32 = True
                    producto32 = productos.validarSerie()  
                    while flag32:       
                        print "\n2.- Desafiliar un producto a un: ."             
                        print "   1.- Plan."
                        print "   2.- Paquete de Servicios."
                        print "   3.- Regresar."
                
                        op32 = int(validacion.validarNumero('Opcion: '))
                        if op32 == 1:
                            print "\n1.- Plan."
                            
                            print "Mostrando todos los planes disponibles: "
                            Afiliaciones.impPlanes()
                            
                            cod_plan = int(validacion.validarNumero('Introduzca el codigo del plan: '))
                            Afiliacion = Afiliaciones.Afiliaciones(producto32,cod_plan)                            
                            Afiliacion.DesafiliarProducto()
                            
                        elif op32 == 2:     
                            print "\n2.- Paquete de Servicios."
                            
                            print "Mostrando todos los paquetes de servicios disponibles: "
                            Afiliaciones.impPaquetes()
                            
                            cod_ser = int(validacion.validarNumero('Introduzca el codigo del paquete de servicio: '))
                            Afiliacion = Afiliaciones.Afiliaciones(producto32,cod_ser)                            
                            Afiliacion.desafiliarContratacion()                          
                            
                        elif op32 == 3: 
                            print "\n3.- Regresar."
                            flag32 = False
                        elif (op32 > 3 or op32 <= 0):
                            print "\nERROR: La opcion no es valida."
                            
                           
                elif op3 == 3: 
                    print "\n3.- Consultar planes de un producto."
                    producto33 = productos.validarSerie()
                    Afiliacion = Afiliaciones.Afiliaciones(producto33,1) 
                    Afiliacion.ConsultarPlanes()

                elif op3 == 4: 
                    print "\n4.- Regresar al menu anterior."                    
                    flag3 = False 
  
                elif (op3 > 4 or op3 <= 0):
                    print "\nERROR: La opcion no es valida."

        elif op == 4:   
            
            flag4 = True
            while flag4:    
                print "\nMODULO CONSUMOS\n"                
                print "   1.- Registrar un consumo."
                print "   2.- Consultar consumos de un producto."
                print "   3.- Regresar al menu anterior."
        
                op4 = int(validacion.validarNumero('Opcion: '))
                if op4 == 1:
                    print "\n1.- Registrar un consumo."
                    
                    print "Mostrando todos los productos disponibles: "
                    productos.listarProductos()
            
                    consumos.crearConsumoInteractivo()
                elif op4 == 2:     
                    print "\n2.- Consultar consumos de un producto."   
                    
                    print "Mostrando todos los productos disponibles: "
                    productos.listarProductos()
                    consumos.consumosProducto()
                elif op4 == 3: 
                    print "\n3.- Regresar al menu anterior."
                    flag4 = False
                elif (op4 > 3 or op4 <= 0):
                    print "\nERROR: La opcion no es valida."
                    
        elif op == 5:   
            flag5 = True
            while flag5:      
                print "\nMODULO GENERACION DE FACTURAS"              
                print "   1.- Generar la factura de un cliente."
                print "   2.- Regresar al menu anterior."        
                op5 = int(validacion.validarNumero('Opcion: '))
                if op5 == 1:                    
                    print "\n1.- Generar la factura de un cliente."  
                    #Genera la factura
                    fact = Factura.pedirFactura()
                    if fact:
		      print fact
                   
                elif op5 == 2: 
                    print "\n2.- Regresar al menu anterior."
                    flag5 = False
                elif (op5 > 2 or op5 <= 0):
                    print "\nERROR: La opcion no es valida."  
                                                
        elif op == 6: 
            print "\nHasta luego."
            flag = False
        elif (op > 6 or op <= 0):
            print "\nERROR: La opcion no es valida."
Ejemplo n.º 9
0
    def test_variosConsumosConAfiliacionYExcesosMultiples3(self):
        self.myConsult.setComando("""
        insert into EMPRESA values
        (12345678,'MOCEL');
        
        insert into CLIENTE values (22714709,'Gustavo El Khoury',
        'Urb. Monte Elena Qta. Santa Teresa');
        
        insert into PRODUCTO values
        ('CBZ27326','iPhone 4S','12345678',22714709);
        
        insert into SERVICIO values
        (1001,'Segundos a MOCEL',0.15,FALSE);
        
        insert into SERVICIO values
        (1002,'Segundos a Otras Operadoras',0.20,FALSE);
        
        insert into SERVICIO values
        (1003,'Mensajes de texto',0.5,FALSE);
        
        insert into PLAN values
        (3002,'Mixto Plus','Este fabuloso plan incluye todos los servicios, y 
        tarifas para excesos',211,311,'postpago');
        
        insert into INCLUYE values
        (3002,1001,0.1,200);
        
        insert into INCLUYE values
        (3002,1002,0.2,100);
        
        insert into PAQUETE values
        (4001,'PegaoSMS',100);
        
        insert into CONTIENE values
        (4001,1003,100);
        
        insert into AFILIA values
        ('CBZ27326',3002,'paquete');
        
        insert into CONTRATA values
        ('CBZ27326',4001);
        
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp - interval '45 days',20000);
        
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1002,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1002,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1002,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1002,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1002,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1002,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1001,current_timestamp - interval '45 days',20000);
        
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1003,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1003,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1003,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1003,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1003,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1003,current_timestamp,20);
        insert into CONSUME values(DEFAULT,
        'CBZ27326',1003,current_timestamp - interval '45 days',20000);
        
        commit;""")

        self.myConsult.execute()
        testBill = Factura.Factura(22714709, "CBZ27326")
        result = testBill.totalCobrar()

        # El valor de la deuda debe ser 211 + 0.2*(120-100) + 100 + 0.5(120-100) = 325

        theoreticResult = 325

        try:
            self.assertEqual(
                result, theoreticResult,
                "Error en la prueba 8: Se esperaba %d y se recibio %d" %
                (theoreticResult, result))
        except AssertionError, e:
            print e
            print("Prueba 8 FALLIDA")
            return