Spaces:
Build error
Build error
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()
|