Compare commits

..

No commits in common. "29f070032444c12e2194416cb2f40e4feadc900b" and "787bf561e4df5272497dc352556a01fa6f10817b" have entirely different histories.

2 changed files with 51 additions and 115 deletions

View File

@ -1,6 +1,6 @@
import tkinter as tk import tkinter as tk
from tkinter import messagebox
from database import connect from database import connect
from tkinter import messagebox
class AdminMenu: class AdminMenu:
def __init__(self, root): def __init__(self, root):
@ -18,7 +18,7 @@ class AdminMenu:
).pack(pady=15) ).pack(pady=15)
# ===================== # =====================
# FORM INPUT # FORM INPUT (RAPI)
# ===================== # =====================
form = tk.Frame(self.frame) form = tk.Frame(self.frame)
form.pack(pady=10) form.pack(pady=10)
@ -28,27 +28,15 @@ class AdminMenu:
self.nama = tk.Entry(form, width=30) self.nama = tk.Entry(form, width=30)
self.nama.grid(row=0, column=1) self.nama.grid(row=0, column=1)
tk.Label(form, text="Kategori", width=15, anchor="w")\
.grid(row=1, column=0, pady=5)
self.kategori = tk.StringVar()
tk.OptionMenu(
form,
self.kategori,
"Makanan",
"Minuman",
"Dessert"
).grid(row=1, column=1, sticky="w")
self.kategori.set("Makanan")
tk.Label(form, text="Harga", width=15, anchor="w")\ tk.Label(form, text="Harga", width=15, anchor="w")\
.grid(row=2, column=0, pady=5) .grid(row=1, column=0, pady=5)
self.harga = tk.Entry(form, width=30) self.harga = tk.Entry(form, width=30)
self.harga.grid(row=2, column=1) self.harga.grid(row=1, column=1)
tk.Label(form, text="Path Gambar", width=15, anchor="w")\ tk.Label(form, text="Path Gambar", width=15, anchor="w")\
.grid(row=3, column=0, pady=5) .grid(row=2, column=0, pady=5)
self.gambar = tk.Entry(form, width=30) self.gambar = tk.Entry(form, width=30)
self.gambar.grid(row=3, column=1) self.gambar.grid(row=2, column=1)
# ===================== # =====================
# BUTTON CRUD # BUTTON CRUD
@ -56,109 +44,76 @@ class AdminMenu:
btn_frame = tk.Frame(self.frame) btn_frame = tk.Frame(self.frame)
btn_frame.pack(pady=10) btn_frame.pack(pady=10)
tk.Button(btn_frame, text="Tambah", width=10, tk.Button(btn_frame, text="Tambah", bg="#d1e7dd",
bg="#d1e7dd", command=self.tambah).grid(row=0, column=0, padx=5) width=10, command=self.tambah).grid(row=0, column=0, padx=5)
tk.Button(btn_frame, text="Update", width=10, tk.Button(btn_frame, text="Update", bg="#cfe2ff",
bg="#cfe2ff", command=self.update).grid(row=0, column=1, padx=5) width=10, command=self.update).grid(row=0, column=1, padx=5)
tk.Button(btn_frame, text="Hapus", width=10, tk.Button(btn_frame, text="Hapus", bg="#f8d7da",
bg="#f8d7da", command=self.hapus).grid(row=0, column=2, padx=5) width=10, command=self.hapus).grid(row=0, column=2, padx=5)
tk.Button(btn_frame, text="Refresh", width=10, tk.Button(btn_frame, text="Refresh",
command=self.load_menu).grid(row=0, column=3, padx=5) width=10, command=self.load_menu).grid(row=0, column=3, padx=5)
tk.Button(btn_frame, text="Logout", width=10, tk.Button(btn_frame, text="Logout",
command=self.logout).grid(row=0, column=4, padx=5) width=10, command=self.logout).grid(row=0, column=4, padx=5)
# =====================
# FILTER
# =====================
filter_frame = tk.Frame(self.frame)
filter_frame.pack(pady=5)
tk.Label(filter_frame, text="Filter Kategori:").pack(side=tk.LEFT)
self.filter_kategori = tk.StringVar()
tk.OptionMenu(
filter_frame,
self.filter_kategori,
"Semua",
"Makanan",
"Minuman",
"Dessert",
command=self.load_menu
).pack(side=tk.LEFT)
self.filter_kategori.set("Semua")
# ===================== # =====================
# LIST MENU # LIST MENU
# ===================== # =====================
self.listbox = tk.Listbox(self.frame, width=80, height=10) tk.Label(self.frame, text="Daftar Menu", font=("Arial", 12, "bold"))\
self.listbox.pack(pady=10) .pack(pady=5)
self.listbox = tk.Listbox(self.frame, width=60, height=10)
self.listbox.pack(pady=5)
self.listbox.bind("<<ListboxSelect>>", self.pilih_menu) self.listbox.bind("<<ListboxSelect>>", self.pilih_menu)
self.menu_data = [] self.menu_data = []
self.load_menu() self.load_menu()
# ===================== # =====================
# LOAD MENU + FILTER # DATABASE FUNCTION
# ===================== # =====================
def load_menu(self, *_): def load_menu(self):
self.listbox.delete(0, tk.END) self.listbox.delete(0, tk.END)
db = connect() db = connect()
cur = db.cursor() cur = db.cursor()
if self.filter_kategori.get() == "Semua":
cur.execute("SELECT * FROM menu") cur.execute("SELECT * FROM menu")
else:
cur.execute(
"SELECT * FROM menu WHERE kategori=?",
(self.filter_kategori.get(),)
)
self.menu_data = cur.fetchall() self.menu_data = cur.fetchall()
db.close() db.close()
for m in self.menu_data: for menu in self.menu_data:
self.listbox.insert( self.listbox.insert(
tk.END, tk.END,
f"{m[0]:<3} | {m[1]:<20} | {m[2]:<10} | Rp {m[3]:,.0f}" f"{menu[0]} | {menu[1]} | Rp {menu[2]:,.0f}"
) )
# =====================
# PILIH MENU
# =====================
def pilih_menu(self, event): def pilih_menu(self, event):
idx = self.listbox.curselection() idx = self.listbox.curselection()
if not idx: if not idx:
return return
menu = self.menu_data[idx[0]] menu = self.menu_data[idx[0]]
self.clear_form()
self.clear_form()
self.nama.insert(0, menu[1]) self.nama.insert(0, menu[1])
self.kategori.set(menu[2]) self.harga.insert(0, menu[2])
self.harga.insert(0, menu[3]) self.gambar.insert(0, menu[3])
self.gambar.insert(0, menu[4])
# ===================== # =====================
# CRUD # CRUD
# ===================== # =====================
def tambah(self): def tambah(self):
if not self.nama.get() or not self.harga.get(): if not self.nama.get() or not self.harga.get():
messagebox.showwarning("Error", "Data belum lengkap") messagebox.showwarning("Error", "Nama dan Harga wajib diisi")
return return
db = connect() db = connect()
cur = db.cursor() cur = db.cursor()
cur.execute( cur.execute(
"INSERT INTO menu(nama,kategori,harga,gambar) VALUES (?,?,?,?)", "INSERT INTO menu(nama,harga,gambar) VALUES (?,?,?)",
( (self.nama.get(), float(self.harga.get()), self.gambar.get())
self.nama.get(),
self.kategori.get(),
float(self.harga.get()),
self.gambar.get()
)
) )
db.commit() db.commit()
db.close() db.close()
@ -170,7 +125,7 @@ class AdminMenu:
def update(self): def update(self):
idx = self.listbox.curselection() idx = self.listbox.curselection()
if not idx: if not idx:
messagebox.showwarning("Pilih", "Pilih menu dulu") messagebox.showwarning("Pilih", "Pilih menu yang ingin diupdate")
return return
menu_id = self.menu_data[idx[0]][0] menu_id = self.menu_data[idx[0]][0]
@ -178,14 +133,8 @@ class AdminMenu:
db = connect() db = connect()
cur = db.cursor() cur = db.cursor()
cur.execute( cur.execute(
"UPDATE menu SET nama=?, kategori=?, harga=?, gambar=? WHERE id=?", "UPDATE menu SET nama=?, harga=?, gambar=? WHERE id=?",
( (self.nama.get(), float(self.harga.get()), self.gambar.get(), menu_id)
self.nama.get(),
self.kategori.get(),
float(self.harga.get()),
self.gambar.get(),
menu_id
)
) )
db.commit() db.commit()
db.close() db.close()
@ -196,7 +145,7 @@ class AdminMenu:
def hapus(self): def hapus(self):
idx = self.listbox.curselection() idx = self.listbox.curselection()
if not idx: if not idx:
messagebox.showwarning("Pilih", "Pilih menu dulu") messagebox.showwarning("Pilih", "Pilih menu yang ingin dihapus")
return return
menu_id = self.menu_data[idx[0]][0] menu_id = self.menu_data[idx[0]][0]
@ -216,7 +165,6 @@ class AdminMenu:
self.nama.delete(0, tk.END) self.nama.delete(0, tk.END)
self.harga.delete(0, tk.END) self.harga.delete(0, tk.END)
self.gambar.delete(0, tk.END) self.gambar.delete(0, tk.END)
self.kategori.set("Makanan")
def logout(self): def logout(self):
self.frame.destroy() self.frame.destroy()

View File

@ -7,9 +7,7 @@ def setup_database():
db = connect() db = connect()
cur = db.cursor() cur = db.cursor()
# ===================== # Tabel Users
# TABEL USERS
# =====================
cur.execute(""" cur.execute("""
CREATE TABLE IF NOT EXISTS users( CREATE TABLE IF NOT EXISTS users(
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
@ -19,28 +17,23 @@ def setup_database():
) )
""") """)
# ===================== # Tabel Menu
# TABEL MENU (ADA KATEGORI)
# =====================
cur.execute(""" cur.execute("""
CREATE TABLE IF NOT EXISTS menu( CREATE TABLE IF NOT EXISTS menu(
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
nama TEXT, nama TEXT,
kategori TEXT,
harga REAL, harga REAL,
gambar TEXT gambar TEXT
) )
""") """)
# Jaga-jaga DB lama (tidak error) # Tambah kolom kategori (aman)
try: try:
cur.execute("ALTER TABLE menu ADD COLUMN kategori TEXT") cur.execute("ALTER TABLE menu ADD COLUMN kategori TEXT")
except sqlite3.OperationalError: except sqlite3.OperationalError:
pass pass
# ===================== # Tabel Transaksi
# TABEL TRANSAKSI
# =====================
cur.execute(""" cur.execute("""
CREATE TABLE IF NOT EXISTS transaksi( CREATE TABLE IF NOT EXISTS transaksi(
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
@ -51,9 +44,7 @@ def setup_database():
) )
""") """)
# ===================== # Tabel Detail Transaksi
# DETAIL TRANSAKSI
# =====================
cur.execute(""" cur.execute("""
CREATE TABLE IF NOT EXISTS detail_transaksi( CREATE TABLE IF NOT EXISTS detail_transaksi(
id INTEGER PRIMARY KEY AUTOINCREMENT, id INTEGER PRIMARY KEY AUTOINCREMENT,
@ -65,9 +56,7 @@ def setup_database():
) )
""") """)
# ===================== # Insert Akun Default
# INSERT USER DEFAULT
# =====================
cur.execute("SELECT COUNT(*) FROM users") cur.execute("SELECT COUNT(*) FROM users")
if cur.fetchone()[0] == 0: if cur.fetchone()[0] == 0:
users = [ users = [
@ -81,10 +70,9 @@ def setup_database():
"INSERT INTO users(username,password,role) VALUES (?,?,?)", "INSERT INTO users(username,password,role) VALUES (?,?,?)",
users users
) )
db.commit()
# ===================== # Insert Menu Default
# INSERT MENU DEFAULT
# =====================
cur.execute("SELECT COUNT(*) FROM menu") cur.execute("SELECT COUNT(*) FROM menu")
if cur.fetchone()[0] == 0: if cur.fetchone()[0] == 0:
menus = [ menus = [
@ -92,13 +80,13 @@ def setup_database():
('Bakso', 'Makanan', 15000, 'aset/bakso.jpg'), ('Bakso', 'Makanan', 15000, 'aset/bakso.jpg'),
('Mie Ayam', 'Makanan', 12000, 'aset/mie_ayam.jpg'), ('Mie Ayam', 'Makanan', 12000, 'aset/mie_ayam.jpg'),
('Es Teh', 'Minuman', 5000, 'aset/es_teh.jpg'), ('Es Teh', 'Minuman', 5000, 'aset/es_teh.jpg'),
('Es Teler', 'Dessert', 15000, 'aset/es_teler.jpg'), ('Es Teler', 'Minuman', 15000, 'aset/es_teler.jpg'),
('Jus Jeruk', 'Minuman', 8000, 'aset/jus_jeruk.jpg') ('Jus Jeruk', 'Minuman', 8000, 'aset/jus_jeruk.jpg')
] ]
cur.executemany( cur.executemany(
"INSERT INTO menu (nama, kategori, harga, gambar) VALUES (?,?,?,?)", "INSERT INTO menu (nama, kategori, harga, gambar) VALUES (?,?,?,?)",
menus menus
) )
db.commit() db.commit()
db.close() db.close()