Aleksmorshen commited on
Commit
fba049c
·
verified ·
1 Parent(s): 5f5188e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +51 -57
app.py CHANGED
@@ -185,6 +185,7 @@ def register():
185
  else:
186
  st.error("Неверный пароль администратора!")
187
 
 
188
  # Форма добавления товара
189
  def add_product():
190
  st.title("Добавление товара")
@@ -234,22 +235,17 @@ def edit_products():
234
  conn.commit()
235
  st.success("Товар успешно удален!")
236
 
237
- else:
238
- st.info("Нет доступных товаров для редактирования или удаления.")
239
-
240
- # Форма отпуска товара с поиском
241
  def add_to_cart():
242
  st.title("Отпуск товара")
243
 
244
- search_query = st.text_input("Поиск товара по названию").strip().lower() # Поле поиска
 
245
 
246
- # Получаем все товары пользователя
247
- products = c.execute("SELECT id, name, sale_price, quantity_in_stock FROM products WHERE user_id=?",
248
- (st.session_state.user_id,)).fetchall()
249
-
250
- # Фильтруем товары по поисковому запросу
251
- if search_query:
252
- products = [p for p in products if search_query in p[1].lower()]
253
 
254
  if products:
255
  for product in products:
@@ -331,57 +327,55 @@ def add_to_cart():
331
  st.write(f"**Общая сумма сделки:** {total_amount:.2f}")
332
  st.success("Корзина успешно пробита! Все товары добавлены в отчет и корзина очищена.")
333
 
334
- # Кнопка для отображения сделок
335
- if st.button("Сделки"):
336
- sales_data = get_all_sales()
337
- if sales_data:
338
- sale_ids = [sale[0] for sale in sales_data]
339
- for sale_id, sale_date, total_amount in sales_data:
340
- st.write(f"**Сделка ID:** {sale_id} ({sale_date}) - **Общая сумма:** {total_amount:.2f}")
341
- sale_details = get_sale_details(sale_id)
342
- if sale_details:
343
- df_sales = pd.DataFrame(sale_details, columns=["Название товара", "Количество", "Цена за единицу", "Дата и время"])
344
- st.dataframe(df_sales.style.format({"Дата и время": lambda x: pd.to_datetime(x).strftime('%d-%m-%Y %H:%M:%S')}), use_container_width=True)
345
- else:
346
- st.info("Нет деталей для отображения.")
347
- else:
348
- st.info("Нет сделок для отображения.")
349
  else:
350
  st.info("Корзина пуста.")
 
 
351
 
352
- # Главная функция приложения
353
  def main():
354
- st.sidebar.title("Меню")
355
- menu = ["Авторизация", "Регистрация", "Добавить товар", "Отпуск товара", "Редактировать товары", "Отчет за месяц"]
356
- choice = st.sidebar.selectbox("Выберите действие", menu)
357
-
358
- if "logged_in" not in st.session_state:
359
- st.session_state.logged_in = False
360
-
361
- if not st.session_state.logged_in:
362
- if choice == "Авторизация":
363
- login()
364
- elif choice == "Регистрация":
365
- register()
366
- else:
367
- st.sidebar.write(f"Пользователь: {st.session_state.username}")
368
-
369
- if choice == "Добавить товар":
370
  add_product()
371
- elif choice == "Отпуск товара":
372
- add_to_cart()
373
- elif choice == "Редактировать товары":
 
374
  edit_products()
375
- elif choice == "Отчет за месяц":
376
- sales_data, total_sales, total_profit = generate_monthly_report()
377
- if sales_data:
378
- df = pd.DataFrame(sales_data, columns=["Название", "Общее количество", "Цена за единицу", "Общие продажи", "Прибыль"])
379
- st.dataframe(df.style.format({"Цена за единицу": "{:.2f}", "Общие продажи": "{:.2f}", "Прибыль": "{:.2f}"}), use_container_width=True)
380
- st.write(f"**Общая сумма продаж за месяц:** {total_sales:.2f}")
381
- st.write(f"**Общая прибыль за месяц:** {total_profit:.2f}")
382
- else:
383
- st.info("Нет продаж за текущий месяц.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
384
 
385
- # Запуск приложения
386
  if __name__ == '__main__':
387
  main()
 
185
  else:
186
  st.error("Неверный пароль администратора!")
187
 
188
+
189
  # Форма добавления товара
190
  def add_product():
191
  st.title("Добавление товара")
 
235
  conn.commit()
236
  st.success("Товар успешно удален!")
237
 
238
+ # Функция для отпуска товара с поиском
 
 
 
239
  def add_to_cart():
240
  st.title("Отпуск товара")
241
 
242
+ # Поисковая строка
243
+ search_query = st.text_input("Поиск товара", "")
244
 
245
+ # Получаем товары, которые принадлежат пользователю
246
+ c.execute("SELECT id, name, sale_price, quantity_in_stock FROM products WHERE user_id=? AND name LIKE ?",
247
+ (st.session_state.user_id, f'%{search_query}%'))
248
+ products = c.fetchall()
 
 
 
249
 
250
  if products:
251
  for product in products:
 
327
  st.write(f"**Общая сумма сделки:** {total_amount:.2f}")
328
  st.success("Корзина успешно пробита! Все товары добавлены в отчет и корзина очищена.")
329
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
330
  else:
331
  st.info("Корзина пуста.")
332
+ else:
333
+ st.info("Нет товаров, соответствующих вашему запросу.")
334
 
335
+ # Главная функция
336
  def main():
337
+ st.sidebar.title("Навигация")
338
+ page = st.sidebar.selectbox("Выберите страницу", ["Авторизация", "Регистрация", "Добавить товар", "Редактировать товар", "Отпуск товара", "Отчеты"])
339
+
340
+ # Обрабатываем страницы
341
+ if page == "Авторизация":
342
+ login()
343
+ elif page == "Регистрация":
344
+ register()
345
+ elif page == "Добавить товар":
346
+ if "logged_in" in st.session_state and st.session_state.logged_in:
 
 
 
 
 
 
347
  add_product()
348
+ else:
349
+ st.error("Пожалуйста, войдите в систему.")
350
+ elif page == "Редактировать товар":
351
+ if "logged_in" in st.session_state and st.session_state.logged_in:
352
  edit_products()
353
+ else:
354
+ st.error("Пожалуйста, войдите в систему.")
355
+ elif page == "Отпуск товара":
356
+ if "logged_in" in st.session_state and st.session_state.logged_in:
357
+ add_to_cart()
358
+ else:
359
+ st.error("Пожалуйста, войдите в систему.")
360
+ elif page == "Отчеты":
361
+ if "logged_in" in st.session_state and st.session_state.logged_in:
362
+ st.title("Отчеты")
363
+ if st.button("Показать все продажи"):
364
+ all_sales = get_all_sales()
365
+ if all_sales:
366
+ sales_df = pd.DataFrame(all_sales, columns=["ID продажи", "Дата продажи", "Сумма сделки"])
367
+ st.dataframe(sales_df.style.format({"Сумма сделки": "{:.2f}", "Дата продажи": lambda x: pd.to_datetime(x).strftime('%d-%m-%Y %H:%M:%S')}), use_container_width=True)
368
+ else:
369
+ st.info("Нет продаж.")
370
+ if st.button("Создать месячный отчет"):
371
+ sales_data, total_sales, total_profit = generate_monthly_report()
372
+ if sales_data:
373
+ report_df = pd.DataFrame(sales_data, columns=["Название товара", "Общее количество", "Цена за единицу", "Общая сумма продаж", "Прибыль"])
374
+ st.dataframe(report_df.style.format({"Цена за единицу": "{:.2f}", "Общая сумма продаж": "{:.2f}", "Прибыль": "{:.2f}"}), use_container_width=True)
375
+ st.write(f"**Общая сумма продаж:** {total_sales:.2f}")
376
+ st.write(f"**Общая прибыль:** {total_profit:.2f}")
377
+ else:
378
+ st.info("Нет данных для отчета.")
379
 
 
380
  if __name__ == '__main__':
381
  main()