# 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} ] } 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): selected_items = 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}\n" invoice += """ ----------------------------------------- Thank you for dining with us! Have a great day! """ return invoice def place_order(customer_name, table_number, selected_items, wishes): return generate_invoice(customer_name, table_number, selected_items, wishes) 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") 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( place_order, inputs=[customer_name, table_number, selected_items, wishes], outputs=invoice_output ) demo.launch()