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")
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"
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())
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")
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")
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")
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
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"])
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")
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))
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")
def cadastrar_pedido(self, cliente, produtos, quantidades): pedido = Pedido(cliente, produtos, quantidades) self.pedidos.append(pedido) return pedido
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()
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 ")
def __init__(self, carteiraComprador): self.carrinho = Pedido() self.carteiraComprador = carteiraComprador
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()
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()
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)
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()
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}")