Spaces:
Sleeping
Sleeping
# app.py | |
import gradio as gr | |
from datetime import datetime | |
# Dynamic menu data | |
menu = { | |
"Bread": [ | |
{"name": "Roti", "price": 2}, | |
{"name": "Naan", "price": 3} | |
], | |
"Veg Curries": [ | |
{"name": "Paneer Butter Masala", "price": 10}, | |
{"name": "Mixed Vegetable Curry", "price": 8} | |
], | |
"Non-Veg Curries": [ | |
{"name": "Chicken Curry", "price": 12}, | |
{"name": "Mutton Curry", "price": 15} | |
], | |
"Biryanis": [ | |
{"name": "Vegetable Biryani", "price": 10}, | |
{"name": "Chicken Biryani", "price": 12} | |
] | |
} | |
# Ensure render_menu is defined before usage | |
def render_menu(): | |
rendered_menu = "" | |
for category, items in menu.items(): | |
rendered_menu += f"\n{category}:\n" | |
for item in items: | |
rendered_menu += f"- {item['name']} (${item['price']})\n" | |
return rendered_menu | |
def generate_invoice(customer_name, table_number, selected_items, wishes): | |
try: | |
selected_items = [item.strip() for item in selected_items.split(',')] | |
items = [ | |
item for category in menu.values() for item in category if item['name'] in selected_items | |
] | |
total = sum(item['price'] for item in items) | |
invoice = f""" | |
----------------------------------------- | |
Restaurant Invoice | |
----------------------------------------- | |
Date: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')} | |
Customer Name: {customer_name} | |
Table Number: {table_number} | |
----------------------------------------- | |
Items Ordered: | |
""" | |
for item in items: | |
invoice += f"- {item['name']} (${item['price']})\n" | |
invoice += f""" | |
----------------------------------------- | |
Total Amount: ${total:.2f} | |
----------------------------------------- | |
Customer Wishes: | |
""" | |
for wish in wishes.split(','): | |
invoice += f"- {wish.strip()}\n" | |
invoice += """ | |
----------------------------------------- | |
Thank you for dining with us! | |
Have a great day! | |
""" | |
return invoice | |
except Exception as e: | |
return f"Error generating invoice: {str(e)}" | |
with gr.Blocks() as demo: | |
gr.Markdown("""# Restaurant Invoice Generator | |
### Welcome to our restaurant! | |
Use this app to place your order and generate a customized invoice. | |
""") | |
with gr.Row(): | |
customer_name = gr.Textbox(label="Customer Name") | |
table_number = gr.Textbox(label="Table Number") | |
# Ensure render_menu is called after its definition | |
menu_display = gr.Textbox(show_label=False, interactive=False, value=render_menu()) | |
selected_items = gr.Textbox(label="Selected Items (comma-separated)", placeholder="e.g., Roti, Paneer Butter Masala") | |
wishes = gr.Textbox(label="Special Wishes (comma-separated)", placeholder="e.g., Extra spicy, Less salt") | |
generate_invoice_btn = gr.Button("Generate Invoice") | |
invoice_output = gr.Textbox(label="Generated Invoice", lines=15, interactive=False) | |
generate_invoice_btn.click( | |
generate_invoice, | |
inputs=[customer_name, table_number, selected_items, wishes], | |
outputs=invoice_output | |
) | |
demo.launch() | |