Spaces:
Sleeping
Sleeping
Update app.py
#1
by
Aleksmorshen
- opened
app.py
CHANGED
@@ -51,6 +51,7 @@ CREATE TABLE IF NOT EXISTS sales (
|
|
51 |
product_id INTEGER NOT NULL,
|
52 |
quantity INTEGER NOT NULL,
|
53 |
sale_date TIMESTAMP NOT NULL,
|
|
|
54 |
FOREIGN KEY(product_id) REFERENCES products(id)
|
55 |
)
|
56 |
''')
|
@@ -88,16 +89,25 @@ def record_sales():
|
|
88 |
c.execute('SELECT product_id, quantity FROM cart')
|
89 |
cart_items = c.fetchall()
|
90 |
|
|
|
91 |
for product_id, quantity in cart_items:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
92 |
c.execute('''
|
93 |
-
INSERT INTO sales (sale_id, product_id, quantity, sale_date)
|
94 |
-
VALUES (?, ?, ?, ?)
|
95 |
-
''', (sale_id, product_id, quantity, sale_date))
|
96 |
-
sales_details.append((product_id, quantity, sale_date))
|
97 |
|
98 |
c.execute('DELETE FROM cart')
|
99 |
conn.commit()
|
100 |
-
return sales_details, sale_id
|
101 |
|
102 |
# Функция для генерации отчета за месяц
|
103 |
def generate_monthly_report():
|
@@ -123,8 +133,9 @@ def generate_monthly_report():
|
|
123 |
# Функция для получения всех сделок
|
124 |
def get_all_sales():
|
125 |
c.execute('''
|
126 |
-
SELECT DISTINCT sale_id, sale_date
|
127 |
FROM sales
|
|
|
128 |
ORDER BY sale_date DESC
|
129 |
''')
|
130 |
sales_data = c.fetchall()
|
@@ -210,10 +221,13 @@ def edit_products():
|
|
210 |
new_quantity_in_stock = st.number_input("Новое количество на складе", min_value=0, step=1, value=product[5])
|
211 |
|
212 |
if st.button("Сохранить изменения"):
|
213 |
-
c.execute(
|
214 |
-
|
|
|
|
|
|
|
215 |
conn.commit()
|
216 |
-
st.success("
|
217 |
|
218 |
if st.button("Удалить товар"):
|
219 |
c.execute("DELETE FROM products WHERE id=?", (product[0],))
|
@@ -298,11 +312,12 @@ def add_to_cart():
|
|
298 |
|
299 |
# Добавляем кнопку "Пробить" для оформления продажи
|
300 |
if st.button("Пробить"):
|
301 |
-
sales_details, sale_id = record_sales()
|
302 |
if sales_details:
|
303 |
st.write("**Детали сделок:**")
|
304 |
-
sale_details_df = pd.DataFrame(sales_details, columns=["ID товара", "Количество", "Дата и время"])
|
305 |
-
st.dataframe(sale_details_df.style.format({"Дата и время": lambda x: pd.to_datetime(x).strftime('%d-%m-%Y %H:%M:%S')}), use_container_width=True)
|
|
|
306 |
st.success("Корзина успешно пробита! Все товары добавлены в отчет и корзина очищена.")
|
307 |
|
308 |
# Кнопка для отображения сделок
|
@@ -310,8 +325,8 @@ def add_to_cart():
|
|
310 |
sales_data = get_all_sales()
|
311 |
if sales_data:
|
312 |
sale_ids = [sale[0] for sale in sales_data]
|
313 |
-
for sale_id in
|
314 |
-
st.write(f"**Сделка ID:** {sale_id} ({
|
315 |
sale_details = get_sale_details(sale_id)
|
316 |
if sale_details:
|
317 |
df_sales = pd.DataFrame(sale_details, columns=["Название товара", "Количество", "Цена за единицу", "Дата и время"])
|
@@ -341,8 +356,8 @@ def monthly_report():
|
|
341 |
sales_data = get_all_sales()
|
342 |
if sales_data:
|
343 |
sale_ids = [sale[0] for sale in sales_data]
|
344 |
-
for sale_id in
|
345 |
-
st.write(f"**Сделка ID:** {sale_id} ({
|
346 |
sale_details = get_sale_details(sale_id)
|
347 |
if sale_details:
|
348 |
df_sales = pd.DataFrame(sale_details, columns=["Название товара", "Количество", "Цена за единицу", "Дата и время"])
|
|
|
51 |
product_id INTEGER NOT NULL,
|
52 |
quantity INTEGER NOT NULL,
|
53 |
sale_date TIMESTAMP NOT NULL,
|
54 |
+
total_amount REAL NOT NULL,
|
55 |
FOREIGN KEY(product_id) REFERENCES products(id)
|
56 |
)
|
57 |
''')
|
|
|
89 |
c.execute('SELECT product_id, quantity FROM cart')
|
90 |
cart_items = c.fetchall()
|
91 |
|
92 |
+
total_amount = 0.0
|
93 |
for product_id, quantity in cart_items:
|
94 |
+
# Получение цены за единицу товара
|
95 |
+
c.execute('SELECT sale_price FROM products WHERE id=?', (product_id,))
|
96 |
+
sale_price = c.fetchone()[0]
|
97 |
+
|
98 |
+
# Расчет общей суммы для этого товара
|
99 |
+
amount = quantity * sale_price
|
100 |
+
total_amount += amount
|
101 |
+
|
102 |
c.execute('''
|
103 |
+
INSERT INTO sales (sale_id, product_id, quantity, sale_date, total_amount)
|
104 |
+
VALUES (?, ?, ?, ?, ?)
|
105 |
+
''', (sale_id, product_id, quantity, sale_date, amount))
|
106 |
+
sales_details.append((product_id, quantity, amount, sale_date))
|
107 |
|
108 |
c.execute('DELETE FROM cart')
|
109 |
conn.commit()
|
110 |
+
return sales_details, sale_id, total_amount
|
111 |
|
112 |
# Функция для генерации отчета за месяц
|
113 |
def generate_monthly_report():
|
|
|
133 |
# Функция для получения всех сделок
|
134 |
def get_all_sales():
|
135 |
c.execute('''
|
136 |
+
SELECT DISTINCT sale_id, sale_date, SUM(total_amount) AS total_amount
|
137 |
FROM sales
|
138 |
+
GROUP BY sale_id, sale_date
|
139 |
ORDER BY sale_date DESC
|
140 |
''')
|
141 |
sales_data = c.fetchall()
|
|
|
221 |
new_quantity_in_stock = st.number_input("Новое количество на складе", min_value=0, step=1, value=product[5])
|
222 |
|
223 |
if st.button("Сохранить изменения"):
|
224 |
+
c.execute('''
|
225 |
+
UPDATE products
|
226 |
+
SET name = ?, description = ?, purchase_price = ?, sale_price = ?, quantity_in_stock = ?
|
227 |
+
WHERE id = ?
|
228 |
+
''', (new_name, new_description, new_purchase_price, new_sale_price, new_quantity_in_stock, product[0]))
|
229 |
conn.commit()
|
230 |
+
st.success("Товар успешно обновлен!")
|
231 |
|
232 |
if st.button("Удалить товар"):
|
233 |
c.execute("DELETE FROM products WHERE id=?", (product[0],))
|
|
|
312 |
|
313 |
# Добавляем кнопку "Пробить" для оформления продажи
|
314 |
if st.button("Пробить"):
|
315 |
+
sales_details, sale_id, total_amount = record_sales()
|
316 |
if sales_details:
|
317 |
st.write("**Детали сделок:**")
|
318 |
+
sale_details_df = pd.DataFrame(sales_details, columns=["ID товара", "Количество", "Сумма", "Дата и время"])
|
319 |
+
st.dataframe(sale_details_df.style.format({"Сумма": "{:.2f}", "Дата и время": lambda x: pd.to_datetime(x).strftime('%d-%m-%Y %H:%M:%S')}), use_container_width=True)
|
320 |
+
st.write(f"**Общая сумма сделки:** {total_amount:.2f}")
|
321 |
st.success("Корзина успешно пробита! Все товары добавлены в отчет и корзина очищена.")
|
322 |
|
323 |
# Кнопка для отображения сделок
|
|
|
325 |
sales_data = get_all_sales()
|
326 |
if sales_data:
|
327 |
sale_ids = [sale[0] for sale in sales_data]
|
328 |
+
for sale_id, sale_date, total_amount in sales_data:
|
329 |
+
st.write(f"**Сделка ID:** {sale_id} ({sale_date}) - **Общая сумма:** {total_amount:.2f}")
|
330 |
sale_details = get_sale_details(sale_id)
|
331 |
if sale_details:
|
332 |
df_sales = pd.DataFrame(sale_details, columns=["Название товара", "Количество", "Цена за единицу", "Дата и время"])
|
|
|
356 |
sales_data = get_all_sales()
|
357 |
if sales_data:
|
358 |
sale_ids = [sale[0] for sale in sales_data]
|
359 |
+
for sale_id, sale_date, total_amount in sales_data:
|
360 |
+
st.write(f"**Сделка ID:** {sale_id} ({sale_date}) - **Общая сумма:** {total_amount:.2f}")
|
361 |
sale_details = get_sale_details(sale_id)
|
362 |
if sale_details:
|
363 |
df_sales = pd.DataFrame(sale_details, columns=["Название товара", "Количество", "Цена за единицу", "Дата и время"])
|