When the user selects a past order to review, the past order details will show the line
Question:
When the user selects a past order to review, the past order details will show the line items from that particular order. The past order details must be stored within the database to ensure the values are retained after the program closes.
I need help with displaying the past order details box. I need it to still show the past order even if I have closed the program.
I need to have a past order details box code but also that code needs to connect to a sqlite3 database.
My current code:
from tkinter import *
# Global Inventory Values
invBroth = 0
invChicken = 0
invBeef = 0
invGreenOnions = 0
# Global Constants
# Add to Inventory Values
AIBROTH = 160.0
AICHICKEN = 80.0
AIBEEF = 80.0
AIGREENONION = 25
# Add to Inventory Prices
AIPBROTH = 10
AIPCHICKEN = 10
AIPBEEF = 25
AIPGREENONION = 10
# Per Order Values
POBROTH = 6.0
POCHICKEN = 2.5
POBEEF = 2.5
POGREENONION = 1
PRICEPERCUP = 3.0
# Line Items List
lineItems = list()
# Global Financial Values
sales = 0
expenses = 0
def cmdAddToInventory():
# Read in global variables
global invBroth, invChicken, invBeef, invGreenOnions, sales, expenses
# Determine which items are checked.
if addBroth.get() == 1:
invBroth += AIBROTH
expenses += AIPBROTH
if addChicken.get() == 1:
invChicken += AICHICKEN
expenses += AIPCHICKEN
if addBeef.get() == 1:
invBeef += AIBEEF
expenses += AIPBEEF
if addGreenOnions.get() == 1:
invGreenOnions += AIGREENONION
expenses += AIPGREENONION
fnUpdateAllOutputs()
def cmdAddToOrder():
# Read in global variables
global lineItems
# Creating dictionary entry for this line item
tmp = {'cups':0, 'broth':0, 'chicken':0, 'beef':0, 'greenonions':0}
# How many cups of soup?
tmp['cups'] = int(orderCups.get())
# How much borth
tmp['broth'] = tmp['cups'] * POBROTH
# How much chicken/beef
if orderMeet.get() == 0: #Chicken
tmp['chicken'] = tmp['cups'] * POCHICKEN
else: #Beef
tmp['beef'] = tmp['cups'] * POBEEF
# How many green onions
if orderGreenOnions.get() == 1:
tmp['greenonions'] = tmp['cups'] * POGREENONION
# Add tmp to lineItems list
lineItems.append(tmp)
fnUpdateAllOutputs()
def cmdPlaceOrder():
# Read in global variables
global invBroth, invChicken, invBeef, invGreenOnions, sales, expenses, lineItems
# Calculate what is needed
needCups = 0
needBroth = 0
needChicken = 0
needBeef = 0
needGreenOnions = 0
for item in lineItems:
needCups += item['cups']
needBroth += item['broth']
needChicken += item['chicken']
needBeef += item['beef']
needGreenOnions += item['greenonions']
if invBroth < needBroth or invChicken < needChicken or invBeef < needBeef or invGreenOnions < needGreenOnions:
lblErrorMessage.config(text="Insufficent inventory to place the order. Add more inventory or cancel order.")
else:
lblErrorMessage.config(text="")
invBroth -= needBroth
invChicken -= needChicken
invBeef -= needBeef
invGreenOnions -= needGreenOnions
sales += needCups * PRICEPERCUP
# Resetting lineItems list for next order.
lineItems.clear()
fnUpdateAllOutputs()
def cmdCancelOrder():
global lineItems
# Resetting lineItems list for new order.
lineItems.clear()
fnUpdateAllOutputs()
def fnUpdateAllOutputs():
global invBroth, invChicken, invBeef, invGreenOnions, sales, expenses
# Update Inventory
lblBroth.config(text=invBroth)
lblChicken.config(text=invChicken)
lblBeef.config(text=invBeef)
lblGreenOnions.config(text=invGreenOnions)
# Update Sales, Expenses, and Profit
lblSales.config(text="${:9.2f}".format(sales))
lblExpenses.config(text="${:9.2f}".format(expenses))
lblProfit.config(text="${:9.2f}".format(sales - expenses))
# Update Add to Order listbox
lstLineItems.delete(0,END)
for item in lineItems:
outputstring = str(item['cups']) + " Cups of"
if item['chicken'] != 0:
outputstring += " chicken soup"
else:
outputstring += " beef soup"
if item['greenonions'] != 0:
outputstring += " with green onions"
lstLineItems.insert(END, outputstring)
# Reset error message
lblErrorMessage.config(text="")
# Creating the window
root = Tk()
root.title("Project 1")
root.geometry("1000x500")
# Setting up inventory controls
Label(root, text="INVENTORY").grid(row=0, column=0, sticky=W)
Label(root, text="Broth:").grid(row=1, column=0, sticky=W)
lblBroth = Label(root, text="0")
lblBroth.grid(row=1, column=1, sticky=E)
Label(root, text="Chicken:").grid(row=2, column=0, sticky=W)
lblChicken = Label(root, text="0")
lblChicken.grid(row=2, column=1, sticky=E)
Label(root, text="Beef:").grid(row=3, column=0, sticky=W)
lblBeef = Label(root, text="0")
lblBeef.grid(row=3, column=1, sticky=E)
Label(root, text="Green Onions:").grid(row=4, column=0, sticky=W)
lblGreenOnions = Label(root, text="0")
lblGreenOnions.grid(row=4, column=1, sticky=E)
# Setting up add to inventory controls
Label(root, text=" ").grid(row=0, column=4, sticky=W)
Label(root, text="ADD TO INVENTORY").grid(row=0, column=5, sticky=W)
addBroth = IntVar()
Checkbutton(root, text="Add " + str(AIBROTH) + " oz of Broth", variable=addBroth).grid(row=1, column=5, sticky=W)
addChicken = IntVar()
Checkbutton(root, text="Add " + str(AICHICKEN) + " oz of Chicken", variable=addChicken).grid(row=2, column=5, sticky=W)
addBeef = IntVar()
Checkbutton(root, text="Add " + str(AIBEEF) + " oz of Beef", variable=addBeef).grid(row=3, column=5, sticky=W)
addGreenOnions = IntVar()
Checkbutton(root, text="Add " + str(AIGREENONION) + " Green Onions", variable=addGreenOnions).grid(row=4, column=5, sticky=W)
Button(root, text="Add To Inventory", command=cmdAddToInventory).grid(row=5, column=5, sticky=W)
# Setting up order form
Label(root, text=" ").grid(row=0, column=6, sticky=W)
Label(root, text="ORDER FORM").grid(row=0, column=7, sticky=W, columnspan=2)
orderCups = Entry(root, width=5)
orderCups.grid(row=1, column=8, sticky=W)
orderCups.insert(END, "0")
Label(root, text="Cups").grid(row=1, column=7, sticky=W)
orderMeet = IntVar()
Radiobutton(root, text="Chicken", variable=orderMeet, value=0).grid(row=2, column=7, sticky=W)
Radiobutton(root, text="Beef", variable=orderMeet, value=1).grid(row=2, column=8, sticky=W)
orderGreenOnions = IntVar()
Checkbutton(root, text="Green Onions", variable=orderGreenOnions).grid(row=3, column=7, sticky=W, columnspan=2)
Button(root, text="Add To Order", command=cmdAddToOrder).grid(row=4, column=7, sticky=W, columnspan=2)
# Setting up order list
Label(root, text="LINE ITEMS").grid(row=6, column=5, sticky=W)
lineItemsFrame = Frame(root)
lineItemsFrame.grid(row=7, column=5,sticky=W, columnspan=3)
scrollbar = Scrollbar(lineItemsFrame)
scrollbar.pack(side=RIGHT, fill=Y)
lstLineItems = Listbox(lineItemsFrame, height=5, width=50, yscrollcommand=scrollbar.set)
lstLineItems.pack()
scrollbar.config(command=lstLineItems.yview)
Button(root, text="Place Order", command=cmdPlaceOrder).grid(row=8, column=7, sticky=W)
Button(root, text="Cancel Order", command=cmdCancelOrder).grid(row=8, column=8, sticky=W)
#Setting up past orders list
Label(root, text="Past Orders").grid(row=6, column=0, sticky=W)
lineItemsFrame = Frame(root)
lineItemsFrame.grid(row=7, column=0, sticky=W, columnspan=1)
scrollbar = Scrollbar(lineItemsFrame)
scrollbar.pack(side=RIGHT, fill=Y)
lstLineItems = Listbox(lineItemsFrame, height=5, width=50, yscrollcommand=scrollbar.set)
lstLineItems.pack()
scrollbar.config(command=lstLineItems.yview)
#Must add commmand
Button(root, text="Show Order Details").grid(row=8, column=0, sticky=W)
# Financial Labels
Label(root, text=" ").grid(row=0, column=9, sticky=W)
Label(root, text="FINANCIAL DATA").grid(row=0, column=10, sticky=W)
Label(root, text="Sales:").grid(row=1, column=10, sticky=W)
lblSales = Label(root, text="$0.00")
lblSales.grid(row=1, column=11, sticky=E)
Label(root, text="Expenses:").grid(row=2, column=10, sticky=W)
lblExpenses = Label(root, text="$0.00")
lblExpenses.grid(row=2, column=11, sticky=E)
Label(root, text="Profit:").grid(row=3, column=10, sticky=W)
lblProfit = Label(root, text="$0.00")
lblProfit.grid(row=3, column=11, sticky=E)
# Spacing between rows 8 and 10
Label(root, text=" ").grid(row=9, column=0, sticky=W)
# Error message label
lblErrorMessage = Label(root, text="")
lblErrorMessage.grid(row=100, column=0, columnspan=100, sticky=W)
root.mainloop()
Database Systems Design Implementation and Management
ISBN: 978-1285196145
11th edition
Authors: Carlos Coronel, Steven Morris