Файл с партнёрами: Partners_import.xlsx
Файл с типами продукции: Product_type_import.xlsx
Файл с продуктами: Products_import.xlsx
Файл с продажами: Partner_products_import.xlsx

def check_database():
    """
    Проверяет количество записей в основных таблицах базы данных.

    Функция подключается к SQLite базе данных 'partners.db' и выводит
    количество записей в таблицах: PartnerType, Partner, ProductType,
    Product, Sale.

    Входные параметры:
        Нет

    Выходные параметры:
        Нет

    Действия:
        - Выводит в консоль количество записей каждой таблицы
        - Автоматически закрывает соединение с базой данных
    """

def load_data_from_files():
   """
    Загружает данные из Excel файлов в базу данных.

    Функция выполняет загрузку данных из Excel файлов в соответствующие таблицы
    базы данных SQLite. Подключается к БД, создает курсор для выполнения запросов
    и осуществляет импорт данных.

    Входные параметры:
        Нет

    Выходные параметры:
        Нет

    Действия:
        - Устанавливает соединение с базой данных 'partners.db'
        - Создает курсор для выполнения SQL-запросов
        - Загружает данные из Excel файлов в таблицы БД
        - Фиксирует изменения в базе данных
        - Закрывает соединение с БД
    """

def get_partners(db_path='partners.db', sort_by='rating', ascending=False):
    """
    Получает список партнеров из базы данных с агрегированной информацией о продажах.

    Функция выполняет запрос к базе данных для получения информации о партнерах,
    включая данные об их типе, рейтинге и общем количестве проданных товаров.
    Результаты могут быть отсортированы по различным полям.

    Входные параметры:
        db_path (str): Путь к файлу базы данных. По умолчанию 'partners.db'
        sort_by (str): Поле для сортировки результатов. По умолчанию 'rating'
        ascending (bool): Направление сортировки.
                         True - по возрастанию, False - по убыванию.
                         По умолчанию False (по убыванию)

    Выходные параметры:
        list: Список кортежей с данными о партнерах или None в случае ошибки

    Возвращаемые данные включают:
        - Тип партнера
        - Наименование партнера
        - Директор
        - Электронная почта
        - Телефон
        - Юридический адрес
        - ИНН
        - Рейтинг
        - Дата создания
        - Общее количество проданных товаров

    Исключения:
        Обрабатывает исключения базы данных и возвращает None в случае ошибки
    """

    def create_tables(db_connection):
    """
    Создает все необходимые таблицы в базе данных.

    Функция выполняет создание таблиц в базе данных согласно предопределенной
    схеме. Использует переданное соединение с БД для выполнения SQL-запросов
    создания таблиц.

    Входные параметры:
        db_connection (sqlite3.Connection): Объект соединения с базой данных

    Выходные параметры:
        None

    Действия:
        - Создает курсор для выполнения SQL-запросов
        - Выполняет SQL-запросы на создание таблиц
        - Фиксирует изменения в базе данных
        - Не закрывает соединение с БД (оставляя это вызывающей стороне)
    """

def calculate_discount(total_quantity):
    """
    Рассчитывает размер скидки на основе общего количества проданных товаров.

    Функция определяет процент скидки в зависимости от объема продаж
    по заданной градации.

    Входные параметры:
        total_quantity (int): Общее количество проданных товаров

    Выходные параметры:
        tuple: Кортеж содержащий:
            - discount_percent (int): Процент скидки (0-15)
            - discount_description (str): Текстовое описание скидки

    Примеры возвращаемых значений:
        (15, '15% (более 300000 ед.)')
        (10, '10% (50000-300000 ед.)')
        (5, '5% (10000-50000 ед.)')
        (0, '0% (до 10000 ед.)')
    """

def get_sales_history(db_path='partners.db', limit=50, sort_by='date_desc'):
    """
    Получает историю реализации продукции с разными вариантами сортировки.

    Функция выполняет запрос к базе данных для получения детальной истории
    продаж, включая информацию о партнерах, продукции и финансовых показателях.
    Поддерживает различные варианты сортировки результатов.

    Входные параметры:
        db_path (str): Путь к файлу базы данных. По умолчанию 'partners.db'
        limit (int): Ограничение количества возвращаемых записей. По умолчанию 50
        sort_by (str): Критерий сортировки результатов. Доступные варианты:
                      'date_desc' - по дате продажи (убывание)
                      'date_asc' - по дате продажи (возрастание)
                      'quantity_desc' - по количеству (убывание)
                      'amount_desc' - по общей сумме (убывание)
                      По умолчанию 'date_desc'

    Выходные параметры:
        list: Список кортежей с данными о продажах или None в случае ошибки

    Возвращаемые данные включают:
        - Дата продажи
        - Наименование партнера
        - Наименование продукции
        - Артикул продукции
        - Количество проданных единиц
        - Цена за единицу
        - Общая сумма продажи
        - Тип продукции

    Исключения:
        Обрабатывает исключения базы данных и возвращает None в случае ошибки
    """

def simple_choice(options):
    """
    Выводит меню выбора опций и запрашивает ввод пользователя.

    Функция отображает пронумерованный список доступных опций в формате меню
    и возвращает выбранный пользователем номер опции.

    Входные параметры:
        options (list): Список строк с названиями опций для выбора

    Выходные параметры:
        int: Номер выбранной опции (от 1 до количества опций)

    Действия:
        - Выводит заголовок меню
        - Отображает все опции с нумерацией
        - Запрашивает ввод пользователя
        - Возвращает выбранный номер
    """


