diff --git a/main.py b/main.py index 0d17f6a..2d304ea 100644 --- a/main.py +++ b/main.py @@ -88,44 +88,7 @@ def calculate_discount(total_quantity): else: return 0, '0% (до 10000 ед.)' def get_partners(db_path='partners.db', sort_by='rating', ascending=False): - """Получает данные о партнерах из базы данных с возможностью сортировки и расчета скидок - Args: - db_path (str): путь к файлу базы данных SQLite. По умолчанию 'partners.db' - sort_by (str): поле для сортировки. Допустимые значения: - - 'rating': по рейтингу (по умолчанию) - - 'discount': по общему количеству продаж (для расчета скидки) - - 'name': по наименованию партнера - - 'type': по типу партнера и наименованию - ascending (bool): направление сортировки. - - False: по убыванию (по умолчанию) - - True: по возрастанию - - Returns: - pandas.DataFrame или None: DataFrame с данными партнеров или None в случае ошибки - - Структура возвращаемого DataFrame: - - Тип партнера - - Наименование партнера - - Директор - - Электронная почта - - Телефон - - Юридический адрес - - ИНН - - Рейтинг - - Дата создания - - total_quantity: общее количество продаж (скрытое поле) - - Скидка: процент скидки на основе total_quantity - - Текст_скидки: текстовое описание скидки - - Raises: - sqlite3.Error: ошибки работы с базой данных - Exception: другие возможные ошибки - - Example: - >>> df = get_partners(sort_by='discount', ascending=True) - >>> df = get_partners('my_database.db', sort_by='name') - """ try: conn = sqlite3.connect(db_path) query = """ @@ -176,43 +139,7 @@ def get_partners(db_path='partners.db', sort_by='rating', ascending=False): print(f"❌ Общая ошибка: {e}") return None def get_sales_history(db_path='partners.db', limit=50, sort_by='date_desc'): - """Получает историю реализации продукции с разными вариантами сортировки - Args: - db_path (str): путь к файлу базы данных SQLite. По умолчанию 'partners.db' - limit (int): ограничение количества возвращаемых записей. По умолчанию 50 - sort_by (str): критерий сортировки данных. Допустимые значения: - - 'date_desc': по дате продажи (новые сверху, по умолчанию) - - 'date_asc': по дате продажи (старые сверху) - - 'quantity_desc': по количеству (по убыванию) - - 'amount_desc': по общей сумме (по убыванию) - - Returns: - pandas.DataFrame или None: DataFrame с историей продаж или None в случае ошибки - - Структура возвращаемого DataFrame: - - Дата продажи: дата осуществления продажи - - Партнер: наименование партнера - - Продукция: название продукции - - Артикул: артикул продукции - - Количество: количество проданных единиц - - Цена за единицу: цена за одну единицу продукции - - Общая сумма: общая сумма продажи (рассчитывается как количество × цена) - - Тип продукции: категория продукции - - Raises: - Exception: ошибки при выполнении запроса к базе данных - - Example: - >>> # Получить последние 50 продаж - >>> df = get_sales_history() - - >>> # Получить 100 самых крупных продаж по сумме - >>> df = get_sales_history(limit=100, sort_by='amount_desc') - - >>> # Получить историю продаж в хронологическом порядке - >>> df = get_sales_history(sort_by='date_asc', limit=200) - """ try: conn = sqlite3.connect(db_path) query = """ @@ -366,45 +293,8 @@ def simple_choice(options): print("\n👋 Программа прервана пользователем.") sys.exit(0) def check_database(): - """Упрощенная функция выбора опции из списка с валидацией ввода + """Упрощенная функция выбора опции из списка с валидацией ввода""" - Args: - options (list): список строк с доступными опциями для выбора - - Returns: - str: выбранная опция из списка options - - Особенности: - - Выводит пронумерованный список опций в красивом формате - - Запрашивает ввод пользователя с валидацией - - Обрабатывает некорректный ввод и повторяет запрос - - Обрабатывает прерывание программы (Ctrl+C) с graceful shutdown - - Поддерживает ввод только цифровых значений в допустимом диапазоне - - Raises: - SystemExit: при прерывании программы пользователем (KeyboardInterrupt) - - Example: - >>> options = ["Показать всех партнеров", "История продаж", "Выход"] - >>> choice = simple_choice(options) - - ================================================== - ВЫБЕРИТЕ ОПЦИЮ: - ================================================== - 1. Показать всех партнеров - 2. История продаж - 3. Выход - - Введите номер (1-3): 2 - >>> print(choice) - "История продаж" - - Обработка ошибок: - - Некорректный ввод (не цифры): повторный запрос - - Число вне диапазона: повторный запрос - - Прерывание (Ctrl+C): graceful exit программы - - EOF (Ctrl+D в Unix): обрабатывается как некорректный ввод - """ conn = sqlite3.connect('partners.db') try: cursor = conn.cursor() diff --git a/read.txt b/read.txt index 794637a..16ad071 100644 --- a/read.txt +++ b/read.txt @@ -2,7 +2,7 @@ Файл с типами продукции: Product_type_import.xlsx Файл с продуктами: Products_import.xlsx Файл с продажами: Partner_products_import.xlsx - +### ###1 def calculate_discount(total_quantity): """Ра""Рассчитываетссчитывает скидку на основе общего количества проданной продукции