-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmenu.py
More file actions
151 lines (126 loc) · 5.04 KB
/
menu.py
File metadata and controls
151 lines (126 loc) · 5.04 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
from basket import Basket
def print_menu():
print("\n=== Point of Sale System ===")
print("1. Add Item to Basket")
print("2. Delete Item from Basket")
print("3. Update Item in Basket")
print("4. Show Items in Basket")
print("5. Generate Bill")
print("6. Search Bill by Bill Number")
print("7. Generate Tax Transaction File")
print("0. Exit")
def get_valid_int(prompt):
while True:
try:
return int(input(prompt))
except ValueError:
print("Invalid input. Please enter a number.")
# Initialize basket
basket = Basket()
while True:
print_menu()
choice = input("Enter your choice: ")
match choice:
case "1":
print("\n--- Add Item ---")
item_code = input("Item Code: ")
while True:
try:
internal_price = float(input("Internal Price: "))
break
except ValueError:
print("Invalid input. Please enter a valid amount for Internal Price.")
while True:
try:
discount = float(input("Discount: "))
break
except ValueError:
print("Invalid input. Please enter a valid rate for Discount.")
while True:
try:
sale_price = float(input("Sale Price: "))
break
except ValueError:
print("Invalid input. Please enter a valid amount for Sale Price.")
while True:
try:
quantity = int(input("Quantity: "))
break
except ValueError:
print("Invalid input. Please enter a valid integer for Quantity.")
basket.add_item(item_code, internal_price, discount, sale_price, quantity)
print(f"Item '{item_code}' added to basket.")
case "2":
if not basket.items:
print("Basket is empty. There's nothing to delete.")
continue # Return to main menu
print("\n--- Delete Item ---")
basket.show_items()
line_number = get_valid_int("Enter line number to delete: ") - 1
basket.delete_item(line_number)
case "3":
if not basket.items:
print("Basket is empty. There's nothing to update.")
continue # Return to main menu
print("\n--- Update Item ---")
basket.show_items()
while True:
try:
line_number = int(input("Enter line number to update: ")) - 1
break
except ValueError:
print("Invalid input. Please enter a valid integer for the line number.")
# Sale Price input
while True:
sale_price_input = input("New Sale Price (leave blank to skip): ")
if sale_price_input == "":
sale_price = None
break
try:
sale_price = float(sale_price_input)
break
except ValueError:
print("Invalid input. Please enter a valid number for Sale Price, or leave blank to skip.")
# Discount input
while True:
discount_input = input("New Discount (leave blank to skip): ")
if discount_input == "":
discount = None
break
try:
discount = float(discount_input)
break
except ValueError:
print("Invalid input. Please enter a valid number for Discount, or leave blank to skip.")
# Quantity input
while True:
quantity_input = input("New Quantity (leave blank to skip): ")
if quantity_input == "":
quantity = None
break
try:
quantity = int(quantity_input)
break
except ValueError:
print("Invalid input. Please enter a valid integer for Quantity, or leave blank to skip.")
basket.update_item(line_number, sale_price, discount, quantity)
case "4":
print("\n--- Show Items ---")
basket.show_items()
case "5":
print("\n--- Generate Bill ---")
basket.generate_bill()
case "6":
print("\n--- Search Bill ---")
bill_number = get_valid_int("Enter Bill Number: ")
basket.search_bill(bill_number)
case "7":
filename = input("Press ENTER to save the bill to tax_transactions.csv: ").strip()
if not filename:
filename = "tax_transactions.csv"
basket.generate_tax_transaction_file(filename)
case "0":
print("Exiting... Goodbye!")
break
case _:
print("Invalid option. Please try again.")