Aleksmorshen commited on
Commit
2a4f22f
·
verified ·
1 Parent(s): fba049c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +89 -67
app.py CHANGED
@@ -152,22 +152,7 @@ def get_sale_details(sale_id):
152
  sale_details = c.fetchall()
153
  return sale_details
154
 
155
- # Страница авторизации
156
- def login():
157
- st.title('Авторизация')
158
- token_input = st.text_input("Введите ваш токен")
159
-
160
- if st.button("Войти"):
161
- user_id = get_user_id_by_token(token_input)
162
- if user_id:
163
- st.session_state.logged_in = True # Устанавливаем состояние авторизации
164
- st.session_state.username = token_input
165
- st.session_state.user_id = user_id
166
- st.success("Добро пожаловать!")
167
- else:
168
- st.error("Неверный токен!")
169
-
170
- # Страница регистрации
171
  def register():
172
  st.title('Регистрация')
173
  username = st.text_input("Введите ваше имя пользователя")
@@ -185,6 +170,20 @@ def register():
185
  else:
186
  st.error("Неверный пароль администратора!")
187
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
 
189
  # Форма добавления товара
190
  def add_product():
@@ -235,17 +234,11 @@ def edit_products():
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,55 +320,84 @@ def add_to_cart():
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()
 
152
  sale_details = c.fetchall()
153
  return sale_details
154
 
155
+ # Форма регистрации
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
156
  def register():
157
  st.title('Регистрация')
158
  username = st.text_input("Введите ваше имя пользователя")
 
170
  else:
171
  st.error("Неверный пароль администратора!")
172
 
173
+ # Форма авторизации
174
+ def login():
175
+ st.title('Авторизация')
176
+ token_input = st.text_input("Введите ваш токен")
177
+
178
+ if st.button("Войти"):
179
+ user_id = get_user_id_by_token(token_input)
180
+ if user_id:
181
+ st.session_state.logged_in = True # Устанавливаем состояние авторизации
182
+ st.session_state.username = token_input
183
+ st.session_state.user_id = user_id
184
+ st.success("Добро пожаловать!")
185
+ else:
186
+ st.error("Неверный токен!")
187
 
188
  # Форма добавления товара
189
  def add_product():
 
234
  conn.commit()
235
  st.success("Товар успешно удален!")
236
 
237
+ # Форма отпуска товара
238
  def add_to_cart():
239
  st.title("Отпуск товара")
240
+ products = c.execute("SELECT id, name, sale_price, quantity_in_stock FROM products WHERE user_id=?",
241
+ (st.session_state.user_id,)).fetchall()
 
 
 
 
 
 
242
 
243
  if products:
244
  for product in products:
 
320
  st.write(f"**Общая сумма сделки:** {total_amount:.2f}")
321
  st.success("Корзина успешно пробита! Все товары добавлены в отчет и корзина очищена.")
322
 
323
+ # Кнопка для отображения сделок
324
+ if st.button("Сделки"):
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=["Название товара", "Количество", "Цена за единицу", "Дата и время"])
333
+ st.dataframe(df_sales.style.format({"Дата и время": lambda x: pd.to_datetime(x).strftime('%d-%m-%Y %H:%M:%S')}), use_container_width=True)
334
+ else:
335
+ st.info("Нет деталей для отображения.")
336
+ else:
337
+ st.info("Нет сделок для отображения.")
338
  else:
339
  st.info("Корзина пуста.")
340
+
341
+ # Страница отчета о продажах за месяц
342
+ def monthly_report():
343
+ st.title("Отчет о продажах за месяц")
344
+ sales_data, total_sales, total_profit = generate_monthly_report()
345
+ if sales_data:
346
+ # Создание DataFrame для отчета
347
+ df = pd.DataFrame(sales_data, columns=["Название", "Общее количество", "Отпускная цена", "Общие продажи", "Прибыль"])
348
+ st.write(f"**Отчет за {datetime.now().strftime('%B %Y')}**")
349
+ st.dataframe(df.style.format({"Отпускная цена": "{:.2f}", "Общие продажи": "{:.2f}", "Прибыль": "{:.2f}"}), use_container_width=True)
350
+
351
+ st.write(f"**Общая сумма прода��**: {total_sales:.2f}")
352
+ st.write(f"**Общая сумма прибыли**: {total_profit:.2f}")
353
+
354
+ # Кнопка для отображения сделок
355
+ if st.button("Сделки"):
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=["Название товара", "Количество", "Цена за единицу", "Дата и время"])
364
+ st.dataframe(df_sales.style.format({"Дата и время": lambda x: pd.to_datetime(x).strftime('%d-%m-%Y %H:%M:%S')}), use_container_width=True)
365
+ else:
366
+ st.info("Нет деталей для отображения.")
367
+ else:
368
+ st.info("Нет сделок для отображения.")
369
  else:
370
+ st.info("Нет данных о продажах за этот месяц.")
371
 
372
+ # Главная функция приложения
373
  def main():
374
+ if 'logged_in' not in st.session_state:
375
+ st.session_state.logged_in = False
376
 
377
+ if st.session_state.logged_in:
378
+ st.sidebar.title(f"Привет, {st.session_state.username}!")
379
+ option = st.sidebar.selectbox("Выберите действие", ["Добавить товар", "Отпуск товара", "Редактировать товары", "Отчет за месяц", "Выйти"])
380
+
381
+ if option == "Добавить товар":
 
 
382
  add_product()
383
+ elif option == "Отпуск товара":
 
 
 
 
 
 
 
 
384
  add_to_cart()
385
+ elif option == "Редактировать товары":
386
+ edit_products()
387
+ elif option == "Отчет за месяц":
388
+ monthly_report()
389
+ elif option == "Выйти":
390
+ st.session_state.logged_in = False
391
+ st.session_state.username = None
392
+ st.session_state.user_id = None
393
+ st.success("Вы вышли из системы!")
394
+ else:
395
+ # Показ только страницы авторизации на главной странице
396
+ login()
397
+
398
+ # Добавляем ссылку на регистрацию в сайдбар
399
+ if st.sidebar.button("Регистрация"):
400
+ register()
 
 
 
 
 
401
 
402
+ if __name__ == "__main__":
403
  main()