-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsales.py
More file actions
65 lines (54 loc) · 1.76 KB
/
sales.py
File metadata and controls
65 lines (54 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from storage import load_products, save_products, load_sales, save_sales
from utils import pause, get_non_negative_int
from datetime import date
def sales_menu():
while True:
print("\nSales Management")
print("-" * 18)
print("1. Create Sale")
print("2. View Sales")
print("3. Back")
choice = input("Enter your choice (1-3): ")
if choice == "1":
create_sale()
elif choice == "2":
view_sales()
elif choice == "3":
break
else:
print("Invalid choice")
def create_sale():
products = load_products()
sales = load_sales()
pid = input("Enter Product ID: ")
if pid not in products["ID"].values:
print("Product not found")
pause()
return
qty = get_non_negative_int("Enter Quantity Sold: ")
product = products[products["ID"] == pid].iloc[0]
if qty == 0 or qty > product.Quantity:
print("Insufficient stock")
pause()
return
total = qty * product.Price
sale_id = f"S{len(sales)+1:03}"
sales.loc[len(sales)] = [sale_id, pid, qty, total, date.today()]
products.loc[products["ID"] == pid, "Quantity"] -= qty
save_sales(sales)
save_products(products)
print("Sale completed successfully")
print(f"Updated Stock: {product.Quantity - qty}")
pause()
def view_sales():
sales = load_sales()
if sales.empty:
print("No sales found.")
else:
print("\nSALES HISTORY")
print("-" * 70)
print(f"{'ID':<6}{'Product':<10}{'Qty':<6}{'Total':<10}{'Date'}")
print("-" * 70)
for _, row in sales.iterrows():
print(f"{row.SaleID:<6}{row.ProductID:<10}{row.Quantity:<6}{row.TotalPrice:<10}{row.Date}")
pause()