Files changed (1) hide show
  1. app.py +31 -16
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("UPDATE products SET name=?, description=?, purchase_price=?, sale_price=?, quantity_in_stock=? WHERE id=?",
214
- (new_name, new_description, new_purchase_price, new_sale_price, new_quantity_in_stock, product[0]))
 
 
 
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 sale_ids:
314
- st.write(f"**Сделка ID:** {sale_id} ({next(sale for sale in sales_data if sale[0] == sale_id)[1]})")
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 sale_ids:
345
- st.write(f"**Сделка ID:** {sale_id} ({next(sale for sale in sales_data if sale[0] == sale_id)[1]})")
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=["Название товара", "Количество", "Цена за единицу", "Дата и время"])