Report generation in Restaurant Management System

Tkinter Restaurant Management V-1 V-2 V-3 Installing Tables

Restaurant Management reports

Reports from Bills and sale table by using DateEntry to get day wise sale report with total value

Date selection

We will use DateEntry to present calendar to the user to select a date. Here we are using the option textvariable of the DateEntry cal to one StringVar sel.
sel=tk.StringVar()
cal=DateEntry(my_w,selectmode='day',textvariable=sel)
cal.grid(row=0,column=0,padx=20,pady=30)
On any change of this StringVar sel we will trigger the function my_upd() by using trace() method.
sel.trace('w',my_upd)

Function my_upd()

Inside the function my_upd(), first we will check the length of the selected date. If the date is available ( length is more than 4 ).
def my_upd(*args): # triggered when value of string varaible changes
    if(len(sel.get())>4):
Date object is created by getting the selected calendar date.
dt=cal.get_date()
Using this date object two strings in different formats are prepared.
dt1=dt.strftime("%Y-%m-%d") #format for MySQL date column 
        dt2=dt.strftime("%d-%B-%Y") #format to display at label 

Query and display rows

We are using treeview to display the rows returned by the MySQL database. Here first we will remove the previously listed rows if any before adding new rows.
	query="SELECT * from plus2_sell WHERE bill_date=%s"
        r_set=my_conn.execute(query,dt1) # execute query with data
        for item in trv.get_children(): # delete all previous listings
            trv.delete(item)
        total=0 # to store total sale of the selected date
        for dt in r_set: 
            trv.insert("", 'end',iid=dt[0], text=dt[0],
               values =(dt[1],dt[2],dt[3],dt[4],dt[5]))
            total=round(total+(dt[2]*dt[3]),2)
        l2.config(text="Total: " + str(total)) # show total value
Full code is here
import tkinter as tk
from tkinter import ttk
from tkcalendar import DateEntry 
from my_connect import my_conn
my_w = tk.Tk()
my_w.geometry("900x650")  # Size of the window 
my_w.title("www.plus2net.com")  # Adding a title
sel=tk.StringVar()
cal=DateEntry(my_w,selectmode='day',textvariable=sel)
cal.grid(row=0,column=0,padx=20,pady=30)
def my_upd(*args): # triggered when value of string varaible changes
    if(len(sel.get())>4):
        dt=cal.get_date() # get selected date object from calendar
        dt1=dt.strftime("%Y-%m-%d") #format for MySQL date column 
        dt2=dt.strftime("%d-%B-%Y") #format to display at label 
        l1.config(text=dt2) # display date at Label
        query="SELECT * from plus2_sell WHERE bill_date=%s"
        r_set=my_conn.execute(query,dt1) # execute query with data
        for item in trv.get_children(): # delete all previous listings
            trv.delete(item)
        total=0 # to store total sale of the selected date
        for dt in r_set: 
            trv.insert("", 'end',iid=dt[0], text=dt[0],
               values =(dt[1],dt[2],dt[3],dt[4],dt[5]))
            total=round(total+(dt[2]*dt[3]),2)
        l2.config(text="Total: " + str(total)) # show total value
l1=tk.Label(my_w,font=('Times',22,'bold'),fg='blue')
l1.grid(row=0,column=1)
trv = ttk.Treeview(my_w, selectmode ='browse')
  
trv.grid(row=1,column=1,padx=20,pady=20)
# number of columns
trv["columns"] = ("1", "2", "3","4","5")
trv['height']  =20
# Defining heading
trv['show'] = 'headings'
  
# width of columns and alignment 
trv.column("1", width = 30, anchor ='c')
trv.column("2", width = 80, anchor ='c')
trv.column("3", width = 80, anchor ='c')
trv.column("4", width = 80, anchor ='c')
trv.column("5", width = 80, anchor ='c')
  
# Headings  
# respective columns
trv.heading("1", text ="p_id")
trv.heading("2", text ="Price")
trv.heading("3", text ="Quantity")
trv.heading("4", text ="Bill_no")  
trv.heading("5", text ="Bill_date")
sel.trace('w',my_upd)

l2=tk.Label(my_w,font=('Times',22,'bold'),fg='red')
l2.grid(row=1,column=2,sticky='ne',pady=20)

my_w.mainloop()  # Keep the window open

MySQL Installing MySQL Connecting string MySQL connection using SQLAlchemy

Restaurant Management V-1 V-2 (Database integration) V-3(invoice Generation)
Combobox for selection of items Update Product Table Installing Tables
More Projects using Tkinter
Subscribe to our YouTube Channel here

Subscribe

* indicates required
Subscribe to plus2net

    plus2net.com



    Post your comments , suggestion , error , requirements etc here





    Python Video Tutorials
    Python SQLite Video Tutorials
    Python MySQL Video Tutorials
    Python Tkinter Video Tutorials
    We use cookies to improve your browsing experience. . Learn more
    HTML MySQL PHP JavaScript ASP Photoshop Articles FORUM . Contact us
    ©2000-2022 plus2net.com All rights reserved worldwide Privacy Policy Disclaimer