Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -88,6 +88,46 @@ def generate_token():
|
|
88 |
def get_new_id(items):
|
89 |
return max([item.get("id", 0) for item in items], default=0) + 1
|
90 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
# --- Страницы приложения ---
|
92 |
|
93 |
def register():
|
@@ -392,8 +432,8 @@ def main():
|
|
392 |
login()
|
393 |
|
394 |
if __name__ == "__main__":
|
395 |
-
main()
|
396 |
# Ждем 15 секунд после инициализации, затем запускаем фоновый поток резервного копирования
|
397 |
time.sleep(15)
|
398 |
backup_thread = threading.Thread(target=periodic_backup, daemon=True)
|
399 |
-
backup_thread.start()
|
|
|
|
88 |
def get_new_id(items):
|
89 |
return max([item.get("id", 0) for item in items], default=0) + 1
|
90 |
|
91 |
+
# --- Функции для работы с продажами ---
|
92 |
+
def record_sales():
|
93 |
+
"""
|
94 |
+
Записывает информацию о продажах, обновляет базу данных и очищает корзину.
|
95 |
+
"""
|
96 |
+
with db_lock:
|
97 |
+
data = load_db()
|
98 |
+
cart_items = data["cart"]
|
99 |
+
if not cart_items:
|
100 |
+
return None, None, 0.0
|
101 |
+
|
102 |
+
sales_details = []
|
103 |
+
total_amount = 0.0
|
104 |
+
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
105 |
+
sale_id = generate_token()
|
106 |
+
|
107 |
+
for item in cart_items:
|
108 |
+
product = next((p for p in data["products"] if p["id"] == item["product_id"]), None)
|
109 |
+
if product:
|
110 |
+
sale_amount = item["quantity"] * product["sale_price"]
|
111 |
+
total_amount += sale_amount
|
112 |
+
sales_details.append([product["id"], item["quantity"], sale_amount, now])
|
113 |
+
|
114 |
+
# Добавляем информацию о продаже в базу данных
|
115 |
+
new_sale_id = get_new_id(data["sales"])
|
116 |
+
data["sales"].append({
|
117 |
+
"id": new_sale_id,
|
118 |
+
"sale_id": sale_id,
|
119 |
+
"product_id": product["id"],
|
120 |
+
"quantity": item["quantity"],
|
121 |
+
"total_amount": sale_amount,
|
122 |
+
"sale_date": now
|
123 |
+
})
|
124 |
+
|
125 |
+
# Очищаем корзину
|
126 |
+
data["cart"] = []
|
127 |
+
save_db(data)
|
128 |
+
|
129 |
+
return sales_details, sale_id, total_amount
|
130 |
+
|
131 |
# --- Страницы приложения ---
|
132 |
|
133 |
def register():
|
|
|
432 |
login()
|
433 |
|
434 |
if __name__ == "__main__":
|
|
|
435 |
# Ждем 15 секунд после инициализации, затем запускаем фоновый поток резервного копирования
|
436 |
time.sleep(15)
|
437 |
backup_thread = threading.Thread(target=periodic_backup, daemon=True)
|
438 |
+
backup_thread.start()
|
439 |
+
main()
|