Update
This commit is contained in:
parent
ddac4df06b
commit
4379a3ca5f
90
main.py
90
main.py
@ -798,21 +798,46 @@ class App:
|
||||
ttk.Label(frame, text="Password:").grid(row=2, column=0, sticky='e', pady=5)
|
||||
self.password_var = tk.StringVar()
|
||||
ttk.Entry(frame, textvariable=self.password_var, show="*", width=30).grid(row=2, column=1, pady=5)
|
||||
|
||||
# TAMBAHAN: Input nama pembeli (untuk role pembeli)
|
||||
ttk.Label(frame, text="Nama Lengkap:", font=("Arial", 9)).grid(row=3, column=0, sticky='e', pady=5)
|
||||
self.customer_name_var = tk.StringVar()
|
||||
customer_entry = ttk.Entry(frame, textvariable=self.customer_name_var, width=30)
|
||||
customer_entry.grid(row=3, column=1, pady=5)
|
||||
ttk.Label(frame, text="(Khusus untuk Pembeli)", font=("Arial", 7), foreground='gray').grid(row=4, column=1, sticky='w')
|
||||
|
||||
ttk.Button(frame, text="Login", command=self.handle_login).grid(row=3, column=0, columnspan=2, pady=12)
|
||||
ttk.Button(frame, text="Login", command=self.handle_login).grid(row=5, column=0, columnspan=2, pady=12)
|
||||
|
||||
def handle_login(self):
|
||||
u = self.username_var.get().strip()
|
||||
p = self.password_var.get().strip()
|
||||
|
||||
if not u or not p:
|
||||
messagebox.showwarning("Input", "Masukkan username & password")
|
||||
return
|
||||
user = authenticate(u,p)
|
||||
|
||||
user = authenticate(u, p)
|
||||
if not user:
|
||||
messagebox.showerror("Gagal", "Username atau password salah")
|
||||
return
|
||||
|
||||
# TAMBAHAN: Validasi nama pembeli untuk role pembeli
|
||||
if user['role'] in ['pembeli', 'user']:
|
||||
customer_name = self.customer_name_var.get().strip()
|
||||
if not customer_name:
|
||||
messagebox.showwarning("Nama Pembeli", "Pembeli harus mengisi Nama Lengkap!")
|
||||
return
|
||||
# Simpan nama pembeli di session
|
||||
user['customer_name'] = customer_name
|
||||
|
||||
self.session = user
|
||||
messagebox.showinfo("Sukses", f"Login berhasil sebagai {user['role']}")
|
||||
|
||||
# Pesan selamat datang
|
||||
welcome_msg = f"Login berhasil sebagai {user['role']}"
|
||||
if user['role'] in ['pembeli', 'user']:
|
||||
welcome_msg = f"Selamat datang, {user.get('customer_name')}!\n\nSilakan pilih menu dan tentukan nomor meja Anda."
|
||||
|
||||
messagebox.showinfo("Sukses", welcome_msg)
|
||||
self.dashboard_frame()
|
||||
|
||||
def logout(self):
|
||||
@ -826,11 +851,19 @@ class App:
|
||||
w.destroy()
|
||||
top = ttk.Frame(self.root)
|
||||
top.pack(fill='x')
|
||||
|
||||
# Text untuk header
|
||||
if self.session['role'] in ['pembeli', 'user'] and 'customer_name' in self.session:
|
||||
header_text = f"👤 {self.session['customer_name']} | User: {self.session['username']} | Role: {self.session['role']}"
|
||||
else:
|
||||
header_text = f"User: {self.session['username']} | Role: {self.session['role']}"
|
||||
|
||||
ttk.Label(
|
||||
top,
|
||||
text=f"User: {self.session['username']} | Role: {self.session['role']}",
|
||||
text=header_text,
|
||||
font=("Arial", 12)
|
||||
).pack(side='left', padx=10, pady=6)
|
||||
|
||||
ttk.Button(top, text="Logout", command=self.logout).pack(side='right', padx=10)
|
||||
main = ttk.Notebook(self.root)
|
||||
main.pack(fill='both', expand=True, padx=10, pady=8)
|
||||
@ -2458,6 +2491,45 @@ class App:
|
||||
ttk.Label(header, text="💰 Pembayaran Transaksi", font=("Arial", 14, "bold")).pack(side='left')
|
||||
ttk.Button(header, text="🔄 Refresh", command=self.reload_payment_orders).pack(side='right', padx=6)
|
||||
|
||||
# ===== TAMBAHAN: SUMMARY PENJUALAN HARI INI UNTUK KASIR =====
|
||||
if self.session['role'] == 'kasir':
|
||||
summary_frame = ttk.LabelFrame(parent, text="📊 Penjualan Hari Ini", padding=10)
|
||||
summary_frame.pack(fill='x', padx=10, pady=6)
|
||||
|
||||
summary_inner = ttk.Frame(summary_frame)
|
||||
summary_inner.pack()
|
||||
|
||||
# Hitung total hari ini
|
||||
from datetime import datetime
|
||||
today_income = 0
|
||||
today_count = 0
|
||||
|
||||
today_start = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
|
||||
all_transaksi = transaksi_list(status='dibayar')
|
||||
|
||||
for trx in all_transaksi:
|
||||
tid, uid, meja, total, status, promo_code, tanggal = trx
|
||||
try:
|
||||
trx_date = datetime.strptime(tanggal, "%Y-%m-%d %H:%M:%S")
|
||||
if trx_date >= today_start:
|
||||
today_income += total
|
||||
today_count += 1
|
||||
except:
|
||||
pass
|
||||
|
||||
ttk.Label(summary_inner, text="Total Transaksi Hari Ini:", font=("Arial", 10)).grid(row=0, column=0, sticky='w', padx=10, pady=3)
|
||||
ttk.Label(summary_inner, text=str(today_count), font=("Arial", 10, "bold"), foreground='blue').grid(row=0, column=1, sticky='w', padx=10, pady=3)
|
||||
|
||||
ttk.Label(summary_inner, text="Total Pendapatan Hari Ini:", font=("Arial", 10)).grid(row=1, column=0, sticky='w', padx=10, pady=3)
|
||||
ttk.Label(summary_inner, text=f"Rp {today_income:,.0f}", font=("Arial", 10, "bold"), foreground='green').grid(row=1, column=1, sticky='w', padx=10, pady=3)
|
||||
|
||||
|
||||
# Container utama
|
||||
main_container = ttk.Frame(parent)
|
||||
main_container.pack(fill='both', expand=True, padx=10, pady=6)
|
||||
ttk.Label(header, text="💰 Pembayaran Transaksi", font=("Arial", 14, "bold")).pack(side='left')
|
||||
ttk.Button(header, text="🔄 Refresh", command=self.reload_payment_orders).pack(side='right', padx=6)
|
||||
|
||||
# Container utama
|
||||
main_container = ttk.Frame(parent)
|
||||
main_container.pack(fill='both', expand=True, padx=10, pady=6)
|
||||
@ -3418,6 +3490,16 @@ class App:
|
||||
struk += f"No. Transaksi : {tid}\n"
|
||||
struk += f"Tanggal : {tanggal}\n"
|
||||
struk += f"Meja : {meja}\n"
|
||||
|
||||
# Cari nama pembeli (dari user_id transaksi)
|
||||
users = read_all(USERS_CSV)
|
||||
customer_name = "Guest"
|
||||
for u in users:
|
||||
if u.get('id') == str(uid):
|
||||
customer_name = u.get('username')
|
||||
break
|
||||
|
||||
struk += f"Pelanggan : {customer_name}\n"
|
||||
struk += f"Kasir : {self.session['username']}\n"
|
||||
|
||||
if payment_data:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user