import sqlite3
from tkinter import *
from tkinter import ttk
root = Tk()
root.title("UNOGONA STORE")
my_tree = ttk.Treeview(root)
storeName = "INVENTORY SYSTEM"
frameName = "Inventory"
frameName1 = "View Products"
totText = StringVar()
def reverse(tuples):
new_tup = tuples[::-1]
return new_tup
def insert( id, name, price, quantity):
conn = sqlite3.connect("data.db")
cursor = conn.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS
inventory(itemId TEXT, itemName TEXT, itemPrice TEXT, itemQuantity TEXT)""")
cursor.execute("INSERT INTO inventory VALUES ('" + str(id) + "','" + str(name)
+ "','" + str(price) + "','" + str(quantity) + "')")
conn.commit()
def delete(data):
conn = sqlite3.connect("data.db")
cursor = conn.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS
inventory(itemId TEXT, itemName TEXT, itemPrice TEXT, itemQuantity
TEXT)""")
cursor.execute("DELETE FROM inventory WHERE itemId = '" + str(data) + "'")
conn.commit()
def pay (data):
conn = sqlite3.connect("data.db")
cursor = conn.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS
inventory(itemId TEXT, itemName TEXT, itemPrice TEXT, itemQuantity
TEXT)""")
cursor.execute("PAY FROM inventory WHERE itemId = '" + str(data) + "'")
conn.commit()
def update(id, name, price, quantity, idName):
conn = sqlite3.connect("data.db")
cursor = conn.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS
inventory(itemId TEXT, itemName TEXT, itemPrice TEXT, itemQuantity
TEXT)""")
cursor.execute("UPDATE inventory SET itemId = '" + str(id) + "', itemName = '"
+ str(name) + "', itemPrice = '" + str(price) + "', itemQuantity = '" +
str(quantity) + "' WHERE itemId='"+str(idName)+"'")
conn.commit()
def read():
conn = sqlite3.connect("data.db")
cursor = conn.cursor()
cursor.execute("""CREATE TABLE IF NOT EXISTS
inventory(itemId TEXT, itemName TEXT, itemPrice TEXT, itemQuantity
TEXT)""")
cursor.execute("SELECT * FROM inventory")
results = cursor.fetchall()
conn.commit()
return results
def insert_data():
itemId = str(entryId.get())
itemName = str(entryName.get())
itemPrice = str(entryPrice.get())
itemQuantity = str(entryQuantity.get())
if itemId == "" or itemName == " ":
print("Error Inserting Id")
if itemName == "" or itemName == " ":
print("Error Inserting Name")
if itemPrice == "" or itemPrice == " ":
print("Error Inserting Price")
if itemQuantity == "" or itemQuantity == " ":
print("Error Inserting Quantity")
else:
insert(str(itemId), str(itemName), str(itemPrice), str(itemQuantity))
for data in my_tree.get_children():
my_tree.delete(data)
for result in reverse(read()):
my_tree.insert(parent='', index='end', iid=result, text="",
values=(result), tag="orow")
my_tree.tag_configure('orow', background='#EEEEEE')
my_tree.grid(row=6, column=10, columnspan=4, rowspan=5, padx=10, pady=10)
def delete_data():
selected_item = my_tree.selection()[0]
deleteData = str(my_tree.item(selected_item)['values'][0])
delete(deleteData)
for data in my_tree.get_children():
my_tree.delete(data)
for result in reverse(read()):
my_tree.insert(parent='', index='end', iid=result, text="",
values=(result), tag="orow")
my_tree.tag_configure('orow', background='#EEEEEE')
my_tree.grid(row=6, column=10, columnspan=4, rowspan=5, padx=10, pady=10)
def pay_data():
tott = str(totText.get())
top = Toplevel()
top.geometry("400x300")
top.config(bg="white")
l = Label(top, text='---------RECIEPT----------')
l.pack()
l.config(bg="white")
heading = Label(top, text='\tID\tName\tPRICE\tQTY\tTOTAL')
heading.pack()
heading.config(bg="white")
selected_item = my_tree.selection()[0]
payData = str(my_tree.item(selected_item)['values'][0])
pay(payData)
for child in my_tree.get_children():
my_tree.delete(data)
name = (my_tree.item(child, 'values')[0])
price = str(my_tree.item(child, 'values')[1])
quantity = str(my_tree.item(child, 'values')[2])
tot = str(my_tree.item(child, 'values')[3])
item1 = Label(top, text=f'{ID}\f{name}\t{price}\t{quantity}\t{tot}')
item1.config(bg="white")
item1.pack()
sum1 = 0.0
for child in my_tree.get_children():
sum1 += str(my_tree.item(child, 'values')[3])
totText.set(sum1)
tot = Label(top, text=f'Total\t{tott}')
tot.config(bg="white")
tot.pack()
for result in reverse(read()):
my_tree.insert(parent='', index='end', iid=result, text="",
values=(result), tag="orow")
def update_data():
selected_item = my_tree.selection()[0]
update_name = my_tree.item(selected_item)['values'][0]
update(entryId.get(), entryName.get(), entryPrice.get(), entryQuantity.get(),
update_name)
for data in my_tree.get_children():
my_tree.delete(data)
for result in reverse(read()):
my_tree.insert(parent='', index='end', iid=result, text="",
values=(result), tag="orow")
my_tree.tag_configure('orow', background='#EEEEEE')
my_tree.grid(row=6, column=10, columnspan=4, rowspan=5, padx=10, pady=10)
vsb = ttk.Scrollbar(my_tree, orient="vertical", command=my_tree.yview)
vsb.place(x=30+550+6, y=0, height=200+30)
titleLabel = Label(root, text=storeName, font=('Arial bold', 25), bd=2)
titleLabel.grid(row=0, column=5, columnspan=8, padx=20, pady=20)
Inventory = Frame(root)
frameLabel = Label(root, text = frameName, font=('Arial bold', 15), bd=10)
frameLabel.grid(column=0,row=1,padx=8,pady=4,sticky="N")
frameLabel = Label(root, text = frameName1, font=('Arial bold', 15), bd=10)
frameLabel.grid(row=1,column=10, padx=0,pady=4,sticky="N")
idLabel = Label(root, text="ID", font=('Arial bold', 10))
nameLabel = Label(root, text="Name", font=('Arial bold', 10))
priceLabel = Label(root, text="Price", font=('Arial bold', 10))
quantityLabel = Label(root, text="Quantity", font=('Arial bold', 10))
idLabel.grid(row=6, column=0, padx=10, pady=10)
nameLabel.grid(row=7, column=0, padx=10, pady=10)
priceLabel.grid(row=8, column=0, padx=10, pady=10)
quantityLabel.grid(row=9, column=0, padx=10, pady=10)
entryId = Entry(root, width=25, bd=5, font=('Arial bold', 10))
entryName = Entry(root, width=25, bd=5, font=('Arial bold', 10))
entryPrice = Entry(root, width=25, bd=5, font=('Arial bold', 10))
entryQuantity = Entry(root, width=25, bd=5, font=('Arial bold', 10))
entryId.grid(row=6, column=1, columnspan=3, padx=5, pady=5)
entryName.grid(row=7, column=1, columnspan=3, padx=5, pady=5)
entryPrice.grid(row=8, column=1, columnspan=3, padx=5, pady=5)
entryQuantity.grid(row=9, column=1, columnspan=3, padx=5, pady=5)
buttonEnter = Button(
root, text="CREATE", padx=5, pady=5, width=5,
bd=3, font=('Arial bold', 10), bg="#00C957", command=insert_data)
buttonEnter.grid(row=10, column=1, columnspan=1)
buttonUpdate = Button(
root, text="EDIT", padx=5, pady=5, width=5,
bd=3, font=('Arial bold', 10), bg="#ffff00", command=update_data)
buttonUpdate.grid(row=10, column=2, columnspan=1)
buttonDelete = Button(
root, text="DELETE", padx=5, pady=5, width=5,
bd=3, font=('Arial bold', 10), bg="#e62e00", command=delete_data)
buttonDelete.grid(row=10, column=3, columnspan=1)
buttonPay = Button(
root, text="RECEIPT", padx=5, pady=5, width=5,
bd=3, font=('Arial bold', 10), bg="#00FFFF", command=pay_data)
buttonPay.grid(row=10, column=0, columnspan=1)
style = ttk.Style()
style.configure("Treeview.Heading", font=('Arial bold', 10))
my_tree['columns'] = ("ID", "Name", "Price", "Quantity")
my_tree.column("#0", width=0, stretch=NO)
my_tree.column("ID", anchor=W, width=100)
my_tree.column("Name", anchor=W, width=200)
my_tree.column("Price", anchor=W, width=150)
my_tree.column("Quantity", anchor=W, width=150)
my_tree.heading("ID", text="ID", anchor=W)
my_tree.heading("Name", text="Name", anchor=W)
my_tree.heading("Price", text="Price", anchor=W)
my_tree.heading("Quantity", text="Quantity", anchor=W)
my_tree.tag_configure('orow', background='#EEEEEE', font=('Arial bold', 10))
my_tree.grid(row=6, column=10, columnspan=4, rowspan=5, padx=10, pady=10)
for data in my_tree.get_children():
my_tree.delete(data)
for result in reverse(read()):
my_tree.insert(parent='', index='end', iid=0, text="", values=(result),
tag="orow")
root.mainloop()