17096
This commit is contained in:
parent
c4ee9d6ff5
commit
ed53e46f18
2
main.py
2
main.py
|
|
@ -3,7 +3,7 @@ import pandas as pd
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import openpyxl
|
import openpyxl
|
||||||
#61125
|
#611255
|
||||||
|
|
||||||
def create_tables(db_connection):
|
def create_tables(db_connection):
|
||||||
"""Создает все необходимые таблицы в базе данных"""
|
"""Создает все необходимые таблицы в базе данных"""
|
||||||
|
|
|
||||||
175
read.txt
175
read.txt
|
|
@ -2,3 +2,178 @@
|
||||||
Файл с типами продукции: Product_type_import.xlsx
|
Файл с типами продукции: Product_type_import.xlsx
|
||||||
Файл с продуктами: Products_import.xlsx
|
Файл с продуктами: Products_import.xlsx
|
||||||
Файл с продажами: Partner_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 до количества опций)
|
||||||
|
|
||||||
|
Действия:
|
||||||
|
- Выводит заголовок меню
|
||||||
|
- Отображает все опции с нумерацией
|
||||||
|
- Запрашивает ввод пользователя
|
||||||
|
- Возвращает выбранный номер
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue