180 lines
8.9 KiB
Plaintext
180 lines
8.9 KiB
Plaintext
Файл с партнёрами: 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 до количества опций)
|
||
|
||
Действия:
|
||
- Выводит заголовок меню
|
||
- Отображает все опции с нумерацией
|
||
- Запрашивает ввод пользователя
|
||
- Возвращает выбранный номер
|
||
"""
|
||
|
||
|