diff --git a/main.py b/main.py index 642e813..16d7a00 100644 --- a/main.py +++ b/main.py @@ -1,3 +1,12 @@ +"""akun default buat login : + - admin / admin123 (role admin) + - kasir / kasir123 (role kasir) + - waiter / waiter123 (role waiter) + - user / user123 (role pembeli) + - owner / owner123 (role pemilik) +""" + + import sqlite3 import os import tkinter as tk @@ -9,6 +18,8 @@ IMG_PREVIEW_SIZE = (120, 80) + + # Baguan Database (ati ati) @@ -51,9 +62,9 @@ def seed_defaults(conn): c = conn.cursor() defaults = [ ('admin','admin123','admin'), - ('kasir1','kasir123','kasir'), - ('waiter1','waiter123','waiter'), - ('user1','user123','pembeli'), + ('kasir','kasir123','kasir'), + ('waiter','waiter123','waiter'), + ('user','user123','pembeli'), ('owner','owner123','pemilik'), ] for u,p,r in defaults: @@ -81,4 +92,97 @@ def seed_defaults(conn): c.execute("INSERT INTO promo (code,type,value,min_total) VALUES (?,?,?,?)", (code,ptype,val,min_total)) except sqlite3.IntegrityError: pass - conn.commit() \ No newline at end of file + conn.commit() + +def authenticate(username, password): + conn = sqlite3.connect(DB_PATH) + c = conn.cursor() + c.execute("SELECT id,username,role FROM users WHERE username=? AND password=?", (username,password)) + r = c.fetchone() + conn.close() + if r: + return {'id':r[0],'username':r[1],'role':r[2]} + return None + + + + + + + +# Bagian Menu wel + + +def menu_add(nama, kategori, harga, stok, foto, item_discount_pct=0): + conn = sqlite3.connect(DB_PATH) + c = conn.cursor() + tersedia = 1 if stok>0 else 0 + c.execute("""INSERT INTO menu (nama,kategori,harga,stok,foto,tersedia,item_discount_pct) + VALUES (?,?,?,?,?,?,?)""", (nama,kategori,harga,stok,foto,tersedia,item_discount_pct)) + conn.commit() + conn.close() + +def menu_update(menu_id, nama, kategori, harga, stok, foto, item_discount_pct=0): + conn = sqlite3.connect(DB_PATH) + c = conn.cursor() + tersedia = 1 if stok>0 else 0 + c.execute("""UPDATE menu SET nama=?,kategori=?,harga=?,stok=?,foto=?,tersedia=?,item_discount_pct=? + WHERE id=?""", (nama,kategori,harga,stok,foto,tersedia,item_discount_pct, menu_id)) + conn.commit() + conn.close() + +def menu_delete(menu_id): + conn = sqlite3.connect(DB_PATH) + c = conn.cursor() + c.execute("DELETE FROM menu WHERE id=?", (menu_id,)) + conn.commit() + conn.close() + +def menu_list(kategori=None, available_only=False, search_text=None): + conn = sqlite3.connect(DB_PATH) + c = conn.cursor() + q = "SELECT id,nama,kategori,harga,stok,foto,tersedia,item_discount_pct FROM menu" + conditions = [] + params = [] + if kategori: + conditions.append("kategori=?") + params.append(kategori) + if available_only: + conditions.append("tersedia=1") + if search_text: + conditions.append("(nama LIKE ? OR kategori LIKE ?)") + params += [f"%{search_text}%", f"%{search_text}%"] + if conditions: + q += " WHERE " + " AND ".join(conditions) + q += " ORDER BY id ASC" + c.execute(q, params) + rows = c.fetchall() + conn.close() + return rows + +def menu_get(menu_id): + conn = sqlite3.connect(DB_PATH) + c = conn.cursor() + c.execute("SELECT id,nama,kategori,harga,stok,foto,tersedia,item_discount_pct FROM menu WHERE id=?", (menu_id,)) + r = c.fetchone() + conn.close() + return r + +def menu_decrease_stock(menu_id, qty): + conn = sqlite3.connect(DB_PATH) + c = conn.cursor() + c.execute("SELECT stok FROM menu WHERE id=?", (menu_id,)) + r = c.fetchone() + if not r: + conn.close() + return False, "Menu tidak ditemukan" + stok = r[0] + if stok < qty: + conn.close() + return False, "Stok tidak cukup" + newstok = stok - qty + tersedia = 1 if newstok>0 else 0 + c.execute("UPDATE menu SET stok=?, tersedia=? WHERE id=?", (newstok, tersedia, menu_id)) + conn.commit() + conn.close() + return True, newstok \ No newline at end of file