This commit is contained in:
Bluwww 2025-11-26 20:14:40 +07:00
parent e2573c2197
commit 0c0f2bfdf2

112
main.py
View File

@ -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 sqlite3
import os import os
import tkinter as tk import tkinter as tk
@ -9,6 +18,8 @@ IMG_PREVIEW_SIZE = (120, 80)
# Baguan Database (ati ati) # Baguan Database (ati ati)
@ -51,9 +62,9 @@ def seed_defaults(conn):
c = conn.cursor() c = conn.cursor()
defaults = [ defaults = [
('admin','admin123','admin'), ('admin','admin123','admin'),
('kasir1','kasir123','kasir'), ('kasir','kasir123','kasir'),
('waiter1','waiter123','waiter'), ('waiter','waiter123','waiter'),
('user1','user123','pembeli'), ('user','user123','pembeli'),
('owner','owner123','pemilik'), ('owner','owner123','pemilik'),
] ]
for u,p,r in defaults: 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)) c.execute("INSERT INTO promo (code,type,value,min_total) VALUES (?,?,?,?)", (code,ptype,val,min_total))
except sqlite3.IntegrityError: except sqlite3.IntegrityError:
pass pass
conn.commit() 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