Untitled

 avatar
unknown
plain_text
a month ago
4.1 kB
7
Indexable
import tkinter as tk
from tkinter import messagebox
import sqlite3
from PIL import Image, ImageDraw, ImageFont

# Krijimi i databazës dhe tabelës nëse nuk ekziston
conn = sqlite3.connect('supermarket.db')
c = conn.cursor()
c.execute("""
CREATE TABLE IF NOT EXISTS products (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    emri TEXT,
    cmimi REAL,
    sasia INTEGER
)
""")
conn.commit()
conn.close()

# ------------------ FUNKSIONET ------------------

def add_product():
    try:
        emri = entry_emri.get()
        cmimi = float(entry_cmimi.get())
        sasia = int(entry_sasia.get())

        conn = sqlite3.connect('supermarket.db')
        c = conn.cursor()
        c.execute("INSERT INTO products (emri, cmimi, sasia) VALUES (?, ?, ?)",
                  (emri, cmimi, sasia))
        conn.commit()
        conn.close()

        messagebox.showinfo("Sukses", "Produkti u shtua me sukses!")
        entry_emri.delete(0, tk.END)
        entry_cmimi.delete(0, tk.END)
        entry_sasia.delete(0, tk.END)

        update_product_list()

    except:
        messagebox.showerror("Error", "Kontrollo të dhënat!")

def update_product_list():
    listbox.delete(0, tk.END)

    conn = sqlite3.connect('supermarket.db')
    c = conn.cursor()
    c.execute("SELECT * FROM products")
    rows = c.fetchall()
    conn.close()

    for row in rows:
        listbox.insert(tk.END, f"{row[0]} | {row[1]} | {row[2]}€ | Sasia: {row[3]}")

def buy_product():
    try:
        selected = listbox.get(listbox.curselection())
        product_id = int(selected.split("|")[0])
        total_amount = float(entry_amount.get())

        conn = sqlite3.connect('supermarket.db')
        c = conn.cursor()
        c.execute("SELECT emri, cmimi, sasia FROM products WHERE id = ?", (product_id,))
        product = c.fetchone()

        if product:
            emri, cmimi, sasia = product

            if sasia <= 0:
                messagebox.showerror("Error", "Produkti nuk ka sasi!")
                return

            if total_amount < cmimi:
                messagebox.showerror("Error", "Nuk keni lekë të mjaftueshme!")
                return

            # Ul sasinë
            c.execute("UPDATE products SET sasia = sasia - 1 WHERE id = ?", (product_id,))
            conn.commit()
            conn.close()

            generate_invoice(emri, cmimi)
            update_product_list()
            messagebox.showinfo("Sukses", "Blerja u krye me sukses!")

    except:
        messagebox.showerror("Error", "Zgjidh një produkt!")

def generate_invoice(emri, cmimi):
    width = 400
    height = 200
    invoice = Image.new('RGB', (width, height), 'white')
    draw = ImageDraw.Draw(invoice)
    font = ImageFont.load_default()

    draw.text((10, 20), "FATURA E BLERJES", fill='black', font=font)
    draw.text((10, 60), f"Produkti: {emri}", fill='black', font=font)
    draw.text((10, 90), f"Cmimi: {cmimi} €", fill='black', font=font)

    invoice.save("invoice.png")
    messagebox.showinfo("Fatura", "Fatura u ruajt si invoice.png")

# ------------------ INTERFACE ------------------

root = tk.Tk()
root.title("Supermarket System")

tk.Label(root, text="Emri i Produktit").grid(row=0, column=0)
tk.Label(root, text="Çmimi").grid(row=1, column=0)
tk.Label(root, text="Sasia").grid(row=2, column=0)

entry_emri = tk.Entry(root)
entry_cmimi = tk.Entry(root)
entry_sasia = tk.Entry(root)

entry_emri.grid(row=0, column=1)
entry_cmimi.grid(row=1, column=1)
entry_sasia.grid(row=2, column=1)

tk.Button(root, text="Shto Produktin", command=add_product).grid(row=3, column=0, columnspan=2)

# Lista e produkteve
listbox = tk.Listbox(root, width=50)
listbox.grid(row=4, column=0, columnspan=2)

# Blerja
tk.Label(root, text="Shuma që keni").grid(row=5, column=0)
entry_amount = tk.Entry(root)
entry_amount.grid(row=5, column=1)

tk.Button(root, text="Blej Produkt", command=buy_product).grid(row=6, column=0, columnspan=2)

update_product_list()

root.mainloop()
Editor is loading...
Leave a Comment