예제 #1
0
 def test_toJSON(self):
     pedido = Pedido("222333444", "Antonio Martos", "c/ ejemplo2",
                     [{
                         "producto_id": "MI120",
                         "unidades": 1
                     }, {
                         "producto_id": "LAM1",
                         "unidades": 2
                     }])
     dict_pedido = {
         "pedido_id":
         "222333444",
         "destinatario":
         "Antonio Martos",
         "direccion":
         "c/ ejemplo2",
         "estado":
         "Unprocessed",
         "productos": [{
             "producto_id": "MI120",
             "unidades": 1
         }, {
             "producto_id": "LAM1",
             "unidades": 2
         }]
     }
     self.assertEqual(pedido.toJSON(), json.loads(json.dumps(dict_pedido)),
                      "Estado cambiado correctamente")
예제 #2
0
class Comprador(Usuario):
    def __init__(self, carteiraComprador):
        self.carrinho = Pedido()
        self.carteiraComprador = carteiraComprador

    def getCarteiraComprador(self):
        return self.carteira

    def getCarrinho(self):
        return self.carrinho

    def setCarteira(self, valor, op):
        if op == "+":
            self.carteira += valor
        else:
            self.carteira -= valor

    def addCarrinho(self, item):
        self.carrinho.addItem(item)
        return self.carrinho

    def finalizarCompra(self):
        for item in self.carrinho.itens:
            item.qtd -= 1
        return "COMPRA REALIZADA COM SUCESSO"
예제 #3
0
 def cargarPedido(self):
     #micliente = cargarCliente()
     micliente = 'Juanchy'
     #print("timedelta: ",datetime.datetime.now()+timedelta(minutes=15))
     pedido = Pedido(1, micliente, datetime.datetime.now(),
                     datetime.datetime.now() + timedelta(minutes=15))
     while True:
         pedido.agregar_detalle_pedido(self.pizzas)
         print(pedido.calcTotalPedido())
예제 #4
0
 def test_toString(self):
     pedido = Pedido("222333444", "Antonio Martos", "c/ ejemplo2",
                     [{
                         "producto_id": "MI120",
                         "unidades": 1
                     }, {
                         "producto_id": "LAM1",
                         "unidades": 2
                     }])
     string = "ID: 222333444\nDestinatario: Antonio Martos\nDirección: c/ ejemplo2\nEstado: Unprocessed\nProductos: producto_id: MI120 unidades: 1, producto_id: LAM1 unidades: 2, "
     self.assertEqual(pedido.toString(), string,
                      "Estado cambiado correctamente")
예제 #5
0
 def test_modificarDestinatario(self):
     pedido = Pedido("222333444", "Antonio Martos", "c/ ejemplo2",
                     [{
                         "producto_id": "MI120",
                         "unidades": 1
                     }, {
                         "producto_id": "LAM1",
                         "unidades": 2
                     }])
     pedido.setDestinatario("Antonio Martos 2")
     self.assertEqual(pedido.getDestinatario(), "Antonio Martos 2",
                      "Destinatario cambiado correctamente")
예제 #6
0
 def test_modificarDireccion(self):
     pedido = Pedido("222333444", "Antonio Martos", "c/ ejemplo2",
                     [{
                         "producto_id": "MI120",
                         "unidades": 1
                     }, {
                         "producto_id": "LAM1",
                         "unidades": 2
                     }])
     pedido.setDireccion("c/ modificada")
     self.assertEqual(pedido.getDireccion(), "c/ modificada",
                      "Estado cambiado correctamente")
예제 #7
0
 def nuevo_pedido(self, id_cliente, descripcion, etiquetas=' ', fecha_prev=' ', fecha_entrega=' ',
              id_estado=' ',precio=' ',pagado=' '):    
     obj=Pedido(id_cliente, descripcion, etiquetas, fecha_prev, fecha_entrega,
              id_estado,precio,pagado)
     ret=self.pegar_estado(obj)
     id=self.repositorio.guardar_pedido(ret)
     ret.id_pedido=id
     self.pedidos.append(ret)
     
     return ret
예제 #8
0
 def toPedido(self):
     pedido_dict = self.__dict__
     productos = []
     for producto in self.productos:
         productos.append({
             'producto_id': producto.__dict__['producto_id'],
             'unidades': producto.__dict__['unidades']
         })
     return Pedido(pedido_dict["pedido_id"], pedido_dict["destinatario"],
                   pedido_dict["direccion"], productos,
                   pedido_dict["estado"])
예제 #9
0
 def test_inicializacion(self):
     pedido = Pedido("123123123", "Antonio Martos", "c/ ejemplo",
                     [{
                         "producto_id": "MI120",
                         "unidades": 1
                     }, {
                         "producto_id": "LAM1",
                         "unidades": 2
                     }])
     self.assertIsInstance(pedido, Pedido,
                           "Objeto inicializado correctamente")
예제 #10
0
 def get_all_pedidos(self):
     ''' Retorna una lista de objetos Pedidos con todas los pedidos que haya
     guardadas en la BD'''
     lista_pedidos= []
     consulta = "SELECT id, descripcion, etiquetas, fecharecepcion, fechaprevista, fechaentrega, estado, precio, pagado, idcliente FROM pedidos;"
     try:
         self.cursor.execute(consulta)
         todos_los_pedidos = self.cursor.fetchall()
         for id, descripcion, etiquetas, fecharecepcion,fechaprevista, fechaentrega ,estado ,precio,pagado,idcliente in todos_los_pedidos:
             lista_pedidos.append(Pedido(idcliente, descripcion, etiquetas, fechaprevista, precio,pagado,fechaentrega,estado,id))
         return lista_pedidos                  
     except:
         print("Error al conectarse")
         raise Exception("Conexión errónea")
    def getPedido(self, pedido_id):
        try:
            # Valores consulta
            valores = {"pedido_id": pedido_id}

            # Consulta
            query = """SELECT pedidos.pedido_id, destinatario, direccion, estado, productos_pedido.producto_id, unidades 
                       FROM pedidos
                       LEFT OUTER JOIN productos_pedido ON pedidos.pedido_id = productos_pedido.pedido_id
                       WHERE productos_pedido.pedido_id =  %(pedido_id)s
                       ;"""

            # Realizar consulta
            self.cursor.execute(query, valores)

            # Obtener resultados
            tmp = self.cursor.fetchall()

            pedido = None
            if len(tmp) != 0:
                # Crear diccionario con los valores devueltos
                pedido_dict = {}
                pedido_dict["productos"] = []
                producto_dict = {}
                # Recorrer valores respuesta
                for i in range(0, len(tmp)):
                    # i es el indice de cada fila
                    for j in range(0, len(tmp[i])):
                        # j es el indice de cada valor de la fila
                        if i == 0 and j < 4:
                            pedido_dict[self.cursor.description[j]
                                        [0]] = tmp[i][j]
                        elif j > 3:
                            producto_dict[self.cursor.description[j]
                                          [0]] = tmp[i][j]
                    pedido_dict["productos"].append(producto_dict)
                    producto_dict = {}

                pedido = Pedido(pedido_dict["pedido_id"],
                                pedido_dict["destinatario"],
                                pedido_dict["direccion"],
                                pedido_dict["productos"],
                                pedido_dict["estado"])

            return (pedido)

        except (Exception, psycopg2.Error) as error:
            raise ValueError("Error: Error al obtener el pedido con id " +
                             pedido_id + ": " + str(error))
예제 #12
0
 def test_crearPedido(self):
     pedido = Pedido("123123123", "Antonio Martos", "c/ ejemplo",
                     [{
                         "producto_id": "MI120",
                         "unidades": 1
                     }, {
                         "producto_id": "LAM1",
                         "unidades": 2
                     }])
     self.assertEqual(pedido.getID(), "123123123",
                      "Identificador devuelto correctamente")
     self.assertEqual(pedido.getDestinatario(), "Antonio Martos",
                      "Destinatario devuelto correctamente")
     self.assertEqual(pedido.getDireccion(), "c/ ejemplo",
                      "Direccion devuelta correctamente")
     self.assertEqual(pedido.getProductos(), [{
         "producto_id": "MI120",
         "unidades": 1
     }, {
         "producto_id": "LAM1",
         "unidades": 2
     }], "Productos devueltos correctamente")
     self.assertEqual(pedido.getEstado(), "Unprocessed",
                      "Estado devuelto correctamente")
예제 #13
0
 def cadastrar_pedido(self, cliente, produtos, quantidades):
     pedido = Pedido(cliente, produtos, quantidades)
     self.pedidos.append(pedido)
     return pedido
예제 #14
0
from pedido import Pedido, Produto

produto1=Produto(012,"mamão",10.5)
produto2=Produto(043,"morango",7.0)
produto3=Produto(018,"ovos",15.0)


pedido=Pedido()
pedido.adicionar_item(produto1,1)
pedido.adicionar_item(produto2,1)
pedido.adicionar_item(produto3,1)
pedido.listar_produtos()

pedido.remover_item()
pedido.listar_produtos()

pedido.obter_valor_total() 
예제 #15
0
def Analisis():
    global productos,lineasPedido,errores,tokens,identificadores,nombre,direccion,porcentaje,total,nit,pedidos,factura,NoFac

    numero_token=0
    numero_error=0
    fila=1
    estado=0
    lexema=""
    columna=0
    current_cantidad=""
    current_id=""
    if lineasPedido != "":
        for caracter in lineasPedido:
                columna +=1
                if estado==0:
                    if caracter =="\n":
                        fila+=1
                        columna=1
                        estado=0
                    elif caracter==" ":
                        continue
                    elif caracter=="":
                        continue
                    elif caracter == "'":
                        numero_token+=1
                        tokens.append(Token(numero_token,caracter,fila,columna,"TK_comilla_simple"))
                        estado = 1
                    elif re.search(r"[1-9]",caracter):
                        lexema +=caracter
                        estado=13
                    else:
                        numero_error+=1
                        errores.append(Error(numero_error,fila,columna,caracter,"Caracter no valido"))
                        lexema += caracter
                elif estado==1:
                    if re.search(r"[a-zA-Z\s]",caracter):
                        lexema += caracter
                        estado=2
                    else:
                        numero_error+=1
                        
                        errores.append(Error(numero_error,fila,columna,caracter,"Caracter no valido en nombre"))
                elif estado==2:
                    if re.search(r"[a-zA-Z\s]",caracter):
                        lexema +=caracter
                        continue
                    elif caracter=="'":
                        numero_token+=1
                        nombre=lexema.strip()
                        tokens.append(Token(numero_token,nombre,fila,columna-1,"TK_cadena"))
                        numero_token+=1
                        tokens.append(Token(numero_token,caracter,fila,columna,"TK_comilla_simple"))
                        lexema=""
                        estado=3
                    else:
                        numero_error+=1
                        errores.append(Error(numero_error,fila,columna,caracter,"Caracter no valido en nombre"))
                        
                elif estado==3:
                    if caracter==" ":
                        continue
                    elif caracter==",":
                        numero_token+=1
                        tokens.append(Token(numero_token,caracter,fila,columna,"TK_coma"))
                        estado=4
                    else:
                        numero_error+=1
                        errores.append(Error(numero_error,fila,columna,caracter,"Caracter no valido, se esperaba ,"))
                
                elif estado==4:
                    if caracter==" ":
                        continue
                    elif caracter=="'":
                        numero_token+=1
                        tokens.append(Token(numero_token,caracter,fila,columna,"TK_comilla_simple"))
                        estado=5
                    else:   
                        numero_error+=1
                        errores.append(Error(numero_error,fila,columna,caracter,"Caracter no valido, se esperaba '"))

                elif estado==5:
                    if caracter==" ":
                        continue
                    elif re.search(r"[0-9-]",caracter):
                        lexema+=caracter
                        continue
                    elif caracter=="'":
                        numero_token+=1
                        nit=lexema.strip()
                        tokens.append(Token(numero_token,lexema,fila,columna-1,"TK_nit"))
                        numero_token+=1
                        tokens.append(Token(numero_token,caracter,fila,columna,"TK_comilla_simple"))
                        lexema=""
                        estado=6
                    else:
                        numero_error+=1
                        errores.append(Error(numero_error,fila,columna,caracter,"Caracter no valido"))
                elif estado==6:
                    if caracter==" ":
                        continue
                    elif caracter==",":
                        numero_token+=1
                        tokens.append(Token(numero_token,caracter,fila,columna,"TK_coma"))
                        estado=7
                    else:
                        numero_error+=1
                        errores.append(Error(numero_error,fila,columna,caracter,"Caracter no valido, se esperaba ,"))
                elif estado==7:
                    if caracter==" ":
                        continue
                    elif caracter=="'":
                        numero_token+=1
                        tokens.append(Token(numero_token,caracter,fila,columna,"TK_comilla_simple"))
                        estado=8
                    else: 
                        numero_error+=1
                        errores.append(Error(numero_error,fila,columna,caracter,"Caracter no valido se esperaba "))

                elif estado==8:
                    if re.search(r"[a-zA-Z\s0-9-.,]",caracter):
                        lexema+=caracter
                        continue
                    elif caracter=="'":
                        numero_token+=1
                        direccion=lexema.strip()
                        tokens.append(Token(numero_token,direccion,fila,columna-1,"TK_cadena"))
                        numero_token+=1
                        tokens.append(Token(numero_token,caracter,fila,columna,"TK_comilla_simple"))
                        lexema=""
                        estado=9
                    else:
                        numero_error+=1
                        errores.append(Error(numero_error,fila,columna,caracter,"Caracter no valido"))
                elif estado==9:
                    if caracter==" ":
                        continue
                    elif caracter==",":
                        numero_token+=1
                        tokens.append(Token(numero_token,caracter,fila,columna,"TK_coma"))
                        estado=10
                    else:
                        numero_error+=1
                        errores.append(Error(numero_error,fila,columna,caracter,"Caracter no valido, se esperaba ,"))
                elif estado==10:
                    if caracter==" ":
                        continue
                    elif re.search(r"[0-9]",caracter):
                        lexema+=caracter
                        estado=11
                    else:
                        numero_error+=1
                        errores.append(Error(numero_error,fila,columna,caracter,"Se esperaba un valor numerico"))
                elif estado==11:
                    if re.search(r"[0-9]",caracter):
                        lexema+=caracter
                    elif caracter=="%":
                        if float(lexema) <= 100:
                            if porcentaje != 0:
                                porcentaje=float(lexema)
                                numero_token+=1
                                tokens.append(Token(numero_token,porcentaje,fila,columna-1,"TK_porcentaje"))
                            else:
                                numero_error+=1
                                errores.append(Error(numero_error,fila,columna-1,lexema,"Solo puede haber un porcentaje por factura"))    
                        else:
                            numero_error+=1
                            errores.append(Error(numero_error,fila,columna-1,lexema,"El porcentaje debe ser menor al 100%"))
                        numero_token+=1
                        tokens.append(Token(numero_token,caracter,fila,columna,"TK_porcentaje"))
                        lexema=""
                        estado=0

                elif estado==13:
                    if caracter==" ":
                        continue
                    elif re.search(r"[0-9]",caracter):
                        lexema+=caracter
                    elif caracter==",":
                        numero_token+=1
                        current_cantidad=int(lexema.strip())
                        tokens.append(Token(numero_token,current_cantidad,fila,columna-1,"TK_numero"))
                        numero_token+=1
                        tokens.append(Token(numero_token,caracter,fila,columna,"TK_coma"))
                        lexema=""
                        estado=14
                    else:
                        numero_error+=1
                        errores.append(Error(numero_error,fila, columna,caracter,"Caracter invalido"))
            
                elif estado==14:
                    
                    if caracter==" ":
                        continue 
                    elif re.search(r"[a-z]",caracter):
                        lexema+=caracter
                        estado=15
                    else:
                        numero_error+=1
                        errores.append(Error(numero_error,fila,columna,caracter,"Caracter no valido, solo se permiten letras minuscilas en los identificadores"))
                elif estado==15:
                    if re.search(r"[a-z_0-9]",caracter):
                        lexema+=caracter
                    elif caracter=="\n":
                        current_id=lexema.strip()
                        numero_token+=1        
                        tokens.append(Token(numero_token,lexema.strip(),fila,columna-1,"TK_identificador"))
                        lexema=""
                        id_esist=False
                        for objeto in productos:
                            if objeto.identificador==current_id:
                                id_esist=True
                                
                            else:
                                continue        

                        if id_esist==True:
                            for objeto in productos:
                                if current_id==objeto.identificador:
                                    costo=float(objeto.precio)*float(current_cantidad)
                                    name=objeto.nombre
                                    price=objeto.precio
                                    pedidos.append(Pedido(current_cantidad,current_id,name,costo,price))
                        else:
                            numero_error+=1
                            errores.append(Error(numero_error,fila,columna-1,current_id,"Este producto no esta registrado en el menu")) 
                        estado=0
                        fila+=1
                        columna=0
                    elif caracter==" ":
                        current_id=lexema.strip()
                        numero_token+=1        
                        tokens.append(Token(numero_token,lexema.strip(),fila,columna-1,"TK_identificador"))
                        lexema=""
                        id_esist=False
                        for objeto in productos:
                            if objeto.identificador==current_id:
                                id_esist=True
                                
                            else:
                                continue        

                        if id_esist==True:
                            for objeto in productos:
                                if current_id==objeto.identificador:
                                    costo=float(objeto.precio)*float(current_cantidad)
                                    name=objeto.nombre
                                    price=objeto.precio
                                    pedidos.append(Pedido(current_cantidad,current_id,name,costo,price))
                        else:
                            numero_error+=1
                            errores.append(Error(numero_error,fila,columna-1,current_id,"Este producto no esta registrado en el menu")) 
                        estado=0                            


        current_id=lexema.strip()            
        numero_token+=1        
        tokens.append(Token(numero_token,lexema.strip(),fila,columna-1,"TK_identificador"))
        lexema=""
    
        id_esist=False
        for objeto in productos:
            if objeto.identificador==current_id:
                id_esist=True
            else:
                continue        

        if id_esist==True:
                for objeto in productos:
                    if current_id==objeto.identificador:
                        costo=float(objeto.precio)*float(current_cantidad)
                        name=objeto.nombre
                        price=objeto.precio
                        pedidos.append(Pedido(current_cantidad,current_id,name,costo,price)) 
        else:
                numero_error+=1
                errores.append(Error(numero_error,fila,columna-1,current_id,"Este producto no esta registrado en el menu"))        
        subtotal=0
        for objeto in pedidos:
            subtotal += objeto.costo
        propina= float(subtotal)*(porcentaje/100)
        total=float(subtotal)+propina
        one_year_from_now = datetime.datetime.now()
        fecha=one_year_from_now.strftime("%d/%m/%Y")
        NoFac+=1
        if errores==[]:
            factura=Factura(nombre,nit,direccion,pedidos,total,propina,porcentaje,fecha,NoFac,float(subtotal))
            generarFacturaHTML(factura)
            generarTokensHTML(tokens) 
        else:
            generarErroresHTML(errores)
            generarTokensHTML(tokens) 
    else:
        print("Debe generar un menu y cargar un archivo de pedido ")           
예제 #16
0
 def __init__(self, carteiraComprador):
     self.carrinho = Pedido()
     self.carteiraComprador = carteiraComprador
예제 #17
0
opcion = int(input('Elige una opcion\n'))

if opcion == 1:
    datos = Datos()
    datos.mostrarClientes()
    print(datos.listaClientes.__len__() + 1, 'Añadir un nuevo cliente')

    numeroCliente = int(input('Selecciona un cliente\n'))

    if numeroCliente == datos.listaClientes.__len__() + 1:
        cliente = datos.añadirCliente()

    else:
        cliente = datos.listaClientes[numeroCliente - 1]

    pedido = Pedido(cliente)

    opcionPizza = 1

    while opcionPizza == 1:
        print('Elige una opcion')
        print('1.- Agregar una pizza')
        print('2.- Terminar compra')

        opcionPizza = int(input())

        if not opcionPizza == 1:
            break

        pizza = opcionPizzas()
        opcionIngredientes()
예제 #18
0
from produto import Produto
from produto import ItemPedido
from pedido import Pedido

item = ItemPedido()
pedido = Pedido()

p1 = Produto('banana','00',2.5)
p2 = Produto('mandioca','01',5.5)
p3 = Produto('pepino','02',3)
p4 = Produto('mamadeira', '03',1)

item.adicionar(p1,12)
item.adicionar(p2,5)
item.adicionar(p3,3)
item.adicionar(p4,1)

pedido.adc_pedido(p1)
pedido.adc_pedido(p2)
pedido.adc_pedido(p3)
pedido.adc_pedido(p4)

pedido.listar_produtos()
pedido.remover_pedido(p3)
pedido.listar_produtos()
pedido.valor_total()
예제 #19
0
from pedido import Pedido



op1 = Pedido('Marmita c/Churrasco',12.00,0.5,500,0)
op2 = Pedido('Marmita c/ Feijoada',12.00,0.5,700,0)
op3 = Pedido('Marmita Fitness',15.00,0.25,200,0)




print('Pedido')
op1.pedir(op1.valor+op2.valor+op3.valor)
print('Pagamento')
op1.pagar(50.00)

print('')
print('Pedido')
op1.pedir(op1.valor+op2.valor)
print('Pagamento')
op1.pagar(20.00)

print('')
print('Pedido')
op1.pedir(op1.valor+op3.valor)
print('Pagamento')
op1.pagar(250.00)



예제 #20
0
from produto import Produto
from produto import ItemPedido
from pedido import Pedido

item = ItemPedido()
pedido = Pedido()

p1 = Produto('arroz', '00000', 4)
p2 = Produto('feijao', '00001', 5.5)
p3 = Produto('farinha', '00002', 3)

item.adicionar(p1, 10)
item.adicionar(p2, 10)
item.adicionar(p3, 10)

pedido.add_pedido(p1)
pedido.add_pedido(p2)
pedido.add_pedido(p3)

pedido.listar()
pedido.remove_pedido(p1)
pedido.listar()
pedido.valor_total()
예제 #21
0
class PedidoItem {

    private String nome;
    private String precoUnitario;
    private int quantidade;

    public PedidoItem(Produto produto){
        this.nome = produto.getNome();
        this.precoUnitario = produto.getPreco();
        this.quantidade = 1;
    }

}
"""
from produto import Produto
from pedido import Pedido

if __name__ == '__main__':
    pedido: Pedido = Pedido()

    leite_condensado: Produto = Produto(nome="leite moça", valor_unitario=6.50)
    nescau: Produto = Produto(nome="nescau 150ml", valor_unitario=1.50)

    pedido.adicionar_item_na_compra(leite_condensado)
    pedido.adicionar_item_na_compra(nescau)

    valor_final = pedido.calcular_valor_total_da_venda()

    print(f"o valor total da compra foi: {valor_final}")