File size: 3,048 Bytes
12ebc61
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7663460
 
12ebc61
7663460
 
 
 
 
 
 
 
 
 
 
 
 
12ebc61
7663460
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12ebc61
 
 
 
 
 
 
 
 
 
 
 
 
 
7663460
12ebc61
 
 
 
 
 
 
 
 
 
 
 
7663460
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# 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()