# data_manager.py import pandas as pd import streamlit as st class PedidoAgent: def __init__(self, menu_csv_path): self.menu_csv_path = menu_csv_path self.menu_data = self.load_menu() def load_menu(self): try: df_menu = pd.read_csv(self.menu_csv_path) productos = df_menu["Producto"].tolist() precios = df_menu["Precio"].tolist() return {"productos": productos, "precios": precios} except Exception as e: st.error(f"Error al cargar el menú: {e}") return None def realizar_pedido(self, state): if not self.menu_data: st.warning("No se pudo cargar el menú.") return productos = self.menu_data["productos"] precios = self.menu_data["precios"] # Interfaz de usuario para seleccionar productos y cantidades with st.form("pedido_form"): producto_seleccionado = st.selectbox("Producto:", productos) cantidad = st.number_input("Cantidad:", min_value=1, value=1) submitted = st.form_submit_button("Agregar al pedido") if submitted: precio = precios[productos.index(producto_seleccionado)] state.pedidos.append( {"Producto": producto_seleccionado, "Cantidad": cantidad, "Precio": precio} ) st.success("Pedido agregado correctamente") # Mostrar el pedido actual st.subheader("Pedido actual:") if state.pedidos: df_pedidos = pd.DataFrame(state.pedidos) st.table(df_pedidos) class CalculoPedidoAgent: def calcular_total(self, state): st.subheader("Resumen del Pedido") if state.pedidos: df_pedidos = pd.DataFrame(state.pedidos) st.table(df_pedidos) total = df_pedidos["Cantidad"].mul(df_pedidos["Precio"]).sum() st.markdown(f"**Total: ${total:.2f}**") else: st.info("El pedido está vacío.")